@harness-engineering/cli 1.23.2 → 1.24.1

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 (5716) hide show
  1. package/dist/agents/commands/claude-code/harness/harness.md +36 -0
  2. package/dist/agents/commands/gemini-cli/harness/harness.toml +277 -0
  3. package/dist/agents/skills/README.md +6 -5
  4. package/dist/agents/skills/claude-code/a11y-aria-patterns/SKILL.md +183 -0
  5. package/dist/agents/skills/claude-code/a11y-aria-patterns/skill.yaml +44 -0
  6. package/dist/agents/skills/claude-code/a11y-color-contrast/SKILL.md +156 -0
  7. package/dist/agents/skills/claude-code/a11y-color-contrast/skill.yaml +46 -0
  8. package/dist/agents/skills/claude-code/a11y-form-patterns/SKILL.md +147 -0
  9. package/dist/agents/skills/claude-code/a11y-form-patterns/skill.yaml +47 -0
  10. package/dist/agents/skills/claude-code/a11y-image-text-alt/SKILL.md +159 -0
  11. package/dist/agents/skills/claude-code/a11y-image-text-alt/skill.yaml +44 -0
  12. package/dist/agents/skills/claude-code/a11y-keyboard-navigation/SKILL.md +169 -0
  13. package/dist/agents/skills/claude-code/a11y-keyboard-navigation/skill.yaml +46 -0
  14. package/dist/agents/skills/claude-code/a11y-modal-patterns/SKILL.md +201 -0
  15. package/dist/agents/skills/claude-code/a11y-modal-patterns/skill.yaml +43 -0
  16. package/dist/agents/skills/claude-code/a11y-motion-animation/SKILL.md +199 -0
  17. package/dist/agents/skills/claude-code/a11y-motion-animation/skill.yaml +46 -0
  18. package/dist/agents/skills/claude-code/a11y-screen-reader-testing/SKILL.md +138 -0
  19. package/dist/agents/skills/claude-code/a11y-screen-reader-testing/skill.yaml +44 -0
  20. package/dist/agents/skills/claude-code/a11y-semantic-html/SKILL.md +139 -0
  21. package/dist/agents/skills/claude-code/a11y-semantic-html/skill.yaml +44 -0
  22. package/dist/agents/skills/claude-code/a11y-testing-automation/SKILL.md +206 -0
  23. package/dist/agents/skills/claude-code/a11y-testing-automation/skill.yaml +46 -0
  24. package/dist/agents/skills/claude-code/add-harness-component/skill.yaml +3 -0
  25. package/dist/agents/skills/claude-code/align-documentation/skill.yaml +3 -0
  26. package/dist/agents/skills/claude-code/angular-component-pattern/SKILL.md +112 -0
  27. package/dist/agents/skills/claude-code/angular-component-pattern/skill.yaml +47 -0
  28. package/dist/agents/skills/claude-code/angular-directive-pattern/SKILL.md +166 -0
  29. package/dist/agents/skills/claude-code/angular-directive-pattern/skill.yaml +45 -0
  30. package/dist/agents/skills/claude-code/angular-http-interceptors/SKILL.md +174 -0
  31. package/dist/agents/skills/claude-code/angular-http-interceptors/skill.yaml +45 -0
  32. package/dist/agents/skills/claude-code/angular-lazy-loading/SKILL.md +156 -0
  33. package/dist/agents/skills/claude-code/angular-lazy-loading/skill.yaml +45 -0
  34. package/dist/agents/skills/claude-code/angular-performance-patterns/SKILL.md +141 -0
  35. package/dist/agents/skills/claude-code/angular-performance-patterns/skill.yaml +51 -0
  36. package/dist/agents/skills/claude-code/angular-pipe-pattern/SKILL.md +126 -0
  37. package/dist/agents/skills/claude-code/angular-pipe-pattern/skill.yaml +45 -0
  38. package/dist/agents/skills/claude-code/angular-reactive-forms/SKILL.md +136 -0
  39. package/dist/agents/skills/claude-code/angular-reactive-forms/skill.yaml +45 -0
  40. package/dist/agents/skills/claude-code/angular-routing-guards/SKILL.md +150 -0
  41. package/dist/agents/skills/claude-code/angular-routing-guards/skill.yaml +45 -0
  42. package/dist/agents/skills/claude-code/angular-rxjs-patterns/SKILL.md +152 -0
  43. package/dist/agents/skills/claude-code/angular-rxjs-patterns/skill.yaml +46 -0
  44. package/dist/agents/skills/claude-code/angular-schematics/SKILL.md +184 -0
  45. package/dist/agents/skills/claude-code/angular-schematics/skill.yaml +45 -0
  46. package/dist/agents/skills/claude-code/angular-service-di/SKILL.md +108 -0
  47. package/dist/agents/skills/claude-code/angular-service-di/skill.yaml +46 -0
  48. package/dist/agents/skills/claude-code/angular-signals-pattern/SKILL.md +116 -0
  49. package/dist/agents/skills/claude-code/angular-signals-pattern/skill.yaml +45 -0
  50. package/dist/agents/skills/claude-code/angular-standalone-components/SKILL.md +130 -0
  51. package/dist/agents/skills/claude-code/angular-standalone-components/skill.yaml +45 -0
  52. package/dist/agents/skills/claude-code/angular-state-management/SKILL.md +150 -0
  53. package/dist/agents/skills/claude-code/angular-state-management/skill.yaml +46 -0
  54. package/dist/agents/skills/claude-code/angular-testing-patterns/SKILL.md +180 -0
  55. package/dist/agents/skills/claude-code/angular-testing-patterns/skill.yaml +46 -0
  56. package/dist/agents/skills/claude-code/api-api-keys/SKILL.md +135 -0
  57. package/dist/agents/skills/claude-code/api-api-keys/skill.yaml +41 -0
  58. package/dist/agents/skills/claude-code/api-authentication-patterns/SKILL.md +117 -0
  59. package/dist/agents/skills/claude-code/api-authentication-patterns/skill.yaml +44 -0
  60. package/dist/agents/skills/claude-code/api-backward-compatibility/SKILL.md +170 -0
  61. package/dist/agents/skills/claude-code/api-backward-compatibility/skill.yaml +39 -0
  62. package/dist/agents/skills/claude-code/api-bulk-operations/SKILL.md +198 -0
  63. package/dist/agents/skills/claude-code/api-bulk-operations/skill.yaml +39 -0
  64. package/dist/agents/skills/claude-code/api-conditional-requests/SKILL.md +233 -0
  65. package/dist/agents/skills/claude-code/api-conditional-requests/skill.yaml +41 -0
  66. package/dist/agents/skills/claude-code/api-content-negotiation/SKILL.md +194 -0
  67. package/dist/agents/skills/claude-code/api-content-negotiation/skill.yaml +39 -0
  68. package/dist/agents/skills/claude-code/api-contract-testing/SKILL.md +222 -0
  69. package/dist/agents/skills/claude-code/api-contract-testing/skill.yaml +42 -0
  70. package/dist/agents/skills/claude-code/api-deprecation-strategy/SKILL.md +156 -0
  71. package/dist/agents/skills/claude-code/api-deprecation-strategy/skill.yaml +39 -0
  72. package/dist/agents/skills/claude-code/api-error-contracts/SKILL.md +149 -0
  73. package/dist/agents/skills/claude-code/api-error-contracts/skill.yaml +40 -0
  74. package/dist/agents/skills/claude-code/api-field-selection/SKILL.md +193 -0
  75. package/dist/agents/skills/claude-code/api-field-selection/skill.yaml +39 -0
  76. package/dist/agents/skills/claude-code/api-filtering-sorting/SKILL.md +170 -0
  77. package/dist/agents/skills/claude-code/api-filtering-sorting/skill.yaml +40 -0
  78. package/dist/agents/skills/claude-code/api-hateoas/SKILL.md +212 -0
  79. package/dist/agents/skills/claude-code/api-hateoas/skill.yaml +40 -0
  80. package/dist/agents/skills/claude-code/api-http-caching/SKILL.md +188 -0
  81. package/dist/agents/skills/claude-code/api-http-caching/skill.yaml +43 -0
  82. package/dist/agents/skills/claude-code/api-http-methods/SKILL.md +185 -0
  83. package/dist/agents/skills/claude-code/api-http-methods/skill.yaml +43 -0
  84. package/dist/agents/skills/claude-code/api-idempotency-keys/SKILL.md +176 -0
  85. package/dist/agents/skills/claude-code/api-idempotency-keys/skill.yaml +40 -0
  86. package/dist/agents/skills/claude-code/api-long-running-operations/SKILL.md +209 -0
  87. package/dist/agents/skills/claude-code/api-long-running-operations/skill.yaml +40 -0
  88. package/dist/agents/skills/claude-code/api-nested-vs-flat/SKILL.md +173 -0
  89. package/dist/agents/skills/claude-code/api-nested-vs-flat/skill.yaml +39 -0
  90. package/dist/agents/skills/claude-code/api-oauth2-flows/SKILL.md +150 -0
  91. package/dist/agents/skills/claude-code/api-oauth2-flows/skill.yaml +42 -0
  92. package/dist/agents/skills/claude-code/api-openapi-design/SKILL.md +260 -0
  93. package/dist/agents/skills/claude-code/api-openapi-design/skill.yaml +44 -0
  94. package/dist/agents/skills/claude-code/api-pagination-cursor/SKILL.md +159 -0
  95. package/dist/agents/skills/claude-code/api-pagination-cursor/skill.yaml +40 -0
  96. package/dist/agents/skills/claude-code/api-pagination-keyset/SKILL.md +167 -0
  97. package/dist/agents/skills/claude-code/api-pagination-keyset/skill.yaml +39 -0
  98. package/dist/agents/skills/claude-code/api-pagination-offset/SKILL.md +135 -0
  99. package/dist/agents/skills/claude-code/api-pagination-offset/skill.yaml +39 -0
  100. package/dist/agents/skills/claude-code/api-problem-details-rfc/SKILL.md +164 -0
  101. package/dist/agents/skills/claude-code/api-problem-details-rfc/skill.yaml +38 -0
  102. package/dist/agents/skills/claude-code/api-rate-limit-headers/SKILL.md +144 -0
  103. package/dist/agents/skills/claude-code/api-rate-limit-headers/skill.yaml +39 -0
  104. package/dist/agents/skills/claude-code/api-rate-limiting/SKILL.md +131 -0
  105. package/dist/agents/skills/claude-code/api-rate-limiting/skill.yaml +41 -0
  106. package/dist/agents/skills/claude-code/api-resource-granularity/SKILL.md +165 -0
  107. package/dist/agents/skills/claude-code/api-resource-granularity/skill.yaml +40 -0
  108. package/dist/agents/skills/claude-code/api-resource-modeling/SKILL.md +155 -0
  109. package/dist/agents/skills/claude-code/api-resource-modeling/skill.yaml +40 -0
  110. package/dist/agents/skills/claude-code/api-rest-maturity-model/SKILL.md +215 -0
  111. package/dist/agents/skills/claude-code/api-rest-maturity-model/skill.yaml +39 -0
  112. package/dist/agents/skills/claude-code/api-retry-guidance/SKILL.md +168 -0
  113. package/dist/agents/skills/claude-code/api-retry-guidance/skill.yaml +41 -0
  114. package/dist/agents/skills/claude-code/api-sdk-ergonomics/SKILL.md +194 -0
  115. package/dist/agents/skills/claude-code/api-sdk-ergonomics/skill.yaml +43 -0
  116. package/dist/agents/skills/claude-code/api-status-codes/SKILL.md +196 -0
  117. package/dist/agents/skills/claude-code/api-status-codes/skill.yaml +46 -0
  118. package/dist/agents/skills/claude-code/api-validation-errors/SKILL.md +174 -0
  119. package/dist/agents/skills/claude-code/api-validation-errors/skill.yaml +40 -0
  120. package/dist/agents/skills/claude-code/api-versioning-header/SKILL.md +177 -0
  121. package/dist/agents/skills/claude-code/api-versioning-header/skill.yaml +37 -0
  122. package/dist/agents/skills/claude-code/api-versioning-url/SKILL.md +128 -0
  123. package/dist/agents/skills/claude-code/api-versioning-url/skill.yaml +39 -0
  124. package/dist/agents/skills/claude-code/api-webhook-design/SKILL.md +165 -0
  125. package/dist/agents/skills/claude-code/api-webhook-design/skill.yaml +41 -0
  126. package/dist/agents/skills/claude-code/api-webhook-security/SKILL.md +176 -0
  127. package/dist/agents/skills/claude-code/api-webhook-security/skill.yaml +41 -0
  128. package/dist/agents/skills/claude-code/astro-component-pattern/SKILL.md +160 -0
  129. package/dist/agents/skills/claude-code/astro-component-pattern/skill.yaml +45 -0
  130. package/dist/agents/skills/claude-code/astro-content-collections/SKILL.md +155 -0
  131. package/dist/agents/skills/claude-code/astro-content-collections/skill.yaml +43 -0
  132. package/dist/agents/skills/claude-code/astro-deployment-config/SKILL.md +208 -0
  133. package/dist/agents/skills/claude-code/astro-deployment-config/skill.yaml +47 -0
  134. package/dist/agents/skills/claude-code/astro-image-optimization/SKILL.md +188 -0
  135. package/dist/agents/skills/claude-code/astro-image-optimization/skill.yaml +46 -0
  136. package/dist/agents/skills/claude-code/astro-integration-pattern/SKILL.md +164 -0
  137. package/dist/agents/skills/claude-code/astro-integration-pattern/skill.yaml +45 -0
  138. package/dist/agents/skills/claude-code/astro-islands-architecture/SKILL.md +103 -0
  139. package/dist/agents/skills/claude-code/astro-islands-architecture/skill.yaml +45 -0
  140. package/dist/agents/skills/claude-code/astro-multi-framework/SKILL.md +161 -0
  141. package/dist/agents/skills/claude-code/astro-multi-framework/skill.yaml +47 -0
  142. package/dist/agents/skills/claude-code/astro-routing-pattern/SKILL.md +135 -0
  143. package/dist/agents/skills/claude-code/astro-routing-pattern/skill.yaml +44 -0
  144. package/dist/agents/skills/claude-code/astro-server-endpoints/SKILL.md +173 -0
  145. package/dist/agents/skills/claude-code/astro-server-endpoints/skill.yaml +45 -0
  146. package/dist/agents/skills/claude-code/astro-ssr-hybrid/SKILL.md +191 -0
  147. package/dist/agents/skills/claude-code/astro-ssr-hybrid/skill.yaml +47 -0
  148. package/dist/agents/skills/claude-code/astro-view-transitions/SKILL.md +168 -0
  149. package/dist/agents/skills/claude-code/astro-view-transitions/skill.yaml +46 -0
  150. package/dist/agents/skills/claude-code/check-mechanical-constraints/skill.yaml +3 -0
  151. package/dist/agents/skills/claude-code/cleanup-dead-code/skill.yaml +3 -0
  152. package/dist/agents/skills/claude-code/css-animation-pattern/SKILL.md +143 -0
  153. package/dist/agents/skills/claude-code/css-animation-pattern/skill.yaml +44 -0
  154. package/dist/agents/skills/claude-code/css-component-variants/SKILL.md +147 -0
  155. package/dist/agents/skills/claude-code/css-component-variants/skill.yaml +43 -0
  156. package/dist/agents/skills/claude-code/css-css-modules/SKILL.md +168 -0
  157. package/dist/agents/skills/claude-code/css-css-modules/skill.yaml +39 -0
  158. package/dist/agents/skills/claude-code/css-custom-components/SKILL.md +178 -0
  159. package/dist/agents/skills/claude-code/css-custom-components/skill.yaml +40 -0
  160. package/dist/agents/skills/claude-code/css-dark-mode/SKILL.md +171 -0
  161. package/dist/agents/skills/claude-code/css-dark-mode/skill.yaml +42 -0
  162. package/dist/agents/skills/claude-code/css-design-tokens/SKILL.md +155 -0
  163. package/dist/agents/skills/claude-code/css-design-tokens/skill.yaml +43 -0
  164. package/dist/agents/skills/claude-code/css-headless-ui/SKILL.md +179 -0
  165. package/dist/agents/skills/claude-code/css-headless-ui/skill.yaml +40 -0
  166. package/dist/agents/skills/claude-code/css-layout-patterns/SKILL.md +155 -0
  167. package/dist/agents/skills/claude-code/css-layout-patterns/skill.yaml +44 -0
  168. package/dist/agents/skills/claude-code/css-performance-patterns/SKILL.md +163 -0
  169. package/dist/agents/skills/claude-code/css-performance-patterns/skill.yaml +46 -0
  170. package/dist/agents/skills/claude-code/css-responsive-design/SKILL.md +161 -0
  171. package/dist/agents/skills/claude-code/css-responsive-design/skill.yaml +43 -0
  172. package/dist/agents/skills/claude-code/css-tailwind-merge/SKILL.md +128 -0
  173. package/dist/agents/skills/claude-code/css-tailwind-merge/skill.yaml +40 -0
  174. package/dist/agents/skills/claude-code/css-tailwind-pattern/SKILL.md +126 -0
  175. package/dist/agents/skills/claude-code/css-tailwind-pattern/skill.yaml +41 -0
  176. package/dist/agents/skills/claude-code/db-acid-in-practice/SKILL.md +215 -0
  177. package/dist/agents/skills/claude-code/db-acid-in-practice/skill.yaml +38 -0
  178. package/dist/agents/skills/claude-code/db-acid-properties/SKILL.md +190 -0
  179. package/dist/agents/skills/claude-code/db-acid-properties/skill.yaml +38 -0
  180. package/dist/agents/skills/claude-code/db-adjacency-list/SKILL.md +199 -0
  181. package/dist/agents/skills/claude-code/db-adjacency-list/skill.yaml +40 -0
  182. package/dist/agents/skills/claude-code/db-audit-trail/SKILL.md +244 -0
  183. package/dist/agents/skills/claude-code/db-audit-trail/skill.yaml +41 -0
  184. package/dist/agents/skills/claude-code/db-btree-index/SKILL.md +182 -0
  185. package/dist/agents/skills/claude-code/db-btree-index/skill.yaml +44 -0
  186. package/dist/agents/skills/claude-code/db-cap-theorem/SKILL.md +156 -0
  187. package/dist/agents/skills/claude-code/db-cap-theorem/skill.yaml +38 -0
  188. package/dist/agents/skills/claude-code/db-closure-table/SKILL.md +197 -0
  189. package/dist/agents/skills/claude-code/db-closure-table/skill.yaml +38 -0
  190. package/dist/agents/skills/claude-code/db-composite-index/SKILL.md +199 -0
  191. package/dist/agents/skills/claude-code/db-composite-index/skill.yaml +41 -0
  192. package/dist/agents/skills/claude-code/db-connection-pooling/SKILL.md +196 -0
  193. package/dist/agents/skills/claude-code/db-connection-pooling/skill.yaml +39 -0
  194. package/dist/agents/skills/claude-code/db-connection-sizing/SKILL.md +236 -0
  195. package/dist/agents/skills/claude-code/db-connection-sizing/skill.yaml +38 -0
  196. package/dist/agents/skills/claude-code/db-covering-index/SKILL.md +203 -0
  197. package/dist/agents/skills/claude-code/db-covering-index/skill.yaml +40 -0
  198. package/dist/agents/skills/claude-code/db-deadlock-prevention/SKILL.md +204 -0
  199. package/dist/agents/skills/claude-code/db-deadlock-prevention/skill.yaml +41 -0
  200. package/dist/agents/skills/claude-code/db-denormalization/SKILL.md +176 -0
  201. package/dist/agents/skills/claude-code/db-denormalization/skill.yaml +38 -0
  202. package/dist/agents/skills/claude-code/db-document-in-relational/SKILL.md +225 -0
  203. package/dist/agents/skills/claude-code/db-document-in-relational/skill.yaml +42 -0
  204. package/dist/agents/skills/claude-code/db-entity-attribute-value/SKILL.md +186 -0
  205. package/dist/agents/skills/claude-code/db-entity-attribute-value/skill.yaml +39 -0
  206. package/dist/agents/skills/claude-code/db-eventual-consistency/SKILL.md +226 -0
  207. package/dist/agents/skills/claude-code/db-eventual-consistency/skill.yaml +38 -0
  208. package/dist/agents/skills/claude-code/db-expand-contract/SKILL.md +199 -0
  209. package/dist/agents/skills/claude-code/db-expand-contract/skill.yaml +40 -0
  210. package/dist/agents/skills/claude-code/db-explain-reading/SKILL.md +213 -0
  211. package/dist/agents/skills/claude-code/db-explain-reading/skill.yaml +44 -0
  212. package/dist/agents/skills/claude-code/db-expression-index/SKILL.md +211 -0
  213. package/dist/agents/skills/claude-code/db-expression-index/skill.yaml +40 -0
  214. package/dist/agents/skills/claude-code/db-first-normal-form/SKILL.md +190 -0
  215. package/dist/agents/skills/claude-code/db-first-normal-form/skill.yaml +38 -0
  216. package/dist/agents/skills/claude-code/db-graph-in-relational/SKILL.md +212 -0
  217. package/dist/agents/skills/claude-code/db-graph-in-relational/skill.yaml +41 -0
  218. package/dist/agents/skills/claude-code/db-hash-index/SKILL.md +176 -0
  219. package/dist/agents/skills/claude-code/db-hash-index/skill.yaml +37 -0
  220. package/dist/agents/skills/claude-code/db-hierarchical-data/SKILL.md +194 -0
  221. package/dist/agents/skills/claude-code/db-hierarchical-data/skill.yaml +41 -0
  222. package/dist/agents/skills/claude-code/db-horizontal-sharding/SKILL.md +228 -0
  223. package/dist/agents/skills/claude-code/db-horizontal-sharding/skill.yaml +40 -0
  224. package/dist/agents/skills/claude-code/db-isolation-levels/SKILL.md +158 -0
  225. package/dist/agents/skills/claude-code/db-isolation-levels/skill.yaml +43 -0
  226. package/dist/agents/skills/claude-code/db-isolation-selection/SKILL.md +160 -0
  227. package/dist/agents/skills/claude-code/db-isolation-selection/skill.yaml +41 -0
  228. package/dist/agents/skills/claude-code/db-migration-rollback/SKILL.md +223 -0
  229. package/dist/agents/skills/claude-code/db-migration-rollback/skill.yaml +40 -0
  230. package/dist/agents/skills/claude-code/db-mvcc/SKILL.md +191 -0
  231. package/dist/agents/skills/claude-code/db-mvcc/skill.yaml +45 -0
  232. package/dist/agents/skills/claude-code/db-nested-sets/SKILL.md +171 -0
  233. package/dist/agents/skills/claude-code/db-nested-sets/skill.yaml +38 -0
  234. package/dist/agents/skills/claude-code/db-optimistic-locking/SKILL.md +151 -0
  235. package/dist/agents/skills/claude-code/db-optimistic-locking/skill.yaml +44 -0
  236. package/dist/agents/skills/claude-code/db-partial-index/SKILL.md +196 -0
  237. package/dist/agents/skills/claude-code/db-partial-index/skill.yaml +39 -0
  238. package/dist/agents/skills/claude-code/db-pessimistic-locking/SKILL.md +158 -0
  239. package/dist/agents/skills/claude-code/db-pessimistic-locking/skill.yaml +44 -0
  240. package/dist/agents/skills/claude-code/db-polymorphic-associations/SKILL.md +187 -0
  241. package/dist/agents/skills/claude-code/db-polymorphic-associations/skill.yaml +42 -0
  242. package/dist/agents/skills/claude-code/db-query-rewriting/SKILL.md +249 -0
  243. package/dist/agents/skills/claude-code/db-query-rewriting/skill.yaml +43 -0
  244. package/dist/agents/skills/claude-code/db-query-statistics/SKILL.md +210 -0
  245. package/dist/agents/skills/claude-code/db-query-statistics/skill.yaml +41 -0
  246. package/dist/agents/skills/claude-code/db-read-phenomena/SKILL.md +205 -0
  247. package/dist/agents/skills/claude-code/db-read-phenomena/skill.yaml +42 -0
  248. package/dist/agents/skills/claude-code/db-scan-types/SKILL.md +248 -0
  249. package/dist/agents/skills/claude-code/db-scan-types/skill.yaml +41 -0
  250. package/dist/agents/skills/claude-code/db-second-normal-form/SKILL.md +183 -0
  251. package/dist/agents/skills/claude-code/db-second-normal-form/skill.yaml +38 -0
  252. package/dist/agents/skills/claude-code/db-table-partitioning/SKILL.md +229 -0
  253. package/dist/agents/skills/claude-code/db-table-partitioning/skill.yaml +39 -0
  254. package/dist/agents/skills/claude-code/db-temporal-data/SKILL.md +194 -0
  255. package/dist/agents/skills/claude-code/db-temporal-data/skill.yaml +41 -0
  256. package/dist/agents/skills/claude-code/db-third-normal-form/SKILL.md +210 -0
  257. package/dist/agents/skills/claude-code/db-third-normal-form/skill.yaml +38 -0
  258. package/dist/agents/skills/claude-code/db-time-series/SKILL.md +196 -0
  259. package/dist/agents/skills/claude-code/db-time-series/skill.yaml +41 -0
  260. package/dist/agents/skills/claude-code/db-vertical-partitioning/SKILL.md +249 -0
  261. package/dist/agents/skills/claude-code/db-vertical-partitioning/skill.yaml +40 -0
  262. package/dist/agents/skills/claude-code/db-zero-downtime-migration/SKILL.md +199 -0
  263. package/dist/agents/skills/claude-code/db-zero-downtime-migration/skill.yaml +42 -0
  264. package/dist/agents/skills/claude-code/design-affordances/SKILL.md +157 -0
  265. package/dist/agents/skills/claude-code/design-affordances/skill.yaml +36 -0
  266. package/dist/agents/skills/claude-code/design-alignment/SKILL.md +148 -0
  267. package/dist/agents/skills/claude-code/design-alignment/skill.yaml +34 -0
  268. package/dist/agents/skills/claude-code/design-apple-hig/SKILL.md +237 -0
  269. package/dist/agents/skills/claude-code/design-apple-hig/skill.yaml +38 -0
  270. package/dist/agents/skills/claude-code/design-atomic-design/SKILL.md +172 -0
  271. package/dist/agents/skills/claude-code/design-atomic-design/skill.yaml +36 -0
  272. package/dist/agents/skills/claude-code/design-brand-consistency/SKILL.md +167 -0
  273. package/dist/agents/skills/claude-code/design-brand-consistency/skill.yaml +36 -0
  274. package/dist/agents/skills/claude-code/design-color-accessibility/SKILL.md +161 -0
  275. package/dist/agents/skills/claude-code/design-color-accessibility/skill.yaml +35 -0
  276. package/dist/agents/skills/claude-code/design-color-harmony/SKILL.md +152 -0
  277. package/dist/agents/skills/claude-code/design-color-harmony/skill.yaml +36 -0
  278. package/dist/agents/skills/claude-code/design-color-psychology/SKILL.md +151 -0
  279. package/dist/agents/skills/claude-code/design-color-psychology/skill.yaml +35 -0
  280. package/dist/agents/skills/claude-code/design-component-anatomy/SKILL.md +243 -0
  281. package/dist/agents/skills/claude-code/design-component-anatomy/skill.yaml +35 -0
  282. package/dist/agents/skills/claude-code/design-consistency/SKILL.md +179 -0
  283. package/dist/agents/skills/claude-code/design-consistency/skill.yaml +36 -0
  284. package/dist/agents/skills/claude-code/design-content-density/SKILL.md +156 -0
  285. package/dist/agents/skills/claude-code/design-content-density/skill.yaml +35 -0
  286. package/dist/agents/skills/claude-code/design-contrast-ratio/SKILL.md +151 -0
  287. package/dist/agents/skills/claude-code/design-contrast-ratio/skill.yaml +36 -0
  288. package/dist/agents/skills/claude-code/design-dark-mode-color/SKILL.md +152 -0
  289. package/dist/agents/skills/claude-code/design-dark-mode-color/skill.yaml +36 -0
  290. package/dist/agents/skills/claude-code/design-data-viz-design/SKILL.md +178 -0
  291. package/dist/agents/skills/claude-code/design-data-viz-design/skill.yaml +36 -0
  292. package/dist/agents/skills/claude-code/design-design-audit/SKILL.md +193 -0
  293. package/dist/agents/skills/claude-code/design-design-audit/skill.yaml +34 -0
  294. package/dist/agents/skills/claude-code/design-design-critique/SKILL.md +175 -0
  295. package/dist/agents/skills/claude-code/design-design-critique/skill.yaml +33 -0
  296. package/dist/agents/skills/claude-code/design-design-documentation/SKILL.md +163 -0
  297. package/dist/agents/skills/claude-code/design-design-documentation/skill.yaml +34 -0
  298. package/dist/agents/skills/claude-code/design-design-governance/SKILL.md +187 -0
  299. package/dist/agents/skills/claude-code/design-design-governance/skill.yaml +35 -0
  300. package/dist/agents/skills/claude-code/design-elevation-shadow/SKILL.md +163 -0
  301. package/dist/agents/skills/claude-code/design-elevation-shadow/skill.yaml +35 -0
  302. package/dist/agents/skills/claude-code/design-empty-error-states/SKILL.md +154 -0
  303. package/dist/agents/skills/claude-code/design-empty-error-states/skill.yaml +38 -0
  304. package/dist/agents/skills/claude-code/design-feedback-patterns/SKILL.md +156 -0
  305. package/dist/agents/skills/claude-code/design-feedback-patterns/skill.yaml +40 -0
  306. package/dist/agents/skills/claude-code/design-fluent-design/SKILL.md +241 -0
  307. package/dist/agents/skills/claude-code/design-fluent-design/skill.yaml +36 -0
  308. package/dist/agents/skills/claude-code/design-font-pairing/SKILL.md +161 -0
  309. package/dist/agents/skills/claude-code/design-font-pairing/skill.yaml +35 -0
  310. package/dist/agents/skills/claude-code/design-form-ux/SKILL.md +156 -0
  311. package/dist/agents/skills/claude-code/design-form-ux/skill.yaml +37 -0
  312. package/dist/agents/skills/claude-code/design-gestalt-closure-continuity/SKILL.md +182 -0
  313. package/dist/agents/skills/claude-code/design-gestalt-closure-continuity/skill.yaml +34 -0
  314. package/dist/agents/skills/claude-code/design-gestalt-common-fate/SKILL.md +214 -0
  315. package/dist/agents/skills/claude-code/design-gestalt-common-fate/skill.yaml +34 -0
  316. package/dist/agents/skills/claude-code/design-gestalt-figure-ground/SKILL.md +189 -0
  317. package/dist/agents/skills/claude-code/design-gestalt-figure-ground/skill.yaml +35 -0
  318. package/dist/agents/skills/claude-code/design-gestalt-proximity/SKILL.md +162 -0
  319. package/dist/agents/skills/claude-code/design-gestalt-proximity/skill.yaml +35 -0
  320. package/dist/agents/skills/claude-code/design-gestalt-similarity/SKILL.md +175 -0
  321. package/dist/agents/skills/claude-code/design-gestalt-similarity/skill.yaml +34 -0
  322. package/dist/agents/skills/claude-code/design-grid-systems/SKILL.md +154 -0
  323. package/dist/agents/skills/claude-code/design-grid-systems/skill.yaml +36 -0
  324. package/dist/agents/skills/claude-code/design-i18n-design/SKILL.md +181 -0
  325. package/dist/agents/skills/claude-code/design-i18n-design/skill.yaml +37 -0
  326. package/dist/agents/skills/claude-code/design-iconography/SKILL.md +169 -0
  327. package/dist/agents/skills/claude-code/design-iconography/skill.yaml +36 -0
  328. package/dist/agents/skills/claude-code/design-illustration-style/SKILL.md +170 -0
  329. package/dist/agents/skills/claude-code/design-illustration-style/skill.yaml +35 -0
  330. package/dist/agents/skills/claude-code/design-imagery-photography/SKILL.md +172 -0
  331. package/dist/agents/skills/claude-code/design-imagery-photography/skill.yaml +36 -0
  332. package/dist/agents/skills/claude-code/design-information-architecture/SKILL.md +155 -0
  333. package/dist/agents/skills/claude-code/design-information-architecture/skill.yaml +38 -0
  334. package/dist/agents/skills/claude-code/design-loading-patterns/SKILL.md +175 -0
  335. package/dist/agents/skills/claude-code/design-loading-patterns/skill.yaml +35 -0
  336. package/dist/agents/skills/claude-code/design-material-design-3/SKILL.md +184 -0
  337. package/dist/agents/skills/claude-code/design-material-design-3/skill.yaml +37 -0
  338. package/dist/agents/skills/claude-code/design-micro-interactions/SKILL.md +156 -0
  339. package/dist/agents/skills/claude-code/design-micro-interactions/skill.yaml +36 -0
  340. package/dist/agents/skills/claude-code/design-motion-principles/SKILL.md +161 -0
  341. package/dist/agents/skills/claude-code/design-motion-principles/skill.yaml +37 -0
  342. package/dist/agents/skills/claude-code/design-naming-conventions/SKILL.md +200 -0
  343. package/dist/agents/skills/claude-code/design-naming-conventions/skill.yaml +35 -0
  344. package/dist/agents/skills/claude-code/design-navigation-ux/SKILL.md +150 -0
  345. package/dist/agents/skills/claude-code/design-navigation-ux/skill.yaml +36 -0
  346. package/dist/agents/skills/claude-code/design-palette-construction/SKILL.md +152 -0
  347. package/dist/agents/skills/claude-code/design-palette-construction/skill.yaml +38 -0
  348. package/dist/agents/skills/claude-code/design-parallax-scroll/SKILL.md +200 -0
  349. package/dist/agents/skills/claude-code/design-parallax-scroll/skill.yaml +35 -0
  350. package/dist/agents/skills/claude-code/design-readability/SKILL.md +183 -0
  351. package/dist/agents/skills/claude-code/design-readability/skill.yaml +39 -0
  352. package/dist/agents/skills/claude-code/design-responsive-strategy/SKILL.md +157 -0
  353. package/dist/agents/skills/claude-code/design-responsive-strategy/skill.yaml +35 -0
  354. package/dist/agents/skills/claude-code/design-responsive-type/SKILL.md +270 -0
  355. package/dist/agents/skills/claude-code/design-responsive-type/skill.yaml +35 -0
  356. package/dist/agents/skills/claude-code/design-state-design/SKILL.md +152 -0
  357. package/dist/agents/skills/claude-code/design-state-design/skill.yaml +37 -0
  358. package/dist/agents/skills/claude-code/design-token-architecture/SKILL.md +218 -0
  359. package/dist/agents/skills/claude-code/design-token-architecture/skill.yaml +37 -0
  360. package/dist/agents/skills/claude-code/design-transitions-timing/SKILL.md +183 -0
  361. package/dist/agents/skills/claude-code/design-transitions-timing/skill.yaml +35 -0
  362. package/dist/agents/skills/claude-code/design-type-scale/SKILL.md +157 -0
  363. package/dist/agents/skills/claude-code/design-type-scale/skill.yaml +35 -0
  364. package/dist/agents/skills/claude-code/design-typographic-hierarchy/SKILL.md +187 -0
  365. package/dist/agents/skills/claude-code/design-typographic-hierarchy/skill.yaml +35 -0
  366. package/dist/agents/skills/claude-code/design-typography-fundamentals/SKILL.md +158 -0
  367. package/dist/agents/skills/claude-code/design-typography-fundamentals/skill.yaml +37 -0
  368. package/dist/agents/skills/claude-code/design-visual-hierarchy/SKILL.md +150 -0
  369. package/dist/agents/skills/claude-code/design-visual-hierarchy/skill.yaml +37 -0
  370. package/dist/agents/skills/claude-code/design-web-fonts/SKILL.md +251 -0
  371. package/dist/agents/skills/claude-code/design-web-fonts/skill.yaml +36 -0
  372. package/dist/agents/skills/claude-code/design-whitespace/SKILL.md +150 -0
  373. package/dist/agents/skills/claude-code/design-whitespace/skill.yaml +37 -0
  374. package/dist/agents/skills/claude-code/detect-doc-drift/skill.yaml +3 -0
  375. package/dist/agents/skills/claude-code/drizzle-filtering-pattern/SKILL.md +185 -0
  376. package/dist/agents/skills/claude-code/drizzle-filtering-pattern/skill.yaml +44 -0
  377. package/dist/agents/skills/claude-code/drizzle-migrations/SKILL.md +139 -0
  378. package/dist/agents/skills/claude-code/drizzle-migrations/skill.yaml +42 -0
  379. package/dist/agents/skills/claude-code/drizzle-performance-patterns/SKILL.md +176 -0
  380. package/dist/agents/skills/claude-code/drizzle-performance-patterns/skill.yaml +50 -0
  381. package/dist/agents/skills/claude-code/drizzle-query-builder/SKILL.md +206 -0
  382. package/dist/agents/skills/claude-code/drizzle-query-builder/skill.yaml +45 -0
  383. package/dist/agents/skills/claude-code/drizzle-raw-sql/SKILL.md +157 -0
  384. package/dist/agents/skills/claude-code/drizzle-raw-sql/skill.yaml +40 -0
  385. package/dist/agents/skills/claude-code/drizzle-relations-pattern/SKILL.md +179 -0
  386. package/dist/agents/skills/claude-code/drizzle-relations-pattern/skill.yaml +42 -0
  387. package/dist/agents/skills/claude-code/drizzle-schema-definition/SKILL.md +151 -0
  388. package/dist/agents/skills/claude-code/drizzle-schema-definition/skill.yaml +50 -0
  389. package/dist/agents/skills/claude-code/drizzle-transactions/SKILL.md +146 -0
  390. package/dist/agents/skills/claude-code/drizzle-transactions/skill.yaml +43 -0
  391. package/dist/agents/skills/claude-code/drizzle-with-nextjs/SKILL.md +199 -0
  392. package/dist/agents/skills/claude-code/drizzle-with-nextjs/skill.yaml +44 -0
  393. package/dist/agents/skills/claude-code/enforce-architecture/skill.yaml +3 -0
  394. package/dist/agents/skills/claude-code/events-event-schema/SKILL.md +180 -0
  395. package/dist/agents/skills/claude-code/events-event-schema/skill.yaml +45 -0
  396. package/dist/agents/skills/claude-code/events-event-storming/SKILL.md +199 -0
  397. package/dist/agents/skills/claude-code/events-event-storming/skill.yaml +45 -0
  398. package/dist/agents/skills/claude-code/events-idempotency/SKILL.md +189 -0
  399. package/dist/agents/skills/claude-code/events-idempotency/skill.yaml +45 -0
  400. package/dist/agents/skills/claude-code/events-kafka-patterns/SKILL.md +190 -0
  401. package/dist/agents/skills/claude-code/events-kafka-patterns/skill.yaml +45 -0
  402. package/dist/agents/skills/claude-code/events-message-queue/SKILL.md +190 -0
  403. package/dist/agents/skills/claude-code/events-message-queue/skill.yaml +44 -0
  404. package/dist/agents/skills/claude-code/events-outbox-pattern/SKILL.md +212 -0
  405. package/dist/agents/skills/claude-code/events-outbox-pattern/skill.yaml +44 -0
  406. package/dist/agents/skills/claude-code/events-pubsub-pattern/SKILL.md +158 -0
  407. package/dist/agents/skills/claude-code/events-pubsub-pattern/skill.yaml +45 -0
  408. package/dist/agents/skills/claude-code/events-redis-pubsub/SKILL.md +183 -0
  409. package/dist/agents/skills/claude-code/events-redis-pubsub/skill.yaml +43 -0
  410. package/dist/agents/skills/claude-code/events-saga-choreography/SKILL.md +177 -0
  411. package/dist/agents/skills/claude-code/events-saga-choreography/skill.yaml +44 -0
  412. package/dist/agents/skills/claude-code/events-sse-pattern/SKILL.md +221 -0
  413. package/dist/agents/skills/claude-code/events-sse-pattern/skill.yaml +43 -0
  414. package/dist/agents/skills/claude-code/events-webhooks-pattern/SKILL.md +215 -0
  415. package/dist/agents/skills/claude-code/events-webhooks-pattern/skill.yaml +46 -0
  416. package/dist/agents/skills/claude-code/events-websocket-pattern/SKILL.md +252 -0
  417. package/dist/agents/skills/claude-code/events-websocket-pattern/skill.yaml +44 -0
  418. package/dist/agents/skills/claude-code/gof-abstract-factory/SKILL.md +193 -0
  419. package/dist/agents/skills/claude-code/gof-abstract-factory/skill.yaml +36 -0
  420. package/dist/agents/skills/claude-code/gof-adapter-pattern/SKILL.md +157 -0
  421. package/dist/agents/skills/claude-code/gof-adapter-pattern/skill.yaml +37 -0
  422. package/dist/agents/skills/claude-code/gof-bridge-pattern/SKILL.md +183 -0
  423. package/dist/agents/skills/claude-code/gof-bridge-pattern/skill.yaml +36 -0
  424. package/dist/agents/skills/claude-code/gof-builder-pattern/SKILL.md +236 -0
  425. package/dist/agents/skills/claude-code/gof-builder-pattern/skill.yaml +36 -0
  426. package/dist/agents/skills/claude-code/gof-chain-of-responsibility/SKILL.md +199 -0
  427. package/dist/agents/skills/claude-code/gof-chain-of-responsibility/skill.yaml +36 -0
  428. package/dist/agents/skills/claude-code/gof-command-pattern/SKILL.md +197 -0
  429. package/dist/agents/skills/claude-code/gof-command-pattern/skill.yaml +36 -0
  430. package/dist/agents/skills/claude-code/gof-composite-pattern/SKILL.md +188 -0
  431. package/dist/agents/skills/claude-code/gof-composite-pattern/skill.yaml +36 -0
  432. package/dist/agents/skills/claude-code/gof-decorator-pattern/SKILL.md +177 -0
  433. package/dist/agents/skills/claude-code/gof-decorator-pattern/skill.yaml +37 -0
  434. package/dist/agents/skills/claude-code/gof-facade-pattern/SKILL.md +143 -0
  435. package/dist/agents/skills/claude-code/gof-facade-pattern/skill.yaml +36 -0
  436. package/dist/agents/skills/claude-code/gof-factory-method/SKILL.md +148 -0
  437. package/dist/agents/skills/claude-code/gof-factory-method/skill.yaml +37 -0
  438. package/dist/agents/skills/claude-code/gof-flyweight-pattern/SKILL.md +160 -0
  439. package/dist/agents/skills/claude-code/gof-flyweight-pattern/skill.yaml +36 -0
  440. package/dist/agents/skills/claude-code/gof-iterator-pattern/SKILL.md +177 -0
  441. package/dist/agents/skills/claude-code/gof-iterator-pattern/skill.yaml +36 -0
  442. package/dist/agents/skills/claude-code/gof-mediator-pattern/SKILL.md +171 -0
  443. package/dist/agents/skills/claude-code/gof-mediator-pattern/skill.yaml +36 -0
  444. package/dist/agents/skills/claude-code/gof-memento-pattern/SKILL.md +207 -0
  445. package/dist/agents/skills/claude-code/gof-memento-pattern/skill.yaml +35 -0
  446. package/dist/agents/skills/claude-code/gof-null-object/SKILL.md +177 -0
  447. package/dist/agents/skills/claude-code/gof-null-object/skill.yaml +36 -0
  448. package/dist/agents/skills/claude-code/gof-observer-pattern/SKILL.md +175 -0
  449. package/dist/agents/skills/claude-code/gof-observer-pattern/skill.yaml +38 -0
  450. package/dist/agents/skills/claude-code/gof-prototype-pattern/SKILL.md +162 -0
  451. package/dist/agents/skills/claude-code/gof-prototype-pattern/skill.yaml +36 -0
  452. package/dist/agents/skills/claude-code/gof-proxy-pattern/SKILL.md +184 -0
  453. package/dist/agents/skills/claude-code/gof-proxy-pattern/skill.yaml +37 -0
  454. package/dist/agents/skills/claude-code/gof-singleton/SKILL.md +149 -0
  455. package/dist/agents/skills/claude-code/gof-singleton/skill.yaml +36 -0
  456. package/dist/agents/skills/claude-code/gof-state-pattern/SKILL.md +220 -0
  457. package/dist/agents/skills/claude-code/gof-state-pattern/skill.yaml +36 -0
  458. package/dist/agents/skills/claude-code/gof-strategy-pattern/SKILL.md +179 -0
  459. package/dist/agents/skills/claude-code/gof-strategy-pattern/skill.yaml +36 -0
  460. package/dist/agents/skills/claude-code/gof-template-method/SKILL.md +189 -0
  461. package/dist/agents/skills/claude-code/gof-template-method/skill.yaml +36 -0
  462. package/dist/agents/skills/claude-code/gof-visitor-pattern/SKILL.md +205 -0
  463. package/dist/agents/skills/claude-code/gof-visitor-pattern/skill.yaml +35 -0
  464. package/dist/agents/skills/claude-code/graphql-apollo-server/SKILL.md +169 -0
  465. package/dist/agents/skills/claude-code/graphql-apollo-server/skill.yaml +42 -0
  466. package/dist/agents/skills/claude-code/graphql-auth-patterns/SKILL.md +198 -0
  467. package/dist/agents/skills/claude-code/graphql-auth-patterns/skill.yaml +45 -0
  468. package/dist/agents/skills/claude-code/graphql-client-patterns/SKILL.md +152 -0
  469. package/dist/agents/skills/claude-code/graphql-client-patterns/skill.yaml +42 -0
  470. package/dist/agents/skills/claude-code/graphql-codegen-pattern/SKILL.md +154 -0
  471. package/dist/agents/skills/claude-code/graphql-codegen-pattern/skill.yaml +40 -0
  472. package/dist/agents/skills/claude-code/graphql-dataloader-pattern/SKILL.md +138 -0
  473. package/dist/agents/skills/claude-code/graphql-dataloader-pattern/skill.yaml +39 -0
  474. package/dist/agents/skills/claude-code/graphql-error-handling/SKILL.md +168 -0
  475. package/dist/agents/skills/claude-code/graphql-error-handling/skill.yaml +42 -0
  476. package/dist/agents/skills/claude-code/graphql-federation-pattern/SKILL.md +137 -0
  477. package/dist/agents/skills/claude-code/graphql-federation-pattern/skill.yaml +42 -0
  478. package/dist/agents/skills/claude-code/graphql-pagination-patterns/SKILL.md +176 -0
  479. package/dist/agents/skills/claude-code/graphql-pagination-patterns/skill.yaml +44 -0
  480. package/dist/agents/skills/claude-code/graphql-performance-patterns/SKILL.md +166 -0
  481. package/dist/agents/skills/claude-code/graphql-performance-patterns/skill.yaml +45 -0
  482. package/dist/agents/skills/claude-code/graphql-resolver-pattern/SKILL.md +129 -0
  483. package/dist/agents/skills/claude-code/graphql-resolver-pattern/skill.yaml +40 -0
  484. package/dist/agents/skills/claude-code/graphql-schema-design/SKILL.md +146 -0
  485. package/dist/agents/skills/claude-code/graphql-schema-design/skill.yaml +44 -0
  486. package/dist/agents/skills/claude-code/graphql-subscriptions/SKILL.md +198 -0
  487. package/dist/agents/skills/claude-code/graphql-subscriptions/skill.yaml +40 -0
  488. package/dist/agents/skills/claude-code/harness-accessibility/skill.yaml +3 -0
  489. package/dist/agents/skills/claude-code/harness-api-design/skill.yaml +8 -0
  490. package/dist/agents/skills/claude-code/harness-architecture-advisor/skill.yaml +3 -0
  491. package/dist/agents/skills/claude-code/harness-auth/skill.yaml +7 -0
  492. package/dist/agents/skills/claude-code/harness-autopilot/SKILL.md +171 -822
  493. package/dist/agents/skills/claude-code/harness-autopilot/skill.yaml +3 -0
  494. package/dist/agents/skills/claude-code/harness-brainstorming/SKILL.md +145 -195
  495. package/dist/agents/skills/claude-code/harness-brainstorming/skill.yaml +6 -0
  496. package/dist/agents/skills/claude-code/harness-caching/skill.yaml +6 -0
  497. package/dist/agents/skills/claude-code/harness-chaos/skill.yaml +3 -0
  498. package/dist/agents/skills/claude-code/harness-code-review/SKILL.md +267 -436
  499. package/dist/agents/skills/claude-code/harness-code-review/skill.yaml +9 -0
  500. package/dist/agents/skills/claude-code/harness-codebase-cleanup/skill.yaml +3 -0
  501. package/dist/agents/skills/claude-code/harness-compliance/skill.yaml +3 -0
  502. package/dist/agents/skills/claude-code/harness-containerization/skill.yaml +8 -0
  503. package/dist/agents/skills/claude-code/harness-data-pipeline/skill.yaml +3 -0
  504. package/dist/agents/skills/claude-code/harness-data-validation/skill.yaml +8 -0
  505. package/dist/agents/skills/claude-code/harness-database/skill.yaml +15 -0
  506. package/dist/agents/skills/claude-code/harness-debugging/skill.yaml +3 -0
  507. package/dist/agents/skills/claude-code/harness-dependency-health/skill.yaml +3 -0
  508. package/dist/agents/skills/claude-code/harness-deployment/skill.yaml +3 -0
  509. package/dist/agents/skills/claude-code/harness-design/skill.yaml +9 -0
  510. package/dist/agents/skills/claude-code/harness-design-mobile/skill.yaml +3 -0
  511. package/dist/agents/skills/claude-code/harness-design-system/skill.yaml +10 -0
  512. package/dist/agents/skills/claude-code/harness-design-web/skill.yaml +8 -0
  513. package/dist/agents/skills/claude-code/harness-diagnostics/skill.yaml +3 -0
  514. package/dist/agents/skills/claude-code/harness-docs-pipeline/skill.yaml +3 -0
  515. package/dist/agents/skills/claude-code/harness-dx/skill.yaml +3 -0
  516. package/dist/agents/skills/claude-code/harness-e2e/skill.yaml +15 -0
  517. package/dist/agents/skills/claude-code/harness-event-driven/skill.yaml +8 -0
  518. package/dist/agents/skills/claude-code/harness-execution/SKILL.md +180 -271
  519. package/dist/agents/skills/claude-code/harness-execution/skill.yaml +15 -0
  520. package/dist/agents/skills/claude-code/harness-feature-flags/skill.yaml +3 -0
  521. package/dist/agents/skills/claude-code/harness-git-workflow/skill.yaml +3 -0
  522. package/dist/agents/skills/claude-code/harness-hotspot-detector/skill.yaml +3 -0
  523. package/dist/agents/skills/claude-code/harness-i18n/skill.yaml +3 -0
  524. package/dist/agents/skills/claude-code/harness-i18n-process/skill.yaml +3 -0
  525. package/dist/agents/skills/claude-code/harness-i18n-workflow/skill.yaml +3 -0
  526. package/dist/agents/skills/claude-code/harness-impact-analysis/skill.yaml +3 -0
  527. package/dist/agents/skills/claude-code/harness-incident-response/skill.yaml +3 -0
  528. package/dist/agents/skills/claude-code/harness-infrastructure-as-code/skill.yaml +10 -0
  529. package/dist/agents/skills/claude-code/harness-integration-test/skill.yaml +3 -0
  530. package/dist/agents/skills/claude-code/harness-integrity/skill.yaml +3 -0
  531. package/dist/agents/skills/claude-code/harness-knowledge-mapper/skill.yaml +3 -0
  532. package/dist/agents/skills/claude-code/harness-load-testing/skill.yaml +3 -0
  533. package/dist/agents/skills/claude-code/harness-ml-ops/skill.yaml +6 -0
  534. package/dist/agents/skills/claude-code/harness-mobile-patterns/skill.yaml +13 -0
  535. package/dist/agents/skills/claude-code/harness-mutation-test/skill.yaml +3 -0
  536. package/dist/agents/skills/claude-code/harness-observability/skill.yaml +8 -0
  537. package/dist/agents/skills/claude-code/harness-onboarding/skill.yaml +3 -0
  538. package/dist/agents/skills/claude-code/harness-parallel-agents/skill.yaml +3 -0
  539. package/dist/agents/skills/claude-code/harness-perf/skill.yaml +3 -0
  540. package/dist/agents/skills/claude-code/harness-perf-tdd/skill.yaml +3 -0
  541. package/dist/agents/skills/claude-code/harness-planning/SKILL.md +142 -322
  542. package/dist/agents/skills/claude-code/harness-planning/skill.yaml +9 -0
  543. package/dist/agents/skills/claude-code/harness-pre-commit-review/skill.yaml +2 -1
  544. package/dist/agents/skills/claude-code/harness-product-spec/skill.yaml +3 -0
  545. package/dist/agents/skills/claude-code/harness-property-test/skill.yaml +3 -0
  546. package/dist/agents/skills/claude-code/harness-refactoring/skill.yaml +8 -0
  547. package/dist/agents/skills/claude-code/harness-release-readiness/SKILL.md +16 -0
  548. package/dist/agents/skills/claude-code/harness-release-readiness/skill.yaml +3 -0
  549. package/dist/agents/skills/claude-code/harness-resilience/skill.yaml +8 -0
  550. package/dist/agents/skills/claude-code/harness-roadmap/skill.yaml +3 -0
  551. package/dist/agents/skills/claude-code/harness-roadmap-pilot/skill.yaml +3 -0
  552. package/dist/agents/skills/claude-code/harness-router/SKILL.md +154 -0
  553. package/dist/agents/skills/claude-code/harness-router/skill.yaml +47 -0
  554. package/dist/agents/skills/claude-code/harness-secrets/SKILL.md +3 -3
  555. package/dist/agents/skills/claude-code/harness-secrets/skill.yaml +3 -0
  556. package/dist/agents/skills/claude-code/harness-security-review/skill.yaml +13 -0
  557. package/dist/agents/skills/claude-code/harness-security-scan/skill.yaml +9 -0
  558. package/dist/agents/skills/claude-code/harness-skill-authoring/SKILL.md +118 -0
  559. package/dist/agents/skills/claude-code/harness-skill-authoring/skill.yaml +3 -0
  560. package/dist/agents/skills/claude-code/harness-soundness-review/SKILL.md +483 -667
  561. package/dist/agents/skills/claude-code/harness-soundness-review/skill.yaml +3 -0
  562. package/dist/agents/skills/claude-code/harness-sql-review/skill.yaml +10 -0
  563. package/dist/agents/skills/claude-code/harness-state-management/skill.yaml +8 -0
  564. package/dist/agents/skills/claude-code/harness-supply-chain-audit/skill.yaml +3 -0
  565. package/dist/agents/skills/claude-code/harness-tdd/skill.yaml +8 -0
  566. package/dist/agents/skills/claude-code/harness-test-advisor/skill.yaml +3 -0
  567. package/dist/agents/skills/claude-code/harness-test-data/skill.yaml +3 -0
  568. package/dist/agents/skills/claude-code/harness-ux-copy/skill.yaml +15 -0
  569. package/dist/agents/skills/claude-code/harness-verification/SKILL.md +135 -221
  570. package/dist/agents/skills/claude-code/harness-verification/skill.yaml +6 -0
  571. package/dist/agents/skills/claude-code/harness-verify/skill.yaml +3 -0
  572. package/dist/agents/skills/claude-code/harness-visual-regression/skill.yaml +7 -0
  573. package/dist/agents/skills/claude-code/initialize-harness-project/skill.yaml +3 -0
  574. package/dist/agents/skills/claude-code/js-abstract-factory-pattern/SKILL.md +79 -0
  575. package/dist/agents/skills/claude-code/js-abstract-factory-pattern/skill.yaml +36 -0
  576. package/dist/agents/skills/claude-code/js-adapter-pattern/SKILL.md +77 -0
  577. package/dist/agents/skills/claude-code/js-adapter-pattern/skill.yaml +36 -0
  578. package/dist/agents/skills/claude-code/js-bridge-pattern/SKILL.md +90 -0
  579. package/dist/agents/skills/claude-code/js-bridge-pattern/skill.yaml +36 -0
  580. package/dist/agents/skills/claude-code/js-chain-of-responsibility-pattern/SKILL.md +81 -0
  581. package/dist/agents/skills/claude-code/js-chain-of-responsibility-pattern/skill.yaml +36 -0
  582. package/dist/agents/skills/claude-code/js-command-pattern/SKILL.md +81 -0
  583. package/dist/agents/skills/claude-code/js-command-pattern/skill.yaml +37 -0
  584. package/dist/agents/skills/claude-code/js-composite-pattern/SKILL.md +83 -0
  585. package/dist/agents/skills/claude-code/js-composite-pattern/skill.yaml +36 -0
  586. package/dist/agents/skills/claude-code/js-constructor-pattern/SKILL.md +78 -0
  587. package/dist/agents/skills/claude-code/js-constructor-pattern/skill.yaml +37 -0
  588. package/dist/agents/skills/claude-code/js-decorator-pattern/SKILL.md +73 -0
  589. package/dist/agents/skills/claude-code/js-decorator-pattern/skill.yaml +36 -0
  590. package/dist/agents/skills/claude-code/js-dynamic-import/SKILL.md +70 -0
  591. package/dist/agents/skills/claude-code/js-dynamic-import/skill.yaml +37 -0
  592. package/dist/agents/skills/claude-code/js-facade-pattern/SKILL.md +73 -0
  593. package/dist/agents/skills/claude-code/js-facade-pattern/skill.yaml +36 -0
  594. package/dist/agents/skills/claude-code/js-factory-pattern/SKILL.md +74 -0
  595. package/dist/agents/skills/claude-code/js-factory-pattern/skill.yaml +36 -0
  596. package/dist/agents/skills/claude-code/js-flyweight-pattern/SKILL.md +79 -0
  597. package/dist/agents/skills/claude-code/js-flyweight-pattern/skill.yaml +37 -0
  598. package/dist/agents/skills/claude-code/js-iterator-pattern/SKILL.md +78 -0
  599. package/dist/agents/skills/claude-code/js-iterator-pattern/skill.yaml +37 -0
  600. package/dist/agents/skills/claude-code/js-mediator-middleware-pattern/SKILL.md +92 -0
  601. package/dist/agents/skills/claude-code/js-mediator-middleware-pattern/skill.yaml +37 -0
  602. package/dist/agents/skills/claude-code/js-mixin-pattern/SKILL.md +85 -0
  603. package/dist/agents/skills/claude-code/js-mixin-pattern/skill.yaml +36 -0
  604. package/dist/agents/skills/claude-code/js-module-pattern/SKILL.md +75 -0
  605. package/dist/agents/skills/claude-code/js-module-pattern/skill.yaml +37 -0
  606. package/dist/agents/skills/claude-code/js-observer-pattern/SKILL.md +81 -0
  607. package/dist/agents/skills/claude-code/js-observer-pattern/skill.yaml +37 -0
  608. package/dist/agents/skills/claude-code/js-prototype-pattern/SKILL.md +70 -0
  609. package/dist/agents/skills/claude-code/js-prototype-pattern/skill.yaml +36 -0
  610. package/dist/agents/skills/claude-code/js-provider-pattern/SKILL.md +67 -0
  611. package/dist/agents/skills/claude-code/js-provider-pattern/skill.yaml +36 -0
  612. package/dist/agents/skills/claude-code/js-proxy-pattern/SKILL.md +79 -0
  613. package/dist/agents/skills/claude-code/js-proxy-pattern/skill.yaml +37 -0
  614. package/dist/agents/skills/claude-code/js-revealing-module-pattern/SKILL.md +77 -0
  615. package/dist/agents/skills/claude-code/js-revealing-module-pattern/skill.yaml +36 -0
  616. package/dist/agents/skills/claude-code/js-singleton-pattern/SKILL.md +80 -0
  617. package/dist/agents/skills/claude-code/js-singleton-pattern/skill.yaml +36 -0
  618. package/dist/agents/skills/claude-code/js-state-pattern/SKILL.md +90 -0
  619. package/dist/agents/skills/claude-code/js-state-pattern/skill.yaml +36 -0
  620. package/dist/agents/skills/claude-code/js-static-import/SKILL.md +63 -0
  621. package/dist/agents/skills/claude-code/js-static-import/skill.yaml +37 -0
  622. package/dist/agents/skills/claude-code/js-strategy-pattern/SKILL.md +71 -0
  623. package/dist/agents/skills/claude-code/js-strategy-pattern/skill.yaml +36 -0
  624. package/dist/agents/skills/claude-code/js-template-method-pattern/SKILL.md +80 -0
  625. package/dist/agents/skills/claude-code/js-template-method-pattern/skill.yaml +36 -0
  626. package/dist/agents/skills/claude-code/js-visitor-pattern/SKILL.md +85 -0
  627. package/dist/agents/skills/claude-code/js-visitor-pattern/skill.yaml +36 -0
  628. package/dist/agents/skills/claude-code/microservices-api-gateway/SKILL.md +211 -0
  629. package/dist/agents/skills/claude-code/microservices-api-gateway/skill.yaml +41 -0
  630. package/dist/agents/skills/claude-code/microservices-bulkhead-pattern/SKILL.md +215 -0
  631. package/dist/agents/skills/claude-code/microservices-bulkhead-pattern/skill.yaml +40 -0
  632. package/dist/agents/skills/claude-code/microservices-circuit-breaker/SKILL.md +208 -0
  633. package/dist/agents/skills/claude-code/microservices-circuit-breaker/skill.yaml +40 -0
  634. package/dist/agents/skills/claude-code/microservices-config-server/SKILL.md +231 -0
  635. package/dist/agents/skills/claude-code/microservices-config-server/skill.yaml +39 -0
  636. package/dist/agents/skills/claude-code/microservices-cqrs-pattern/SKILL.md +236 -0
  637. package/dist/agents/skills/claude-code/microservices-cqrs-pattern/skill.yaml +42 -0
  638. package/dist/agents/skills/claude-code/microservices-decomposition/SKILL.md +172 -0
  639. package/dist/agents/skills/claude-code/microservices-decomposition/skill.yaml +40 -0
  640. package/dist/agents/skills/claude-code/microservices-distributed-tracing/SKILL.md +222 -0
  641. package/dist/agents/skills/claude-code/microservices-distributed-tracing/skill.yaml +40 -0
  642. package/dist/agents/skills/claude-code/microservices-event-sourcing/SKILL.md +268 -0
  643. package/dist/agents/skills/claude-code/microservices-event-sourcing/skill.yaml +44 -0
  644. package/dist/agents/skills/claude-code/microservices-health-check/SKILL.md +212 -0
  645. package/dist/agents/skills/claude-code/microservices-health-check/skill.yaml +41 -0
  646. package/dist/agents/skills/claude-code/microservices-outbox-pattern/SKILL.md +252 -0
  647. package/dist/agents/skills/claude-code/microservices-outbox-pattern/skill.yaml +41 -0
  648. package/dist/agents/skills/claude-code/microservices-saga-pattern/SKILL.md +196 -0
  649. package/dist/agents/skills/claude-code/microservices-saga-pattern/skill.yaml +41 -0
  650. package/dist/agents/skills/claude-code/microservices-service-discovery/SKILL.md +186 -0
  651. package/dist/agents/skills/claude-code/microservices-service-discovery/skill.yaml +40 -0
  652. package/dist/agents/skills/claude-code/microservices-sidecar-pattern/SKILL.md +187 -0
  653. package/dist/agents/skills/claude-code/microservices-sidecar-pattern/skill.yaml +40 -0
  654. package/dist/agents/skills/claude-code/microservices-strangler-fig/SKILL.md +204 -0
  655. package/dist/agents/skills/claude-code/microservices-strangler-fig/skill.yaml +42 -0
  656. package/dist/agents/skills/claude-code/mobile-animation-patterns/SKILL.md +199 -0
  657. package/dist/agents/skills/claude-code/mobile-animation-patterns/skill.yaml +41 -0
  658. package/dist/agents/skills/claude-code/mobile-deployment-patterns/SKILL.md +262 -0
  659. package/dist/agents/skills/claude-code/mobile-deployment-patterns/skill.yaml +42 -0
  660. package/dist/agents/skills/claude-code/mobile-expo-setup/SKILL.md +194 -0
  661. package/dist/agents/skills/claude-code/mobile-expo-setup/skill.yaml +41 -0
  662. package/dist/agents/skills/claude-code/mobile-flatlist-patterns/SKILL.md +192 -0
  663. package/dist/agents/skills/claude-code/mobile-flatlist-patterns/skill.yaml +40 -0
  664. package/dist/agents/skills/claude-code/mobile-gesture-handling/SKILL.md +207 -0
  665. package/dist/agents/skills/claude-code/mobile-gesture-handling/skill.yaml +41 -0
  666. package/dist/agents/skills/claude-code/mobile-native-modules/SKILL.md +187 -0
  667. package/dist/agents/skills/claude-code/mobile-native-modules/skill.yaml +41 -0
  668. package/dist/agents/skills/claude-code/mobile-navigation-pattern/SKILL.md +227 -0
  669. package/dist/agents/skills/claude-code/mobile-navigation-pattern/skill.yaml +43 -0
  670. package/dist/agents/skills/claude-code/mobile-network-patterns/SKILL.md +274 -0
  671. package/dist/agents/skills/claude-code/mobile-network-patterns/skill.yaml +41 -0
  672. package/dist/agents/skills/claude-code/mobile-performance-patterns/SKILL.md +207 -0
  673. package/dist/agents/skills/claude-code/mobile-performance-patterns/skill.yaml +46 -0
  674. package/dist/agents/skills/claude-code/mobile-push-notifications/SKILL.md +235 -0
  675. package/dist/agents/skills/claude-code/mobile-push-notifications/skill.yaml +41 -0
  676. package/dist/agents/skills/claude-code/mobile-storage-patterns/SKILL.md +235 -0
  677. package/dist/agents/skills/claude-code/mobile-storage-patterns/skill.yaml +41 -0
  678. package/dist/agents/skills/claude-code/mobile-testing-patterns/SKILL.md +246 -0
  679. package/dist/agents/skills/claude-code/mobile-testing-patterns/skill.yaml +42 -0
  680. package/dist/agents/skills/claude-code/nestjs-config-module/SKILL.md +121 -0
  681. package/dist/agents/skills/claude-code/nestjs-config-module/skill.yaml +42 -0
  682. package/dist/agents/skills/claude-code/nestjs-controller-pattern/SKILL.md +93 -0
  683. package/dist/agents/skills/claude-code/nestjs-controller-pattern/skill.yaml +44 -0
  684. package/dist/agents/skills/claude-code/nestjs-dependency-injection/SKILL.md +97 -0
  685. package/dist/agents/skills/claude-code/nestjs-dependency-injection/skill.yaml +42 -0
  686. package/dist/agents/skills/claude-code/nestjs-dto-validation/SKILL.md +133 -0
  687. package/dist/agents/skills/claude-code/nestjs-dto-validation/skill.yaml +43 -0
  688. package/dist/agents/skills/claude-code/nestjs-event-driven/SKILL.md +123 -0
  689. package/dist/agents/skills/claude-code/nestjs-event-driven/skill.yaml +44 -0
  690. package/dist/agents/skills/claude-code/nestjs-exception-filters/SKILL.md +119 -0
  691. package/dist/agents/skills/claude-code/nestjs-exception-filters/skill.yaml +41 -0
  692. package/dist/agents/skills/claude-code/nestjs-graphql-integration/SKILL.md +132 -0
  693. package/dist/agents/skills/claude-code/nestjs-graphql-integration/skill.yaml +43 -0
  694. package/dist/agents/skills/claude-code/nestjs-guards-pattern/SKILL.md +101 -0
  695. package/dist/agents/skills/claude-code/nestjs-guards-pattern/skill.yaml +42 -0
  696. package/dist/agents/skills/claude-code/nestjs-interceptors-pattern/SKILL.md +106 -0
  697. package/dist/agents/skills/claude-code/nestjs-interceptors-pattern/skill.yaml +42 -0
  698. package/dist/agents/skills/claude-code/nestjs-microservices/SKILL.md +132 -0
  699. package/dist/agents/skills/claude-code/nestjs-microservices/skill.yaml +43 -0
  700. package/dist/agents/skills/claude-code/nestjs-middleware-pattern/SKILL.md +104 -0
  701. package/dist/agents/skills/claude-code/nestjs-middleware-pattern/skill.yaml +40 -0
  702. package/dist/agents/skills/claude-code/nestjs-module-pattern/SKILL.md +89 -0
  703. package/dist/agents/skills/claude-code/nestjs-module-pattern/skill.yaml +43 -0
  704. package/dist/agents/skills/claude-code/nestjs-pipes-pattern/SKILL.md +111 -0
  705. package/dist/agents/skills/claude-code/nestjs-pipes-pattern/skill.yaml +41 -0
  706. package/dist/agents/skills/claude-code/nestjs-service-pattern/SKILL.md +83 -0
  707. package/dist/agents/skills/claude-code/nestjs-service-pattern/skill.yaml +40 -0
  708. package/dist/agents/skills/claude-code/nestjs-swagger-integration/SKILL.md +137 -0
  709. package/dist/agents/skills/claude-code/nestjs-swagger-integration/skill.yaml +41 -0
  710. package/dist/agents/skills/claude-code/nestjs-testing-patterns/SKILL.md +130 -0
  711. package/dist/agents/skills/claude-code/nestjs-testing-patterns/skill.yaml +43 -0
  712. package/dist/agents/skills/claude-code/next-app-router/SKILL.md +77 -0
  713. package/dist/agents/skills/claude-code/next-app-router/skill.yaml +45 -0
  714. package/dist/agents/skills/claude-code/next-auth-patterns/SKILL.md +94 -0
  715. package/dist/agents/skills/claude-code/next-auth-patterns/skill.yaml +47 -0
  716. package/dist/agents/skills/claude-code/next-caching-strategies/SKILL.md +83 -0
  717. package/dist/agents/skills/claude-code/next-caching-strategies/skill.yaml +44 -0
  718. package/dist/agents/skills/claude-code/next-data-fetching/SKILL.md +97 -0
  719. package/dist/agents/skills/claude-code/next-data-fetching/skill.yaml +45 -0
  720. package/dist/agents/skills/claude-code/next-deployment-optimization/SKILL.md +92 -0
  721. package/dist/agents/skills/claude-code/next-deployment-optimization/skill.yaml +43 -0
  722. package/dist/agents/skills/claude-code/next-environment-config/SKILL.md +92 -0
  723. package/dist/agents/skills/claude-code/next-environment-config/skill.yaml +44 -0
  724. package/dist/agents/skills/claude-code/next-error-boundaries/SKILL.md +96 -0
  725. package/dist/agents/skills/claude-code/next-error-boundaries/skill.yaml +45 -0
  726. package/dist/agents/skills/claude-code/next-image-optimization/SKILL.md +91 -0
  727. package/dist/agents/skills/claude-code/next-image-optimization/skill.yaml +42 -0
  728. package/dist/agents/skills/claude-code/next-metadata-api/SKILL.md +94 -0
  729. package/dist/agents/skills/claude-code/next-metadata-api/skill.yaml +44 -0
  730. package/dist/agents/skills/claude-code/next-middleware-pattern/SKILL.md +80 -0
  731. package/dist/agents/skills/claude-code/next-middleware-pattern/skill.yaml +44 -0
  732. package/dist/agents/skills/claude-code/next-monorepo-setup/SKILL.md +103 -0
  733. package/dist/agents/skills/claude-code/next-monorepo-setup/skill.yaml +44 -0
  734. package/dist/agents/skills/claude-code/next-parallel-intercepting-routes/SKILL.md +98 -0
  735. package/dist/agents/skills/claude-code/next-parallel-intercepting-routes/skill.yaml +44 -0
  736. package/dist/agents/skills/claude-code/next-route-handlers/SKILL.md +80 -0
  737. package/dist/agents/skills/claude-code/next-route-handlers/skill.yaml +45 -0
  738. package/dist/agents/skills/claude-code/next-server-actions/SKILL.md +97 -0
  739. package/dist/agents/skills/claude-code/next-server-actions/skill.yaml +45 -0
  740. package/dist/agents/skills/claude-code/next-server-components/SKILL.md +82 -0
  741. package/dist/agents/skills/claude-code/next-server-components/skill.yaml +44 -0
  742. package/dist/agents/skills/claude-code/next-static-generation/SKILL.md +75 -0
  743. package/dist/agents/skills/claude-code/next-static-generation/skill.yaml +45 -0
  744. package/dist/agents/skills/claude-code/next-streaming-suspense/SKILL.md +86 -0
  745. package/dist/agents/skills/claude-code/next-streaming-suspense/skill.yaml +44 -0
  746. package/dist/agents/skills/claude-code/next-testing-patterns/SKILL.md +104 -0
  747. package/dist/agents/skills/claude-code/next-testing-patterns/skill.yaml +47 -0
  748. package/dist/agents/skills/claude-code/node-buffer-encoding/SKILL.md +138 -0
  749. package/dist/agents/skills/claude-code/node-buffer-encoding/skill.yaml +40 -0
  750. package/dist/agents/skills/claude-code/node-child-process/SKILL.md +162 -0
  751. package/dist/agents/skills/claude-code/node-child-process/skill.yaml +41 -0
  752. package/dist/agents/skills/claude-code/node-crypto-patterns/SKILL.md +147 -0
  753. package/dist/agents/skills/claude-code/node-crypto-patterns/skill.yaml +42 -0
  754. package/dist/agents/skills/claude-code/node-environment-config/SKILL.md +145 -0
  755. package/dist/agents/skills/claude-code/node-environment-config/skill.yaml +40 -0
  756. package/dist/agents/skills/claude-code/node-error-handling/SKILL.md +183 -0
  757. package/dist/agents/skills/claude-code/node-error-handling/skill.yaml +41 -0
  758. package/dist/agents/skills/claude-code/node-esm-patterns/SKILL.md +149 -0
  759. package/dist/agents/skills/claude-code/node-esm-patterns/skill.yaml +40 -0
  760. package/dist/agents/skills/claude-code/node-event-emitter/SKILL.md +144 -0
  761. package/dist/agents/skills/claude-code/node-event-emitter/skill.yaml +42 -0
  762. package/dist/agents/skills/claude-code/node-express-patterns/SKILL.md +193 -0
  763. package/dist/agents/skills/claude-code/node-express-patterns/skill.yaml +41 -0
  764. package/dist/agents/skills/claude-code/node-fastify-patterns/SKILL.md +200 -0
  765. package/dist/agents/skills/claude-code/node-fastify-patterns/skill.yaml +41 -0
  766. package/dist/agents/skills/claude-code/node-http-server/SKILL.md +159 -0
  767. package/dist/agents/skills/claude-code/node-http-server/skill.yaml +41 -0
  768. package/dist/agents/skills/claude-code/node-path-fs-patterns/SKILL.md +149 -0
  769. package/dist/agents/skills/claude-code/node-path-fs-patterns/skill.yaml +40 -0
  770. package/dist/agents/skills/claude-code/node-performance-profiling/SKILL.md +176 -0
  771. package/dist/agents/skills/claude-code/node-performance-profiling/skill.yaml +45 -0
  772. package/dist/agents/skills/claude-code/node-streams-pattern/SKILL.md +163 -0
  773. package/dist/agents/skills/claude-code/node-streams-pattern/skill.yaml +41 -0
  774. package/dist/agents/skills/claude-code/node-testing-patterns/SKILL.md +205 -0
  775. package/dist/agents/skills/claude-code/node-testing-patterns/skill.yaml +41 -0
  776. package/dist/agents/skills/claude-code/node-worker-threads/SKILL.md +169 -0
  777. package/dist/agents/skills/claude-code/node-worker-threads/skill.yaml +41 -0
  778. package/dist/agents/skills/claude-code/nuxt-auto-imports/SKILL.md +97 -0
  779. package/dist/agents/skills/claude-code/nuxt-auto-imports/skill.yaml +42 -0
  780. package/dist/agents/skills/claude-code/nuxt-composables-pattern/SKILL.md +119 -0
  781. package/dist/agents/skills/claude-code/nuxt-composables-pattern/skill.yaml +42 -0
  782. package/dist/agents/skills/claude-code/nuxt-deployment-config/SKILL.md +209 -0
  783. package/dist/agents/skills/claude-code/nuxt-deployment-config/skill.yaml +44 -0
  784. package/dist/agents/skills/claude-code/nuxt-layouts-pages/SKILL.md +210 -0
  785. package/dist/agents/skills/claude-code/nuxt-layouts-pages/skill.yaml +43 -0
  786. package/dist/agents/skills/claude-code/nuxt-middleware-pattern/SKILL.md +164 -0
  787. package/dist/agents/skills/claude-code/nuxt-middleware-pattern/skill.yaml +42 -0
  788. package/dist/agents/skills/claude-code/nuxt-modules-pattern/SKILL.md +193 -0
  789. package/dist/agents/skills/claude-code/nuxt-modules-pattern/skill.yaml +41 -0
  790. package/dist/agents/skills/claude-code/nuxt-plugins-pattern/SKILL.md +178 -0
  791. package/dist/agents/skills/claude-code/nuxt-plugins-pattern/skill.yaml +41 -0
  792. package/dist/agents/skills/claude-code/nuxt-seo-metadata/SKILL.md +185 -0
  793. package/dist/agents/skills/claude-code/nuxt-seo-metadata/skill.yaml +44 -0
  794. package/dist/agents/skills/claude-code/nuxt-server-routes/SKILL.md +154 -0
  795. package/dist/agents/skills/claude-code/nuxt-server-routes/skill.yaml +42 -0
  796. package/dist/agents/skills/claude-code/nuxt-state-management/SKILL.md +162 -0
  797. package/dist/agents/skills/claude-code/nuxt-state-management/skill.yaml +44 -0
  798. package/dist/agents/skills/claude-code/nuxt-testing-patterns/SKILL.md +203 -0
  799. package/dist/agents/skills/claude-code/nuxt-testing-patterns/skill.yaml +46 -0
  800. package/dist/agents/skills/claude-code/otel-context-propagation/SKILL.md +152 -0
  801. package/dist/agents/skills/claude-code/otel-context-propagation/skill.yaml +40 -0
  802. package/dist/agents/skills/claude-code/otel-custom-instrumentation/SKILL.md +166 -0
  803. package/dist/agents/skills/claude-code/otel-custom-instrumentation/skill.yaml +40 -0
  804. package/dist/agents/skills/claude-code/otel-error-tracking/SKILL.md +163 -0
  805. package/dist/agents/skills/claude-code/otel-error-tracking/skill.yaml +40 -0
  806. package/dist/agents/skills/claude-code/otel-exporter-config/SKILL.md +168 -0
  807. package/dist/agents/skills/claude-code/otel-exporter-config/skill.yaml +40 -0
  808. package/dist/agents/skills/claude-code/otel-logging-pattern/SKILL.md +161 -0
  809. package/dist/agents/skills/claude-code/otel-logging-pattern/skill.yaml +41 -0
  810. package/dist/agents/skills/claude-code/otel-metrics-pattern/SKILL.md +152 -0
  811. package/dist/agents/skills/claude-code/otel-metrics-pattern/skill.yaml +41 -0
  812. package/dist/agents/skills/claude-code/otel-nestjs-integration/SKILL.md +174 -0
  813. package/dist/agents/skills/claude-code/otel-nestjs-integration/skill.yaml +41 -0
  814. package/dist/agents/skills/claude-code/otel-nextjs-integration/SKILL.md +161 -0
  815. package/dist/agents/skills/claude-code/otel-nextjs-integration/skill.yaml +40 -0
  816. package/dist/agents/skills/claude-code/otel-performance-insights/SKILL.md +173 -0
  817. package/dist/agents/skills/claude-code/otel-performance-insights/skill.yaml +45 -0
  818. package/dist/agents/skills/claude-code/otel-sampling-strategies/SKILL.md +162 -0
  819. package/dist/agents/skills/claude-code/otel-sampling-strategies/skill.yaml +39 -0
  820. package/dist/agents/skills/claude-code/otel-sdk-setup/SKILL.md +145 -0
  821. package/dist/agents/skills/claude-code/otel-sdk-setup/skill.yaml +40 -0
  822. package/dist/agents/skills/claude-code/otel-tracing-pattern/SKILL.md +130 -0
  823. package/dist/agents/skills/claude-code/otel-tracing-pattern/skill.yaml +40 -0
  824. package/dist/agents/skills/claude-code/owasp-auth-patterns/SKILL.md +198 -0
  825. package/dist/agents/skills/claude-code/owasp-auth-patterns/skill.yaml +50 -0
  826. package/dist/agents/skills/claude-code/owasp-cryptography/SKILL.md +191 -0
  827. package/dist/agents/skills/claude-code/owasp-cryptography/skill.yaml +48 -0
  828. package/dist/agents/skills/claude-code/owasp-csrf-protection/SKILL.md +175 -0
  829. package/dist/agents/skills/claude-code/owasp-csrf-protection/skill.yaml +45 -0
  830. package/dist/agents/skills/claude-code/owasp-dependency-security/SKILL.md +173 -0
  831. package/dist/agents/skills/claude-code/owasp-dependency-security/skill.yaml +45 -0
  832. package/dist/agents/skills/claude-code/owasp-file-upload-security/SKILL.md +199 -0
  833. package/dist/agents/skills/claude-code/owasp-file-upload-security/skill.yaml +44 -0
  834. package/dist/agents/skills/claude-code/owasp-idor-prevention/SKILL.md +174 -0
  835. package/dist/agents/skills/claude-code/owasp-idor-prevention/skill.yaml +46 -0
  836. package/dist/agents/skills/claude-code/owasp-injection-prevention/SKILL.md +160 -0
  837. package/dist/agents/skills/claude-code/owasp-injection-prevention/skill.yaml +48 -0
  838. package/dist/agents/skills/claude-code/owasp-logging-monitoring/SKILL.md +214 -0
  839. package/dist/agents/skills/claude-code/owasp-logging-monitoring/skill.yaml +46 -0
  840. package/dist/agents/skills/claude-code/owasp-rate-limiting/SKILL.md +216 -0
  841. package/dist/agents/skills/claude-code/owasp-rate-limiting/skill.yaml +45 -0
  842. package/dist/agents/skills/claude-code/owasp-secrets-management/SKILL.md +172 -0
  843. package/dist/agents/skills/claude-code/owasp-secrets-management/skill.yaml +49 -0
  844. package/dist/agents/skills/claude-code/owasp-security-headers/SKILL.md +221 -0
  845. package/dist/agents/skills/claude-code/owasp-security-headers/skill.yaml +44 -0
  846. package/dist/agents/skills/claude-code/owasp-xss-prevention/SKILL.md +174 -0
  847. package/dist/agents/skills/claude-code/owasp-xss-prevention/skill.yaml +45 -0
  848. package/dist/agents/skills/claude-code/perf-browser-cache/SKILL.md +151 -0
  849. package/dist/agents/skills/claude-code/perf-browser-cache/skill.yaml +39 -0
  850. package/dist/agents/skills/claude-code/perf-bundle-analysis/SKILL.md +217 -0
  851. package/dist/agents/skills/claude-code/perf-bundle-analysis/skill.yaml +37 -0
  852. package/dist/agents/skills/claude-code/perf-cache-invalidation/SKILL.md +228 -0
  853. package/dist/agents/skills/claude-code/perf-cache-invalidation/skill.yaml +38 -0
  854. package/dist/agents/skills/claude-code/perf-cdn-cache-control/SKILL.md +198 -0
  855. package/dist/agents/skills/claude-code/perf-cdn-cache-control/skill.yaml +40 -0
  856. package/dist/agents/skills/claude-code/perf-cdn-strategies/SKILL.md +161 -0
  857. package/dist/agents/skills/claude-code/perf-cdn-strategies/skill.yaml +40 -0
  858. package/dist/agents/skills/claude-code/perf-client-side-rendering/SKILL.md +245 -0
  859. package/dist/agents/skills/claude-code/perf-client-side-rendering/skill.yaml +40 -0
  860. package/dist/agents/skills/claude-code/perf-code-splitting/SKILL.md +185 -0
  861. package/dist/agents/skills/claude-code/perf-code-splitting/skill.yaml +39 -0
  862. package/dist/agents/skills/claude-code/perf-compression/SKILL.md +163 -0
  863. package/dist/agents/skills/claude-code/perf-compression/skill.yaml +38 -0
  864. package/dist/agents/skills/claude-code/perf-connection-costs/SKILL.md +165 -0
  865. package/dist/agents/skills/claude-code/perf-connection-costs/skill.yaml +40 -0
  866. package/dist/agents/skills/claude-code/perf-connection-pooling/SKILL.md +250 -0
  867. package/dist/agents/skills/claude-code/perf-connection-pooling/skill.yaml +38 -0
  868. package/dist/agents/skills/claude-code/perf-critical-rendering-path/SKILL.md +167 -0
  869. package/dist/agents/skills/claude-code/perf-critical-rendering-path/skill.yaml +39 -0
  870. package/dist/agents/skills/claude-code/perf-cumulative-layout-shift/SKILL.md +180 -0
  871. package/dist/agents/skills/claude-code/perf-cumulative-layout-shift/skill.yaml +40 -0
  872. package/dist/agents/skills/claude-code/perf-dom-parsing/SKILL.md +153 -0
  873. package/dist/agents/skills/claude-code/perf-dom-parsing/skill.yaml +36 -0
  874. package/dist/agents/skills/claude-code/perf-edge-rendering/SKILL.md +222 -0
  875. package/dist/agents/skills/claude-code/perf-edge-rendering/skill.yaml +39 -0
  876. package/dist/agents/skills/claude-code/perf-event-loop/SKILL.md +203 -0
  877. package/dist/agents/skills/claude-code/perf-event-loop/skill.yaml +38 -0
  878. package/dist/agents/skills/claude-code/perf-font-loading/SKILL.md +222 -0
  879. package/dist/agents/skills/claude-code/perf-font-loading/skill.yaml +39 -0
  880. package/dist/agents/skills/claude-code/perf-garbage-collection/SKILL.md +192 -0
  881. package/dist/agents/skills/claude-code/perf-garbage-collection/skill.yaml +40 -0
  882. package/dist/agents/skills/claude-code/perf-heap-profiling/SKILL.md +160 -0
  883. package/dist/agents/skills/claude-code/perf-heap-profiling/skill.yaml +38 -0
  884. package/dist/agents/skills/claude-code/perf-http2-multiplexing/SKILL.md +163 -0
  885. package/dist/agents/skills/claude-code/perf-http2-multiplexing/skill.yaml +38 -0
  886. package/dist/agents/skills/claude-code/perf-http3-quic/SKILL.md +165 -0
  887. package/dist/agents/skills/claude-code/perf-http3-quic/skill.yaml +37 -0
  888. package/dist/agents/skills/claude-code/perf-image-formats/SKILL.md +183 -0
  889. package/dist/agents/skills/claude-code/perf-image-formats/skill.yaml +39 -0
  890. package/dist/agents/skills/claude-code/perf-index-strategies/SKILL.md +210 -0
  891. package/dist/agents/skills/claude-code/perf-index-strategies/skill.yaml +40 -0
  892. package/dist/agents/skills/claude-code/perf-interaction-to-next-paint/SKILL.md +170 -0
  893. package/dist/agents/skills/claude-code/perf-interaction-to-next-paint/skill.yaml +40 -0
  894. package/dist/agents/skills/claude-code/perf-largest-contentful-paint/SKILL.md +162 -0
  895. package/dist/agents/skills/claude-code/perf-largest-contentful-paint/skill.yaml +41 -0
  896. package/dist/agents/skills/claude-code/perf-layout-reflow/SKILL.md +187 -0
  897. package/dist/agents/skills/claude-code/perf-layout-reflow/skill.yaml +38 -0
  898. package/dist/agents/skills/claude-code/perf-lazy-loading/SKILL.md +217 -0
  899. package/dist/agents/skills/claude-code/perf-lazy-loading/skill.yaml +38 -0
  900. package/dist/agents/skills/claude-code/perf-lazy-loading-media/SKILL.md +233 -0
  901. package/dist/agents/skills/claude-code/perf-lazy-loading-media/skill.yaml +38 -0
  902. package/dist/agents/skills/claude-code/perf-long-tasks/SKILL.md +194 -0
  903. package/dist/agents/skills/claude-code/perf-long-tasks/skill.yaml +38 -0
  904. package/dist/agents/skills/claude-code/perf-memory-leaks/SKILL.md +218 -0
  905. package/dist/agents/skills/claude-code/perf-memory-leaks/skill.yaml +38 -0
  906. package/dist/agents/skills/claude-code/perf-module-federation/SKILL.md +242 -0
  907. package/dist/agents/skills/claude-code/perf-module-federation/skill.yaml +38 -0
  908. package/dist/agents/skills/claude-code/perf-n-plus-one/SKILL.md +237 -0
  909. package/dist/agents/skills/claude-code/perf-n-plus-one/skill.yaml +40 -0
  910. package/dist/agents/skills/claude-code/perf-paint-compositing/SKILL.md +181 -0
  911. package/dist/agents/skills/claude-code/perf-paint-compositing/skill.yaml +40 -0
  912. package/dist/agents/skills/claude-code/perf-performance-api/SKILL.md +249 -0
  913. package/dist/agents/skills/claude-code/perf-performance-api/skill.yaml +41 -0
  914. package/dist/agents/skills/claude-code/perf-profiling-methodology/SKILL.md +181 -0
  915. package/dist/agents/skills/claude-code/perf-profiling-methodology/skill.yaml +44 -0
  916. package/dist/agents/skills/claude-code/perf-query-optimization/SKILL.md +203 -0
  917. package/dist/agents/skills/claude-code/perf-query-optimization/skill.yaml +39 -0
  918. package/dist/agents/skills/claude-code/perf-resource-hints/SKILL.md +167 -0
  919. package/dist/agents/skills/claude-code/perf-resource-hints/skill.yaml +40 -0
  920. package/dist/agents/skills/claude-code/perf-responsive-images/SKILL.md +225 -0
  921. package/dist/agents/skills/claude-code/perf-responsive-images/skill.yaml +38 -0
  922. package/dist/agents/skills/claude-code/perf-server-side-caching/SKILL.md +194 -0
  923. package/dist/agents/skills/claude-code/perf-server-side-caching/skill.yaml +40 -0
  924. package/dist/agents/skills/claude-code/perf-server-side-rendering/SKILL.md +239 -0
  925. package/dist/agents/skills/claude-code/perf-server-side-rendering/skill.yaml +39 -0
  926. package/dist/agents/skills/claude-code/perf-service-worker-caching/SKILL.md +247 -0
  927. package/dist/agents/skills/claude-code/perf-service-worker-caching/skill.yaml +40 -0
  928. package/dist/agents/skills/claude-code/perf-static-generation/SKILL.md +241 -0
  929. package/dist/agents/skills/claude-code/perf-static-generation/skill.yaml +39 -0
  930. package/dist/agents/skills/claude-code/perf-streaming-rendering/SKILL.md +242 -0
  931. package/dist/agents/skills/claude-code/perf-streaming-rendering/skill.yaml +37 -0
  932. package/dist/agents/skills/claude-code/perf-style-calculation/SKILL.md +166 -0
  933. package/dist/agents/skills/claude-code/perf-style-calculation/skill.yaml +36 -0
  934. package/dist/agents/skills/claude-code/perf-svg-optimization/SKILL.md +249 -0
  935. package/dist/agents/skills/claude-code/perf-svg-optimization/skill.yaml +37 -0
  936. package/dist/agents/skills/claude-code/perf-tree-shaking/SKILL.md +225 -0
  937. package/dist/agents/skills/claude-code/perf-tree-shaking/skill.yaml +38 -0
  938. package/dist/agents/skills/claude-code/perf-web-workers/SKILL.md +237 -0
  939. package/dist/agents/skills/claude-code/perf-web-workers/skill.yaml +40 -0
  940. package/dist/agents/skills/claude-code/prisma-client-queries/SKILL.md +147 -0
  941. package/dist/agents/skills/claude-code/prisma-client-queries/skill.yaml +47 -0
  942. package/dist/agents/skills/claude-code/prisma-filtering-sorting/SKILL.md +157 -0
  943. package/dist/agents/skills/claude-code/prisma-filtering-sorting/skill.yaml +46 -0
  944. package/dist/agents/skills/claude-code/prisma-migrations/SKILL.md +115 -0
  945. package/dist/agents/skills/claude-code/prisma-migrations/skill.yaml +44 -0
  946. package/dist/agents/skills/claude-code/prisma-performance-patterns/SKILL.md +160 -0
  947. package/dist/agents/skills/claude-code/prisma-performance-patterns/skill.yaml +51 -0
  948. package/dist/agents/skills/claude-code/prisma-raw-queries/SKILL.md +125 -0
  949. package/dist/agents/skills/claude-code/prisma-raw-queries/skill.yaml +42 -0
  950. package/dist/agents/skills/claude-code/prisma-relations-pattern/SKILL.md +151 -0
  951. package/dist/agents/skills/claude-code/prisma-relations-pattern/skill.yaml +43 -0
  952. package/dist/agents/skills/claude-code/prisma-schema-design/SKILL.md +108 -0
  953. package/dist/agents/skills/claude-code/prisma-schema-design/skill.yaml +50 -0
  954. package/dist/agents/skills/claude-code/prisma-seeding-pattern/SKILL.md +168 -0
  955. package/dist/agents/skills/claude-code/prisma-seeding-pattern/skill.yaml +42 -0
  956. package/dist/agents/skills/claude-code/prisma-soft-delete/SKILL.md +172 -0
  957. package/dist/agents/skills/claude-code/prisma-soft-delete/skill.yaml +42 -0
  958. package/dist/agents/skills/claude-code/prisma-transactions/SKILL.md +147 -0
  959. package/dist/agents/skills/claude-code/prisma-transactions/skill.yaml +45 -0
  960. package/dist/agents/skills/claude-code/prisma-type-generation/SKILL.md +180 -0
  961. package/dist/agents/skills/claude-code/prisma-type-generation/skill.yaml +43 -0
  962. package/dist/agents/skills/claude-code/react-2026/SKILL.md +86 -0
  963. package/dist/agents/skills/claude-code/react-2026/skill.yaml +40 -0
  964. package/dist/agents/skills/claude-code/react-client-rendering/SKILL.md +60 -0
  965. package/dist/agents/skills/claude-code/react-client-rendering/skill.yaml +38 -0
  966. package/dist/agents/skills/claude-code/react-compound-pattern/SKILL.md +80 -0
  967. package/dist/agents/skills/claude-code/react-compound-pattern/skill.yaml +37 -0
  968. package/dist/agents/skills/claude-code/react-concurrent-ui/SKILL.md +59 -0
  969. package/dist/agents/skills/claude-code/react-concurrent-ui/skill.yaml +37 -0
  970. package/dist/agents/skills/claude-code/react-container-presentational/SKILL.md +76 -0
  971. package/dist/agents/skills/claude-code/react-container-presentational/skill.yaml +37 -0
  972. package/dist/agents/skills/claude-code/react-context-pattern/SKILL.md +75 -0
  973. package/dist/agents/skills/claude-code/react-context-pattern/skill.yaml +38 -0
  974. package/dist/agents/skills/claude-code/react-dynamic-import/SKILL.md +65 -0
  975. package/dist/agents/skills/claude-code/react-dynamic-import/skill.yaml +41 -0
  976. package/dist/agents/skills/claude-code/react-hoc-pattern/SKILL.md +71 -0
  977. package/dist/agents/skills/claude-code/react-hoc-pattern/skill.yaml +36 -0
  978. package/dist/agents/skills/claude-code/react-hooks-pattern/SKILL.md +74 -0
  979. package/dist/agents/skills/claude-code/react-hooks-pattern/skill.yaml +38 -0
  980. package/dist/agents/skills/claude-code/react-islands-pattern/SKILL.md +67 -0
  981. package/dist/agents/skills/claude-code/react-islands-pattern/skill.yaml +40 -0
  982. package/dist/agents/skills/claude-code/react-memoization-pattern/SKILL.md +64 -0
  983. package/dist/agents/skills/claude-code/react-memoization-pattern/skill.yaml +38 -0
  984. package/dist/agents/skills/claude-code/react-progressive-hydration/SKILL.md +74 -0
  985. package/dist/agents/skills/claude-code/react-progressive-hydration/skill.yaml +38 -0
  986. package/dist/agents/skills/claude-code/react-provider-pattern/SKILL.md +72 -0
  987. package/dist/agents/skills/claude-code/react-provider-pattern/skill.yaml +38 -0
  988. package/dist/agents/skills/claude-code/react-render-props-pattern/SKILL.md +73 -0
  989. package/dist/agents/skills/claude-code/react-render-props-pattern/skill.yaml +36 -0
  990. package/dist/agents/skills/claude-code/react-server-components/SKILL.md +81 -0
  991. package/dist/agents/skills/claude-code/react-server-components/skill.yaml +40 -0
  992. package/dist/agents/skills/claude-code/react-server-rendering/SKILL.md +63 -0
  993. package/dist/agents/skills/claude-code/react-server-rendering/skill.yaml +40 -0
  994. package/dist/agents/skills/claude-code/react-state-management-pattern/SKILL.md +72 -0
  995. package/dist/agents/skills/claude-code/react-state-management-pattern/skill.yaml +41 -0
  996. package/dist/agents/skills/claude-code/react-static-import/SKILL.md +61 -0
  997. package/dist/agents/skills/claude-code/react-static-import/skill.yaml +38 -0
  998. package/dist/agents/skills/claude-code/react-suspense-pattern/SKILL.md +62 -0
  999. package/dist/agents/skills/claude-code/react-suspense-pattern/skill.yaml +38 -0
  1000. package/dist/agents/skills/claude-code/redux-entity-adapter/SKILL.md +120 -0
  1001. package/dist/agents/skills/claude-code/redux-entity-adapter/skill.yaml +40 -0
  1002. package/dist/agents/skills/claude-code/redux-listener-middleware/SKILL.md +117 -0
  1003. package/dist/agents/skills/claude-code/redux-listener-middleware/skill.yaml +40 -0
  1004. package/dist/agents/skills/claude-code/redux-persistence-pattern/SKILL.md +144 -0
  1005. package/dist/agents/skills/claude-code/redux-persistence-pattern/skill.yaml +41 -0
  1006. package/dist/agents/skills/claude-code/redux-rtk-optimistic/SKILL.md +117 -0
  1007. package/dist/agents/skills/claude-code/redux-rtk-optimistic/skill.yaml +40 -0
  1008. package/dist/agents/skills/claude-code/redux-rtk-query-endpoints/SKILL.md +131 -0
  1009. package/dist/agents/skills/claude-code/redux-rtk-query-endpoints/skill.yaml +41 -0
  1010. package/dist/agents/skills/claude-code/redux-rtk-query-setup/SKILL.md +117 -0
  1011. package/dist/agents/skills/claude-code/redux-rtk-query-setup/skill.yaml +40 -0
  1012. package/dist/agents/skills/claude-code/redux-selectors-pattern/SKILL.md +100 -0
  1013. package/dist/agents/skills/claude-code/redux-selectors-pattern/skill.yaml +40 -0
  1014. package/dist/agents/skills/claude-code/redux-slice-pattern/SKILL.md +117 -0
  1015. package/dist/agents/skills/claude-code/redux-slice-pattern/skill.yaml +40 -0
  1016. package/dist/agents/skills/claude-code/redux-store-setup/SKILL.md +103 -0
  1017. package/dist/agents/skills/claude-code/redux-store-setup/skill.yaml +40 -0
  1018. package/dist/agents/skills/claude-code/redux-testing-patterns/SKILL.md +138 -0
  1019. package/dist/agents/skills/claude-code/redux-testing-patterns/skill.yaml +42 -0
  1020. package/dist/agents/skills/claude-code/redux-thunk-pattern/SKILL.md +119 -0
  1021. package/dist/agents/skills/claude-code/redux-thunk-pattern/skill.yaml +42 -0
  1022. package/dist/agents/skills/claude-code/redux-typescript-patterns/SKILL.md +115 -0
  1023. package/dist/agents/skills/claude-code/redux-typescript-patterns/skill.yaml +41 -0
  1024. package/dist/agents/skills/claude-code/resilience-bulkhead-pattern/SKILL.md +145 -0
  1025. package/dist/agents/skills/claude-code/resilience-bulkhead-pattern/skill.yaml +39 -0
  1026. package/dist/agents/skills/claude-code/resilience-chaos-testing/SKILL.md +172 -0
  1027. package/dist/agents/skills/claude-code/resilience-chaos-testing/skill.yaml +39 -0
  1028. package/dist/agents/skills/claude-code/resilience-circuit-breaker/SKILL.md +159 -0
  1029. package/dist/agents/skills/claude-code/resilience-circuit-breaker/skill.yaml +40 -0
  1030. package/dist/agents/skills/claude-code/resilience-dead-letter/SKILL.md +185 -0
  1031. package/dist/agents/skills/claude-code/resilience-dead-letter/skill.yaml +40 -0
  1032. package/dist/agents/skills/claude-code/resilience-fallback-pattern/SKILL.md +155 -0
  1033. package/dist/agents/skills/claude-code/resilience-fallback-pattern/skill.yaml +39 -0
  1034. package/dist/agents/skills/claude-code/resilience-health-checks/SKILL.md +180 -0
  1035. package/dist/agents/skills/claude-code/resilience-health-checks/skill.yaml +39 -0
  1036. package/dist/agents/skills/claude-code/resilience-idempotency/SKILL.md +167 -0
  1037. package/dist/agents/skills/claude-code/resilience-idempotency/skill.yaml +39 -0
  1038. package/dist/agents/skills/claude-code/resilience-rate-limiting/SKILL.md +171 -0
  1039. package/dist/agents/skills/claude-code/resilience-rate-limiting/skill.yaml +39 -0
  1040. package/dist/agents/skills/claude-code/resilience-retry-pattern/SKILL.md +137 -0
  1041. package/dist/agents/skills/claude-code/resilience-retry-pattern/skill.yaml +40 -0
  1042. package/dist/agents/skills/claude-code/resilience-timeout-pattern/SKILL.md +148 -0
  1043. package/dist/agents/skills/claude-code/resilience-timeout-pattern/skill.yaml +39 -0
  1044. package/dist/agents/skills/claude-code/security-abac-design/SKILL.md +154 -0
  1045. package/dist/agents/skills/claude-code/security-abac-design/skill.yaml +41 -0
  1046. package/dist/agents/skills/claude-code/security-asymmetric-encryption/SKILL.md +201 -0
  1047. package/dist/agents/skills/claude-code/security-asymmetric-encryption/skill.yaml +42 -0
  1048. package/dist/agents/skills/claude-code/security-attack-trees/SKILL.md +150 -0
  1049. package/dist/agents/skills/claude-code/security-attack-trees/skill.yaml +37 -0
  1050. package/dist/agents/skills/claude-code/security-audit-log-design/SKILL.md +227 -0
  1051. package/dist/agents/skills/claude-code/security-audit-log-design/skill.yaml +39 -0
  1052. package/dist/agents/skills/claude-code/security-authentication-flows/SKILL.md +168 -0
  1053. package/dist/agents/skills/claude-code/security-authentication-flows/skill.yaml +42 -0
  1054. package/dist/agents/skills/claude-code/security-capability-based-security/SKILL.md +158 -0
  1055. package/dist/agents/skills/claude-code/security-capability-based-security/skill.yaml +40 -0
  1056. package/dist/agents/skills/claude-code/security-certificate-management/SKILL.md +153 -0
  1057. package/dist/agents/skills/claude-code/security-certificate-management/skill.yaml +42 -0
  1058. package/dist/agents/skills/claude-code/security-ci-security-testing/SKILL.md +159 -0
  1059. package/dist/agents/skills/claude-code/security-ci-security-testing/skill.yaml +43 -0
  1060. package/dist/agents/skills/claude-code/security-code-signing/SKILL.md +155 -0
  1061. package/dist/agents/skills/claude-code/security-code-signing/skill.yaml +40 -0
  1062. package/dist/agents/skills/claude-code/security-compliance-logging/SKILL.md +183 -0
  1063. package/dist/agents/skills/claude-code/security-compliance-logging/skill.yaml +38 -0
  1064. package/dist/agents/skills/claude-code/security-credential-storage/SKILL.md +222 -0
  1065. package/dist/agents/skills/claude-code/security-credential-storage/skill.yaml +41 -0
  1066. package/dist/agents/skills/claude-code/security-cryptographic-randomness/SKILL.md +154 -0
  1067. package/dist/agents/skills/claude-code/security-cryptographic-randomness/skill.yaml +41 -0
  1068. package/dist/agents/skills/claude-code/security-dependency-auditing/SKILL.md +156 -0
  1069. package/dist/agents/skills/claude-code/security-dependency-auditing/skill.yaml +39 -0
  1070. package/dist/agents/skills/claude-code/security-deserialization-attacks/SKILL.md +180 -0
  1071. package/dist/agents/skills/claude-code/security-deserialization-attacks/skill.yaml +38 -0
  1072. package/dist/agents/skills/claude-code/security-environment-variable-risks/SKILL.md +153 -0
  1073. package/dist/agents/skills/claude-code/security-environment-variable-risks/skill.yaml +37 -0
  1074. package/dist/agents/skills/claude-code/security-forensics-fundamentals/SKILL.md +198 -0
  1075. package/dist/agents/skills/claude-code/security-forensics-fundamentals/skill.yaml +40 -0
  1076. package/dist/agents/skills/claude-code/security-hashing-fundamentals/SKILL.md +212 -0
  1077. package/dist/agents/skills/claude-code/security-hashing-fundamentals/skill.yaml +40 -0
  1078. package/dist/agents/skills/claude-code/security-hmac-signatures/SKILL.md +165 -0
  1079. package/dist/agents/skills/claude-code/security-hmac-signatures/skill.yaml +40 -0
  1080. package/dist/agents/skills/claude-code/security-hsts-preloading/SKILL.md +154 -0
  1081. package/dist/agents/skills/claude-code/security-hsts-preloading/skill.yaml +38 -0
  1082. package/dist/agents/skills/claude-code/security-identity-verification/SKILL.md +157 -0
  1083. package/dist/agents/skills/claude-code/security-identity-verification/skill.yaml +39 -0
  1084. package/dist/agents/skills/claude-code/security-incident-containment/SKILL.md +190 -0
  1085. package/dist/agents/skills/claude-code/security-incident-containment/skill.yaml +40 -0
  1086. package/dist/agents/skills/claude-code/security-injection-families/SKILL.md +235 -0
  1087. package/dist/agents/skills/claude-code/security-injection-families/skill.yaml +41 -0
  1088. package/dist/agents/skills/claude-code/security-log-correlation/SKILL.md +178 -0
  1089. package/dist/agents/skills/claude-code/security-log-correlation/skill.yaml +39 -0
  1090. package/dist/agents/skills/claude-code/security-memory-safety/SKILL.md +234 -0
  1091. package/dist/agents/skills/claude-code/security-memory-safety/skill.yaml +39 -0
  1092. package/dist/agents/skills/claude-code/security-mfa-design/SKILL.md +150 -0
  1093. package/dist/agents/skills/claude-code/security-mfa-design/skill.yaml +41 -0
  1094. package/dist/agents/skills/claude-code/security-microsegmentation/SKILL.md +154 -0
  1095. package/dist/agents/skills/claude-code/security-microsegmentation/skill.yaml +40 -0
  1096. package/dist/agents/skills/claude-code/security-mtls-design/SKILL.md +158 -0
  1097. package/dist/agents/skills/claude-code/security-mtls-design/skill.yaml +39 -0
  1098. package/dist/agents/skills/claude-code/security-penetration-testing/SKILL.md +166 -0
  1099. package/dist/agents/skills/claude-code/security-penetration-testing/skill.yaml +40 -0
  1100. package/dist/agents/skills/claude-code/security-post-incident-review/SKILL.md +205 -0
  1101. package/dist/agents/skills/claude-code/security-post-incident-review/skill.yaml +39 -0
  1102. package/dist/agents/skills/claude-code/security-race-conditions/SKILL.md +186 -0
  1103. package/dist/agents/skills/claude-code/security-race-conditions/skill.yaml +39 -0
  1104. package/dist/agents/skills/claude-code/security-rbac-design/SKILL.md +209 -0
  1105. package/dist/agents/skills/claude-code/security-rbac-design/skill.yaml +40 -0
  1106. package/dist/agents/skills/claude-code/security-rebac-design/SKILL.md +154 -0
  1107. package/dist/agents/skills/claude-code/security-rebac-design/skill.yaml +39 -0
  1108. package/dist/agents/skills/claude-code/security-sbom-provenance/SKILL.md +157 -0
  1109. package/dist/agents/skills/claude-code/security-sbom-provenance/skill.yaml +39 -0
  1110. package/dist/agents/skills/claude-code/security-secrets-lifecycle/SKILL.md +190 -0
  1111. package/dist/agents/skills/claude-code/security-secrets-lifecycle/skill.yaml +39 -0
  1112. package/dist/agents/skills/claude-code/security-security-champions/SKILL.md +165 -0
  1113. package/dist/agents/skills/claude-code/security-security-champions/skill.yaml +37 -0
  1114. package/dist/agents/skills/claude-code/security-session-management/SKILL.md +196 -0
  1115. package/dist/agents/skills/claude-code/security-session-management/skill.yaml +41 -0
  1116. package/dist/agents/skills/claude-code/security-shift-left-design/SKILL.md +153 -0
  1117. package/dist/agents/skills/claude-code/security-shift-left-design/skill.yaml +38 -0
  1118. package/dist/agents/skills/claude-code/security-symmetric-encryption/SKILL.md +176 -0
  1119. package/dist/agents/skills/claude-code/security-symmetric-encryption/skill.yaml +41 -0
  1120. package/dist/agents/skills/claude-code/security-threat-modeling-process/SKILL.md +150 -0
  1121. package/dist/agents/skills/claude-code/security-threat-modeling-process/skill.yaml +38 -0
  1122. package/dist/agents/skills/claude-code/security-threat-modeling-stride/SKILL.md +150 -0
  1123. package/dist/agents/skills/claude-code/security-threat-modeling-stride/skill.yaml +40 -0
  1124. package/dist/agents/skills/claude-code/security-tls-fundamentals/SKILL.md +186 -0
  1125. package/dist/agents/skills/claude-code/security-tls-fundamentals/skill.yaml +40 -0
  1126. package/dist/agents/skills/claude-code/security-trust-boundaries/SKILL.md +152 -0
  1127. package/dist/agents/skills/claude-code/security-trust-boundaries/skill.yaml +39 -0
  1128. package/dist/agents/skills/claude-code/security-vault-patterns/SKILL.md +155 -0
  1129. package/dist/agents/skills/claude-code/security-vault-patterns/skill.yaml +39 -0
  1130. package/dist/agents/skills/claude-code/security-vulnerability-disclosure/SKILL.md +207 -0
  1131. package/dist/agents/skills/claude-code/security-vulnerability-disclosure/skill.yaml +39 -0
  1132. package/dist/agents/skills/claude-code/security-zero-trust-principles/SKILL.md +229 -0
  1133. package/dist/agents/skills/claude-code/security-zero-trust-principles/skill.yaml +40 -0
  1134. package/dist/agents/skills/claude-code/state-context-pattern/SKILL.md +143 -0
  1135. package/dist/agents/skills/claude-code/state-context-pattern/skill.yaml +39 -0
  1136. package/dist/agents/skills/claude-code/state-jotai-atoms/SKILL.md +153 -0
  1137. package/dist/agents/skills/claude-code/state-jotai-atoms/skill.yaml +40 -0
  1138. package/dist/agents/skills/claude-code/state-selection-patterns/SKILL.md +115 -0
  1139. package/dist/agents/skills/claude-code/state-selection-patterns/skill.yaml +40 -0
  1140. package/dist/agents/skills/claude-code/state-server-client-sync/SKILL.md +148 -0
  1141. package/dist/agents/skills/claude-code/state-server-client-sync/skill.yaml +41 -0
  1142. package/dist/agents/skills/claude-code/state-zustand-devtools/SKILL.md +120 -0
  1143. package/dist/agents/skills/claude-code/state-zustand-devtools/skill.yaml +39 -0
  1144. package/dist/agents/skills/claude-code/state-zustand-immer/SKILL.md +150 -0
  1145. package/dist/agents/skills/claude-code/state-zustand-immer/skill.yaml +39 -0
  1146. package/dist/agents/skills/claude-code/state-zustand-persist/SKILL.md +148 -0
  1147. package/dist/agents/skills/claude-code/state-zustand-persist/skill.yaml +39 -0
  1148. package/dist/agents/skills/claude-code/state-zustand-react/SKILL.md +136 -0
  1149. package/dist/agents/skills/claude-code/state-zustand-react/skill.yaml +41 -0
  1150. package/dist/agents/skills/claude-code/state-zustand-slices/SKILL.md +135 -0
  1151. package/dist/agents/skills/claude-code/state-zustand-slices/skill.yaml +40 -0
  1152. package/dist/agents/skills/claude-code/state-zustand-store/SKILL.md +123 -0
  1153. package/dist/agents/skills/claude-code/state-zustand-store/skill.yaml +40 -0
  1154. package/dist/agents/skills/claude-code/svelte-adapter-config/SKILL.md +262 -0
  1155. package/dist/agents/skills/claude-code/svelte-adapter-config/skill.yaml +43 -0
  1156. package/dist/agents/skills/claude-code/svelte-component-composition/SKILL.md +222 -0
  1157. package/dist/agents/skills/claude-code/svelte-component-composition/skill.yaml +42 -0
  1158. package/dist/agents/skills/claude-code/svelte-error-pages/SKILL.md +186 -0
  1159. package/dist/agents/skills/claude-code/svelte-error-pages/skill.yaml +43 -0
  1160. package/dist/agents/skills/claude-code/svelte-form-actions/SKILL.md +230 -0
  1161. package/dist/agents/skills/claude-code/svelte-form-actions/skill.yaml +42 -0
  1162. package/dist/agents/skills/claude-code/svelte-load-functions/SKILL.md +206 -0
  1163. package/dist/agents/skills/claude-code/svelte-load-functions/skill.yaml +45 -0
  1164. package/dist/agents/skills/claude-code/svelte-performance-patterns/SKILL.md +218 -0
  1165. package/dist/agents/skills/claude-code/svelte-performance-patterns/skill.yaml +49 -0
  1166. package/dist/agents/skills/claude-code/svelte-routing-pattern/SKILL.md +203 -0
  1167. package/dist/agents/skills/claude-code/svelte-routing-pattern/skill.yaml +44 -0
  1168. package/dist/agents/skills/claude-code/svelte-runes-pattern/SKILL.md +204 -0
  1169. package/dist/agents/skills/claude-code/svelte-runes-pattern/skill.yaml +44 -0
  1170. package/dist/agents/skills/claude-code/svelte-server-hooks/SKILL.md +239 -0
  1171. package/dist/agents/skills/claude-code/svelte-server-hooks/skill.yaml +44 -0
  1172. package/dist/agents/skills/claude-code/svelte-state-management/SKILL.md +196 -0
  1173. package/dist/agents/skills/claude-code/svelte-state-management/skill.yaml +44 -0
  1174. package/dist/agents/skills/claude-code/svelte-stores-pattern/SKILL.md +187 -0
  1175. package/dist/agents/skills/claude-code/svelte-stores-pattern/skill.yaml +44 -0
  1176. package/dist/agents/skills/claude-code/svelte-testing-patterns/SKILL.md +231 -0
  1177. package/dist/agents/skills/claude-code/svelte-testing-patterns/skill.yaml +46 -0
  1178. package/dist/agents/skills/claude-code/svelte-transitions-animations/SKILL.md +222 -0
  1179. package/dist/agents/skills/claude-code/svelte-transitions-animations/skill.yaml +44 -0
  1180. package/dist/agents/skills/claude-code/tanstack-cache-management/SKILL.md +108 -0
  1181. package/dist/agents/skills/claude-code/tanstack-cache-management/skill.yaml +44 -0
  1182. package/dist/agents/skills/claude-code/tanstack-dependent-queries/SKILL.md +108 -0
  1183. package/dist/agents/skills/claude-code/tanstack-dependent-queries/skill.yaml +42 -0
  1184. package/dist/agents/skills/claude-code/tanstack-devtools/SKILL.md +100 -0
  1185. package/dist/agents/skills/claude-code/tanstack-devtools/skill.yaml +44 -0
  1186. package/dist/agents/skills/claude-code/tanstack-infinite-queries/SKILL.md +106 -0
  1187. package/dist/agents/skills/claude-code/tanstack-infinite-queries/skill.yaml +44 -0
  1188. package/dist/agents/skills/claude-code/tanstack-mutation-patterns/SKILL.md +122 -0
  1189. package/dist/agents/skills/claude-code/tanstack-mutation-patterns/skill.yaml +44 -0
  1190. package/dist/agents/skills/claude-code/tanstack-optimistic-updates/SKILL.md +106 -0
  1191. package/dist/agents/skills/claude-code/tanstack-optimistic-updates/skill.yaml +44 -0
  1192. package/dist/agents/skills/claude-code/tanstack-prefetching/SKILL.md +106 -0
  1193. package/dist/agents/skills/claude-code/tanstack-prefetching/skill.yaml +44 -0
  1194. package/dist/agents/skills/claude-code/tanstack-query-invalidation/SKILL.md +95 -0
  1195. package/dist/agents/skills/claude-code/tanstack-query-invalidation/skill.yaml +43 -0
  1196. package/dist/agents/skills/claude-code/tanstack-query-keys/SKILL.md +94 -0
  1197. package/dist/agents/skills/claude-code/tanstack-query-keys/skill.yaml +43 -0
  1198. package/dist/agents/skills/claude-code/tanstack-suspense-mode/SKILL.md +96 -0
  1199. package/dist/agents/skills/claude-code/tanstack-suspense-mode/skill.yaml +42 -0
  1200. package/dist/agents/skills/claude-code/test-accessibility-testing/SKILL.md +201 -0
  1201. package/dist/agents/skills/claude-code/test-accessibility-testing/skill.yaml +43 -0
  1202. package/dist/agents/skills/claude-code/test-component-react/SKILL.md +173 -0
  1203. package/dist/agents/skills/claude-code/test-component-react/skill.yaml +45 -0
  1204. package/dist/agents/skills/claude-code/test-component-svelte/SKILL.md +184 -0
  1205. package/dist/agents/skills/claude-code/test-component-svelte/skill.yaml +43 -0
  1206. package/dist/agents/skills/claude-code/test-contract-testing/SKILL.md +180 -0
  1207. package/dist/agents/skills/claude-code/test-contract-testing/skill.yaml +42 -0
  1208. package/dist/agents/skills/claude-code/test-coverage-patterns/SKILL.md +165 -0
  1209. package/dist/agents/skills/claude-code/test-coverage-patterns/skill.yaml +44 -0
  1210. package/dist/agents/skills/claude-code/test-e2e-strategy/SKILL.md +146 -0
  1211. package/dist/agents/skills/claude-code/test-e2e-strategy/skill.yaml +44 -0
  1212. package/dist/agents/skills/claude-code/test-factory-patterns/SKILL.md +198 -0
  1213. package/dist/agents/skills/claude-code/test-factory-patterns/skill.yaml +44 -0
  1214. package/dist/agents/skills/claude-code/test-integration-patterns/SKILL.md +202 -0
  1215. package/dist/agents/skills/claude-code/test-integration-patterns/skill.yaml +44 -0
  1216. package/dist/agents/skills/claude-code/test-mock-patterns/SKILL.md +184 -0
  1217. package/dist/agents/skills/claude-code/test-mock-patterns/skill.yaml +45 -0
  1218. package/dist/agents/skills/claude-code/test-msw-pattern/SKILL.md +181 -0
  1219. package/dist/agents/skills/claude-code/test-msw-pattern/skill.yaml +44 -0
  1220. package/dist/agents/skills/claude-code/test-performance-testing/SKILL.md +199 -0
  1221. package/dist/agents/skills/claude-code/test-performance-testing/skill.yaml +47 -0
  1222. package/dist/agents/skills/claude-code/test-playwright-patterns/SKILL.md +197 -0
  1223. package/dist/agents/skills/claude-code/test-playwright-patterns/skill.yaml +44 -0
  1224. package/dist/agents/skills/claude-code/test-playwright-setup/SKILL.md +178 -0
  1225. package/dist/agents/skills/claude-code/test-playwright-setup/skill.yaml +43 -0
  1226. package/dist/agents/skills/claude-code/test-property-based/SKILL.md +172 -0
  1227. package/dist/agents/skills/claude-code/test-property-based/skill.yaml +43 -0
  1228. package/dist/agents/skills/claude-code/test-snapshot-patterns/SKILL.md +142 -0
  1229. package/dist/agents/skills/claude-code/test-snapshot-patterns/skill.yaml +42 -0
  1230. package/dist/agents/skills/claude-code/test-tdd-workflow/SKILL.md +185 -0
  1231. package/dist/agents/skills/claude-code/test-tdd-workflow/skill.yaml +43 -0
  1232. package/dist/agents/skills/claude-code/test-unit-patterns/SKILL.md +209 -0
  1233. package/dist/agents/skills/claude-code/test-unit-patterns/skill.yaml +45 -0
  1234. package/dist/agents/skills/claude-code/test-vitest-config/SKILL.md +212 -0
  1235. package/dist/agents/skills/claude-code/test-vitest-config/skill.yaml +45 -0
  1236. package/dist/agents/skills/claude-code/trpc-context-pattern/SKILL.md +190 -0
  1237. package/dist/agents/skills/claude-code/trpc-context-pattern/skill.yaml +42 -0
  1238. package/dist/agents/skills/claude-code/trpc-error-handling/SKILL.md +133 -0
  1239. package/dist/agents/skills/claude-code/trpc-error-handling/skill.yaml +45 -0
  1240. package/dist/agents/skills/claude-code/trpc-input-validation/SKILL.md +101 -0
  1241. package/dist/agents/skills/claude-code/trpc-input-validation/skill.yaml +44 -0
  1242. package/dist/agents/skills/claude-code/trpc-middleware-pattern/SKILL.md +99 -0
  1243. package/dist/agents/skills/claude-code/trpc-middleware-pattern/skill.yaml +42 -0
  1244. package/dist/agents/skills/claude-code/trpc-nextjs-integration/SKILL.md +203 -0
  1245. package/dist/agents/skills/claude-code/trpc-nextjs-integration/skill.yaml +44 -0
  1246. package/dist/agents/skills/claude-code/trpc-react-query-integration/SKILL.md +182 -0
  1247. package/dist/agents/skills/claude-code/trpc-react-query-integration/skill.yaml +44 -0
  1248. package/dist/agents/skills/claude-code/trpc-router-composition/SKILL.md +99 -0
  1249. package/dist/agents/skills/claude-code/trpc-router-composition/skill.yaml +45 -0
  1250. package/dist/agents/skills/claude-code/trpc-subscription-pattern/SKILL.md +118 -0
  1251. package/dist/agents/skills/claude-code/trpc-subscription-pattern/skill.yaml +44 -0
  1252. package/dist/agents/skills/claude-code/ts-async-patterns/SKILL.md +193 -0
  1253. package/dist/agents/skills/claude-code/ts-async-patterns/skill.yaml +39 -0
  1254. package/dist/agents/skills/claude-code/ts-branded-types/SKILL.md +161 -0
  1255. package/dist/agents/skills/claude-code/ts-branded-types/skill.yaml +39 -0
  1256. package/dist/agents/skills/claude-code/ts-class-patterns/SKILL.md +238 -0
  1257. package/dist/agents/skills/claude-code/ts-class-patterns/skill.yaml +39 -0
  1258. package/dist/agents/skills/claude-code/ts-conditional-types/SKILL.md +142 -0
  1259. package/dist/agents/skills/claude-code/ts-conditional-types/skill.yaml +39 -0
  1260. package/dist/agents/skills/claude-code/ts-config-patterns/SKILL.md +190 -0
  1261. package/dist/agents/skills/claude-code/ts-config-patterns/skill.yaml +39 -0
  1262. package/dist/agents/skills/claude-code/ts-declaration-merging/SKILL.md +187 -0
  1263. package/dist/agents/skills/claude-code/ts-declaration-merging/skill.yaml +38 -0
  1264. package/dist/agents/skills/claude-code/ts-decorator-patterns/SKILL.md +181 -0
  1265. package/dist/agents/skills/claude-code/ts-decorator-patterns/skill.yaml +38 -0
  1266. package/dist/agents/skills/claude-code/ts-discriminated-unions/SKILL.md +186 -0
  1267. package/dist/agents/skills/claude-code/ts-discriminated-unions/skill.yaml +39 -0
  1268. package/dist/agents/skills/claude-code/ts-error-handling-types/SKILL.md +205 -0
  1269. package/dist/agents/skills/claude-code/ts-error-handling-types/skill.yaml +39 -0
  1270. package/dist/agents/skills/claude-code/ts-generics-pattern/SKILL.md +104 -0
  1271. package/dist/agents/skills/claude-code/ts-generics-pattern/skill.yaml +40 -0
  1272. package/dist/agents/skills/claude-code/ts-mapped-types/SKILL.md +147 -0
  1273. package/dist/agents/skills/claude-code/ts-mapped-types/skill.yaml +39 -0
  1274. package/dist/agents/skills/claude-code/ts-module-patterns/SKILL.md +156 -0
  1275. package/dist/agents/skills/claude-code/ts-module-patterns/skill.yaml +38 -0
  1276. package/dist/agents/skills/claude-code/ts-performance-patterns/SKILL.md +158 -0
  1277. package/dist/agents/skills/claude-code/ts-performance-patterns/skill.yaml +42 -0
  1278. package/dist/agents/skills/claude-code/ts-satisfies-operator/SKILL.md +151 -0
  1279. package/dist/agents/skills/claude-code/ts-satisfies-operator/skill.yaml +39 -0
  1280. package/dist/agents/skills/claude-code/ts-strict-mode/SKILL.md +167 -0
  1281. package/dist/agents/skills/claude-code/ts-strict-mode/skill.yaml +39 -0
  1282. package/dist/agents/skills/claude-code/ts-template-literal-types/SKILL.md +146 -0
  1283. package/dist/agents/skills/claude-code/ts-template-literal-types/skill.yaml +39 -0
  1284. package/dist/agents/skills/claude-code/ts-testing-types/SKILL.md +166 -0
  1285. package/dist/agents/skills/claude-code/ts-testing-types/skill.yaml +39 -0
  1286. package/dist/agents/skills/claude-code/ts-type-guards/SKILL.md +168 -0
  1287. package/dist/agents/skills/claude-code/ts-type-guards/skill.yaml +40 -0
  1288. package/dist/agents/skills/claude-code/ts-utility-types/SKILL.md +119 -0
  1289. package/dist/agents/skills/claude-code/ts-utility-types/skill.yaml +44 -0
  1290. package/dist/agents/skills/claude-code/ts-zod-integration/SKILL.md +181 -0
  1291. package/dist/agents/skills/claude-code/ts-zod-integration/skill.yaml +38 -0
  1292. package/dist/agents/skills/claude-code/ux-active-voice/SKILL.md +150 -0
  1293. package/dist/agents/skills/claude-code/ux-active-voice/skill.yaml +32 -0
  1294. package/dist/agents/skills/claude-code/ux-button-cta-copy/SKILL.md +159 -0
  1295. package/dist/agents/skills/claude-code/ux-button-cta-copy/skill.yaml +34 -0
  1296. package/dist/agents/skills/claude-code/ux-confirmation-dialogs/SKILL.md +156 -0
  1297. package/dist/agents/skills/claude-code/ux-confirmation-dialogs/skill.yaml +33 -0
  1298. package/dist/agents/skills/claude-code/ux-content-hierarchy/SKILL.md +150 -0
  1299. package/dist/agents/skills/claude-code/ux-content-hierarchy/skill.yaml +33 -0
  1300. package/dist/agents/skills/claude-code/ux-data-table-copy/SKILL.md +154 -0
  1301. package/dist/agents/skills/claude-code/ux-data-table-copy/skill.yaml +34 -0
  1302. package/dist/agents/skills/claude-code/ux-destructive-action-copy/SKILL.md +152 -0
  1303. package/dist/agents/skills/claude-code/ux-destructive-action-copy/skill.yaml +34 -0
  1304. package/dist/agents/skills/claude-code/ux-empty-states/SKILL.md +155 -0
  1305. package/dist/agents/skills/claude-code/ux-empty-states/skill.yaml +36 -0
  1306. package/dist/agents/skills/claude-code/ux-error-messages/SKILL.md +159 -0
  1307. package/dist/agents/skills/claude-code/ux-error-messages/skill.yaml +35 -0
  1308. package/dist/agents/skills/claude-code/ux-error-severity/SKILL.md +155 -0
  1309. package/dist/agents/skills/claude-code/ux-error-severity/skill.yaml +35 -0
  1310. package/dist/agents/skills/claude-code/ux-form-labels/SKILL.md +159 -0
  1311. package/dist/agents/skills/claude-code/ux-form-labels/skill.yaml +36 -0
  1312. package/dist/agents/skills/claude-code/ux-inclusive-language/SKILL.md +161 -0
  1313. package/dist/agents/skills/claude-code/ux-inclusive-language/skill.yaml +33 -0
  1314. package/dist/agents/skills/claude-code/ux-internationalization-writing/SKILL.md +196 -0
  1315. package/dist/agents/skills/claude-code/ux-internationalization-writing/skill.yaml +35 -0
  1316. package/dist/agents/skills/claude-code/ux-loading-states/SKILL.md +162 -0
  1317. package/dist/agents/skills/claude-code/ux-loading-states/skill.yaml +33 -0
  1318. package/dist/agents/skills/claude-code/ux-microcopy-principles/SKILL.md +152 -0
  1319. package/dist/agents/skills/claude-code/ux-microcopy-principles/skill.yaml +37 -0
  1320. package/dist/agents/skills/claude-code/ux-navigation-labels/SKILL.md +163 -0
  1321. package/dist/agents/skills/claude-code/ux-navigation-labels/skill.yaml +35 -0
  1322. package/dist/agents/skills/claude-code/ux-notification-copy/SKILL.md +150 -0
  1323. package/dist/agents/skills/claude-code/ux-notification-copy/skill.yaml +35 -0
  1324. package/dist/agents/skills/claude-code/ux-onboarding-copy/SKILL.md +156 -0
  1325. package/dist/agents/skills/claude-code/ux-onboarding-copy/skill.yaml +35 -0
  1326. package/dist/agents/skills/claude-code/ux-permission-access-copy/SKILL.md +150 -0
  1327. package/dist/agents/skills/claude-code/ux-permission-access-copy/skill.yaml +34 -0
  1328. package/dist/agents/skills/claude-code/ux-plain-language/SKILL.md +157 -0
  1329. package/dist/agents/skills/claude-code/ux-plain-language/skill.yaml +34 -0
  1330. package/dist/agents/skills/claude-code/ux-search-copy/SKILL.md +154 -0
  1331. package/dist/agents/skills/claude-code/ux-search-copy/skill.yaml +33 -0
  1332. package/dist/agents/skills/claude-code/ux-settings-preferences/SKILL.md +152 -0
  1333. package/dist/agents/skills/claude-code/ux-settings-preferences/skill.yaml +33 -0
  1334. package/dist/agents/skills/claude-code/ux-success-feedback/SKILL.md +163 -0
  1335. package/dist/agents/skills/claude-code/ux-success-feedback/skill.yaml +33 -0
  1336. package/dist/agents/skills/claude-code/ux-tooltip-contextual-help/SKILL.md +163 -0
  1337. package/dist/agents/skills/claude-code/ux-tooltip-contextual-help/skill.yaml +33 -0
  1338. package/dist/agents/skills/claude-code/ux-voice-tone/SKILL.md +150 -0
  1339. package/dist/agents/skills/claude-code/ux-voice-tone/skill.yaml +33 -0
  1340. package/dist/agents/skills/claude-code/ux-writing-for-scanning/SKILL.md +150 -0
  1341. package/dist/agents/skills/claude-code/ux-writing-for-scanning/skill.yaml +35 -0
  1342. package/dist/agents/skills/claude-code/validate-context-engineering/skill.yaml +3 -0
  1343. package/dist/agents/skills/claude-code/vue-async-components/SKILL.md +67 -0
  1344. package/dist/agents/skills/claude-code/vue-async-components/skill.yaml +36 -0
  1345. package/dist/agents/skills/claude-code/vue-component-events/SKILL.md +72 -0
  1346. package/dist/agents/skills/claude-code/vue-component-events/skill.yaml +36 -0
  1347. package/dist/agents/skills/claude-code/vue-composables-pattern/SKILL.md +75 -0
  1348. package/dist/agents/skills/claude-code/vue-composables-pattern/skill.yaml +35 -0
  1349. package/dist/agents/skills/claude-code/vue-directive-pattern/SKILL.md +66 -0
  1350. package/dist/agents/skills/claude-code/vue-directive-pattern/skill.yaml +35 -0
  1351. package/dist/agents/skills/claude-code/vue-pinia-pattern/SKILL.md +69 -0
  1352. package/dist/agents/skills/claude-code/vue-pinia-pattern/skill.yaml +36 -0
  1353. package/dist/agents/skills/claude-code/vue-provide-inject/SKILL.md +66 -0
  1354. package/dist/agents/skills/claude-code/vue-provide-inject/skill.yaml +36 -0
  1355. package/dist/agents/skills/claude-code/vue-reactive-refs/SKILL.md +67 -0
  1356. package/dist/agents/skills/claude-code/vue-reactive-refs/skill.yaml +36 -0
  1357. package/dist/agents/skills/claude-code/vue-renderless-components/SKILL.md +69 -0
  1358. package/dist/agents/skills/claude-code/vue-renderless-components/skill.yaml +36 -0
  1359. package/dist/agents/skills/claude-code/vue-slots-pattern/SKILL.md +72 -0
  1360. package/dist/agents/skills/claude-code/vue-slots-pattern/skill.yaml +36 -0
  1361. package/dist/agents/skills/claude-code/vue-teleport-pattern/SKILL.md +66 -0
  1362. package/dist/agents/skills/claude-code/vue-teleport-pattern/skill.yaml +36 -0
  1363. package/dist/agents/skills/claude-code/vue-watchers-pattern/SKILL.md +73 -0
  1364. package/dist/agents/skills/claude-code/vue-watchers-pattern/skill.yaml +36 -0
  1365. package/dist/agents/skills/claude-code/xstate-actor-pattern/SKILL.md +155 -0
  1366. package/dist/agents/skills/claude-code/xstate-actor-pattern/skill.yaml +41 -0
  1367. package/dist/agents/skills/claude-code/xstate-guards-actions/SKILL.md +153 -0
  1368. package/dist/agents/skills/claude-code/xstate-guards-actions/skill.yaml +42 -0
  1369. package/dist/agents/skills/claude-code/xstate-history-states/SKILL.md +123 -0
  1370. package/dist/agents/skills/claude-code/xstate-history-states/skill.yaml +40 -0
  1371. package/dist/agents/skills/claude-code/xstate-invoke-pattern/SKILL.md +165 -0
  1372. package/dist/agents/skills/claude-code/xstate-invoke-pattern/skill.yaml +41 -0
  1373. package/dist/agents/skills/claude-code/xstate-machine-definition/SKILL.md +151 -0
  1374. package/dist/agents/skills/claude-code/xstate-machine-definition/skill.yaml +41 -0
  1375. package/dist/agents/skills/claude-code/xstate-parallel-states/SKILL.md +130 -0
  1376. package/dist/agents/skills/claude-code/xstate-parallel-states/skill.yaml +40 -0
  1377. package/dist/agents/skills/claude-code/xstate-react-integration/SKILL.md +138 -0
  1378. package/dist/agents/skills/claude-code/xstate-react-integration/skill.yaml +40 -0
  1379. package/dist/agents/skills/claude-code/xstate-testing-patterns/SKILL.md +173 -0
  1380. package/dist/agents/skills/claude-code/xstate-testing-patterns/skill.yaml +40 -0
  1381. package/dist/agents/skills/claude-code/xstate-typegen/SKILL.md +168 -0
  1382. package/dist/agents/skills/claude-code/xstate-typegen/skill.yaml +40 -0
  1383. package/dist/agents/skills/claude-code/xstate-visualization/SKILL.md +124 -0
  1384. package/dist/agents/skills/claude-code/xstate-visualization/skill.yaml +40 -0
  1385. package/dist/agents/skills/claude-code/zod-array-validation/SKILL.md +160 -0
  1386. package/dist/agents/skills/claude-code/zod-array-validation/skill.yaml +43 -0
  1387. package/dist/agents/skills/claude-code/zod-async-validation/SKILL.md +205 -0
  1388. package/dist/agents/skills/claude-code/zod-async-validation/skill.yaml +41 -0
  1389. package/dist/agents/skills/claude-code/zod-error-handling/SKILL.md +206 -0
  1390. package/dist/agents/skills/claude-code/zod-error-handling/skill.yaml +42 -0
  1391. package/dist/agents/skills/claude-code/zod-infer-types/SKILL.md +192 -0
  1392. package/dist/agents/skills/claude-code/zod-infer-types/skill.yaml +42 -0
  1393. package/dist/agents/skills/claude-code/zod-nextjs-integration/SKILL.md +232 -0
  1394. package/dist/agents/skills/claude-code/zod-nextjs-integration/skill.yaml +43 -0
  1395. package/dist/agents/skills/claude-code/zod-object-patterns/SKILL.md +190 -0
  1396. package/dist/agents/skills/claude-code/zod-object-patterns/skill.yaml +44 -0
  1397. package/dist/agents/skills/claude-code/zod-schema-definition/SKILL.md +170 -0
  1398. package/dist/agents/skills/claude-code/zod-schema-definition/skill.yaml +43 -0
  1399. package/dist/agents/skills/claude-code/zod-string-validation/SKILL.md +180 -0
  1400. package/dist/agents/skills/claude-code/zod-string-validation/skill.yaml +44 -0
  1401. package/dist/agents/skills/claude-code/zod-transform-refine/SKILL.md +193 -0
  1402. package/dist/agents/skills/claude-code/zod-transform-refine/skill.yaml +43 -0
  1403. package/dist/agents/skills/claude-code/zod-union-discriminated/SKILL.md +168 -0
  1404. package/dist/agents/skills/claude-code/zod-union-discriminated/skill.yaml +41 -0
  1405. package/dist/agents/skills/codex/a11y-aria-patterns/SKILL.md +183 -0
  1406. package/dist/agents/skills/codex/a11y-aria-patterns/skill.yaml +44 -0
  1407. package/dist/agents/skills/codex/a11y-color-contrast/SKILL.md +156 -0
  1408. package/dist/agents/skills/codex/a11y-color-contrast/skill.yaml +46 -0
  1409. package/dist/agents/skills/codex/a11y-form-patterns/SKILL.md +147 -0
  1410. package/dist/agents/skills/codex/a11y-form-patterns/skill.yaml +47 -0
  1411. package/dist/agents/skills/codex/a11y-image-text-alt/SKILL.md +159 -0
  1412. package/dist/agents/skills/codex/a11y-image-text-alt/skill.yaml +44 -0
  1413. package/dist/agents/skills/codex/a11y-keyboard-navigation/SKILL.md +169 -0
  1414. package/dist/agents/skills/codex/a11y-keyboard-navigation/skill.yaml +46 -0
  1415. package/dist/agents/skills/codex/a11y-modal-patterns/SKILL.md +201 -0
  1416. package/dist/agents/skills/codex/a11y-modal-patterns/skill.yaml +43 -0
  1417. package/dist/agents/skills/codex/a11y-motion-animation/SKILL.md +199 -0
  1418. package/dist/agents/skills/codex/a11y-motion-animation/skill.yaml +46 -0
  1419. package/dist/agents/skills/codex/a11y-screen-reader-testing/SKILL.md +138 -0
  1420. package/dist/agents/skills/codex/a11y-screen-reader-testing/skill.yaml +44 -0
  1421. package/dist/agents/skills/codex/a11y-semantic-html/SKILL.md +139 -0
  1422. package/dist/agents/skills/codex/a11y-semantic-html/skill.yaml +44 -0
  1423. package/dist/agents/skills/codex/a11y-testing-automation/SKILL.md +206 -0
  1424. package/dist/agents/skills/codex/a11y-testing-automation/skill.yaml +46 -0
  1425. package/dist/agents/skills/codex/add-harness-component/skill.yaml +3 -0
  1426. package/dist/agents/skills/codex/align-documentation/skill.yaml +3 -0
  1427. package/dist/agents/skills/codex/angular-component-pattern/SKILL.md +112 -0
  1428. package/dist/agents/skills/codex/angular-component-pattern/skill.yaml +47 -0
  1429. package/dist/agents/skills/codex/angular-directive-pattern/SKILL.md +166 -0
  1430. package/dist/agents/skills/codex/angular-directive-pattern/skill.yaml +45 -0
  1431. package/dist/agents/skills/codex/angular-http-interceptors/SKILL.md +174 -0
  1432. package/dist/agents/skills/codex/angular-http-interceptors/skill.yaml +45 -0
  1433. package/dist/agents/skills/codex/angular-lazy-loading/SKILL.md +156 -0
  1434. package/dist/agents/skills/codex/angular-lazy-loading/skill.yaml +45 -0
  1435. package/dist/agents/skills/codex/angular-performance-patterns/SKILL.md +141 -0
  1436. package/dist/agents/skills/codex/angular-performance-patterns/skill.yaml +51 -0
  1437. package/dist/agents/skills/codex/angular-pipe-pattern/SKILL.md +126 -0
  1438. package/dist/agents/skills/codex/angular-pipe-pattern/skill.yaml +45 -0
  1439. package/dist/agents/skills/codex/angular-reactive-forms/SKILL.md +136 -0
  1440. package/dist/agents/skills/codex/angular-reactive-forms/skill.yaml +45 -0
  1441. package/dist/agents/skills/codex/angular-routing-guards/SKILL.md +150 -0
  1442. package/dist/agents/skills/codex/angular-routing-guards/skill.yaml +45 -0
  1443. package/dist/agents/skills/codex/angular-rxjs-patterns/SKILL.md +152 -0
  1444. package/dist/agents/skills/codex/angular-rxjs-patterns/skill.yaml +46 -0
  1445. package/dist/agents/skills/codex/angular-schematics/SKILL.md +184 -0
  1446. package/dist/agents/skills/codex/angular-schematics/skill.yaml +45 -0
  1447. package/dist/agents/skills/codex/angular-service-di/SKILL.md +108 -0
  1448. package/dist/agents/skills/codex/angular-service-di/skill.yaml +46 -0
  1449. package/dist/agents/skills/codex/angular-signals-pattern/SKILL.md +116 -0
  1450. package/dist/agents/skills/codex/angular-signals-pattern/skill.yaml +45 -0
  1451. package/dist/agents/skills/codex/angular-standalone-components/SKILL.md +130 -0
  1452. package/dist/agents/skills/codex/angular-standalone-components/skill.yaml +45 -0
  1453. package/dist/agents/skills/codex/angular-state-management/SKILL.md +150 -0
  1454. package/dist/agents/skills/codex/angular-state-management/skill.yaml +46 -0
  1455. package/dist/agents/skills/codex/angular-testing-patterns/SKILL.md +180 -0
  1456. package/dist/agents/skills/codex/angular-testing-patterns/skill.yaml +46 -0
  1457. package/dist/agents/skills/codex/api-api-keys/SKILL.md +135 -0
  1458. package/dist/agents/skills/codex/api-api-keys/skill.yaml +41 -0
  1459. package/dist/agents/skills/codex/api-authentication-patterns/SKILL.md +117 -0
  1460. package/dist/agents/skills/codex/api-authentication-patterns/skill.yaml +44 -0
  1461. package/dist/agents/skills/codex/api-backward-compatibility/SKILL.md +170 -0
  1462. package/dist/agents/skills/codex/api-backward-compatibility/skill.yaml +39 -0
  1463. package/dist/agents/skills/codex/api-bulk-operations/SKILL.md +198 -0
  1464. package/dist/agents/skills/codex/api-bulk-operations/skill.yaml +39 -0
  1465. package/dist/agents/skills/codex/api-conditional-requests/SKILL.md +233 -0
  1466. package/dist/agents/skills/codex/api-conditional-requests/skill.yaml +41 -0
  1467. package/dist/agents/skills/codex/api-content-negotiation/SKILL.md +194 -0
  1468. package/dist/agents/skills/codex/api-content-negotiation/skill.yaml +39 -0
  1469. package/dist/agents/skills/codex/api-contract-testing/SKILL.md +222 -0
  1470. package/dist/agents/skills/codex/api-contract-testing/skill.yaml +42 -0
  1471. package/dist/agents/skills/codex/api-deprecation-strategy/SKILL.md +156 -0
  1472. package/dist/agents/skills/codex/api-deprecation-strategy/skill.yaml +39 -0
  1473. package/dist/agents/skills/codex/api-error-contracts/SKILL.md +149 -0
  1474. package/dist/agents/skills/codex/api-error-contracts/skill.yaml +40 -0
  1475. package/dist/agents/skills/codex/api-field-selection/SKILL.md +193 -0
  1476. package/dist/agents/skills/codex/api-field-selection/skill.yaml +39 -0
  1477. package/dist/agents/skills/codex/api-filtering-sorting/SKILL.md +170 -0
  1478. package/dist/agents/skills/codex/api-filtering-sorting/skill.yaml +40 -0
  1479. package/dist/agents/skills/codex/api-hateoas/SKILL.md +212 -0
  1480. package/dist/agents/skills/codex/api-hateoas/skill.yaml +40 -0
  1481. package/dist/agents/skills/codex/api-http-caching/SKILL.md +188 -0
  1482. package/dist/agents/skills/codex/api-http-caching/skill.yaml +43 -0
  1483. package/dist/agents/skills/codex/api-http-methods/SKILL.md +185 -0
  1484. package/dist/agents/skills/codex/api-http-methods/skill.yaml +43 -0
  1485. package/dist/agents/skills/codex/api-idempotency-keys/SKILL.md +176 -0
  1486. package/dist/agents/skills/codex/api-idempotency-keys/skill.yaml +40 -0
  1487. package/dist/agents/skills/codex/api-long-running-operations/SKILL.md +209 -0
  1488. package/dist/agents/skills/codex/api-long-running-operations/skill.yaml +40 -0
  1489. package/dist/agents/skills/codex/api-nested-vs-flat/SKILL.md +173 -0
  1490. package/dist/agents/skills/codex/api-nested-vs-flat/skill.yaml +39 -0
  1491. package/dist/agents/skills/codex/api-oauth2-flows/SKILL.md +150 -0
  1492. package/dist/agents/skills/codex/api-oauth2-flows/skill.yaml +42 -0
  1493. package/dist/agents/skills/codex/api-openapi-design/SKILL.md +260 -0
  1494. package/dist/agents/skills/codex/api-openapi-design/skill.yaml +44 -0
  1495. package/dist/agents/skills/codex/api-pagination-cursor/SKILL.md +159 -0
  1496. package/dist/agents/skills/codex/api-pagination-cursor/skill.yaml +40 -0
  1497. package/dist/agents/skills/codex/api-pagination-keyset/SKILL.md +167 -0
  1498. package/dist/agents/skills/codex/api-pagination-keyset/skill.yaml +39 -0
  1499. package/dist/agents/skills/codex/api-pagination-offset/SKILL.md +135 -0
  1500. package/dist/agents/skills/codex/api-pagination-offset/skill.yaml +39 -0
  1501. package/dist/agents/skills/codex/api-problem-details-rfc/SKILL.md +164 -0
  1502. package/dist/agents/skills/codex/api-problem-details-rfc/skill.yaml +38 -0
  1503. package/dist/agents/skills/codex/api-rate-limit-headers/SKILL.md +144 -0
  1504. package/dist/agents/skills/codex/api-rate-limit-headers/skill.yaml +39 -0
  1505. package/dist/agents/skills/codex/api-rate-limiting/SKILL.md +131 -0
  1506. package/dist/agents/skills/codex/api-rate-limiting/skill.yaml +41 -0
  1507. package/dist/agents/skills/codex/api-resource-granularity/SKILL.md +165 -0
  1508. package/dist/agents/skills/codex/api-resource-granularity/skill.yaml +40 -0
  1509. package/dist/agents/skills/codex/api-resource-modeling/SKILL.md +155 -0
  1510. package/dist/agents/skills/codex/api-resource-modeling/skill.yaml +40 -0
  1511. package/dist/agents/skills/codex/api-rest-maturity-model/SKILL.md +215 -0
  1512. package/dist/agents/skills/codex/api-rest-maturity-model/skill.yaml +39 -0
  1513. package/dist/agents/skills/codex/api-retry-guidance/SKILL.md +168 -0
  1514. package/dist/agents/skills/codex/api-retry-guidance/skill.yaml +41 -0
  1515. package/dist/agents/skills/codex/api-sdk-ergonomics/SKILL.md +194 -0
  1516. package/dist/agents/skills/codex/api-sdk-ergonomics/skill.yaml +43 -0
  1517. package/dist/agents/skills/codex/api-status-codes/SKILL.md +196 -0
  1518. package/dist/agents/skills/codex/api-status-codes/skill.yaml +46 -0
  1519. package/dist/agents/skills/codex/api-validation-errors/SKILL.md +174 -0
  1520. package/dist/agents/skills/codex/api-validation-errors/skill.yaml +40 -0
  1521. package/dist/agents/skills/codex/api-versioning-header/SKILL.md +177 -0
  1522. package/dist/agents/skills/codex/api-versioning-header/skill.yaml +37 -0
  1523. package/dist/agents/skills/codex/api-versioning-url/SKILL.md +128 -0
  1524. package/dist/agents/skills/codex/api-versioning-url/skill.yaml +39 -0
  1525. package/dist/agents/skills/codex/api-webhook-design/SKILL.md +165 -0
  1526. package/dist/agents/skills/codex/api-webhook-design/skill.yaml +41 -0
  1527. package/dist/agents/skills/codex/api-webhook-security/SKILL.md +176 -0
  1528. package/dist/agents/skills/codex/api-webhook-security/skill.yaml +41 -0
  1529. package/dist/agents/skills/codex/astro-component-pattern/SKILL.md +160 -0
  1530. package/dist/agents/skills/codex/astro-component-pattern/skill.yaml +45 -0
  1531. package/dist/agents/skills/codex/astro-content-collections/SKILL.md +155 -0
  1532. package/dist/agents/skills/codex/astro-content-collections/skill.yaml +43 -0
  1533. package/dist/agents/skills/codex/astro-deployment-config/SKILL.md +208 -0
  1534. package/dist/agents/skills/codex/astro-deployment-config/skill.yaml +47 -0
  1535. package/dist/agents/skills/codex/astro-image-optimization/SKILL.md +188 -0
  1536. package/dist/agents/skills/codex/astro-image-optimization/skill.yaml +46 -0
  1537. package/dist/agents/skills/codex/astro-integration-pattern/SKILL.md +164 -0
  1538. package/dist/agents/skills/codex/astro-integration-pattern/skill.yaml +45 -0
  1539. package/dist/agents/skills/codex/astro-islands-architecture/SKILL.md +103 -0
  1540. package/dist/agents/skills/codex/astro-islands-architecture/skill.yaml +45 -0
  1541. package/dist/agents/skills/codex/astro-multi-framework/SKILL.md +161 -0
  1542. package/dist/agents/skills/codex/astro-multi-framework/skill.yaml +47 -0
  1543. package/dist/agents/skills/codex/astro-routing-pattern/SKILL.md +135 -0
  1544. package/dist/agents/skills/codex/astro-routing-pattern/skill.yaml +44 -0
  1545. package/dist/agents/skills/codex/astro-server-endpoints/SKILL.md +173 -0
  1546. package/dist/agents/skills/codex/astro-server-endpoints/skill.yaml +45 -0
  1547. package/dist/agents/skills/codex/astro-ssr-hybrid/SKILL.md +191 -0
  1548. package/dist/agents/skills/codex/astro-ssr-hybrid/skill.yaml +47 -0
  1549. package/dist/agents/skills/codex/astro-view-transitions/SKILL.md +168 -0
  1550. package/dist/agents/skills/codex/astro-view-transitions/skill.yaml +46 -0
  1551. package/dist/agents/skills/codex/check-mechanical-constraints/skill.yaml +3 -0
  1552. package/dist/agents/skills/codex/cleanup-dead-code/skill.yaml +3 -0
  1553. package/dist/agents/skills/codex/css-animation-pattern/SKILL.md +143 -0
  1554. package/dist/agents/skills/codex/css-animation-pattern/skill.yaml +44 -0
  1555. package/dist/agents/skills/codex/css-component-variants/SKILL.md +147 -0
  1556. package/dist/agents/skills/codex/css-component-variants/skill.yaml +43 -0
  1557. package/dist/agents/skills/codex/css-css-modules/SKILL.md +168 -0
  1558. package/dist/agents/skills/codex/css-css-modules/skill.yaml +39 -0
  1559. package/dist/agents/skills/codex/css-custom-components/SKILL.md +178 -0
  1560. package/dist/agents/skills/codex/css-custom-components/skill.yaml +40 -0
  1561. package/dist/agents/skills/codex/css-dark-mode/SKILL.md +171 -0
  1562. package/dist/agents/skills/codex/css-dark-mode/skill.yaml +42 -0
  1563. package/dist/agents/skills/codex/css-design-tokens/SKILL.md +155 -0
  1564. package/dist/agents/skills/codex/css-design-tokens/skill.yaml +43 -0
  1565. package/dist/agents/skills/codex/css-headless-ui/SKILL.md +179 -0
  1566. package/dist/agents/skills/codex/css-headless-ui/skill.yaml +40 -0
  1567. package/dist/agents/skills/codex/css-layout-patterns/SKILL.md +155 -0
  1568. package/dist/agents/skills/codex/css-layout-patterns/skill.yaml +44 -0
  1569. package/dist/agents/skills/codex/css-performance-patterns/SKILL.md +163 -0
  1570. package/dist/agents/skills/codex/css-performance-patterns/skill.yaml +46 -0
  1571. package/dist/agents/skills/codex/css-responsive-design/SKILL.md +161 -0
  1572. package/dist/agents/skills/codex/css-responsive-design/skill.yaml +43 -0
  1573. package/dist/agents/skills/codex/css-tailwind-merge/SKILL.md +128 -0
  1574. package/dist/agents/skills/codex/css-tailwind-merge/skill.yaml +40 -0
  1575. package/dist/agents/skills/codex/css-tailwind-pattern/SKILL.md +126 -0
  1576. package/dist/agents/skills/codex/css-tailwind-pattern/skill.yaml +41 -0
  1577. package/dist/agents/skills/codex/db-acid-in-practice/SKILL.md +215 -0
  1578. package/dist/agents/skills/codex/db-acid-in-practice/skill.yaml +38 -0
  1579. package/dist/agents/skills/codex/db-acid-properties/SKILL.md +190 -0
  1580. package/dist/agents/skills/codex/db-acid-properties/skill.yaml +38 -0
  1581. package/dist/agents/skills/codex/db-adjacency-list/SKILL.md +199 -0
  1582. package/dist/agents/skills/codex/db-adjacency-list/skill.yaml +40 -0
  1583. package/dist/agents/skills/codex/db-audit-trail/SKILL.md +244 -0
  1584. package/dist/agents/skills/codex/db-audit-trail/skill.yaml +41 -0
  1585. package/dist/agents/skills/codex/db-btree-index/SKILL.md +182 -0
  1586. package/dist/agents/skills/codex/db-btree-index/skill.yaml +44 -0
  1587. package/dist/agents/skills/codex/db-cap-theorem/SKILL.md +156 -0
  1588. package/dist/agents/skills/codex/db-cap-theorem/skill.yaml +38 -0
  1589. package/dist/agents/skills/codex/db-closure-table/SKILL.md +197 -0
  1590. package/dist/agents/skills/codex/db-closure-table/skill.yaml +38 -0
  1591. package/dist/agents/skills/codex/db-composite-index/SKILL.md +199 -0
  1592. package/dist/agents/skills/codex/db-composite-index/skill.yaml +41 -0
  1593. package/dist/agents/skills/codex/db-connection-pooling/SKILL.md +196 -0
  1594. package/dist/agents/skills/codex/db-connection-pooling/skill.yaml +39 -0
  1595. package/dist/agents/skills/codex/db-connection-sizing/SKILL.md +236 -0
  1596. package/dist/agents/skills/codex/db-connection-sizing/skill.yaml +38 -0
  1597. package/dist/agents/skills/codex/db-covering-index/SKILL.md +203 -0
  1598. package/dist/agents/skills/codex/db-covering-index/skill.yaml +40 -0
  1599. package/dist/agents/skills/codex/db-deadlock-prevention/SKILL.md +204 -0
  1600. package/dist/agents/skills/codex/db-deadlock-prevention/skill.yaml +41 -0
  1601. package/dist/agents/skills/codex/db-denormalization/SKILL.md +176 -0
  1602. package/dist/agents/skills/codex/db-denormalization/skill.yaml +38 -0
  1603. package/dist/agents/skills/codex/db-document-in-relational/SKILL.md +225 -0
  1604. package/dist/agents/skills/codex/db-document-in-relational/skill.yaml +42 -0
  1605. package/dist/agents/skills/codex/db-entity-attribute-value/SKILL.md +186 -0
  1606. package/dist/agents/skills/codex/db-entity-attribute-value/skill.yaml +39 -0
  1607. package/dist/agents/skills/codex/db-eventual-consistency/SKILL.md +226 -0
  1608. package/dist/agents/skills/codex/db-eventual-consistency/skill.yaml +38 -0
  1609. package/dist/agents/skills/codex/db-expand-contract/SKILL.md +199 -0
  1610. package/dist/agents/skills/codex/db-expand-contract/skill.yaml +40 -0
  1611. package/dist/agents/skills/codex/db-explain-reading/SKILL.md +213 -0
  1612. package/dist/agents/skills/codex/db-explain-reading/skill.yaml +44 -0
  1613. package/dist/agents/skills/codex/db-expression-index/SKILL.md +211 -0
  1614. package/dist/agents/skills/codex/db-expression-index/skill.yaml +40 -0
  1615. package/dist/agents/skills/codex/db-first-normal-form/SKILL.md +190 -0
  1616. package/dist/agents/skills/codex/db-first-normal-form/skill.yaml +38 -0
  1617. package/dist/agents/skills/codex/db-graph-in-relational/SKILL.md +212 -0
  1618. package/dist/agents/skills/codex/db-graph-in-relational/skill.yaml +41 -0
  1619. package/dist/agents/skills/codex/db-hash-index/SKILL.md +176 -0
  1620. package/dist/agents/skills/codex/db-hash-index/skill.yaml +37 -0
  1621. package/dist/agents/skills/codex/db-hierarchical-data/SKILL.md +194 -0
  1622. package/dist/agents/skills/codex/db-hierarchical-data/skill.yaml +41 -0
  1623. package/dist/agents/skills/codex/db-horizontal-sharding/SKILL.md +228 -0
  1624. package/dist/agents/skills/codex/db-horizontal-sharding/skill.yaml +40 -0
  1625. package/dist/agents/skills/codex/db-isolation-levels/SKILL.md +158 -0
  1626. package/dist/agents/skills/codex/db-isolation-levels/skill.yaml +43 -0
  1627. package/dist/agents/skills/codex/db-isolation-selection/SKILL.md +160 -0
  1628. package/dist/agents/skills/codex/db-isolation-selection/skill.yaml +41 -0
  1629. package/dist/agents/skills/codex/db-migration-rollback/SKILL.md +223 -0
  1630. package/dist/agents/skills/codex/db-migration-rollback/skill.yaml +40 -0
  1631. package/dist/agents/skills/codex/db-mvcc/SKILL.md +191 -0
  1632. package/dist/agents/skills/codex/db-mvcc/skill.yaml +45 -0
  1633. package/dist/agents/skills/codex/db-nested-sets/SKILL.md +171 -0
  1634. package/dist/agents/skills/codex/db-nested-sets/skill.yaml +38 -0
  1635. package/dist/agents/skills/codex/db-optimistic-locking/SKILL.md +151 -0
  1636. package/dist/agents/skills/codex/db-optimistic-locking/skill.yaml +44 -0
  1637. package/dist/agents/skills/codex/db-partial-index/SKILL.md +196 -0
  1638. package/dist/agents/skills/codex/db-partial-index/skill.yaml +39 -0
  1639. package/dist/agents/skills/codex/db-pessimistic-locking/SKILL.md +158 -0
  1640. package/dist/agents/skills/codex/db-pessimistic-locking/skill.yaml +44 -0
  1641. package/dist/agents/skills/codex/db-polymorphic-associations/SKILL.md +187 -0
  1642. package/dist/agents/skills/codex/db-polymorphic-associations/skill.yaml +42 -0
  1643. package/dist/agents/skills/codex/db-query-rewriting/SKILL.md +249 -0
  1644. package/dist/agents/skills/codex/db-query-rewriting/skill.yaml +43 -0
  1645. package/dist/agents/skills/codex/db-query-statistics/SKILL.md +210 -0
  1646. package/dist/agents/skills/codex/db-query-statistics/skill.yaml +41 -0
  1647. package/dist/agents/skills/codex/db-read-phenomena/SKILL.md +205 -0
  1648. package/dist/agents/skills/codex/db-read-phenomena/skill.yaml +42 -0
  1649. package/dist/agents/skills/codex/db-scan-types/SKILL.md +248 -0
  1650. package/dist/agents/skills/codex/db-scan-types/skill.yaml +41 -0
  1651. package/dist/agents/skills/codex/db-second-normal-form/SKILL.md +183 -0
  1652. package/dist/agents/skills/codex/db-second-normal-form/skill.yaml +38 -0
  1653. package/dist/agents/skills/codex/db-table-partitioning/SKILL.md +229 -0
  1654. package/dist/agents/skills/codex/db-table-partitioning/skill.yaml +39 -0
  1655. package/dist/agents/skills/codex/db-temporal-data/SKILL.md +194 -0
  1656. package/dist/agents/skills/codex/db-temporal-data/skill.yaml +41 -0
  1657. package/dist/agents/skills/codex/db-third-normal-form/SKILL.md +210 -0
  1658. package/dist/agents/skills/codex/db-third-normal-form/skill.yaml +38 -0
  1659. package/dist/agents/skills/codex/db-time-series/SKILL.md +196 -0
  1660. package/dist/agents/skills/codex/db-time-series/skill.yaml +41 -0
  1661. package/dist/agents/skills/codex/db-vertical-partitioning/SKILL.md +249 -0
  1662. package/dist/agents/skills/codex/db-vertical-partitioning/skill.yaml +40 -0
  1663. package/dist/agents/skills/codex/db-zero-downtime-migration/SKILL.md +199 -0
  1664. package/dist/agents/skills/codex/db-zero-downtime-migration/skill.yaml +42 -0
  1665. package/dist/agents/skills/codex/design-affordances/SKILL.md +157 -0
  1666. package/dist/agents/skills/codex/design-affordances/skill.yaml +36 -0
  1667. package/dist/agents/skills/codex/design-alignment/SKILL.md +148 -0
  1668. package/dist/agents/skills/codex/design-alignment/skill.yaml +34 -0
  1669. package/dist/agents/skills/codex/design-apple-hig/SKILL.md +237 -0
  1670. package/dist/agents/skills/codex/design-apple-hig/skill.yaml +38 -0
  1671. package/dist/agents/skills/codex/design-atomic-design/SKILL.md +172 -0
  1672. package/dist/agents/skills/codex/design-atomic-design/skill.yaml +36 -0
  1673. package/dist/agents/skills/codex/design-brand-consistency/SKILL.md +167 -0
  1674. package/dist/agents/skills/codex/design-brand-consistency/skill.yaml +36 -0
  1675. package/dist/agents/skills/codex/design-color-accessibility/SKILL.md +161 -0
  1676. package/dist/agents/skills/codex/design-color-accessibility/skill.yaml +35 -0
  1677. package/dist/agents/skills/codex/design-color-harmony/SKILL.md +152 -0
  1678. package/dist/agents/skills/codex/design-color-harmony/skill.yaml +36 -0
  1679. package/dist/agents/skills/codex/design-color-psychology/SKILL.md +151 -0
  1680. package/dist/agents/skills/codex/design-color-psychology/skill.yaml +35 -0
  1681. package/dist/agents/skills/codex/design-component-anatomy/SKILL.md +243 -0
  1682. package/dist/agents/skills/codex/design-component-anatomy/skill.yaml +35 -0
  1683. package/dist/agents/skills/codex/design-consistency/SKILL.md +179 -0
  1684. package/dist/agents/skills/codex/design-consistency/skill.yaml +36 -0
  1685. package/dist/agents/skills/codex/design-content-density/SKILL.md +156 -0
  1686. package/dist/agents/skills/codex/design-content-density/skill.yaml +35 -0
  1687. package/dist/agents/skills/codex/design-contrast-ratio/SKILL.md +151 -0
  1688. package/dist/agents/skills/codex/design-contrast-ratio/skill.yaml +36 -0
  1689. package/dist/agents/skills/codex/design-dark-mode-color/SKILL.md +152 -0
  1690. package/dist/agents/skills/codex/design-dark-mode-color/skill.yaml +36 -0
  1691. package/dist/agents/skills/codex/design-data-viz-design/SKILL.md +178 -0
  1692. package/dist/agents/skills/codex/design-data-viz-design/skill.yaml +36 -0
  1693. package/dist/agents/skills/codex/design-design-audit/SKILL.md +193 -0
  1694. package/dist/agents/skills/codex/design-design-audit/skill.yaml +34 -0
  1695. package/dist/agents/skills/codex/design-design-critique/SKILL.md +175 -0
  1696. package/dist/agents/skills/codex/design-design-critique/skill.yaml +33 -0
  1697. package/dist/agents/skills/codex/design-design-documentation/SKILL.md +163 -0
  1698. package/dist/agents/skills/codex/design-design-documentation/skill.yaml +34 -0
  1699. package/dist/agents/skills/codex/design-design-governance/SKILL.md +187 -0
  1700. package/dist/agents/skills/codex/design-design-governance/skill.yaml +35 -0
  1701. package/dist/agents/skills/codex/design-elevation-shadow/SKILL.md +163 -0
  1702. package/dist/agents/skills/codex/design-elevation-shadow/skill.yaml +35 -0
  1703. package/dist/agents/skills/codex/design-empty-error-states/SKILL.md +154 -0
  1704. package/dist/agents/skills/codex/design-empty-error-states/skill.yaml +38 -0
  1705. package/dist/agents/skills/codex/design-feedback-patterns/SKILL.md +156 -0
  1706. package/dist/agents/skills/codex/design-feedback-patterns/skill.yaml +40 -0
  1707. package/dist/agents/skills/codex/design-fluent-design/SKILL.md +241 -0
  1708. package/dist/agents/skills/codex/design-fluent-design/skill.yaml +36 -0
  1709. package/dist/agents/skills/codex/design-font-pairing/SKILL.md +161 -0
  1710. package/dist/agents/skills/codex/design-font-pairing/skill.yaml +35 -0
  1711. package/dist/agents/skills/codex/design-form-ux/SKILL.md +156 -0
  1712. package/dist/agents/skills/codex/design-form-ux/skill.yaml +37 -0
  1713. package/dist/agents/skills/codex/design-gestalt-closure-continuity/SKILL.md +182 -0
  1714. package/dist/agents/skills/codex/design-gestalt-closure-continuity/skill.yaml +34 -0
  1715. package/dist/agents/skills/codex/design-gestalt-common-fate/SKILL.md +214 -0
  1716. package/dist/agents/skills/codex/design-gestalt-common-fate/skill.yaml +34 -0
  1717. package/dist/agents/skills/codex/design-gestalt-figure-ground/SKILL.md +189 -0
  1718. package/dist/agents/skills/codex/design-gestalt-figure-ground/skill.yaml +35 -0
  1719. package/dist/agents/skills/codex/design-gestalt-proximity/SKILL.md +162 -0
  1720. package/dist/agents/skills/codex/design-gestalt-proximity/skill.yaml +35 -0
  1721. package/dist/agents/skills/codex/design-gestalt-similarity/SKILL.md +175 -0
  1722. package/dist/agents/skills/codex/design-gestalt-similarity/skill.yaml +34 -0
  1723. package/dist/agents/skills/codex/design-grid-systems/SKILL.md +154 -0
  1724. package/dist/agents/skills/codex/design-grid-systems/skill.yaml +36 -0
  1725. package/dist/agents/skills/codex/design-i18n-design/SKILL.md +181 -0
  1726. package/dist/agents/skills/codex/design-i18n-design/skill.yaml +37 -0
  1727. package/dist/agents/skills/codex/design-iconography/SKILL.md +169 -0
  1728. package/dist/agents/skills/codex/design-iconography/skill.yaml +36 -0
  1729. package/dist/agents/skills/codex/design-illustration-style/SKILL.md +170 -0
  1730. package/dist/agents/skills/codex/design-illustration-style/skill.yaml +35 -0
  1731. package/dist/agents/skills/codex/design-imagery-photography/SKILL.md +172 -0
  1732. package/dist/agents/skills/codex/design-imagery-photography/skill.yaml +36 -0
  1733. package/dist/agents/skills/codex/design-information-architecture/SKILL.md +155 -0
  1734. package/dist/agents/skills/codex/design-information-architecture/skill.yaml +38 -0
  1735. package/dist/agents/skills/codex/design-loading-patterns/SKILL.md +175 -0
  1736. package/dist/agents/skills/codex/design-loading-patterns/skill.yaml +35 -0
  1737. package/dist/agents/skills/codex/design-material-design-3/SKILL.md +184 -0
  1738. package/dist/agents/skills/codex/design-material-design-3/skill.yaml +37 -0
  1739. package/dist/agents/skills/codex/design-micro-interactions/SKILL.md +156 -0
  1740. package/dist/agents/skills/codex/design-micro-interactions/skill.yaml +36 -0
  1741. package/dist/agents/skills/codex/design-motion-principles/SKILL.md +161 -0
  1742. package/dist/agents/skills/codex/design-motion-principles/skill.yaml +37 -0
  1743. package/dist/agents/skills/codex/design-naming-conventions/SKILL.md +200 -0
  1744. package/dist/agents/skills/codex/design-naming-conventions/skill.yaml +35 -0
  1745. package/dist/agents/skills/codex/design-navigation-ux/SKILL.md +150 -0
  1746. package/dist/agents/skills/codex/design-navigation-ux/skill.yaml +36 -0
  1747. package/dist/agents/skills/codex/design-palette-construction/SKILL.md +152 -0
  1748. package/dist/agents/skills/codex/design-palette-construction/skill.yaml +38 -0
  1749. package/dist/agents/skills/codex/design-parallax-scroll/SKILL.md +200 -0
  1750. package/dist/agents/skills/codex/design-parallax-scroll/skill.yaml +35 -0
  1751. package/dist/agents/skills/codex/design-readability/SKILL.md +183 -0
  1752. package/dist/agents/skills/codex/design-readability/skill.yaml +39 -0
  1753. package/dist/agents/skills/codex/design-responsive-strategy/SKILL.md +157 -0
  1754. package/dist/agents/skills/codex/design-responsive-strategy/skill.yaml +35 -0
  1755. package/dist/agents/skills/codex/design-responsive-type/SKILL.md +270 -0
  1756. package/dist/agents/skills/codex/design-responsive-type/skill.yaml +35 -0
  1757. package/dist/agents/skills/codex/design-state-design/SKILL.md +152 -0
  1758. package/dist/agents/skills/codex/design-state-design/skill.yaml +37 -0
  1759. package/dist/agents/skills/codex/design-token-architecture/SKILL.md +218 -0
  1760. package/dist/agents/skills/codex/design-token-architecture/skill.yaml +37 -0
  1761. package/dist/agents/skills/codex/design-transitions-timing/SKILL.md +183 -0
  1762. package/dist/agents/skills/codex/design-transitions-timing/skill.yaml +35 -0
  1763. package/dist/agents/skills/codex/design-type-scale/SKILL.md +157 -0
  1764. package/dist/agents/skills/codex/design-type-scale/skill.yaml +35 -0
  1765. package/dist/agents/skills/codex/design-typographic-hierarchy/SKILL.md +187 -0
  1766. package/dist/agents/skills/codex/design-typographic-hierarchy/skill.yaml +35 -0
  1767. package/dist/agents/skills/codex/design-typography-fundamentals/SKILL.md +158 -0
  1768. package/dist/agents/skills/codex/design-typography-fundamentals/skill.yaml +37 -0
  1769. package/dist/agents/skills/codex/design-visual-hierarchy/SKILL.md +150 -0
  1770. package/dist/agents/skills/codex/design-visual-hierarchy/skill.yaml +37 -0
  1771. package/dist/agents/skills/codex/design-web-fonts/SKILL.md +251 -0
  1772. package/dist/agents/skills/codex/design-web-fonts/skill.yaml +36 -0
  1773. package/dist/agents/skills/codex/design-whitespace/SKILL.md +150 -0
  1774. package/dist/agents/skills/codex/design-whitespace/skill.yaml +37 -0
  1775. package/dist/agents/skills/codex/detect-doc-drift/skill.yaml +3 -0
  1776. package/dist/agents/skills/codex/drizzle-filtering-pattern/SKILL.md +185 -0
  1777. package/dist/agents/skills/codex/drizzle-filtering-pattern/skill.yaml +44 -0
  1778. package/dist/agents/skills/codex/drizzle-migrations/SKILL.md +139 -0
  1779. package/dist/agents/skills/codex/drizzle-migrations/skill.yaml +42 -0
  1780. package/dist/agents/skills/codex/drizzle-performance-patterns/SKILL.md +176 -0
  1781. package/dist/agents/skills/codex/drizzle-performance-patterns/skill.yaml +50 -0
  1782. package/dist/agents/skills/codex/drizzle-query-builder/SKILL.md +206 -0
  1783. package/dist/agents/skills/codex/drizzle-query-builder/skill.yaml +45 -0
  1784. package/dist/agents/skills/codex/drizzle-raw-sql/SKILL.md +157 -0
  1785. package/dist/agents/skills/codex/drizzle-raw-sql/skill.yaml +40 -0
  1786. package/dist/agents/skills/codex/drizzle-relations-pattern/SKILL.md +179 -0
  1787. package/dist/agents/skills/codex/drizzle-relations-pattern/skill.yaml +42 -0
  1788. package/dist/agents/skills/codex/drizzle-schema-definition/SKILL.md +151 -0
  1789. package/dist/agents/skills/codex/drizzle-schema-definition/skill.yaml +50 -0
  1790. package/dist/agents/skills/codex/drizzle-transactions/SKILL.md +146 -0
  1791. package/dist/agents/skills/codex/drizzle-transactions/skill.yaml +43 -0
  1792. package/dist/agents/skills/codex/drizzle-with-nextjs/SKILL.md +199 -0
  1793. package/dist/agents/skills/codex/drizzle-with-nextjs/skill.yaml +44 -0
  1794. package/dist/agents/skills/codex/enforce-architecture/skill.yaml +3 -0
  1795. package/dist/agents/skills/codex/events-event-schema/SKILL.md +180 -0
  1796. package/dist/agents/skills/codex/events-event-schema/skill.yaml +45 -0
  1797. package/dist/agents/skills/codex/events-event-storming/SKILL.md +199 -0
  1798. package/dist/agents/skills/codex/events-event-storming/skill.yaml +45 -0
  1799. package/dist/agents/skills/codex/events-idempotency/SKILL.md +189 -0
  1800. package/dist/agents/skills/codex/events-idempotency/skill.yaml +45 -0
  1801. package/dist/agents/skills/codex/events-kafka-patterns/SKILL.md +190 -0
  1802. package/dist/agents/skills/codex/events-kafka-patterns/skill.yaml +45 -0
  1803. package/dist/agents/skills/codex/events-message-queue/SKILL.md +190 -0
  1804. package/dist/agents/skills/codex/events-message-queue/skill.yaml +44 -0
  1805. package/dist/agents/skills/codex/events-outbox-pattern/SKILL.md +212 -0
  1806. package/dist/agents/skills/codex/events-outbox-pattern/skill.yaml +44 -0
  1807. package/dist/agents/skills/codex/events-pubsub-pattern/SKILL.md +158 -0
  1808. package/dist/agents/skills/codex/events-pubsub-pattern/skill.yaml +45 -0
  1809. package/dist/agents/skills/codex/events-redis-pubsub/SKILL.md +183 -0
  1810. package/dist/agents/skills/codex/events-redis-pubsub/skill.yaml +43 -0
  1811. package/dist/agents/skills/codex/events-saga-choreography/SKILL.md +177 -0
  1812. package/dist/agents/skills/codex/events-saga-choreography/skill.yaml +44 -0
  1813. package/dist/agents/skills/codex/events-sse-pattern/SKILL.md +221 -0
  1814. package/dist/agents/skills/codex/events-sse-pattern/skill.yaml +43 -0
  1815. package/dist/agents/skills/codex/events-webhooks-pattern/SKILL.md +215 -0
  1816. package/dist/agents/skills/codex/events-webhooks-pattern/skill.yaml +46 -0
  1817. package/dist/agents/skills/codex/events-websocket-pattern/SKILL.md +252 -0
  1818. package/dist/agents/skills/codex/events-websocket-pattern/skill.yaml +44 -0
  1819. package/dist/agents/skills/codex/gof-abstract-factory/SKILL.md +193 -0
  1820. package/dist/agents/skills/codex/gof-abstract-factory/skill.yaml +36 -0
  1821. package/dist/agents/skills/codex/gof-adapter-pattern/SKILL.md +157 -0
  1822. package/dist/agents/skills/codex/gof-adapter-pattern/skill.yaml +37 -0
  1823. package/dist/agents/skills/codex/gof-bridge-pattern/SKILL.md +183 -0
  1824. package/dist/agents/skills/codex/gof-bridge-pattern/skill.yaml +36 -0
  1825. package/dist/agents/skills/codex/gof-builder-pattern/SKILL.md +236 -0
  1826. package/dist/agents/skills/codex/gof-builder-pattern/skill.yaml +36 -0
  1827. package/dist/agents/skills/codex/gof-chain-of-responsibility/SKILL.md +199 -0
  1828. package/dist/agents/skills/codex/gof-chain-of-responsibility/skill.yaml +36 -0
  1829. package/dist/agents/skills/codex/gof-command-pattern/SKILL.md +197 -0
  1830. package/dist/agents/skills/codex/gof-command-pattern/skill.yaml +36 -0
  1831. package/dist/agents/skills/codex/gof-composite-pattern/SKILL.md +188 -0
  1832. package/dist/agents/skills/codex/gof-composite-pattern/skill.yaml +36 -0
  1833. package/dist/agents/skills/codex/gof-decorator-pattern/SKILL.md +177 -0
  1834. package/dist/agents/skills/codex/gof-decorator-pattern/skill.yaml +37 -0
  1835. package/dist/agents/skills/codex/gof-facade-pattern/SKILL.md +143 -0
  1836. package/dist/agents/skills/codex/gof-facade-pattern/skill.yaml +36 -0
  1837. package/dist/agents/skills/codex/gof-factory-method/SKILL.md +148 -0
  1838. package/dist/agents/skills/codex/gof-factory-method/skill.yaml +37 -0
  1839. package/dist/agents/skills/codex/gof-flyweight-pattern/SKILL.md +160 -0
  1840. package/dist/agents/skills/codex/gof-flyweight-pattern/skill.yaml +36 -0
  1841. package/dist/agents/skills/codex/gof-iterator-pattern/SKILL.md +177 -0
  1842. package/dist/agents/skills/codex/gof-iterator-pattern/skill.yaml +36 -0
  1843. package/dist/agents/skills/codex/gof-mediator-pattern/SKILL.md +171 -0
  1844. package/dist/agents/skills/codex/gof-mediator-pattern/skill.yaml +36 -0
  1845. package/dist/agents/skills/codex/gof-memento-pattern/SKILL.md +207 -0
  1846. package/dist/agents/skills/codex/gof-memento-pattern/skill.yaml +35 -0
  1847. package/dist/agents/skills/codex/gof-null-object/SKILL.md +177 -0
  1848. package/dist/agents/skills/codex/gof-null-object/skill.yaml +36 -0
  1849. package/dist/agents/skills/codex/gof-observer-pattern/SKILL.md +175 -0
  1850. package/dist/agents/skills/codex/gof-observer-pattern/skill.yaml +38 -0
  1851. package/dist/agents/skills/codex/gof-prototype-pattern/SKILL.md +162 -0
  1852. package/dist/agents/skills/codex/gof-prototype-pattern/skill.yaml +36 -0
  1853. package/dist/agents/skills/codex/gof-proxy-pattern/SKILL.md +184 -0
  1854. package/dist/agents/skills/codex/gof-proxy-pattern/skill.yaml +37 -0
  1855. package/dist/agents/skills/codex/gof-singleton/SKILL.md +149 -0
  1856. package/dist/agents/skills/codex/gof-singleton/skill.yaml +36 -0
  1857. package/dist/agents/skills/codex/gof-state-pattern/SKILL.md +220 -0
  1858. package/dist/agents/skills/codex/gof-state-pattern/skill.yaml +36 -0
  1859. package/dist/agents/skills/codex/gof-strategy-pattern/SKILL.md +179 -0
  1860. package/dist/agents/skills/codex/gof-strategy-pattern/skill.yaml +36 -0
  1861. package/dist/agents/skills/codex/gof-template-method/SKILL.md +189 -0
  1862. package/dist/agents/skills/codex/gof-template-method/skill.yaml +36 -0
  1863. package/dist/agents/skills/codex/gof-visitor-pattern/SKILL.md +205 -0
  1864. package/dist/agents/skills/codex/gof-visitor-pattern/skill.yaml +35 -0
  1865. package/dist/agents/skills/codex/graphql-apollo-server/SKILL.md +169 -0
  1866. package/dist/agents/skills/codex/graphql-apollo-server/skill.yaml +42 -0
  1867. package/dist/agents/skills/codex/graphql-auth-patterns/SKILL.md +198 -0
  1868. package/dist/agents/skills/codex/graphql-auth-patterns/skill.yaml +45 -0
  1869. package/dist/agents/skills/codex/graphql-client-patterns/SKILL.md +152 -0
  1870. package/dist/agents/skills/codex/graphql-client-patterns/skill.yaml +42 -0
  1871. package/dist/agents/skills/codex/graphql-codegen-pattern/SKILL.md +154 -0
  1872. package/dist/agents/skills/codex/graphql-codegen-pattern/skill.yaml +40 -0
  1873. package/dist/agents/skills/codex/graphql-dataloader-pattern/SKILL.md +138 -0
  1874. package/dist/agents/skills/codex/graphql-dataloader-pattern/skill.yaml +39 -0
  1875. package/dist/agents/skills/codex/graphql-error-handling/SKILL.md +168 -0
  1876. package/dist/agents/skills/codex/graphql-error-handling/skill.yaml +42 -0
  1877. package/dist/agents/skills/codex/graphql-federation-pattern/SKILL.md +137 -0
  1878. package/dist/agents/skills/codex/graphql-federation-pattern/skill.yaml +42 -0
  1879. package/dist/agents/skills/codex/graphql-pagination-patterns/SKILL.md +176 -0
  1880. package/dist/agents/skills/codex/graphql-pagination-patterns/skill.yaml +44 -0
  1881. package/dist/agents/skills/codex/graphql-performance-patterns/SKILL.md +166 -0
  1882. package/dist/agents/skills/codex/graphql-performance-patterns/skill.yaml +45 -0
  1883. package/dist/agents/skills/codex/graphql-resolver-pattern/SKILL.md +129 -0
  1884. package/dist/agents/skills/codex/graphql-resolver-pattern/skill.yaml +40 -0
  1885. package/dist/agents/skills/codex/graphql-schema-design/SKILL.md +146 -0
  1886. package/dist/agents/skills/codex/graphql-schema-design/skill.yaml +44 -0
  1887. package/dist/agents/skills/codex/graphql-subscriptions/SKILL.md +198 -0
  1888. package/dist/agents/skills/codex/graphql-subscriptions/skill.yaml +40 -0
  1889. package/dist/agents/skills/codex/harness-accessibility/skill.yaml +3 -0
  1890. package/dist/agents/skills/codex/harness-api-design/skill.yaml +8 -0
  1891. package/dist/agents/skills/codex/harness-architecture-advisor/skill.yaml +3 -0
  1892. package/dist/agents/skills/codex/harness-auth/skill.yaml +7 -0
  1893. package/dist/agents/skills/codex/harness-autopilot/SKILL.md +171 -822
  1894. package/dist/agents/skills/codex/harness-autopilot/skill.yaml +3 -0
  1895. package/dist/agents/skills/codex/harness-brainstorming/SKILL.md +145 -195
  1896. package/dist/agents/skills/codex/harness-brainstorming/skill.yaml +6 -0
  1897. package/dist/agents/skills/codex/harness-caching/skill.yaml +6 -0
  1898. package/dist/agents/skills/codex/harness-chaos/skill.yaml +3 -0
  1899. package/dist/agents/skills/codex/harness-code-review/SKILL.md +267 -436
  1900. package/dist/agents/skills/codex/harness-code-review/skill.yaml +9 -0
  1901. package/dist/agents/skills/codex/harness-codebase-cleanup/skill.yaml +3 -0
  1902. package/dist/agents/skills/codex/harness-compliance/skill.yaml +3 -0
  1903. package/dist/agents/skills/codex/harness-containerization/skill.yaml +8 -0
  1904. package/dist/agents/skills/codex/harness-data-pipeline/skill.yaml +3 -0
  1905. package/dist/agents/skills/codex/harness-data-validation/skill.yaml +8 -0
  1906. package/dist/agents/skills/codex/harness-database/skill.yaml +15 -0
  1907. package/dist/agents/skills/codex/harness-debugging/skill.yaml +3 -0
  1908. package/dist/agents/skills/codex/harness-dependency-health/skill.yaml +3 -0
  1909. package/dist/agents/skills/codex/harness-deployment/skill.yaml +3 -0
  1910. package/dist/agents/skills/codex/harness-design/skill.yaml +9 -0
  1911. package/dist/agents/skills/codex/harness-design-mobile/skill.yaml +3 -0
  1912. package/dist/agents/skills/codex/harness-design-system/skill.yaml +10 -0
  1913. package/dist/agents/skills/codex/harness-design-web/skill.yaml +8 -0
  1914. package/dist/agents/skills/codex/harness-diagnostics/skill.yaml +3 -0
  1915. package/dist/agents/skills/codex/harness-docs-pipeline/skill.yaml +3 -0
  1916. package/dist/agents/skills/codex/harness-dx/skill.yaml +3 -0
  1917. package/dist/agents/skills/codex/harness-e2e/skill.yaml +15 -0
  1918. package/dist/agents/skills/codex/harness-event-driven/skill.yaml +8 -0
  1919. package/dist/agents/skills/codex/harness-execution/SKILL.md +180 -271
  1920. package/dist/agents/skills/codex/harness-execution/skill.yaml +15 -0
  1921. package/dist/agents/skills/codex/harness-feature-flags/skill.yaml +3 -0
  1922. package/dist/agents/skills/codex/harness-git-workflow/skill.yaml +3 -0
  1923. package/dist/agents/skills/codex/harness-hotspot-detector/skill.yaml +3 -0
  1924. package/dist/agents/skills/codex/harness-i18n/skill.yaml +3 -0
  1925. package/dist/agents/skills/codex/harness-i18n-process/skill.yaml +3 -0
  1926. package/dist/agents/skills/codex/harness-i18n-workflow/skill.yaml +3 -0
  1927. package/dist/agents/skills/codex/harness-impact-analysis/skill.yaml +3 -0
  1928. package/dist/agents/skills/codex/harness-incident-response/skill.yaml +3 -0
  1929. package/dist/agents/skills/codex/harness-infrastructure-as-code/skill.yaml +10 -0
  1930. package/dist/agents/skills/codex/harness-integration-test/skill.yaml +3 -0
  1931. package/dist/agents/skills/codex/harness-integrity/skill.yaml +3 -0
  1932. package/dist/agents/skills/codex/harness-knowledge-mapper/skill.yaml +3 -0
  1933. package/dist/agents/skills/codex/harness-load-testing/skill.yaml +3 -0
  1934. package/dist/agents/skills/codex/harness-ml-ops/skill.yaml +6 -0
  1935. package/dist/agents/skills/codex/harness-mobile-patterns/skill.yaml +13 -0
  1936. package/dist/agents/skills/codex/harness-mutation-test/skill.yaml +3 -0
  1937. package/dist/agents/skills/codex/harness-observability/skill.yaml +8 -0
  1938. package/dist/agents/skills/codex/harness-onboarding/skill.yaml +3 -0
  1939. package/dist/agents/skills/codex/harness-parallel-agents/skill.yaml +3 -0
  1940. package/dist/agents/skills/codex/harness-perf/skill.yaml +3 -0
  1941. package/dist/agents/skills/codex/harness-perf-tdd/skill.yaml +3 -0
  1942. package/dist/agents/skills/codex/harness-planning/SKILL.md +142 -322
  1943. package/dist/agents/skills/codex/harness-planning/skill.yaml +9 -0
  1944. package/dist/agents/skills/codex/harness-pre-commit-review/skill.yaml +2 -1
  1945. package/dist/agents/skills/codex/harness-product-spec/skill.yaml +3 -0
  1946. package/dist/agents/skills/codex/harness-property-test/skill.yaml +3 -0
  1947. package/dist/agents/skills/codex/harness-refactoring/skill.yaml +8 -0
  1948. package/dist/agents/skills/codex/harness-release-readiness/SKILL.md +16 -0
  1949. package/dist/agents/skills/codex/harness-release-readiness/skill.yaml +3 -0
  1950. package/dist/agents/skills/codex/harness-resilience/skill.yaml +8 -0
  1951. package/dist/agents/skills/codex/harness-roadmap/skill.yaml +3 -0
  1952. package/dist/agents/skills/codex/harness-roadmap-pilot/skill.yaml +3 -0
  1953. package/dist/agents/skills/codex/harness-router/SKILL.md +154 -0
  1954. package/dist/agents/skills/codex/harness-router/skill.yaml +47 -0
  1955. package/dist/agents/skills/codex/harness-secrets/SKILL.md +3 -3
  1956. package/dist/agents/skills/codex/harness-secrets/skill.yaml +3 -0
  1957. package/dist/agents/skills/codex/harness-security-review/skill.yaml +13 -0
  1958. package/dist/agents/skills/codex/harness-security-scan/skill.yaml +9 -0
  1959. package/dist/agents/skills/codex/harness-skill-authoring/SKILL.md +118 -0
  1960. package/dist/agents/skills/codex/harness-skill-authoring/skill.yaml +3 -0
  1961. package/dist/agents/skills/codex/harness-soundness-review/SKILL.md +483 -667
  1962. package/dist/agents/skills/codex/harness-soundness-review/skill.yaml +3 -0
  1963. package/dist/agents/skills/codex/harness-sql-review/skill.yaml +10 -0
  1964. package/dist/agents/skills/codex/harness-state-management/skill.yaml +8 -0
  1965. package/dist/agents/skills/codex/harness-supply-chain-audit/skill.yaml +3 -0
  1966. package/dist/agents/skills/codex/harness-tdd/skill.yaml +8 -0
  1967. package/dist/agents/skills/codex/harness-test-advisor/skill.yaml +3 -0
  1968. package/dist/agents/skills/codex/harness-test-data/skill.yaml +3 -0
  1969. package/dist/agents/skills/codex/harness-ux-copy/skill.yaml +15 -0
  1970. package/dist/agents/skills/codex/harness-verification/SKILL.md +135 -221
  1971. package/dist/agents/skills/codex/harness-verification/skill.yaml +6 -0
  1972. package/dist/agents/skills/codex/harness-verify/skill.yaml +3 -0
  1973. package/dist/agents/skills/codex/harness-visual-regression/skill.yaml +7 -0
  1974. package/dist/agents/skills/codex/initialize-harness-project/skill.yaml +3 -0
  1975. package/dist/agents/skills/codex/js-abstract-factory-pattern/SKILL.md +79 -0
  1976. package/dist/agents/skills/codex/js-abstract-factory-pattern/skill.yaml +36 -0
  1977. package/dist/agents/skills/codex/js-adapter-pattern/SKILL.md +77 -0
  1978. package/dist/agents/skills/codex/js-adapter-pattern/skill.yaml +36 -0
  1979. package/dist/agents/skills/codex/js-bridge-pattern/SKILL.md +90 -0
  1980. package/dist/agents/skills/codex/js-bridge-pattern/skill.yaml +36 -0
  1981. package/dist/agents/skills/codex/js-chain-of-responsibility-pattern/SKILL.md +81 -0
  1982. package/dist/agents/skills/codex/js-chain-of-responsibility-pattern/skill.yaml +36 -0
  1983. package/dist/agents/skills/codex/js-command-pattern/SKILL.md +81 -0
  1984. package/dist/agents/skills/codex/js-command-pattern/skill.yaml +37 -0
  1985. package/dist/agents/skills/codex/js-composite-pattern/SKILL.md +83 -0
  1986. package/dist/agents/skills/codex/js-composite-pattern/skill.yaml +36 -0
  1987. package/dist/agents/skills/codex/js-constructor-pattern/SKILL.md +78 -0
  1988. package/dist/agents/skills/codex/js-constructor-pattern/skill.yaml +37 -0
  1989. package/dist/agents/skills/codex/js-decorator-pattern/SKILL.md +73 -0
  1990. package/dist/agents/skills/codex/js-decorator-pattern/skill.yaml +36 -0
  1991. package/dist/agents/skills/codex/js-dynamic-import/SKILL.md +70 -0
  1992. package/dist/agents/skills/codex/js-dynamic-import/skill.yaml +37 -0
  1993. package/dist/agents/skills/codex/js-facade-pattern/SKILL.md +73 -0
  1994. package/dist/agents/skills/codex/js-facade-pattern/skill.yaml +36 -0
  1995. package/dist/agents/skills/codex/js-factory-pattern/SKILL.md +74 -0
  1996. package/dist/agents/skills/codex/js-factory-pattern/skill.yaml +36 -0
  1997. package/dist/agents/skills/codex/js-flyweight-pattern/SKILL.md +79 -0
  1998. package/dist/agents/skills/codex/js-flyweight-pattern/skill.yaml +37 -0
  1999. package/dist/agents/skills/codex/js-iterator-pattern/SKILL.md +78 -0
  2000. package/dist/agents/skills/codex/js-iterator-pattern/skill.yaml +37 -0
  2001. package/dist/agents/skills/codex/js-mediator-middleware-pattern/SKILL.md +92 -0
  2002. package/dist/agents/skills/codex/js-mediator-middleware-pattern/skill.yaml +37 -0
  2003. package/dist/agents/skills/codex/js-mixin-pattern/SKILL.md +85 -0
  2004. package/dist/agents/skills/codex/js-mixin-pattern/skill.yaml +36 -0
  2005. package/dist/agents/skills/codex/js-module-pattern/SKILL.md +75 -0
  2006. package/dist/agents/skills/codex/js-module-pattern/skill.yaml +37 -0
  2007. package/dist/agents/skills/codex/js-observer-pattern/SKILL.md +81 -0
  2008. package/dist/agents/skills/codex/js-observer-pattern/skill.yaml +37 -0
  2009. package/dist/agents/skills/codex/js-prototype-pattern/SKILL.md +70 -0
  2010. package/dist/agents/skills/codex/js-prototype-pattern/skill.yaml +36 -0
  2011. package/dist/agents/skills/codex/js-provider-pattern/SKILL.md +67 -0
  2012. package/dist/agents/skills/codex/js-provider-pattern/skill.yaml +36 -0
  2013. package/dist/agents/skills/codex/js-proxy-pattern/SKILL.md +79 -0
  2014. package/dist/agents/skills/codex/js-proxy-pattern/skill.yaml +37 -0
  2015. package/dist/agents/skills/codex/js-revealing-module-pattern/SKILL.md +77 -0
  2016. package/dist/agents/skills/codex/js-revealing-module-pattern/skill.yaml +36 -0
  2017. package/dist/agents/skills/codex/js-singleton-pattern/SKILL.md +80 -0
  2018. package/dist/agents/skills/codex/js-singleton-pattern/skill.yaml +36 -0
  2019. package/dist/agents/skills/codex/js-state-pattern/SKILL.md +90 -0
  2020. package/dist/agents/skills/codex/js-state-pattern/skill.yaml +36 -0
  2021. package/dist/agents/skills/codex/js-static-import/SKILL.md +63 -0
  2022. package/dist/agents/skills/codex/js-static-import/skill.yaml +37 -0
  2023. package/dist/agents/skills/codex/js-strategy-pattern/SKILL.md +71 -0
  2024. package/dist/agents/skills/codex/js-strategy-pattern/skill.yaml +36 -0
  2025. package/dist/agents/skills/codex/js-template-method-pattern/SKILL.md +80 -0
  2026. package/dist/agents/skills/codex/js-template-method-pattern/skill.yaml +36 -0
  2027. package/dist/agents/skills/codex/js-visitor-pattern/SKILL.md +85 -0
  2028. package/dist/agents/skills/codex/js-visitor-pattern/skill.yaml +36 -0
  2029. package/dist/agents/skills/codex/microservices-api-gateway/SKILL.md +211 -0
  2030. package/dist/agents/skills/codex/microservices-api-gateway/skill.yaml +41 -0
  2031. package/dist/agents/skills/codex/microservices-bulkhead-pattern/SKILL.md +215 -0
  2032. package/dist/agents/skills/codex/microservices-bulkhead-pattern/skill.yaml +40 -0
  2033. package/dist/agents/skills/codex/microservices-circuit-breaker/SKILL.md +208 -0
  2034. package/dist/agents/skills/codex/microservices-circuit-breaker/skill.yaml +40 -0
  2035. package/dist/agents/skills/codex/microservices-config-server/SKILL.md +231 -0
  2036. package/dist/agents/skills/codex/microservices-config-server/skill.yaml +39 -0
  2037. package/dist/agents/skills/codex/microservices-cqrs-pattern/SKILL.md +236 -0
  2038. package/dist/agents/skills/codex/microservices-cqrs-pattern/skill.yaml +42 -0
  2039. package/dist/agents/skills/codex/microservices-decomposition/SKILL.md +172 -0
  2040. package/dist/agents/skills/codex/microservices-decomposition/skill.yaml +40 -0
  2041. package/dist/agents/skills/codex/microservices-distributed-tracing/SKILL.md +222 -0
  2042. package/dist/agents/skills/codex/microservices-distributed-tracing/skill.yaml +40 -0
  2043. package/dist/agents/skills/codex/microservices-event-sourcing/SKILL.md +268 -0
  2044. package/dist/agents/skills/codex/microservices-event-sourcing/skill.yaml +44 -0
  2045. package/dist/agents/skills/codex/microservices-health-check/SKILL.md +212 -0
  2046. package/dist/agents/skills/codex/microservices-health-check/skill.yaml +41 -0
  2047. package/dist/agents/skills/codex/microservices-outbox-pattern/SKILL.md +252 -0
  2048. package/dist/agents/skills/codex/microservices-outbox-pattern/skill.yaml +41 -0
  2049. package/dist/agents/skills/codex/microservices-saga-pattern/SKILL.md +196 -0
  2050. package/dist/agents/skills/codex/microservices-saga-pattern/skill.yaml +41 -0
  2051. package/dist/agents/skills/codex/microservices-service-discovery/SKILL.md +186 -0
  2052. package/dist/agents/skills/codex/microservices-service-discovery/skill.yaml +40 -0
  2053. package/dist/agents/skills/codex/microservices-sidecar-pattern/SKILL.md +187 -0
  2054. package/dist/agents/skills/codex/microservices-sidecar-pattern/skill.yaml +40 -0
  2055. package/dist/agents/skills/codex/microservices-strangler-fig/SKILL.md +204 -0
  2056. package/dist/agents/skills/codex/microservices-strangler-fig/skill.yaml +42 -0
  2057. package/dist/agents/skills/codex/mobile-animation-patterns/SKILL.md +199 -0
  2058. package/dist/agents/skills/codex/mobile-animation-patterns/skill.yaml +41 -0
  2059. package/dist/agents/skills/codex/mobile-deployment-patterns/SKILL.md +262 -0
  2060. package/dist/agents/skills/codex/mobile-deployment-patterns/skill.yaml +42 -0
  2061. package/dist/agents/skills/codex/mobile-expo-setup/SKILL.md +194 -0
  2062. package/dist/agents/skills/codex/mobile-expo-setup/skill.yaml +41 -0
  2063. package/dist/agents/skills/codex/mobile-flatlist-patterns/SKILL.md +192 -0
  2064. package/dist/agents/skills/codex/mobile-flatlist-patterns/skill.yaml +40 -0
  2065. package/dist/agents/skills/codex/mobile-gesture-handling/SKILL.md +207 -0
  2066. package/dist/agents/skills/codex/mobile-gesture-handling/skill.yaml +41 -0
  2067. package/dist/agents/skills/codex/mobile-native-modules/SKILL.md +187 -0
  2068. package/dist/agents/skills/codex/mobile-native-modules/skill.yaml +41 -0
  2069. package/dist/agents/skills/codex/mobile-navigation-pattern/SKILL.md +227 -0
  2070. package/dist/agents/skills/codex/mobile-navigation-pattern/skill.yaml +43 -0
  2071. package/dist/agents/skills/codex/mobile-network-patterns/SKILL.md +274 -0
  2072. package/dist/agents/skills/codex/mobile-network-patterns/skill.yaml +41 -0
  2073. package/dist/agents/skills/codex/mobile-performance-patterns/SKILL.md +207 -0
  2074. package/dist/agents/skills/codex/mobile-performance-patterns/skill.yaml +46 -0
  2075. package/dist/agents/skills/codex/mobile-push-notifications/SKILL.md +235 -0
  2076. package/dist/agents/skills/codex/mobile-push-notifications/skill.yaml +41 -0
  2077. package/dist/agents/skills/codex/mobile-storage-patterns/SKILL.md +235 -0
  2078. package/dist/agents/skills/codex/mobile-storage-patterns/skill.yaml +41 -0
  2079. package/dist/agents/skills/codex/mobile-testing-patterns/SKILL.md +246 -0
  2080. package/dist/agents/skills/codex/mobile-testing-patterns/skill.yaml +42 -0
  2081. package/dist/agents/skills/codex/nestjs-config-module/SKILL.md +121 -0
  2082. package/dist/agents/skills/codex/nestjs-config-module/skill.yaml +42 -0
  2083. package/dist/agents/skills/codex/nestjs-controller-pattern/SKILL.md +93 -0
  2084. package/dist/agents/skills/codex/nestjs-controller-pattern/skill.yaml +44 -0
  2085. package/dist/agents/skills/codex/nestjs-dependency-injection/SKILL.md +97 -0
  2086. package/dist/agents/skills/codex/nestjs-dependency-injection/skill.yaml +42 -0
  2087. package/dist/agents/skills/codex/nestjs-dto-validation/SKILL.md +133 -0
  2088. package/dist/agents/skills/codex/nestjs-dto-validation/skill.yaml +43 -0
  2089. package/dist/agents/skills/codex/nestjs-event-driven/SKILL.md +123 -0
  2090. package/dist/agents/skills/codex/nestjs-event-driven/skill.yaml +44 -0
  2091. package/dist/agents/skills/codex/nestjs-exception-filters/SKILL.md +119 -0
  2092. package/dist/agents/skills/codex/nestjs-exception-filters/skill.yaml +41 -0
  2093. package/dist/agents/skills/codex/nestjs-graphql-integration/SKILL.md +132 -0
  2094. package/dist/agents/skills/codex/nestjs-graphql-integration/skill.yaml +43 -0
  2095. package/dist/agents/skills/codex/nestjs-guards-pattern/SKILL.md +101 -0
  2096. package/dist/agents/skills/codex/nestjs-guards-pattern/skill.yaml +42 -0
  2097. package/dist/agents/skills/codex/nestjs-interceptors-pattern/SKILL.md +106 -0
  2098. package/dist/agents/skills/codex/nestjs-interceptors-pattern/skill.yaml +42 -0
  2099. package/dist/agents/skills/codex/nestjs-microservices/SKILL.md +132 -0
  2100. package/dist/agents/skills/codex/nestjs-microservices/skill.yaml +43 -0
  2101. package/dist/agents/skills/codex/nestjs-middleware-pattern/SKILL.md +104 -0
  2102. package/dist/agents/skills/codex/nestjs-middleware-pattern/skill.yaml +40 -0
  2103. package/dist/agents/skills/codex/nestjs-module-pattern/SKILL.md +89 -0
  2104. package/dist/agents/skills/codex/nestjs-module-pattern/skill.yaml +43 -0
  2105. package/dist/agents/skills/codex/nestjs-pipes-pattern/SKILL.md +111 -0
  2106. package/dist/agents/skills/codex/nestjs-pipes-pattern/skill.yaml +41 -0
  2107. package/dist/agents/skills/codex/nestjs-service-pattern/SKILL.md +83 -0
  2108. package/dist/agents/skills/codex/nestjs-service-pattern/skill.yaml +40 -0
  2109. package/dist/agents/skills/codex/nestjs-swagger-integration/SKILL.md +137 -0
  2110. package/dist/agents/skills/codex/nestjs-swagger-integration/skill.yaml +41 -0
  2111. package/dist/agents/skills/codex/nestjs-testing-patterns/SKILL.md +130 -0
  2112. package/dist/agents/skills/codex/nestjs-testing-patterns/skill.yaml +43 -0
  2113. package/dist/agents/skills/codex/next-app-router/SKILL.md +77 -0
  2114. package/dist/agents/skills/codex/next-app-router/skill.yaml +45 -0
  2115. package/dist/agents/skills/codex/next-auth-patterns/SKILL.md +94 -0
  2116. package/dist/agents/skills/codex/next-auth-patterns/skill.yaml +47 -0
  2117. package/dist/agents/skills/codex/next-caching-strategies/SKILL.md +83 -0
  2118. package/dist/agents/skills/codex/next-caching-strategies/skill.yaml +44 -0
  2119. package/dist/agents/skills/codex/next-data-fetching/SKILL.md +97 -0
  2120. package/dist/agents/skills/codex/next-data-fetching/skill.yaml +45 -0
  2121. package/dist/agents/skills/codex/next-deployment-optimization/SKILL.md +92 -0
  2122. package/dist/agents/skills/codex/next-deployment-optimization/skill.yaml +43 -0
  2123. package/dist/agents/skills/codex/next-environment-config/SKILL.md +92 -0
  2124. package/dist/agents/skills/codex/next-environment-config/skill.yaml +44 -0
  2125. package/dist/agents/skills/codex/next-error-boundaries/SKILL.md +96 -0
  2126. package/dist/agents/skills/codex/next-error-boundaries/skill.yaml +45 -0
  2127. package/dist/agents/skills/codex/next-image-optimization/SKILL.md +91 -0
  2128. package/dist/agents/skills/codex/next-image-optimization/skill.yaml +42 -0
  2129. package/dist/agents/skills/codex/next-metadata-api/SKILL.md +94 -0
  2130. package/dist/agents/skills/codex/next-metadata-api/skill.yaml +44 -0
  2131. package/dist/agents/skills/codex/next-middleware-pattern/SKILL.md +80 -0
  2132. package/dist/agents/skills/codex/next-middleware-pattern/skill.yaml +44 -0
  2133. package/dist/agents/skills/codex/next-monorepo-setup/SKILL.md +103 -0
  2134. package/dist/agents/skills/codex/next-monorepo-setup/skill.yaml +44 -0
  2135. package/dist/agents/skills/codex/next-parallel-intercepting-routes/SKILL.md +98 -0
  2136. package/dist/agents/skills/codex/next-parallel-intercepting-routes/skill.yaml +44 -0
  2137. package/dist/agents/skills/codex/next-route-handlers/SKILL.md +80 -0
  2138. package/dist/agents/skills/codex/next-route-handlers/skill.yaml +45 -0
  2139. package/dist/agents/skills/codex/next-server-actions/SKILL.md +97 -0
  2140. package/dist/agents/skills/codex/next-server-actions/skill.yaml +45 -0
  2141. package/dist/agents/skills/codex/next-server-components/SKILL.md +82 -0
  2142. package/dist/agents/skills/codex/next-server-components/skill.yaml +44 -0
  2143. package/dist/agents/skills/codex/next-static-generation/SKILL.md +75 -0
  2144. package/dist/agents/skills/codex/next-static-generation/skill.yaml +45 -0
  2145. package/dist/agents/skills/codex/next-streaming-suspense/SKILL.md +86 -0
  2146. package/dist/agents/skills/codex/next-streaming-suspense/skill.yaml +44 -0
  2147. package/dist/agents/skills/codex/next-testing-patterns/SKILL.md +104 -0
  2148. package/dist/agents/skills/codex/next-testing-patterns/skill.yaml +47 -0
  2149. package/dist/agents/skills/codex/node-buffer-encoding/SKILL.md +138 -0
  2150. package/dist/agents/skills/codex/node-buffer-encoding/skill.yaml +40 -0
  2151. package/dist/agents/skills/codex/node-child-process/SKILL.md +162 -0
  2152. package/dist/agents/skills/codex/node-child-process/skill.yaml +41 -0
  2153. package/dist/agents/skills/codex/node-crypto-patterns/SKILL.md +147 -0
  2154. package/dist/agents/skills/codex/node-crypto-patterns/skill.yaml +42 -0
  2155. package/dist/agents/skills/codex/node-environment-config/SKILL.md +145 -0
  2156. package/dist/agents/skills/codex/node-environment-config/skill.yaml +40 -0
  2157. package/dist/agents/skills/codex/node-error-handling/SKILL.md +183 -0
  2158. package/dist/agents/skills/codex/node-error-handling/skill.yaml +41 -0
  2159. package/dist/agents/skills/codex/node-esm-patterns/SKILL.md +149 -0
  2160. package/dist/agents/skills/codex/node-esm-patterns/skill.yaml +40 -0
  2161. package/dist/agents/skills/codex/node-event-emitter/SKILL.md +144 -0
  2162. package/dist/agents/skills/codex/node-event-emitter/skill.yaml +42 -0
  2163. package/dist/agents/skills/codex/node-express-patterns/SKILL.md +193 -0
  2164. package/dist/agents/skills/codex/node-express-patterns/skill.yaml +41 -0
  2165. package/dist/agents/skills/codex/node-fastify-patterns/SKILL.md +200 -0
  2166. package/dist/agents/skills/codex/node-fastify-patterns/skill.yaml +41 -0
  2167. package/dist/agents/skills/codex/node-http-server/SKILL.md +159 -0
  2168. package/dist/agents/skills/codex/node-http-server/skill.yaml +41 -0
  2169. package/dist/agents/skills/codex/node-path-fs-patterns/SKILL.md +149 -0
  2170. package/dist/agents/skills/codex/node-path-fs-patterns/skill.yaml +40 -0
  2171. package/dist/agents/skills/codex/node-performance-profiling/SKILL.md +176 -0
  2172. package/dist/agents/skills/codex/node-performance-profiling/skill.yaml +45 -0
  2173. package/dist/agents/skills/codex/node-streams-pattern/SKILL.md +163 -0
  2174. package/dist/agents/skills/codex/node-streams-pattern/skill.yaml +41 -0
  2175. package/dist/agents/skills/codex/node-testing-patterns/SKILL.md +205 -0
  2176. package/dist/agents/skills/codex/node-testing-patterns/skill.yaml +41 -0
  2177. package/dist/agents/skills/codex/node-worker-threads/SKILL.md +169 -0
  2178. package/dist/agents/skills/codex/node-worker-threads/skill.yaml +41 -0
  2179. package/dist/agents/skills/codex/nuxt-auto-imports/SKILL.md +97 -0
  2180. package/dist/agents/skills/codex/nuxt-auto-imports/skill.yaml +42 -0
  2181. package/dist/agents/skills/codex/nuxt-composables-pattern/SKILL.md +119 -0
  2182. package/dist/agents/skills/codex/nuxt-composables-pattern/skill.yaml +42 -0
  2183. package/dist/agents/skills/codex/nuxt-deployment-config/SKILL.md +209 -0
  2184. package/dist/agents/skills/codex/nuxt-deployment-config/skill.yaml +44 -0
  2185. package/dist/agents/skills/codex/nuxt-layouts-pages/SKILL.md +210 -0
  2186. package/dist/agents/skills/codex/nuxt-layouts-pages/skill.yaml +43 -0
  2187. package/dist/agents/skills/codex/nuxt-middleware-pattern/SKILL.md +164 -0
  2188. package/dist/agents/skills/codex/nuxt-middleware-pattern/skill.yaml +42 -0
  2189. package/dist/agents/skills/codex/nuxt-modules-pattern/SKILL.md +193 -0
  2190. package/dist/agents/skills/codex/nuxt-modules-pattern/skill.yaml +41 -0
  2191. package/dist/agents/skills/codex/nuxt-plugins-pattern/SKILL.md +178 -0
  2192. package/dist/agents/skills/codex/nuxt-plugins-pattern/skill.yaml +41 -0
  2193. package/dist/agents/skills/codex/nuxt-seo-metadata/SKILL.md +185 -0
  2194. package/dist/agents/skills/codex/nuxt-seo-metadata/skill.yaml +44 -0
  2195. package/dist/agents/skills/codex/nuxt-server-routes/SKILL.md +154 -0
  2196. package/dist/agents/skills/codex/nuxt-server-routes/skill.yaml +42 -0
  2197. package/dist/agents/skills/codex/nuxt-state-management/SKILL.md +162 -0
  2198. package/dist/agents/skills/codex/nuxt-state-management/skill.yaml +44 -0
  2199. package/dist/agents/skills/codex/nuxt-testing-patterns/SKILL.md +203 -0
  2200. package/dist/agents/skills/codex/nuxt-testing-patterns/skill.yaml +46 -0
  2201. package/dist/agents/skills/codex/otel-context-propagation/SKILL.md +152 -0
  2202. package/dist/agents/skills/codex/otel-context-propagation/skill.yaml +40 -0
  2203. package/dist/agents/skills/codex/otel-custom-instrumentation/SKILL.md +166 -0
  2204. package/dist/agents/skills/codex/otel-custom-instrumentation/skill.yaml +40 -0
  2205. package/dist/agents/skills/codex/otel-error-tracking/SKILL.md +163 -0
  2206. package/dist/agents/skills/codex/otel-error-tracking/skill.yaml +40 -0
  2207. package/dist/agents/skills/codex/otel-exporter-config/SKILL.md +168 -0
  2208. package/dist/agents/skills/codex/otel-exporter-config/skill.yaml +40 -0
  2209. package/dist/agents/skills/codex/otel-logging-pattern/SKILL.md +161 -0
  2210. package/dist/agents/skills/codex/otel-logging-pattern/skill.yaml +41 -0
  2211. package/dist/agents/skills/codex/otel-metrics-pattern/SKILL.md +152 -0
  2212. package/dist/agents/skills/codex/otel-metrics-pattern/skill.yaml +41 -0
  2213. package/dist/agents/skills/codex/otel-nestjs-integration/SKILL.md +174 -0
  2214. package/dist/agents/skills/codex/otel-nestjs-integration/skill.yaml +41 -0
  2215. package/dist/agents/skills/codex/otel-nextjs-integration/SKILL.md +161 -0
  2216. package/dist/agents/skills/codex/otel-nextjs-integration/skill.yaml +40 -0
  2217. package/dist/agents/skills/codex/otel-performance-insights/SKILL.md +173 -0
  2218. package/dist/agents/skills/codex/otel-performance-insights/skill.yaml +45 -0
  2219. package/dist/agents/skills/codex/otel-sampling-strategies/SKILL.md +162 -0
  2220. package/dist/agents/skills/codex/otel-sampling-strategies/skill.yaml +39 -0
  2221. package/dist/agents/skills/codex/otel-sdk-setup/SKILL.md +145 -0
  2222. package/dist/agents/skills/codex/otel-sdk-setup/skill.yaml +40 -0
  2223. package/dist/agents/skills/codex/otel-tracing-pattern/SKILL.md +130 -0
  2224. package/dist/agents/skills/codex/otel-tracing-pattern/skill.yaml +40 -0
  2225. package/dist/agents/skills/codex/owasp-auth-patterns/SKILL.md +198 -0
  2226. package/dist/agents/skills/codex/owasp-auth-patterns/skill.yaml +50 -0
  2227. package/dist/agents/skills/codex/owasp-cryptography/SKILL.md +191 -0
  2228. package/dist/agents/skills/codex/owasp-cryptography/skill.yaml +48 -0
  2229. package/dist/agents/skills/codex/owasp-csrf-protection/SKILL.md +175 -0
  2230. package/dist/agents/skills/codex/owasp-csrf-protection/skill.yaml +45 -0
  2231. package/dist/agents/skills/codex/owasp-dependency-security/SKILL.md +173 -0
  2232. package/dist/agents/skills/codex/owasp-dependency-security/skill.yaml +45 -0
  2233. package/dist/agents/skills/codex/owasp-file-upload-security/SKILL.md +199 -0
  2234. package/dist/agents/skills/codex/owasp-file-upload-security/skill.yaml +44 -0
  2235. package/dist/agents/skills/codex/owasp-idor-prevention/SKILL.md +174 -0
  2236. package/dist/agents/skills/codex/owasp-idor-prevention/skill.yaml +46 -0
  2237. package/dist/agents/skills/codex/owasp-injection-prevention/SKILL.md +160 -0
  2238. package/dist/agents/skills/codex/owasp-injection-prevention/skill.yaml +48 -0
  2239. package/dist/agents/skills/codex/owasp-logging-monitoring/SKILL.md +214 -0
  2240. package/dist/agents/skills/codex/owasp-logging-monitoring/skill.yaml +46 -0
  2241. package/dist/agents/skills/codex/owasp-rate-limiting/SKILL.md +216 -0
  2242. package/dist/agents/skills/codex/owasp-rate-limiting/skill.yaml +45 -0
  2243. package/dist/agents/skills/codex/owasp-secrets-management/SKILL.md +172 -0
  2244. package/dist/agents/skills/codex/owasp-secrets-management/skill.yaml +49 -0
  2245. package/dist/agents/skills/codex/owasp-security-headers/SKILL.md +221 -0
  2246. package/dist/agents/skills/codex/owasp-security-headers/skill.yaml +44 -0
  2247. package/dist/agents/skills/codex/owasp-xss-prevention/SKILL.md +174 -0
  2248. package/dist/agents/skills/codex/owasp-xss-prevention/skill.yaml +45 -0
  2249. package/dist/agents/skills/codex/perf-browser-cache/SKILL.md +151 -0
  2250. package/dist/agents/skills/codex/perf-browser-cache/skill.yaml +39 -0
  2251. package/dist/agents/skills/codex/perf-bundle-analysis/SKILL.md +217 -0
  2252. package/dist/agents/skills/codex/perf-bundle-analysis/skill.yaml +37 -0
  2253. package/dist/agents/skills/codex/perf-cache-invalidation/SKILL.md +228 -0
  2254. package/dist/agents/skills/codex/perf-cache-invalidation/skill.yaml +38 -0
  2255. package/dist/agents/skills/codex/perf-cdn-cache-control/SKILL.md +198 -0
  2256. package/dist/agents/skills/codex/perf-cdn-cache-control/skill.yaml +40 -0
  2257. package/dist/agents/skills/codex/perf-cdn-strategies/SKILL.md +161 -0
  2258. package/dist/agents/skills/codex/perf-cdn-strategies/skill.yaml +40 -0
  2259. package/dist/agents/skills/codex/perf-client-side-rendering/SKILL.md +245 -0
  2260. package/dist/agents/skills/codex/perf-client-side-rendering/skill.yaml +40 -0
  2261. package/dist/agents/skills/codex/perf-code-splitting/SKILL.md +185 -0
  2262. package/dist/agents/skills/codex/perf-code-splitting/skill.yaml +39 -0
  2263. package/dist/agents/skills/codex/perf-compression/SKILL.md +163 -0
  2264. package/dist/agents/skills/codex/perf-compression/skill.yaml +38 -0
  2265. package/dist/agents/skills/codex/perf-connection-costs/SKILL.md +165 -0
  2266. package/dist/agents/skills/codex/perf-connection-costs/skill.yaml +40 -0
  2267. package/dist/agents/skills/codex/perf-connection-pooling/SKILL.md +250 -0
  2268. package/dist/agents/skills/codex/perf-connection-pooling/skill.yaml +38 -0
  2269. package/dist/agents/skills/codex/perf-critical-rendering-path/SKILL.md +167 -0
  2270. package/dist/agents/skills/codex/perf-critical-rendering-path/skill.yaml +39 -0
  2271. package/dist/agents/skills/codex/perf-cumulative-layout-shift/SKILL.md +180 -0
  2272. package/dist/agents/skills/codex/perf-cumulative-layout-shift/skill.yaml +40 -0
  2273. package/dist/agents/skills/codex/perf-dom-parsing/SKILL.md +153 -0
  2274. package/dist/agents/skills/codex/perf-dom-parsing/skill.yaml +36 -0
  2275. package/dist/agents/skills/codex/perf-edge-rendering/SKILL.md +222 -0
  2276. package/dist/agents/skills/codex/perf-edge-rendering/skill.yaml +39 -0
  2277. package/dist/agents/skills/codex/perf-event-loop/SKILL.md +203 -0
  2278. package/dist/agents/skills/codex/perf-event-loop/skill.yaml +38 -0
  2279. package/dist/agents/skills/codex/perf-font-loading/SKILL.md +222 -0
  2280. package/dist/agents/skills/codex/perf-font-loading/skill.yaml +39 -0
  2281. package/dist/agents/skills/codex/perf-garbage-collection/SKILL.md +192 -0
  2282. package/dist/agents/skills/codex/perf-garbage-collection/skill.yaml +40 -0
  2283. package/dist/agents/skills/codex/perf-heap-profiling/SKILL.md +160 -0
  2284. package/dist/agents/skills/codex/perf-heap-profiling/skill.yaml +38 -0
  2285. package/dist/agents/skills/codex/perf-http2-multiplexing/SKILL.md +163 -0
  2286. package/dist/agents/skills/codex/perf-http2-multiplexing/skill.yaml +38 -0
  2287. package/dist/agents/skills/codex/perf-http3-quic/SKILL.md +165 -0
  2288. package/dist/agents/skills/codex/perf-http3-quic/skill.yaml +37 -0
  2289. package/dist/agents/skills/codex/perf-image-formats/SKILL.md +183 -0
  2290. package/dist/agents/skills/codex/perf-image-formats/skill.yaml +39 -0
  2291. package/dist/agents/skills/codex/perf-index-strategies/SKILL.md +210 -0
  2292. package/dist/agents/skills/codex/perf-index-strategies/skill.yaml +40 -0
  2293. package/dist/agents/skills/codex/perf-interaction-to-next-paint/SKILL.md +170 -0
  2294. package/dist/agents/skills/codex/perf-interaction-to-next-paint/skill.yaml +40 -0
  2295. package/dist/agents/skills/codex/perf-largest-contentful-paint/SKILL.md +162 -0
  2296. package/dist/agents/skills/codex/perf-largest-contentful-paint/skill.yaml +41 -0
  2297. package/dist/agents/skills/codex/perf-layout-reflow/SKILL.md +187 -0
  2298. package/dist/agents/skills/codex/perf-layout-reflow/skill.yaml +38 -0
  2299. package/dist/agents/skills/codex/perf-lazy-loading/SKILL.md +217 -0
  2300. package/dist/agents/skills/codex/perf-lazy-loading/skill.yaml +38 -0
  2301. package/dist/agents/skills/codex/perf-lazy-loading-media/SKILL.md +233 -0
  2302. package/dist/agents/skills/codex/perf-lazy-loading-media/skill.yaml +38 -0
  2303. package/dist/agents/skills/codex/perf-long-tasks/SKILL.md +194 -0
  2304. package/dist/agents/skills/codex/perf-long-tasks/skill.yaml +38 -0
  2305. package/dist/agents/skills/codex/perf-memory-leaks/SKILL.md +218 -0
  2306. package/dist/agents/skills/codex/perf-memory-leaks/skill.yaml +38 -0
  2307. package/dist/agents/skills/codex/perf-module-federation/SKILL.md +242 -0
  2308. package/dist/agents/skills/codex/perf-module-federation/skill.yaml +38 -0
  2309. package/dist/agents/skills/codex/perf-n-plus-one/SKILL.md +237 -0
  2310. package/dist/agents/skills/codex/perf-n-plus-one/skill.yaml +40 -0
  2311. package/dist/agents/skills/codex/perf-paint-compositing/SKILL.md +181 -0
  2312. package/dist/agents/skills/codex/perf-paint-compositing/skill.yaml +40 -0
  2313. package/dist/agents/skills/codex/perf-performance-api/SKILL.md +249 -0
  2314. package/dist/agents/skills/codex/perf-performance-api/skill.yaml +41 -0
  2315. package/dist/agents/skills/codex/perf-profiling-methodology/SKILL.md +181 -0
  2316. package/dist/agents/skills/codex/perf-profiling-methodology/skill.yaml +44 -0
  2317. package/dist/agents/skills/codex/perf-query-optimization/SKILL.md +203 -0
  2318. package/dist/agents/skills/codex/perf-query-optimization/skill.yaml +39 -0
  2319. package/dist/agents/skills/codex/perf-resource-hints/SKILL.md +167 -0
  2320. package/dist/agents/skills/codex/perf-resource-hints/skill.yaml +40 -0
  2321. package/dist/agents/skills/codex/perf-responsive-images/SKILL.md +225 -0
  2322. package/dist/agents/skills/codex/perf-responsive-images/skill.yaml +38 -0
  2323. package/dist/agents/skills/codex/perf-server-side-caching/SKILL.md +194 -0
  2324. package/dist/agents/skills/codex/perf-server-side-caching/skill.yaml +40 -0
  2325. package/dist/agents/skills/codex/perf-server-side-rendering/SKILL.md +239 -0
  2326. package/dist/agents/skills/codex/perf-server-side-rendering/skill.yaml +39 -0
  2327. package/dist/agents/skills/codex/perf-service-worker-caching/SKILL.md +247 -0
  2328. package/dist/agents/skills/codex/perf-service-worker-caching/skill.yaml +40 -0
  2329. package/dist/agents/skills/codex/perf-static-generation/SKILL.md +241 -0
  2330. package/dist/agents/skills/codex/perf-static-generation/skill.yaml +39 -0
  2331. package/dist/agents/skills/codex/perf-streaming-rendering/SKILL.md +242 -0
  2332. package/dist/agents/skills/codex/perf-streaming-rendering/skill.yaml +37 -0
  2333. package/dist/agents/skills/codex/perf-style-calculation/SKILL.md +166 -0
  2334. package/dist/agents/skills/codex/perf-style-calculation/skill.yaml +36 -0
  2335. package/dist/agents/skills/codex/perf-svg-optimization/SKILL.md +249 -0
  2336. package/dist/agents/skills/codex/perf-svg-optimization/skill.yaml +37 -0
  2337. package/dist/agents/skills/codex/perf-tree-shaking/SKILL.md +225 -0
  2338. package/dist/agents/skills/codex/perf-tree-shaking/skill.yaml +38 -0
  2339. package/dist/agents/skills/codex/perf-web-workers/SKILL.md +237 -0
  2340. package/dist/agents/skills/codex/perf-web-workers/skill.yaml +40 -0
  2341. package/dist/agents/skills/codex/prisma-client-queries/SKILL.md +147 -0
  2342. package/dist/agents/skills/codex/prisma-client-queries/skill.yaml +47 -0
  2343. package/dist/agents/skills/codex/prisma-filtering-sorting/SKILL.md +157 -0
  2344. package/dist/agents/skills/codex/prisma-filtering-sorting/skill.yaml +46 -0
  2345. package/dist/agents/skills/codex/prisma-migrations/SKILL.md +115 -0
  2346. package/dist/agents/skills/codex/prisma-migrations/skill.yaml +44 -0
  2347. package/dist/agents/skills/codex/prisma-performance-patterns/SKILL.md +160 -0
  2348. package/dist/agents/skills/codex/prisma-performance-patterns/skill.yaml +51 -0
  2349. package/dist/agents/skills/codex/prisma-raw-queries/SKILL.md +125 -0
  2350. package/dist/agents/skills/codex/prisma-raw-queries/skill.yaml +42 -0
  2351. package/dist/agents/skills/codex/prisma-relations-pattern/SKILL.md +151 -0
  2352. package/dist/agents/skills/codex/prisma-relations-pattern/skill.yaml +43 -0
  2353. package/dist/agents/skills/codex/prisma-schema-design/SKILL.md +108 -0
  2354. package/dist/agents/skills/codex/prisma-schema-design/skill.yaml +50 -0
  2355. package/dist/agents/skills/codex/prisma-seeding-pattern/SKILL.md +168 -0
  2356. package/dist/agents/skills/codex/prisma-seeding-pattern/skill.yaml +42 -0
  2357. package/dist/agents/skills/codex/prisma-soft-delete/SKILL.md +172 -0
  2358. package/dist/agents/skills/codex/prisma-soft-delete/skill.yaml +42 -0
  2359. package/dist/agents/skills/codex/prisma-transactions/SKILL.md +147 -0
  2360. package/dist/agents/skills/codex/prisma-transactions/skill.yaml +45 -0
  2361. package/dist/agents/skills/codex/prisma-type-generation/SKILL.md +180 -0
  2362. package/dist/agents/skills/codex/prisma-type-generation/skill.yaml +43 -0
  2363. package/dist/agents/skills/codex/react-2026/SKILL.md +86 -0
  2364. package/dist/agents/skills/codex/react-2026/skill.yaml +40 -0
  2365. package/dist/agents/skills/codex/react-client-rendering/SKILL.md +60 -0
  2366. package/dist/agents/skills/codex/react-client-rendering/skill.yaml +38 -0
  2367. package/dist/agents/skills/codex/react-compound-pattern/SKILL.md +80 -0
  2368. package/dist/agents/skills/codex/react-compound-pattern/skill.yaml +37 -0
  2369. package/dist/agents/skills/codex/react-concurrent-ui/SKILL.md +59 -0
  2370. package/dist/agents/skills/codex/react-concurrent-ui/skill.yaml +37 -0
  2371. package/dist/agents/skills/codex/react-container-presentational/SKILL.md +76 -0
  2372. package/dist/agents/skills/codex/react-container-presentational/skill.yaml +37 -0
  2373. package/dist/agents/skills/codex/react-context-pattern/SKILL.md +75 -0
  2374. package/dist/agents/skills/codex/react-context-pattern/skill.yaml +38 -0
  2375. package/dist/agents/skills/codex/react-dynamic-import/SKILL.md +65 -0
  2376. package/dist/agents/skills/codex/react-dynamic-import/skill.yaml +41 -0
  2377. package/dist/agents/skills/codex/react-hoc-pattern/SKILL.md +71 -0
  2378. package/dist/agents/skills/codex/react-hoc-pattern/skill.yaml +36 -0
  2379. package/dist/agents/skills/codex/react-hooks-pattern/SKILL.md +74 -0
  2380. package/dist/agents/skills/codex/react-hooks-pattern/skill.yaml +38 -0
  2381. package/dist/agents/skills/codex/react-islands-pattern/SKILL.md +67 -0
  2382. package/dist/agents/skills/codex/react-islands-pattern/skill.yaml +40 -0
  2383. package/dist/agents/skills/codex/react-memoization-pattern/SKILL.md +64 -0
  2384. package/dist/agents/skills/codex/react-memoization-pattern/skill.yaml +38 -0
  2385. package/dist/agents/skills/codex/react-progressive-hydration/SKILL.md +74 -0
  2386. package/dist/agents/skills/codex/react-progressive-hydration/skill.yaml +38 -0
  2387. package/dist/agents/skills/codex/react-provider-pattern/SKILL.md +72 -0
  2388. package/dist/agents/skills/codex/react-provider-pattern/skill.yaml +38 -0
  2389. package/dist/agents/skills/codex/react-render-props-pattern/SKILL.md +73 -0
  2390. package/dist/agents/skills/codex/react-render-props-pattern/skill.yaml +36 -0
  2391. package/dist/agents/skills/codex/react-server-components/SKILL.md +81 -0
  2392. package/dist/agents/skills/codex/react-server-components/skill.yaml +40 -0
  2393. package/dist/agents/skills/codex/react-server-rendering/SKILL.md +63 -0
  2394. package/dist/agents/skills/codex/react-server-rendering/skill.yaml +40 -0
  2395. package/dist/agents/skills/codex/react-state-management-pattern/SKILL.md +72 -0
  2396. package/dist/agents/skills/codex/react-state-management-pattern/skill.yaml +41 -0
  2397. package/dist/agents/skills/codex/react-static-import/SKILL.md +61 -0
  2398. package/dist/agents/skills/codex/react-static-import/skill.yaml +38 -0
  2399. package/dist/agents/skills/codex/react-suspense-pattern/SKILL.md +62 -0
  2400. package/dist/agents/skills/codex/react-suspense-pattern/skill.yaml +38 -0
  2401. package/dist/agents/skills/codex/redux-entity-adapter/SKILL.md +120 -0
  2402. package/dist/agents/skills/codex/redux-entity-adapter/skill.yaml +40 -0
  2403. package/dist/agents/skills/codex/redux-listener-middleware/SKILL.md +117 -0
  2404. package/dist/agents/skills/codex/redux-listener-middleware/skill.yaml +40 -0
  2405. package/dist/agents/skills/codex/redux-persistence-pattern/SKILL.md +144 -0
  2406. package/dist/agents/skills/codex/redux-persistence-pattern/skill.yaml +41 -0
  2407. package/dist/agents/skills/codex/redux-rtk-optimistic/SKILL.md +117 -0
  2408. package/dist/agents/skills/codex/redux-rtk-optimistic/skill.yaml +40 -0
  2409. package/dist/agents/skills/codex/redux-rtk-query-endpoints/SKILL.md +131 -0
  2410. package/dist/agents/skills/codex/redux-rtk-query-endpoints/skill.yaml +41 -0
  2411. package/dist/agents/skills/codex/redux-rtk-query-setup/SKILL.md +117 -0
  2412. package/dist/agents/skills/codex/redux-rtk-query-setup/skill.yaml +40 -0
  2413. package/dist/agents/skills/codex/redux-selectors-pattern/SKILL.md +100 -0
  2414. package/dist/agents/skills/codex/redux-selectors-pattern/skill.yaml +40 -0
  2415. package/dist/agents/skills/codex/redux-slice-pattern/SKILL.md +117 -0
  2416. package/dist/agents/skills/codex/redux-slice-pattern/skill.yaml +40 -0
  2417. package/dist/agents/skills/codex/redux-store-setup/SKILL.md +103 -0
  2418. package/dist/agents/skills/codex/redux-store-setup/skill.yaml +40 -0
  2419. package/dist/agents/skills/codex/redux-testing-patterns/SKILL.md +138 -0
  2420. package/dist/agents/skills/codex/redux-testing-patterns/skill.yaml +42 -0
  2421. package/dist/agents/skills/codex/redux-thunk-pattern/SKILL.md +119 -0
  2422. package/dist/agents/skills/codex/redux-thunk-pattern/skill.yaml +42 -0
  2423. package/dist/agents/skills/codex/redux-typescript-patterns/SKILL.md +115 -0
  2424. package/dist/agents/skills/codex/redux-typescript-patterns/skill.yaml +41 -0
  2425. package/dist/agents/skills/codex/resilience-bulkhead-pattern/SKILL.md +145 -0
  2426. package/dist/agents/skills/codex/resilience-bulkhead-pattern/skill.yaml +39 -0
  2427. package/dist/agents/skills/codex/resilience-chaos-testing/SKILL.md +172 -0
  2428. package/dist/agents/skills/codex/resilience-chaos-testing/skill.yaml +39 -0
  2429. package/dist/agents/skills/codex/resilience-circuit-breaker/SKILL.md +159 -0
  2430. package/dist/agents/skills/codex/resilience-circuit-breaker/skill.yaml +40 -0
  2431. package/dist/agents/skills/codex/resilience-dead-letter/SKILL.md +185 -0
  2432. package/dist/agents/skills/codex/resilience-dead-letter/skill.yaml +40 -0
  2433. package/dist/agents/skills/codex/resilience-fallback-pattern/SKILL.md +155 -0
  2434. package/dist/agents/skills/codex/resilience-fallback-pattern/skill.yaml +39 -0
  2435. package/dist/agents/skills/codex/resilience-health-checks/SKILL.md +180 -0
  2436. package/dist/agents/skills/codex/resilience-health-checks/skill.yaml +39 -0
  2437. package/dist/agents/skills/codex/resilience-idempotency/SKILL.md +167 -0
  2438. package/dist/agents/skills/codex/resilience-idempotency/skill.yaml +39 -0
  2439. package/dist/agents/skills/codex/resilience-rate-limiting/SKILL.md +171 -0
  2440. package/dist/agents/skills/codex/resilience-rate-limiting/skill.yaml +39 -0
  2441. package/dist/agents/skills/codex/resilience-retry-pattern/SKILL.md +137 -0
  2442. package/dist/agents/skills/codex/resilience-retry-pattern/skill.yaml +40 -0
  2443. package/dist/agents/skills/codex/resilience-timeout-pattern/SKILL.md +148 -0
  2444. package/dist/agents/skills/codex/resilience-timeout-pattern/skill.yaml +39 -0
  2445. package/dist/agents/skills/codex/security-abac-design/SKILL.md +154 -0
  2446. package/dist/agents/skills/codex/security-abac-design/skill.yaml +41 -0
  2447. package/dist/agents/skills/codex/security-asymmetric-encryption/SKILL.md +201 -0
  2448. package/dist/agents/skills/codex/security-asymmetric-encryption/skill.yaml +42 -0
  2449. package/dist/agents/skills/codex/security-attack-trees/SKILL.md +150 -0
  2450. package/dist/agents/skills/codex/security-attack-trees/skill.yaml +37 -0
  2451. package/dist/agents/skills/codex/security-audit-log-design/SKILL.md +227 -0
  2452. package/dist/agents/skills/codex/security-audit-log-design/skill.yaml +39 -0
  2453. package/dist/agents/skills/codex/security-authentication-flows/SKILL.md +168 -0
  2454. package/dist/agents/skills/codex/security-authentication-flows/skill.yaml +42 -0
  2455. package/dist/agents/skills/codex/security-capability-based-security/SKILL.md +158 -0
  2456. package/dist/agents/skills/codex/security-capability-based-security/skill.yaml +40 -0
  2457. package/dist/agents/skills/codex/security-certificate-management/SKILL.md +153 -0
  2458. package/dist/agents/skills/codex/security-certificate-management/skill.yaml +42 -0
  2459. package/dist/agents/skills/codex/security-ci-security-testing/SKILL.md +159 -0
  2460. package/dist/agents/skills/codex/security-ci-security-testing/skill.yaml +43 -0
  2461. package/dist/agents/skills/codex/security-code-signing/SKILL.md +155 -0
  2462. package/dist/agents/skills/codex/security-code-signing/skill.yaml +40 -0
  2463. package/dist/agents/skills/codex/security-compliance-logging/SKILL.md +183 -0
  2464. package/dist/agents/skills/codex/security-compliance-logging/skill.yaml +38 -0
  2465. package/dist/agents/skills/codex/security-credential-storage/SKILL.md +222 -0
  2466. package/dist/agents/skills/codex/security-credential-storage/skill.yaml +41 -0
  2467. package/dist/agents/skills/codex/security-cryptographic-randomness/SKILL.md +154 -0
  2468. package/dist/agents/skills/codex/security-cryptographic-randomness/skill.yaml +41 -0
  2469. package/dist/agents/skills/codex/security-dependency-auditing/SKILL.md +156 -0
  2470. package/dist/agents/skills/codex/security-dependency-auditing/skill.yaml +39 -0
  2471. package/dist/agents/skills/codex/security-deserialization-attacks/SKILL.md +180 -0
  2472. package/dist/agents/skills/codex/security-deserialization-attacks/skill.yaml +38 -0
  2473. package/dist/agents/skills/codex/security-environment-variable-risks/SKILL.md +153 -0
  2474. package/dist/agents/skills/codex/security-environment-variable-risks/skill.yaml +37 -0
  2475. package/dist/agents/skills/codex/security-forensics-fundamentals/SKILL.md +198 -0
  2476. package/dist/agents/skills/codex/security-forensics-fundamentals/skill.yaml +40 -0
  2477. package/dist/agents/skills/codex/security-hashing-fundamentals/SKILL.md +212 -0
  2478. package/dist/agents/skills/codex/security-hashing-fundamentals/skill.yaml +40 -0
  2479. package/dist/agents/skills/codex/security-hmac-signatures/SKILL.md +165 -0
  2480. package/dist/agents/skills/codex/security-hmac-signatures/skill.yaml +40 -0
  2481. package/dist/agents/skills/codex/security-hsts-preloading/SKILL.md +154 -0
  2482. package/dist/agents/skills/codex/security-hsts-preloading/skill.yaml +38 -0
  2483. package/dist/agents/skills/codex/security-identity-verification/SKILL.md +157 -0
  2484. package/dist/agents/skills/codex/security-identity-verification/skill.yaml +39 -0
  2485. package/dist/agents/skills/codex/security-incident-containment/SKILL.md +190 -0
  2486. package/dist/agents/skills/codex/security-incident-containment/skill.yaml +40 -0
  2487. package/dist/agents/skills/codex/security-injection-families/SKILL.md +235 -0
  2488. package/dist/agents/skills/codex/security-injection-families/skill.yaml +41 -0
  2489. package/dist/agents/skills/codex/security-log-correlation/SKILL.md +178 -0
  2490. package/dist/agents/skills/codex/security-log-correlation/skill.yaml +39 -0
  2491. package/dist/agents/skills/codex/security-memory-safety/SKILL.md +234 -0
  2492. package/dist/agents/skills/codex/security-memory-safety/skill.yaml +39 -0
  2493. package/dist/agents/skills/codex/security-mfa-design/SKILL.md +150 -0
  2494. package/dist/agents/skills/codex/security-mfa-design/skill.yaml +41 -0
  2495. package/dist/agents/skills/codex/security-microsegmentation/SKILL.md +154 -0
  2496. package/dist/agents/skills/codex/security-microsegmentation/skill.yaml +40 -0
  2497. package/dist/agents/skills/codex/security-mtls-design/SKILL.md +158 -0
  2498. package/dist/agents/skills/codex/security-mtls-design/skill.yaml +39 -0
  2499. package/dist/agents/skills/codex/security-penetration-testing/SKILL.md +166 -0
  2500. package/dist/agents/skills/codex/security-penetration-testing/skill.yaml +40 -0
  2501. package/dist/agents/skills/codex/security-post-incident-review/SKILL.md +205 -0
  2502. package/dist/agents/skills/codex/security-post-incident-review/skill.yaml +39 -0
  2503. package/dist/agents/skills/codex/security-race-conditions/SKILL.md +186 -0
  2504. package/dist/agents/skills/codex/security-race-conditions/skill.yaml +39 -0
  2505. package/dist/agents/skills/codex/security-rbac-design/SKILL.md +209 -0
  2506. package/dist/agents/skills/codex/security-rbac-design/skill.yaml +40 -0
  2507. package/dist/agents/skills/codex/security-rebac-design/SKILL.md +154 -0
  2508. package/dist/agents/skills/codex/security-rebac-design/skill.yaml +39 -0
  2509. package/dist/agents/skills/codex/security-sbom-provenance/SKILL.md +157 -0
  2510. package/dist/agents/skills/codex/security-sbom-provenance/skill.yaml +39 -0
  2511. package/dist/agents/skills/codex/security-secrets-lifecycle/SKILL.md +190 -0
  2512. package/dist/agents/skills/codex/security-secrets-lifecycle/skill.yaml +39 -0
  2513. package/dist/agents/skills/codex/security-security-champions/SKILL.md +165 -0
  2514. package/dist/agents/skills/codex/security-security-champions/skill.yaml +37 -0
  2515. package/dist/agents/skills/codex/security-session-management/SKILL.md +196 -0
  2516. package/dist/agents/skills/codex/security-session-management/skill.yaml +41 -0
  2517. package/dist/agents/skills/codex/security-shift-left-design/SKILL.md +153 -0
  2518. package/dist/agents/skills/codex/security-shift-left-design/skill.yaml +38 -0
  2519. package/dist/agents/skills/codex/security-symmetric-encryption/SKILL.md +176 -0
  2520. package/dist/agents/skills/codex/security-symmetric-encryption/skill.yaml +41 -0
  2521. package/dist/agents/skills/codex/security-threat-modeling-process/SKILL.md +150 -0
  2522. package/dist/agents/skills/codex/security-threat-modeling-process/skill.yaml +38 -0
  2523. package/dist/agents/skills/codex/security-threat-modeling-stride/SKILL.md +150 -0
  2524. package/dist/agents/skills/codex/security-threat-modeling-stride/skill.yaml +40 -0
  2525. package/dist/agents/skills/codex/security-tls-fundamentals/SKILL.md +186 -0
  2526. package/dist/agents/skills/codex/security-tls-fundamentals/skill.yaml +40 -0
  2527. package/dist/agents/skills/codex/security-trust-boundaries/SKILL.md +152 -0
  2528. package/dist/agents/skills/codex/security-trust-boundaries/skill.yaml +39 -0
  2529. package/dist/agents/skills/codex/security-vault-patterns/SKILL.md +155 -0
  2530. package/dist/agents/skills/codex/security-vault-patterns/skill.yaml +39 -0
  2531. package/dist/agents/skills/codex/security-vulnerability-disclosure/SKILL.md +207 -0
  2532. package/dist/agents/skills/codex/security-vulnerability-disclosure/skill.yaml +39 -0
  2533. package/dist/agents/skills/codex/security-zero-trust-principles/SKILL.md +229 -0
  2534. package/dist/agents/skills/codex/security-zero-trust-principles/skill.yaml +40 -0
  2535. package/dist/agents/skills/codex/state-context-pattern/SKILL.md +143 -0
  2536. package/dist/agents/skills/codex/state-context-pattern/skill.yaml +39 -0
  2537. package/dist/agents/skills/codex/state-jotai-atoms/SKILL.md +153 -0
  2538. package/dist/agents/skills/codex/state-jotai-atoms/skill.yaml +40 -0
  2539. package/dist/agents/skills/codex/state-selection-patterns/SKILL.md +115 -0
  2540. package/dist/agents/skills/codex/state-selection-patterns/skill.yaml +40 -0
  2541. package/dist/agents/skills/codex/state-server-client-sync/SKILL.md +148 -0
  2542. package/dist/agents/skills/codex/state-server-client-sync/skill.yaml +41 -0
  2543. package/dist/agents/skills/codex/state-zustand-devtools/SKILL.md +120 -0
  2544. package/dist/agents/skills/codex/state-zustand-devtools/skill.yaml +39 -0
  2545. package/dist/agents/skills/codex/state-zustand-immer/SKILL.md +150 -0
  2546. package/dist/agents/skills/codex/state-zustand-immer/skill.yaml +39 -0
  2547. package/dist/agents/skills/codex/state-zustand-persist/SKILL.md +148 -0
  2548. package/dist/agents/skills/codex/state-zustand-persist/skill.yaml +39 -0
  2549. package/dist/agents/skills/codex/state-zustand-react/SKILL.md +136 -0
  2550. package/dist/agents/skills/codex/state-zustand-react/skill.yaml +41 -0
  2551. package/dist/agents/skills/codex/state-zustand-slices/SKILL.md +135 -0
  2552. package/dist/agents/skills/codex/state-zustand-slices/skill.yaml +40 -0
  2553. package/dist/agents/skills/codex/state-zustand-store/SKILL.md +123 -0
  2554. package/dist/agents/skills/codex/state-zustand-store/skill.yaml +40 -0
  2555. package/dist/agents/skills/codex/svelte-adapter-config/SKILL.md +262 -0
  2556. package/dist/agents/skills/codex/svelte-adapter-config/skill.yaml +43 -0
  2557. package/dist/agents/skills/codex/svelte-component-composition/SKILL.md +222 -0
  2558. package/dist/agents/skills/codex/svelte-component-composition/skill.yaml +42 -0
  2559. package/dist/agents/skills/codex/svelte-error-pages/SKILL.md +186 -0
  2560. package/dist/agents/skills/codex/svelte-error-pages/skill.yaml +43 -0
  2561. package/dist/agents/skills/codex/svelte-form-actions/SKILL.md +230 -0
  2562. package/dist/agents/skills/codex/svelte-form-actions/skill.yaml +42 -0
  2563. package/dist/agents/skills/codex/svelte-load-functions/SKILL.md +206 -0
  2564. package/dist/agents/skills/codex/svelte-load-functions/skill.yaml +45 -0
  2565. package/dist/agents/skills/codex/svelte-performance-patterns/SKILL.md +218 -0
  2566. package/dist/agents/skills/codex/svelte-performance-patterns/skill.yaml +49 -0
  2567. package/dist/agents/skills/codex/svelte-routing-pattern/SKILL.md +203 -0
  2568. package/dist/agents/skills/codex/svelte-routing-pattern/skill.yaml +44 -0
  2569. package/dist/agents/skills/codex/svelte-runes-pattern/SKILL.md +204 -0
  2570. package/dist/agents/skills/codex/svelte-runes-pattern/skill.yaml +44 -0
  2571. package/dist/agents/skills/codex/svelte-server-hooks/SKILL.md +239 -0
  2572. package/dist/agents/skills/codex/svelte-server-hooks/skill.yaml +44 -0
  2573. package/dist/agents/skills/codex/svelte-state-management/SKILL.md +196 -0
  2574. package/dist/agents/skills/codex/svelte-state-management/skill.yaml +44 -0
  2575. package/dist/agents/skills/codex/svelte-stores-pattern/SKILL.md +187 -0
  2576. package/dist/agents/skills/codex/svelte-stores-pattern/skill.yaml +44 -0
  2577. package/dist/agents/skills/codex/svelte-testing-patterns/SKILL.md +231 -0
  2578. package/dist/agents/skills/codex/svelte-testing-patterns/skill.yaml +46 -0
  2579. package/dist/agents/skills/codex/svelte-transitions-animations/SKILL.md +222 -0
  2580. package/dist/agents/skills/codex/svelte-transitions-animations/skill.yaml +44 -0
  2581. package/dist/agents/skills/codex/tanstack-cache-management/SKILL.md +108 -0
  2582. package/dist/agents/skills/codex/tanstack-cache-management/skill.yaml +44 -0
  2583. package/dist/agents/skills/codex/tanstack-dependent-queries/SKILL.md +108 -0
  2584. package/dist/agents/skills/codex/tanstack-dependent-queries/skill.yaml +42 -0
  2585. package/dist/agents/skills/codex/tanstack-devtools/SKILL.md +100 -0
  2586. package/dist/agents/skills/codex/tanstack-devtools/skill.yaml +44 -0
  2587. package/dist/agents/skills/codex/tanstack-infinite-queries/SKILL.md +106 -0
  2588. package/dist/agents/skills/codex/tanstack-infinite-queries/skill.yaml +44 -0
  2589. package/dist/agents/skills/codex/tanstack-mutation-patterns/SKILL.md +122 -0
  2590. package/dist/agents/skills/codex/tanstack-mutation-patterns/skill.yaml +44 -0
  2591. package/dist/agents/skills/codex/tanstack-optimistic-updates/SKILL.md +106 -0
  2592. package/dist/agents/skills/codex/tanstack-optimistic-updates/skill.yaml +44 -0
  2593. package/dist/agents/skills/codex/tanstack-prefetching/SKILL.md +106 -0
  2594. package/dist/agents/skills/codex/tanstack-prefetching/skill.yaml +44 -0
  2595. package/dist/agents/skills/codex/tanstack-query-invalidation/SKILL.md +95 -0
  2596. package/dist/agents/skills/codex/tanstack-query-invalidation/skill.yaml +43 -0
  2597. package/dist/agents/skills/codex/tanstack-query-keys/SKILL.md +94 -0
  2598. package/dist/agents/skills/codex/tanstack-query-keys/skill.yaml +43 -0
  2599. package/dist/agents/skills/codex/tanstack-suspense-mode/SKILL.md +96 -0
  2600. package/dist/agents/skills/codex/tanstack-suspense-mode/skill.yaml +42 -0
  2601. package/dist/agents/skills/codex/test-accessibility-testing/SKILL.md +201 -0
  2602. package/dist/agents/skills/codex/test-accessibility-testing/skill.yaml +43 -0
  2603. package/dist/agents/skills/codex/test-component-react/SKILL.md +173 -0
  2604. package/dist/agents/skills/codex/test-component-react/skill.yaml +45 -0
  2605. package/dist/agents/skills/codex/test-component-svelte/SKILL.md +184 -0
  2606. package/dist/agents/skills/codex/test-component-svelte/skill.yaml +43 -0
  2607. package/dist/agents/skills/codex/test-contract-testing/SKILL.md +180 -0
  2608. package/dist/agents/skills/codex/test-contract-testing/skill.yaml +42 -0
  2609. package/dist/agents/skills/codex/test-coverage-patterns/SKILL.md +165 -0
  2610. package/dist/agents/skills/codex/test-coverage-patterns/skill.yaml +44 -0
  2611. package/dist/agents/skills/codex/test-e2e-strategy/SKILL.md +146 -0
  2612. package/dist/agents/skills/codex/test-e2e-strategy/skill.yaml +44 -0
  2613. package/dist/agents/skills/codex/test-factory-patterns/SKILL.md +198 -0
  2614. package/dist/agents/skills/codex/test-factory-patterns/skill.yaml +44 -0
  2615. package/dist/agents/skills/codex/test-integration-patterns/SKILL.md +202 -0
  2616. package/dist/agents/skills/codex/test-integration-patterns/skill.yaml +44 -0
  2617. package/dist/agents/skills/codex/test-mock-patterns/SKILL.md +184 -0
  2618. package/dist/agents/skills/codex/test-mock-patterns/skill.yaml +45 -0
  2619. package/dist/agents/skills/codex/test-msw-pattern/SKILL.md +181 -0
  2620. package/dist/agents/skills/codex/test-msw-pattern/skill.yaml +44 -0
  2621. package/dist/agents/skills/codex/test-performance-testing/SKILL.md +199 -0
  2622. package/dist/agents/skills/codex/test-performance-testing/skill.yaml +47 -0
  2623. package/dist/agents/skills/codex/test-playwright-patterns/SKILL.md +197 -0
  2624. package/dist/agents/skills/codex/test-playwright-patterns/skill.yaml +44 -0
  2625. package/dist/agents/skills/codex/test-playwright-setup/SKILL.md +178 -0
  2626. package/dist/agents/skills/codex/test-playwright-setup/skill.yaml +43 -0
  2627. package/dist/agents/skills/codex/test-property-based/SKILL.md +172 -0
  2628. package/dist/agents/skills/codex/test-property-based/skill.yaml +43 -0
  2629. package/dist/agents/skills/codex/test-snapshot-patterns/SKILL.md +142 -0
  2630. package/dist/agents/skills/codex/test-snapshot-patterns/skill.yaml +42 -0
  2631. package/dist/agents/skills/codex/test-tdd-workflow/SKILL.md +185 -0
  2632. package/dist/agents/skills/codex/test-tdd-workflow/skill.yaml +43 -0
  2633. package/dist/agents/skills/codex/test-unit-patterns/SKILL.md +209 -0
  2634. package/dist/agents/skills/codex/test-unit-patterns/skill.yaml +45 -0
  2635. package/dist/agents/skills/codex/test-vitest-config/SKILL.md +212 -0
  2636. package/dist/agents/skills/codex/test-vitest-config/skill.yaml +45 -0
  2637. package/dist/agents/skills/codex/trpc-context-pattern/SKILL.md +190 -0
  2638. package/dist/agents/skills/codex/trpc-context-pattern/skill.yaml +42 -0
  2639. package/dist/agents/skills/codex/trpc-error-handling/SKILL.md +133 -0
  2640. package/dist/agents/skills/codex/trpc-error-handling/skill.yaml +45 -0
  2641. package/dist/agents/skills/codex/trpc-input-validation/SKILL.md +101 -0
  2642. package/dist/agents/skills/codex/trpc-input-validation/skill.yaml +44 -0
  2643. package/dist/agents/skills/codex/trpc-middleware-pattern/SKILL.md +99 -0
  2644. package/dist/agents/skills/codex/trpc-middleware-pattern/skill.yaml +42 -0
  2645. package/dist/agents/skills/codex/trpc-nextjs-integration/SKILL.md +203 -0
  2646. package/dist/agents/skills/codex/trpc-nextjs-integration/skill.yaml +44 -0
  2647. package/dist/agents/skills/codex/trpc-react-query-integration/SKILL.md +182 -0
  2648. package/dist/agents/skills/codex/trpc-react-query-integration/skill.yaml +44 -0
  2649. package/dist/agents/skills/codex/trpc-router-composition/SKILL.md +99 -0
  2650. package/dist/agents/skills/codex/trpc-router-composition/skill.yaml +45 -0
  2651. package/dist/agents/skills/codex/trpc-subscription-pattern/SKILL.md +118 -0
  2652. package/dist/agents/skills/codex/trpc-subscription-pattern/skill.yaml +44 -0
  2653. package/dist/agents/skills/codex/ts-async-patterns/SKILL.md +193 -0
  2654. package/dist/agents/skills/codex/ts-async-patterns/skill.yaml +39 -0
  2655. package/dist/agents/skills/codex/ts-branded-types/SKILL.md +161 -0
  2656. package/dist/agents/skills/codex/ts-branded-types/skill.yaml +39 -0
  2657. package/dist/agents/skills/codex/ts-class-patterns/SKILL.md +238 -0
  2658. package/dist/agents/skills/codex/ts-class-patterns/skill.yaml +39 -0
  2659. package/dist/agents/skills/codex/ts-conditional-types/SKILL.md +142 -0
  2660. package/dist/agents/skills/codex/ts-conditional-types/skill.yaml +39 -0
  2661. package/dist/agents/skills/codex/ts-config-patterns/SKILL.md +190 -0
  2662. package/dist/agents/skills/codex/ts-config-patterns/skill.yaml +39 -0
  2663. package/dist/agents/skills/codex/ts-declaration-merging/SKILL.md +187 -0
  2664. package/dist/agents/skills/codex/ts-declaration-merging/skill.yaml +38 -0
  2665. package/dist/agents/skills/codex/ts-decorator-patterns/SKILL.md +181 -0
  2666. package/dist/agents/skills/codex/ts-decorator-patterns/skill.yaml +38 -0
  2667. package/dist/agents/skills/codex/ts-discriminated-unions/SKILL.md +186 -0
  2668. package/dist/agents/skills/codex/ts-discriminated-unions/skill.yaml +39 -0
  2669. package/dist/agents/skills/codex/ts-error-handling-types/SKILL.md +205 -0
  2670. package/dist/agents/skills/codex/ts-error-handling-types/skill.yaml +39 -0
  2671. package/dist/agents/skills/codex/ts-generics-pattern/SKILL.md +104 -0
  2672. package/dist/agents/skills/codex/ts-generics-pattern/skill.yaml +40 -0
  2673. package/dist/agents/skills/codex/ts-mapped-types/SKILL.md +147 -0
  2674. package/dist/agents/skills/codex/ts-mapped-types/skill.yaml +39 -0
  2675. package/dist/agents/skills/codex/ts-module-patterns/SKILL.md +156 -0
  2676. package/dist/agents/skills/codex/ts-module-patterns/skill.yaml +38 -0
  2677. package/dist/agents/skills/codex/ts-performance-patterns/SKILL.md +158 -0
  2678. package/dist/agents/skills/codex/ts-performance-patterns/skill.yaml +42 -0
  2679. package/dist/agents/skills/codex/ts-satisfies-operator/SKILL.md +151 -0
  2680. package/dist/agents/skills/codex/ts-satisfies-operator/skill.yaml +39 -0
  2681. package/dist/agents/skills/codex/ts-strict-mode/SKILL.md +167 -0
  2682. package/dist/agents/skills/codex/ts-strict-mode/skill.yaml +39 -0
  2683. package/dist/agents/skills/codex/ts-template-literal-types/SKILL.md +146 -0
  2684. package/dist/agents/skills/codex/ts-template-literal-types/skill.yaml +39 -0
  2685. package/dist/agents/skills/codex/ts-testing-types/SKILL.md +166 -0
  2686. package/dist/agents/skills/codex/ts-testing-types/skill.yaml +39 -0
  2687. package/dist/agents/skills/codex/ts-type-guards/SKILL.md +168 -0
  2688. package/dist/agents/skills/codex/ts-type-guards/skill.yaml +40 -0
  2689. package/dist/agents/skills/codex/ts-utility-types/SKILL.md +119 -0
  2690. package/dist/agents/skills/codex/ts-utility-types/skill.yaml +44 -0
  2691. package/dist/agents/skills/codex/ts-zod-integration/SKILL.md +181 -0
  2692. package/dist/agents/skills/codex/ts-zod-integration/skill.yaml +38 -0
  2693. package/dist/agents/skills/codex/ux-active-voice/SKILL.md +150 -0
  2694. package/dist/agents/skills/codex/ux-active-voice/skill.yaml +32 -0
  2695. package/dist/agents/skills/codex/ux-button-cta-copy/SKILL.md +159 -0
  2696. package/dist/agents/skills/codex/ux-button-cta-copy/skill.yaml +34 -0
  2697. package/dist/agents/skills/codex/ux-confirmation-dialogs/SKILL.md +156 -0
  2698. package/dist/agents/skills/codex/ux-confirmation-dialogs/skill.yaml +33 -0
  2699. package/dist/agents/skills/codex/ux-content-hierarchy/SKILL.md +150 -0
  2700. package/dist/agents/skills/codex/ux-content-hierarchy/skill.yaml +33 -0
  2701. package/dist/agents/skills/codex/ux-data-table-copy/SKILL.md +154 -0
  2702. package/dist/agents/skills/codex/ux-data-table-copy/skill.yaml +34 -0
  2703. package/dist/agents/skills/codex/ux-destructive-action-copy/SKILL.md +152 -0
  2704. package/dist/agents/skills/codex/ux-destructive-action-copy/skill.yaml +34 -0
  2705. package/dist/agents/skills/codex/ux-empty-states/SKILL.md +155 -0
  2706. package/dist/agents/skills/codex/ux-empty-states/skill.yaml +36 -0
  2707. package/dist/agents/skills/codex/ux-error-messages/SKILL.md +159 -0
  2708. package/dist/agents/skills/codex/ux-error-messages/skill.yaml +35 -0
  2709. package/dist/agents/skills/codex/ux-error-severity/SKILL.md +155 -0
  2710. package/dist/agents/skills/codex/ux-error-severity/skill.yaml +35 -0
  2711. package/dist/agents/skills/codex/ux-form-labels/SKILL.md +159 -0
  2712. package/dist/agents/skills/codex/ux-form-labels/skill.yaml +36 -0
  2713. package/dist/agents/skills/codex/ux-inclusive-language/SKILL.md +161 -0
  2714. package/dist/agents/skills/codex/ux-inclusive-language/skill.yaml +33 -0
  2715. package/dist/agents/skills/codex/ux-internationalization-writing/SKILL.md +196 -0
  2716. package/dist/agents/skills/codex/ux-internationalization-writing/skill.yaml +35 -0
  2717. package/dist/agents/skills/codex/ux-loading-states/SKILL.md +162 -0
  2718. package/dist/agents/skills/codex/ux-loading-states/skill.yaml +33 -0
  2719. package/dist/agents/skills/codex/ux-microcopy-principles/SKILL.md +152 -0
  2720. package/dist/agents/skills/codex/ux-microcopy-principles/skill.yaml +37 -0
  2721. package/dist/agents/skills/codex/ux-navigation-labels/SKILL.md +163 -0
  2722. package/dist/agents/skills/codex/ux-navigation-labels/skill.yaml +35 -0
  2723. package/dist/agents/skills/codex/ux-notification-copy/SKILL.md +150 -0
  2724. package/dist/agents/skills/codex/ux-notification-copy/skill.yaml +35 -0
  2725. package/dist/agents/skills/codex/ux-onboarding-copy/SKILL.md +156 -0
  2726. package/dist/agents/skills/codex/ux-onboarding-copy/skill.yaml +35 -0
  2727. package/dist/agents/skills/codex/ux-permission-access-copy/SKILL.md +150 -0
  2728. package/dist/agents/skills/codex/ux-permission-access-copy/skill.yaml +34 -0
  2729. package/dist/agents/skills/codex/ux-plain-language/SKILL.md +157 -0
  2730. package/dist/agents/skills/codex/ux-plain-language/skill.yaml +34 -0
  2731. package/dist/agents/skills/codex/ux-search-copy/SKILL.md +154 -0
  2732. package/dist/agents/skills/codex/ux-search-copy/skill.yaml +33 -0
  2733. package/dist/agents/skills/codex/ux-settings-preferences/SKILL.md +152 -0
  2734. package/dist/agents/skills/codex/ux-settings-preferences/skill.yaml +33 -0
  2735. package/dist/agents/skills/codex/ux-success-feedback/SKILL.md +163 -0
  2736. package/dist/agents/skills/codex/ux-success-feedback/skill.yaml +33 -0
  2737. package/dist/agents/skills/codex/ux-tooltip-contextual-help/SKILL.md +163 -0
  2738. package/dist/agents/skills/codex/ux-tooltip-contextual-help/skill.yaml +33 -0
  2739. package/dist/agents/skills/codex/ux-voice-tone/SKILL.md +150 -0
  2740. package/dist/agents/skills/codex/ux-voice-tone/skill.yaml +33 -0
  2741. package/dist/agents/skills/codex/ux-writing-for-scanning/SKILL.md +150 -0
  2742. package/dist/agents/skills/codex/ux-writing-for-scanning/skill.yaml +35 -0
  2743. package/dist/agents/skills/codex/validate-context-engineering/skill.yaml +3 -0
  2744. package/dist/agents/skills/codex/vue-async-components/SKILL.md +67 -0
  2745. package/dist/agents/skills/codex/vue-async-components/skill.yaml +36 -0
  2746. package/dist/agents/skills/codex/vue-component-events/SKILL.md +72 -0
  2747. package/dist/agents/skills/codex/vue-component-events/skill.yaml +36 -0
  2748. package/dist/agents/skills/codex/vue-composables-pattern/SKILL.md +75 -0
  2749. package/dist/agents/skills/codex/vue-composables-pattern/skill.yaml +35 -0
  2750. package/dist/agents/skills/codex/vue-directive-pattern/SKILL.md +66 -0
  2751. package/dist/agents/skills/codex/vue-directive-pattern/skill.yaml +35 -0
  2752. package/dist/agents/skills/codex/vue-pinia-pattern/SKILL.md +69 -0
  2753. package/dist/agents/skills/codex/vue-pinia-pattern/skill.yaml +36 -0
  2754. package/dist/agents/skills/codex/vue-provide-inject/SKILL.md +66 -0
  2755. package/dist/agents/skills/codex/vue-provide-inject/skill.yaml +36 -0
  2756. package/dist/agents/skills/codex/vue-reactive-refs/SKILL.md +67 -0
  2757. package/dist/agents/skills/codex/vue-reactive-refs/skill.yaml +36 -0
  2758. package/dist/agents/skills/codex/vue-renderless-components/SKILL.md +69 -0
  2759. package/dist/agents/skills/codex/vue-renderless-components/skill.yaml +36 -0
  2760. package/dist/agents/skills/codex/vue-slots-pattern/SKILL.md +72 -0
  2761. package/dist/agents/skills/codex/vue-slots-pattern/skill.yaml +36 -0
  2762. package/dist/agents/skills/codex/vue-teleport-pattern/SKILL.md +66 -0
  2763. package/dist/agents/skills/codex/vue-teleport-pattern/skill.yaml +36 -0
  2764. package/dist/agents/skills/codex/vue-watchers-pattern/SKILL.md +73 -0
  2765. package/dist/agents/skills/codex/vue-watchers-pattern/skill.yaml +36 -0
  2766. package/dist/agents/skills/codex/xstate-actor-pattern/SKILL.md +155 -0
  2767. package/dist/agents/skills/codex/xstate-actor-pattern/skill.yaml +41 -0
  2768. package/dist/agents/skills/codex/xstate-guards-actions/SKILL.md +153 -0
  2769. package/dist/agents/skills/codex/xstate-guards-actions/skill.yaml +42 -0
  2770. package/dist/agents/skills/codex/xstate-history-states/SKILL.md +123 -0
  2771. package/dist/agents/skills/codex/xstate-history-states/skill.yaml +40 -0
  2772. package/dist/agents/skills/codex/xstate-invoke-pattern/SKILL.md +165 -0
  2773. package/dist/agents/skills/codex/xstate-invoke-pattern/skill.yaml +41 -0
  2774. package/dist/agents/skills/codex/xstate-machine-definition/SKILL.md +151 -0
  2775. package/dist/agents/skills/codex/xstate-machine-definition/skill.yaml +41 -0
  2776. package/dist/agents/skills/codex/xstate-parallel-states/SKILL.md +130 -0
  2777. package/dist/agents/skills/codex/xstate-parallel-states/skill.yaml +40 -0
  2778. package/dist/agents/skills/codex/xstate-react-integration/SKILL.md +138 -0
  2779. package/dist/agents/skills/codex/xstate-react-integration/skill.yaml +40 -0
  2780. package/dist/agents/skills/codex/xstate-testing-patterns/SKILL.md +173 -0
  2781. package/dist/agents/skills/codex/xstate-testing-patterns/skill.yaml +40 -0
  2782. package/dist/agents/skills/codex/xstate-typegen/SKILL.md +168 -0
  2783. package/dist/agents/skills/codex/xstate-typegen/skill.yaml +40 -0
  2784. package/dist/agents/skills/codex/xstate-visualization/SKILL.md +124 -0
  2785. package/dist/agents/skills/codex/xstate-visualization/skill.yaml +40 -0
  2786. package/dist/agents/skills/codex/zod-array-validation/SKILL.md +160 -0
  2787. package/dist/agents/skills/codex/zod-array-validation/skill.yaml +43 -0
  2788. package/dist/agents/skills/codex/zod-async-validation/SKILL.md +205 -0
  2789. package/dist/agents/skills/codex/zod-async-validation/skill.yaml +41 -0
  2790. package/dist/agents/skills/codex/zod-error-handling/SKILL.md +206 -0
  2791. package/dist/agents/skills/codex/zod-error-handling/skill.yaml +42 -0
  2792. package/dist/agents/skills/codex/zod-infer-types/SKILL.md +192 -0
  2793. package/dist/agents/skills/codex/zod-infer-types/skill.yaml +42 -0
  2794. package/dist/agents/skills/codex/zod-nextjs-integration/SKILL.md +232 -0
  2795. package/dist/agents/skills/codex/zod-nextjs-integration/skill.yaml +43 -0
  2796. package/dist/agents/skills/codex/zod-object-patterns/SKILL.md +190 -0
  2797. package/dist/agents/skills/codex/zod-object-patterns/skill.yaml +44 -0
  2798. package/dist/agents/skills/codex/zod-schema-definition/SKILL.md +170 -0
  2799. package/dist/agents/skills/codex/zod-schema-definition/skill.yaml +43 -0
  2800. package/dist/agents/skills/codex/zod-string-validation/SKILL.md +180 -0
  2801. package/dist/agents/skills/codex/zod-string-validation/skill.yaml +44 -0
  2802. package/dist/agents/skills/codex/zod-transform-refine/SKILL.md +193 -0
  2803. package/dist/agents/skills/codex/zod-transform-refine/skill.yaml +43 -0
  2804. package/dist/agents/skills/codex/zod-union-discriminated/SKILL.md +168 -0
  2805. package/dist/agents/skills/codex/zod-union-discriminated/skill.yaml +41 -0
  2806. package/dist/agents/skills/cursor/a11y-aria-patterns/SKILL.md +183 -0
  2807. package/dist/agents/skills/cursor/a11y-aria-patterns/skill.yaml +44 -0
  2808. package/dist/agents/skills/cursor/a11y-color-contrast/SKILL.md +156 -0
  2809. package/dist/agents/skills/cursor/a11y-color-contrast/skill.yaml +46 -0
  2810. package/dist/agents/skills/cursor/a11y-form-patterns/SKILL.md +147 -0
  2811. package/dist/agents/skills/cursor/a11y-form-patterns/skill.yaml +47 -0
  2812. package/dist/agents/skills/cursor/a11y-image-text-alt/SKILL.md +159 -0
  2813. package/dist/agents/skills/cursor/a11y-image-text-alt/skill.yaml +44 -0
  2814. package/dist/agents/skills/cursor/a11y-keyboard-navigation/SKILL.md +169 -0
  2815. package/dist/agents/skills/cursor/a11y-keyboard-navigation/skill.yaml +46 -0
  2816. package/dist/agents/skills/cursor/a11y-modal-patterns/SKILL.md +201 -0
  2817. package/dist/agents/skills/cursor/a11y-modal-patterns/skill.yaml +43 -0
  2818. package/dist/agents/skills/cursor/a11y-motion-animation/SKILL.md +199 -0
  2819. package/dist/agents/skills/cursor/a11y-motion-animation/skill.yaml +46 -0
  2820. package/dist/agents/skills/cursor/a11y-screen-reader-testing/SKILL.md +138 -0
  2821. package/dist/agents/skills/cursor/a11y-screen-reader-testing/skill.yaml +44 -0
  2822. package/dist/agents/skills/cursor/a11y-semantic-html/SKILL.md +139 -0
  2823. package/dist/agents/skills/cursor/a11y-semantic-html/skill.yaml +44 -0
  2824. package/dist/agents/skills/cursor/a11y-testing-automation/SKILL.md +206 -0
  2825. package/dist/agents/skills/cursor/a11y-testing-automation/skill.yaml +46 -0
  2826. package/dist/agents/skills/cursor/add-harness-component/skill.yaml +3 -0
  2827. package/dist/agents/skills/cursor/align-documentation/skill.yaml +3 -0
  2828. package/dist/agents/skills/cursor/angular-component-pattern/SKILL.md +112 -0
  2829. package/dist/agents/skills/cursor/angular-component-pattern/skill.yaml +47 -0
  2830. package/dist/agents/skills/cursor/angular-directive-pattern/SKILL.md +166 -0
  2831. package/dist/agents/skills/cursor/angular-directive-pattern/skill.yaml +45 -0
  2832. package/dist/agents/skills/cursor/angular-http-interceptors/SKILL.md +174 -0
  2833. package/dist/agents/skills/cursor/angular-http-interceptors/skill.yaml +45 -0
  2834. package/dist/agents/skills/cursor/angular-lazy-loading/SKILL.md +156 -0
  2835. package/dist/agents/skills/cursor/angular-lazy-loading/skill.yaml +45 -0
  2836. package/dist/agents/skills/cursor/angular-performance-patterns/SKILL.md +141 -0
  2837. package/dist/agents/skills/cursor/angular-performance-patterns/skill.yaml +51 -0
  2838. package/dist/agents/skills/cursor/angular-pipe-pattern/SKILL.md +126 -0
  2839. package/dist/agents/skills/cursor/angular-pipe-pattern/skill.yaml +45 -0
  2840. package/dist/agents/skills/cursor/angular-reactive-forms/SKILL.md +136 -0
  2841. package/dist/agents/skills/cursor/angular-reactive-forms/skill.yaml +45 -0
  2842. package/dist/agents/skills/cursor/angular-routing-guards/SKILL.md +150 -0
  2843. package/dist/agents/skills/cursor/angular-routing-guards/skill.yaml +45 -0
  2844. package/dist/agents/skills/cursor/angular-rxjs-patterns/SKILL.md +152 -0
  2845. package/dist/agents/skills/cursor/angular-rxjs-patterns/skill.yaml +46 -0
  2846. package/dist/agents/skills/cursor/angular-schematics/SKILL.md +184 -0
  2847. package/dist/agents/skills/cursor/angular-schematics/skill.yaml +45 -0
  2848. package/dist/agents/skills/cursor/angular-service-di/SKILL.md +108 -0
  2849. package/dist/agents/skills/cursor/angular-service-di/skill.yaml +46 -0
  2850. package/dist/agents/skills/cursor/angular-signals-pattern/SKILL.md +116 -0
  2851. package/dist/agents/skills/cursor/angular-signals-pattern/skill.yaml +45 -0
  2852. package/dist/agents/skills/cursor/angular-standalone-components/SKILL.md +130 -0
  2853. package/dist/agents/skills/cursor/angular-standalone-components/skill.yaml +45 -0
  2854. package/dist/agents/skills/cursor/angular-state-management/SKILL.md +150 -0
  2855. package/dist/agents/skills/cursor/angular-state-management/skill.yaml +46 -0
  2856. package/dist/agents/skills/cursor/angular-testing-patterns/SKILL.md +180 -0
  2857. package/dist/agents/skills/cursor/angular-testing-patterns/skill.yaml +46 -0
  2858. package/dist/agents/skills/cursor/api-api-keys/SKILL.md +135 -0
  2859. package/dist/agents/skills/cursor/api-api-keys/skill.yaml +41 -0
  2860. package/dist/agents/skills/cursor/api-authentication-patterns/SKILL.md +117 -0
  2861. package/dist/agents/skills/cursor/api-authentication-patterns/skill.yaml +44 -0
  2862. package/dist/agents/skills/cursor/api-backward-compatibility/SKILL.md +170 -0
  2863. package/dist/agents/skills/cursor/api-backward-compatibility/skill.yaml +39 -0
  2864. package/dist/agents/skills/cursor/api-bulk-operations/SKILL.md +198 -0
  2865. package/dist/agents/skills/cursor/api-bulk-operations/skill.yaml +39 -0
  2866. package/dist/agents/skills/cursor/api-conditional-requests/SKILL.md +233 -0
  2867. package/dist/agents/skills/cursor/api-conditional-requests/skill.yaml +41 -0
  2868. package/dist/agents/skills/cursor/api-content-negotiation/SKILL.md +194 -0
  2869. package/dist/agents/skills/cursor/api-content-negotiation/skill.yaml +39 -0
  2870. package/dist/agents/skills/cursor/api-contract-testing/SKILL.md +222 -0
  2871. package/dist/agents/skills/cursor/api-contract-testing/skill.yaml +42 -0
  2872. package/dist/agents/skills/cursor/api-deprecation-strategy/SKILL.md +156 -0
  2873. package/dist/agents/skills/cursor/api-deprecation-strategy/skill.yaml +39 -0
  2874. package/dist/agents/skills/cursor/api-error-contracts/SKILL.md +149 -0
  2875. package/dist/agents/skills/cursor/api-error-contracts/skill.yaml +40 -0
  2876. package/dist/agents/skills/cursor/api-field-selection/SKILL.md +193 -0
  2877. package/dist/agents/skills/cursor/api-field-selection/skill.yaml +39 -0
  2878. package/dist/agents/skills/cursor/api-filtering-sorting/SKILL.md +170 -0
  2879. package/dist/agents/skills/cursor/api-filtering-sorting/skill.yaml +40 -0
  2880. package/dist/agents/skills/cursor/api-hateoas/SKILL.md +212 -0
  2881. package/dist/agents/skills/cursor/api-hateoas/skill.yaml +40 -0
  2882. package/dist/agents/skills/cursor/api-http-caching/SKILL.md +188 -0
  2883. package/dist/agents/skills/cursor/api-http-caching/skill.yaml +43 -0
  2884. package/dist/agents/skills/cursor/api-http-methods/SKILL.md +185 -0
  2885. package/dist/agents/skills/cursor/api-http-methods/skill.yaml +43 -0
  2886. package/dist/agents/skills/cursor/api-idempotency-keys/SKILL.md +176 -0
  2887. package/dist/agents/skills/cursor/api-idempotency-keys/skill.yaml +40 -0
  2888. package/dist/agents/skills/cursor/api-long-running-operations/SKILL.md +209 -0
  2889. package/dist/agents/skills/cursor/api-long-running-operations/skill.yaml +40 -0
  2890. package/dist/agents/skills/cursor/api-nested-vs-flat/SKILL.md +173 -0
  2891. package/dist/agents/skills/cursor/api-nested-vs-flat/skill.yaml +39 -0
  2892. package/dist/agents/skills/cursor/api-oauth2-flows/SKILL.md +150 -0
  2893. package/dist/agents/skills/cursor/api-oauth2-flows/skill.yaml +42 -0
  2894. package/dist/agents/skills/cursor/api-openapi-design/SKILL.md +260 -0
  2895. package/dist/agents/skills/cursor/api-openapi-design/skill.yaml +44 -0
  2896. package/dist/agents/skills/cursor/api-pagination-cursor/SKILL.md +159 -0
  2897. package/dist/agents/skills/cursor/api-pagination-cursor/skill.yaml +40 -0
  2898. package/dist/agents/skills/cursor/api-pagination-keyset/SKILL.md +167 -0
  2899. package/dist/agents/skills/cursor/api-pagination-keyset/skill.yaml +39 -0
  2900. package/dist/agents/skills/cursor/api-pagination-offset/SKILL.md +135 -0
  2901. package/dist/agents/skills/cursor/api-pagination-offset/skill.yaml +39 -0
  2902. package/dist/agents/skills/cursor/api-problem-details-rfc/SKILL.md +164 -0
  2903. package/dist/agents/skills/cursor/api-problem-details-rfc/skill.yaml +38 -0
  2904. package/dist/agents/skills/cursor/api-rate-limit-headers/SKILL.md +144 -0
  2905. package/dist/agents/skills/cursor/api-rate-limit-headers/skill.yaml +39 -0
  2906. package/dist/agents/skills/cursor/api-rate-limiting/SKILL.md +131 -0
  2907. package/dist/agents/skills/cursor/api-rate-limiting/skill.yaml +41 -0
  2908. package/dist/agents/skills/cursor/api-resource-granularity/SKILL.md +165 -0
  2909. package/dist/agents/skills/cursor/api-resource-granularity/skill.yaml +40 -0
  2910. package/dist/agents/skills/cursor/api-resource-modeling/SKILL.md +155 -0
  2911. package/dist/agents/skills/cursor/api-resource-modeling/skill.yaml +40 -0
  2912. package/dist/agents/skills/cursor/api-rest-maturity-model/SKILL.md +215 -0
  2913. package/dist/agents/skills/cursor/api-rest-maturity-model/skill.yaml +39 -0
  2914. package/dist/agents/skills/cursor/api-retry-guidance/SKILL.md +168 -0
  2915. package/dist/agents/skills/cursor/api-retry-guidance/skill.yaml +41 -0
  2916. package/dist/agents/skills/cursor/api-sdk-ergonomics/SKILL.md +194 -0
  2917. package/dist/agents/skills/cursor/api-sdk-ergonomics/skill.yaml +43 -0
  2918. package/dist/agents/skills/cursor/api-status-codes/SKILL.md +196 -0
  2919. package/dist/agents/skills/cursor/api-status-codes/skill.yaml +46 -0
  2920. package/dist/agents/skills/cursor/api-validation-errors/SKILL.md +174 -0
  2921. package/dist/agents/skills/cursor/api-validation-errors/skill.yaml +40 -0
  2922. package/dist/agents/skills/cursor/api-versioning-header/SKILL.md +177 -0
  2923. package/dist/agents/skills/cursor/api-versioning-header/skill.yaml +37 -0
  2924. package/dist/agents/skills/cursor/api-versioning-url/SKILL.md +128 -0
  2925. package/dist/agents/skills/cursor/api-versioning-url/skill.yaml +39 -0
  2926. package/dist/agents/skills/cursor/api-webhook-design/SKILL.md +165 -0
  2927. package/dist/agents/skills/cursor/api-webhook-design/skill.yaml +41 -0
  2928. package/dist/agents/skills/cursor/api-webhook-security/SKILL.md +176 -0
  2929. package/dist/agents/skills/cursor/api-webhook-security/skill.yaml +41 -0
  2930. package/dist/agents/skills/cursor/astro-component-pattern/SKILL.md +160 -0
  2931. package/dist/agents/skills/cursor/astro-component-pattern/skill.yaml +45 -0
  2932. package/dist/agents/skills/cursor/astro-content-collections/SKILL.md +155 -0
  2933. package/dist/agents/skills/cursor/astro-content-collections/skill.yaml +43 -0
  2934. package/dist/agents/skills/cursor/astro-deployment-config/SKILL.md +208 -0
  2935. package/dist/agents/skills/cursor/astro-deployment-config/skill.yaml +47 -0
  2936. package/dist/agents/skills/cursor/astro-image-optimization/SKILL.md +188 -0
  2937. package/dist/agents/skills/cursor/astro-image-optimization/skill.yaml +46 -0
  2938. package/dist/agents/skills/cursor/astro-integration-pattern/SKILL.md +164 -0
  2939. package/dist/agents/skills/cursor/astro-integration-pattern/skill.yaml +45 -0
  2940. package/dist/agents/skills/cursor/astro-islands-architecture/SKILL.md +103 -0
  2941. package/dist/agents/skills/cursor/astro-islands-architecture/skill.yaml +45 -0
  2942. package/dist/agents/skills/cursor/astro-multi-framework/SKILL.md +161 -0
  2943. package/dist/agents/skills/cursor/astro-multi-framework/skill.yaml +47 -0
  2944. package/dist/agents/skills/cursor/astro-routing-pattern/SKILL.md +135 -0
  2945. package/dist/agents/skills/cursor/astro-routing-pattern/skill.yaml +44 -0
  2946. package/dist/agents/skills/cursor/astro-server-endpoints/SKILL.md +173 -0
  2947. package/dist/agents/skills/cursor/astro-server-endpoints/skill.yaml +45 -0
  2948. package/dist/agents/skills/cursor/astro-ssr-hybrid/SKILL.md +191 -0
  2949. package/dist/agents/skills/cursor/astro-ssr-hybrid/skill.yaml +47 -0
  2950. package/dist/agents/skills/cursor/astro-view-transitions/SKILL.md +168 -0
  2951. package/dist/agents/skills/cursor/astro-view-transitions/skill.yaml +46 -0
  2952. package/dist/agents/skills/cursor/check-mechanical-constraints/skill.yaml +3 -0
  2953. package/dist/agents/skills/cursor/cleanup-dead-code/skill.yaml +3 -0
  2954. package/dist/agents/skills/cursor/css-animation-pattern/SKILL.md +143 -0
  2955. package/dist/agents/skills/cursor/css-animation-pattern/skill.yaml +44 -0
  2956. package/dist/agents/skills/cursor/css-component-variants/SKILL.md +147 -0
  2957. package/dist/agents/skills/cursor/css-component-variants/skill.yaml +43 -0
  2958. package/dist/agents/skills/cursor/css-css-modules/SKILL.md +168 -0
  2959. package/dist/agents/skills/cursor/css-css-modules/skill.yaml +39 -0
  2960. package/dist/agents/skills/cursor/css-custom-components/SKILL.md +178 -0
  2961. package/dist/agents/skills/cursor/css-custom-components/skill.yaml +40 -0
  2962. package/dist/agents/skills/cursor/css-dark-mode/SKILL.md +171 -0
  2963. package/dist/agents/skills/cursor/css-dark-mode/skill.yaml +42 -0
  2964. package/dist/agents/skills/cursor/css-design-tokens/SKILL.md +155 -0
  2965. package/dist/agents/skills/cursor/css-design-tokens/skill.yaml +43 -0
  2966. package/dist/agents/skills/cursor/css-headless-ui/SKILL.md +179 -0
  2967. package/dist/agents/skills/cursor/css-headless-ui/skill.yaml +40 -0
  2968. package/dist/agents/skills/cursor/css-layout-patterns/SKILL.md +155 -0
  2969. package/dist/agents/skills/cursor/css-layout-patterns/skill.yaml +44 -0
  2970. package/dist/agents/skills/cursor/css-performance-patterns/SKILL.md +163 -0
  2971. package/dist/agents/skills/cursor/css-performance-patterns/skill.yaml +46 -0
  2972. package/dist/agents/skills/cursor/css-responsive-design/SKILL.md +161 -0
  2973. package/dist/agents/skills/cursor/css-responsive-design/skill.yaml +43 -0
  2974. package/dist/agents/skills/cursor/css-tailwind-merge/SKILL.md +128 -0
  2975. package/dist/agents/skills/cursor/css-tailwind-merge/skill.yaml +40 -0
  2976. package/dist/agents/skills/cursor/css-tailwind-pattern/SKILL.md +126 -0
  2977. package/dist/agents/skills/cursor/css-tailwind-pattern/skill.yaml +41 -0
  2978. package/dist/agents/skills/cursor/db-acid-in-practice/SKILL.md +215 -0
  2979. package/dist/agents/skills/cursor/db-acid-in-practice/skill.yaml +38 -0
  2980. package/dist/agents/skills/cursor/db-acid-properties/SKILL.md +190 -0
  2981. package/dist/agents/skills/cursor/db-acid-properties/skill.yaml +38 -0
  2982. package/dist/agents/skills/cursor/db-adjacency-list/SKILL.md +199 -0
  2983. package/dist/agents/skills/cursor/db-adjacency-list/skill.yaml +40 -0
  2984. package/dist/agents/skills/cursor/db-audit-trail/SKILL.md +244 -0
  2985. package/dist/agents/skills/cursor/db-audit-trail/skill.yaml +41 -0
  2986. package/dist/agents/skills/cursor/db-btree-index/SKILL.md +182 -0
  2987. package/dist/agents/skills/cursor/db-btree-index/skill.yaml +44 -0
  2988. package/dist/agents/skills/cursor/db-cap-theorem/SKILL.md +156 -0
  2989. package/dist/agents/skills/cursor/db-cap-theorem/skill.yaml +38 -0
  2990. package/dist/agents/skills/cursor/db-closure-table/SKILL.md +197 -0
  2991. package/dist/agents/skills/cursor/db-closure-table/skill.yaml +38 -0
  2992. package/dist/agents/skills/cursor/db-composite-index/SKILL.md +199 -0
  2993. package/dist/agents/skills/cursor/db-composite-index/skill.yaml +41 -0
  2994. package/dist/agents/skills/cursor/db-connection-pooling/SKILL.md +196 -0
  2995. package/dist/agents/skills/cursor/db-connection-pooling/skill.yaml +39 -0
  2996. package/dist/agents/skills/cursor/db-connection-sizing/SKILL.md +236 -0
  2997. package/dist/agents/skills/cursor/db-connection-sizing/skill.yaml +38 -0
  2998. package/dist/agents/skills/cursor/db-covering-index/SKILL.md +203 -0
  2999. package/dist/agents/skills/cursor/db-covering-index/skill.yaml +40 -0
  3000. package/dist/agents/skills/cursor/db-deadlock-prevention/SKILL.md +204 -0
  3001. package/dist/agents/skills/cursor/db-deadlock-prevention/skill.yaml +41 -0
  3002. package/dist/agents/skills/cursor/db-denormalization/SKILL.md +176 -0
  3003. package/dist/agents/skills/cursor/db-denormalization/skill.yaml +38 -0
  3004. package/dist/agents/skills/cursor/db-document-in-relational/SKILL.md +225 -0
  3005. package/dist/agents/skills/cursor/db-document-in-relational/skill.yaml +42 -0
  3006. package/dist/agents/skills/cursor/db-entity-attribute-value/SKILL.md +186 -0
  3007. package/dist/agents/skills/cursor/db-entity-attribute-value/skill.yaml +39 -0
  3008. package/dist/agents/skills/cursor/db-eventual-consistency/SKILL.md +226 -0
  3009. package/dist/agents/skills/cursor/db-eventual-consistency/skill.yaml +38 -0
  3010. package/dist/agents/skills/cursor/db-expand-contract/SKILL.md +199 -0
  3011. package/dist/agents/skills/cursor/db-expand-contract/skill.yaml +40 -0
  3012. package/dist/agents/skills/cursor/db-explain-reading/SKILL.md +213 -0
  3013. package/dist/agents/skills/cursor/db-explain-reading/skill.yaml +44 -0
  3014. package/dist/agents/skills/cursor/db-expression-index/SKILL.md +211 -0
  3015. package/dist/agents/skills/cursor/db-expression-index/skill.yaml +40 -0
  3016. package/dist/agents/skills/cursor/db-first-normal-form/SKILL.md +190 -0
  3017. package/dist/agents/skills/cursor/db-first-normal-form/skill.yaml +38 -0
  3018. package/dist/agents/skills/cursor/db-graph-in-relational/SKILL.md +212 -0
  3019. package/dist/agents/skills/cursor/db-graph-in-relational/skill.yaml +41 -0
  3020. package/dist/agents/skills/cursor/db-hash-index/SKILL.md +176 -0
  3021. package/dist/agents/skills/cursor/db-hash-index/skill.yaml +37 -0
  3022. package/dist/agents/skills/cursor/db-hierarchical-data/SKILL.md +194 -0
  3023. package/dist/agents/skills/cursor/db-hierarchical-data/skill.yaml +41 -0
  3024. package/dist/agents/skills/cursor/db-horizontal-sharding/SKILL.md +228 -0
  3025. package/dist/agents/skills/cursor/db-horizontal-sharding/skill.yaml +40 -0
  3026. package/dist/agents/skills/cursor/db-isolation-levels/SKILL.md +158 -0
  3027. package/dist/agents/skills/cursor/db-isolation-levels/skill.yaml +43 -0
  3028. package/dist/agents/skills/cursor/db-isolation-selection/SKILL.md +160 -0
  3029. package/dist/agents/skills/cursor/db-isolation-selection/skill.yaml +41 -0
  3030. package/dist/agents/skills/cursor/db-migration-rollback/SKILL.md +223 -0
  3031. package/dist/agents/skills/cursor/db-migration-rollback/skill.yaml +40 -0
  3032. package/dist/agents/skills/cursor/db-mvcc/SKILL.md +191 -0
  3033. package/dist/agents/skills/cursor/db-mvcc/skill.yaml +45 -0
  3034. package/dist/agents/skills/cursor/db-nested-sets/SKILL.md +171 -0
  3035. package/dist/agents/skills/cursor/db-nested-sets/skill.yaml +38 -0
  3036. package/dist/agents/skills/cursor/db-optimistic-locking/SKILL.md +151 -0
  3037. package/dist/agents/skills/cursor/db-optimistic-locking/skill.yaml +44 -0
  3038. package/dist/agents/skills/cursor/db-partial-index/SKILL.md +196 -0
  3039. package/dist/agents/skills/cursor/db-partial-index/skill.yaml +39 -0
  3040. package/dist/agents/skills/cursor/db-pessimistic-locking/SKILL.md +158 -0
  3041. package/dist/agents/skills/cursor/db-pessimistic-locking/skill.yaml +44 -0
  3042. package/dist/agents/skills/cursor/db-polymorphic-associations/SKILL.md +187 -0
  3043. package/dist/agents/skills/cursor/db-polymorphic-associations/skill.yaml +42 -0
  3044. package/dist/agents/skills/cursor/db-query-rewriting/SKILL.md +249 -0
  3045. package/dist/agents/skills/cursor/db-query-rewriting/skill.yaml +43 -0
  3046. package/dist/agents/skills/cursor/db-query-statistics/SKILL.md +210 -0
  3047. package/dist/agents/skills/cursor/db-query-statistics/skill.yaml +41 -0
  3048. package/dist/agents/skills/cursor/db-read-phenomena/SKILL.md +205 -0
  3049. package/dist/agents/skills/cursor/db-read-phenomena/skill.yaml +42 -0
  3050. package/dist/agents/skills/cursor/db-scan-types/SKILL.md +248 -0
  3051. package/dist/agents/skills/cursor/db-scan-types/skill.yaml +41 -0
  3052. package/dist/agents/skills/cursor/db-second-normal-form/SKILL.md +183 -0
  3053. package/dist/agents/skills/cursor/db-second-normal-form/skill.yaml +38 -0
  3054. package/dist/agents/skills/cursor/db-table-partitioning/SKILL.md +229 -0
  3055. package/dist/agents/skills/cursor/db-table-partitioning/skill.yaml +39 -0
  3056. package/dist/agents/skills/cursor/db-temporal-data/SKILL.md +194 -0
  3057. package/dist/agents/skills/cursor/db-temporal-data/skill.yaml +41 -0
  3058. package/dist/agents/skills/cursor/db-third-normal-form/SKILL.md +210 -0
  3059. package/dist/agents/skills/cursor/db-third-normal-form/skill.yaml +38 -0
  3060. package/dist/agents/skills/cursor/db-time-series/SKILL.md +196 -0
  3061. package/dist/agents/skills/cursor/db-time-series/skill.yaml +41 -0
  3062. package/dist/agents/skills/cursor/db-vertical-partitioning/SKILL.md +249 -0
  3063. package/dist/agents/skills/cursor/db-vertical-partitioning/skill.yaml +40 -0
  3064. package/dist/agents/skills/cursor/db-zero-downtime-migration/SKILL.md +199 -0
  3065. package/dist/agents/skills/cursor/db-zero-downtime-migration/skill.yaml +42 -0
  3066. package/dist/agents/skills/cursor/design-affordances/SKILL.md +157 -0
  3067. package/dist/agents/skills/cursor/design-affordances/skill.yaml +36 -0
  3068. package/dist/agents/skills/cursor/design-alignment/SKILL.md +148 -0
  3069. package/dist/agents/skills/cursor/design-alignment/skill.yaml +34 -0
  3070. package/dist/agents/skills/cursor/design-apple-hig/SKILL.md +237 -0
  3071. package/dist/agents/skills/cursor/design-apple-hig/skill.yaml +38 -0
  3072. package/dist/agents/skills/cursor/design-atomic-design/SKILL.md +172 -0
  3073. package/dist/agents/skills/cursor/design-atomic-design/skill.yaml +36 -0
  3074. package/dist/agents/skills/cursor/design-brand-consistency/SKILL.md +167 -0
  3075. package/dist/agents/skills/cursor/design-brand-consistency/skill.yaml +36 -0
  3076. package/dist/agents/skills/cursor/design-color-accessibility/SKILL.md +161 -0
  3077. package/dist/agents/skills/cursor/design-color-accessibility/skill.yaml +35 -0
  3078. package/dist/agents/skills/cursor/design-color-harmony/SKILL.md +152 -0
  3079. package/dist/agents/skills/cursor/design-color-harmony/skill.yaml +36 -0
  3080. package/dist/agents/skills/cursor/design-color-psychology/SKILL.md +151 -0
  3081. package/dist/agents/skills/cursor/design-color-psychology/skill.yaml +35 -0
  3082. package/dist/agents/skills/cursor/design-component-anatomy/SKILL.md +243 -0
  3083. package/dist/agents/skills/cursor/design-component-anatomy/skill.yaml +35 -0
  3084. package/dist/agents/skills/cursor/design-consistency/SKILL.md +179 -0
  3085. package/dist/agents/skills/cursor/design-consistency/skill.yaml +36 -0
  3086. package/dist/agents/skills/cursor/design-content-density/SKILL.md +156 -0
  3087. package/dist/agents/skills/cursor/design-content-density/skill.yaml +35 -0
  3088. package/dist/agents/skills/cursor/design-contrast-ratio/SKILL.md +151 -0
  3089. package/dist/agents/skills/cursor/design-contrast-ratio/skill.yaml +36 -0
  3090. package/dist/agents/skills/cursor/design-dark-mode-color/SKILL.md +152 -0
  3091. package/dist/agents/skills/cursor/design-dark-mode-color/skill.yaml +36 -0
  3092. package/dist/agents/skills/cursor/design-data-viz-design/SKILL.md +178 -0
  3093. package/dist/agents/skills/cursor/design-data-viz-design/skill.yaml +36 -0
  3094. package/dist/agents/skills/cursor/design-design-audit/SKILL.md +193 -0
  3095. package/dist/agents/skills/cursor/design-design-audit/skill.yaml +34 -0
  3096. package/dist/agents/skills/cursor/design-design-critique/SKILL.md +175 -0
  3097. package/dist/agents/skills/cursor/design-design-critique/skill.yaml +33 -0
  3098. package/dist/agents/skills/cursor/design-design-documentation/SKILL.md +163 -0
  3099. package/dist/agents/skills/cursor/design-design-documentation/skill.yaml +34 -0
  3100. package/dist/agents/skills/cursor/design-design-governance/SKILL.md +187 -0
  3101. package/dist/agents/skills/cursor/design-design-governance/skill.yaml +35 -0
  3102. package/dist/agents/skills/cursor/design-elevation-shadow/SKILL.md +163 -0
  3103. package/dist/agents/skills/cursor/design-elevation-shadow/skill.yaml +35 -0
  3104. package/dist/agents/skills/cursor/design-empty-error-states/SKILL.md +154 -0
  3105. package/dist/agents/skills/cursor/design-empty-error-states/skill.yaml +38 -0
  3106. package/dist/agents/skills/cursor/design-feedback-patterns/SKILL.md +156 -0
  3107. package/dist/agents/skills/cursor/design-feedback-patterns/skill.yaml +40 -0
  3108. package/dist/agents/skills/cursor/design-fluent-design/SKILL.md +241 -0
  3109. package/dist/agents/skills/cursor/design-fluent-design/skill.yaml +36 -0
  3110. package/dist/agents/skills/cursor/design-font-pairing/SKILL.md +161 -0
  3111. package/dist/agents/skills/cursor/design-font-pairing/skill.yaml +35 -0
  3112. package/dist/agents/skills/cursor/design-form-ux/SKILL.md +156 -0
  3113. package/dist/agents/skills/cursor/design-form-ux/skill.yaml +37 -0
  3114. package/dist/agents/skills/cursor/design-gestalt-closure-continuity/SKILL.md +182 -0
  3115. package/dist/agents/skills/cursor/design-gestalt-closure-continuity/skill.yaml +34 -0
  3116. package/dist/agents/skills/cursor/design-gestalt-common-fate/SKILL.md +214 -0
  3117. package/dist/agents/skills/cursor/design-gestalt-common-fate/skill.yaml +34 -0
  3118. package/dist/agents/skills/cursor/design-gestalt-figure-ground/SKILL.md +189 -0
  3119. package/dist/agents/skills/cursor/design-gestalt-figure-ground/skill.yaml +35 -0
  3120. package/dist/agents/skills/cursor/design-gestalt-proximity/SKILL.md +162 -0
  3121. package/dist/agents/skills/cursor/design-gestalt-proximity/skill.yaml +35 -0
  3122. package/dist/agents/skills/cursor/design-gestalt-similarity/SKILL.md +175 -0
  3123. package/dist/agents/skills/cursor/design-gestalt-similarity/skill.yaml +34 -0
  3124. package/dist/agents/skills/cursor/design-grid-systems/SKILL.md +154 -0
  3125. package/dist/agents/skills/cursor/design-grid-systems/skill.yaml +36 -0
  3126. package/dist/agents/skills/cursor/design-i18n-design/SKILL.md +181 -0
  3127. package/dist/agents/skills/cursor/design-i18n-design/skill.yaml +37 -0
  3128. package/dist/agents/skills/cursor/design-iconography/SKILL.md +169 -0
  3129. package/dist/agents/skills/cursor/design-iconography/skill.yaml +36 -0
  3130. package/dist/agents/skills/cursor/design-illustration-style/SKILL.md +170 -0
  3131. package/dist/agents/skills/cursor/design-illustration-style/skill.yaml +35 -0
  3132. package/dist/agents/skills/cursor/design-imagery-photography/SKILL.md +172 -0
  3133. package/dist/agents/skills/cursor/design-imagery-photography/skill.yaml +36 -0
  3134. package/dist/agents/skills/cursor/design-information-architecture/SKILL.md +155 -0
  3135. package/dist/agents/skills/cursor/design-information-architecture/skill.yaml +38 -0
  3136. package/dist/agents/skills/cursor/design-loading-patterns/SKILL.md +175 -0
  3137. package/dist/agents/skills/cursor/design-loading-patterns/skill.yaml +35 -0
  3138. package/dist/agents/skills/cursor/design-material-design-3/SKILL.md +184 -0
  3139. package/dist/agents/skills/cursor/design-material-design-3/skill.yaml +37 -0
  3140. package/dist/agents/skills/cursor/design-micro-interactions/SKILL.md +156 -0
  3141. package/dist/agents/skills/cursor/design-micro-interactions/skill.yaml +36 -0
  3142. package/dist/agents/skills/cursor/design-motion-principles/SKILL.md +161 -0
  3143. package/dist/agents/skills/cursor/design-motion-principles/skill.yaml +37 -0
  3144. package/dist/agents/skills/cursor/design-naming-conventions/SKILL.md +200 -0
  3145. package/dist/agents/skills/cursor/design-naming-conventions/skill.yaml +35 -0
  3146. package/dist/agents/skills/cursor/design-navigation-ux/SKILL.md +150 -0
  3147. package/dist/agents/skills/cursor/design-navigation-ux/skill.yaml +36 -0
  3148. package/dist/agents/skills/cursor/design-palette-construction/SKILL.md +152 -0
  3149. package/dist/agents/skills/cursor/design-palette-construction/skill.yaml +38 -0
  3150. package/dist/agents/skills/cursor/design-parallax-scroll/SKILL.md +200 -0
  3151. package/dist/agents/skills/cursor/design-parallax-scroll/skill.yaml +35 -0
  3152. package/dist/agents/skills/cursor/design-readability/SKILL.md +183 -0
  3153. package/dist/agents/skills/cursor/design-readability/skill.yaml +39 -0
  3154. package/dist/agents/skills/cursor/design-responsive-strategy/SKILL.md +157 -0
  3155. package/dist/agents/skills/cursor/design-responsive-strategy/skill.yaml +35 -0
  3156. package/dist/agents/skills/cursor/design-responsive-type/SKILL.md +270 -0
  3157. package/dist/agents/skills/cursor/design-responsive-type/skill.yaml +35 -0
  3158. package/dist/agents/skills/cursor/design-state-design/SKILL.md +152 -0
  3159. package/dist/agents/skills/cursor/design-state-design/skill.yaml +37 -0
  3160. package/dist/agents/skills/cursor/design-token-architecture/SKILL.md +218 -0
  3161. package/dist/agents/skills/cursor/design-token-architecture/skill.yaml +37 -0
  3162. package/dist/agents/skills/cursor/design-transitions-timing/SKILL.md +183 -0
  3163. package/dist/agents/skills/cursor/design-transitions-timing/skill.yaml +35 -0
  3164. package/dist/agents/skills/cursor/design-type-scale/SKILL.md +157 -0
  3165. package/dist/agents/skills/cursor/design-type-scale/skill.yaml +35 -0
  3166. package/dist/agents/skills/cursor/design-typographic-hierarchy/SKILL.md +187 -0
  3167. package/dist/agents/skills/cursor/design-typographic-hierarchy/skill.yaml +35 -0
  3168. package/dist/agents/skills/cursor/design-typography-fundamentals/SKILL.md +158 -0
  3169. package/dist/agents/skills/cursor/design-typography-fundamentals/skill.yaml +37 -0
  3170. package/dist/agents/skills/cursor/design-visual-hierarchy/SKILL.md +150 -0
  3171. package/dist/agents/skills/cursor/design-visual-hierarchy/skill.yaml +37 -0
  3172. package/dist/agents/skills/cursor/design-web-fonts/SKILL.md +251 -0
  3173. package/dist/agents/skills/cursor/design-web-fonts/skill.yaml +36 -0
  3174. package/dist/agents/skills/cursor/design-whitespace/SKILL.md +150 -0
  3175. package/dist/agents/skills/cursor/design-whitespace/skill.yaml +37 -0
  3176. package/dist/agents/skills/cursor/detect-doc-drift/skill.yaml +3 -0
  3177. package/dist/agents/skills/cursor/drizzle-filtering-pattern/SKILL.md +185 -0
  3178. package/dist/agents/skills/cursor/drizzle-filtering-pattern/skill.yaml +44 -0
  3179. package/dist/agents/skills/cursor/drizzle-migrations/SKILL.md +139 -0
  3180. package/dist/agents/skills/cursor/drizzle-migrations/skill.yaml +42 -0
  3181. package/dist/agents/skills/cursor/drizzle-performance-patterns/SKILL.md +176 -0
  3182. package/dist/agents/skills/cursor/drizzle-performance-patterns/skill.yaml +50 -0
  3183. package/dist/agents/skills/cursor/drizzle-query-builder/SKILL.md +206 -0
  3184. package/dist/agents/skills/cursor/drizzle-query-builder/skill.yaml +45 -0
  3185. package/dist/agents/skills/cursor/drizzle-raw-sql/SKILL.md +157 -0
  3186. package/dist/agents/skills/cursor/drizzle-raw-sql/skill.yaml +40 -0
  3187. package/dist/agents/skills/cursor/drizzle-relations-pattern/SKILL.md +179 -0
  3188. package/dist/agents/skills/cursor/drizzle-relations-pattern/skill.yaml +42 -0
  3189. package/dist/agents/skills/cursor/drizzle-schema-definition/SKILL.md +151 -0
  3190. package/dist/agents/skills/cursor/drizzle-schema-definition/skill.yaml +50 -0
  3191. package/dist/agents/skills/cursor/drizzle-transactions/SKILL.md +146 -0
  3192. package/dist/agents/skills/cursor/drizzle-transactions/skill.yaml +43 -0
  3193. package/dist/agents/skills/cursor/drizzle-with-nextjs/SKILL.md +199 -0
  3194. package/dist/agents/skills/cursor/drizzle-with-nextjs/skill.yaml +44 -0
  3195. package/dist/agents/skills/cursor/enforce-architecture/skill.yaml +3 -0
  3196. package/dist/agents/skills/cursor/events-event-schema/SKILL.md +180 -0
  3197. package/dist/agents/skills/cursor/events-event-schema/skill.yaml +45 -0
  3198. package/dist/agents/skills/cursor/events-event-storming/SKILL.md +199 -0
  3199. package/dist/agents/skills/cursor/events-event-storming/skill.yaml +45 -0
  3200. package/dist/agents/skills/cursor/events-idempotency/SKILL.md +189 -0
  3201. package/dist/agents/skills/cursor/events-idempotency/skill.yaml +45 -0
  3202. package/dist/agents/skills/cursor/events-kafka-patterns/SKILL.md +190 -0
  3203. package/dist/agents/skills/cursor/events-kafka-patterns/skill.yaml +45 -0
  3204. package/dist/agents/skills/cursor/events-message-queue/SKILL.md +190 -0
  3205. package/dist/agents/skills/cursor/events-message-queue/skill.yaml +44 -0
  3206. package/dist/agents/skills/cursor/events-outbox-pattern/SKILL.md +212 -0
  3207. package/dist/agents/skills/cursor/events-outbox-pattern/skill.yaml +44 -0
  3208. package/dist/agents/skills/cursor/events-pubsub-pattern/SKILL.md +158 -0
  3209. package/dist/agents/skills/cursor/events-pubsub-pattern/skill.yaml +45 -0
  3210. package/dist/agents/skills/cursor/events-redis-pubsub/SKILL.md +183 -0
  3211. package/dist/agents/skills/cursor/events-redis-pubsub/skill.yaml +43 -0
  3212. package/dist/agents/skills/cursor/events-saga-choreography/SKILL.md +177 -0
  3213. package/dist/agents/skills/cursor/events-saga-choreography/skill.yaml +44 -0
  3214. package/dist/agents/skills/cursor/events-sse-pattern/SKILL.md +221 -0
  3215. package/dist/agents/skills/cursor/events-sse-pattern/skill.yaml +43 -0
  3216. package/dist/agents/skills/cursor/events-webhooks-pattern/SKILL.md +215 -0
  3217. package/dist/agents/skills/cursor/events-webhooks-pattern/skill.yaml +46 -0
  3218. package/dist/agents/skills/cursor/events-websocket-pattern/SKILL.md +252 -0
  3219. package/dist/agents/skills/cursor/events-websocket-pattern/skill.yaml +44 -0
  3220. package/dist/agents/skills/cursor/gof-abstract-factory/SKILL.md +193 -0
  3221. package/dist/agents/skills/cursor/gof-abstract-factory/skill.yaml +36 -0
  3222. package/dist/agents/skills/cursor/gof-adapter-pattern/SKILL.md +157 -0
  3223. package/dist/agents/skills/cursor/gof-adapter-pattern/skill.yaml +37 -0
  3224. package/dist/agents/skills/cursor/gof-bridge-pattern/SKILL.md +183 -0
  3225. package/dist/agents/skills/cursor/gof-bridge-pattern/skill.yaml +36 -0
  3226. package/dist/agents/skills/cursor/gof-builder-pattern/SKILL.md +236 -0
  3227. package/dist/agents/skills/cursor/gof-builder-pattern/skill.yaml +36 -0
  3228. package/dist/agents/skills/cursor/gof-chain-of-responsibility/SKILL.md +199 -0
  3229. package/dist/agents/skills/cursor/gof-chain-of-responsibility/skill.yaml +36 -0
  3230. package/dist/agents/skills/cursor/gof-command-pattern/SKILL.md +197 -0
  3231. package/dist/agents/skills/cursor/gof-command-pattern/skill.yaml +36 -0
  3232. package/dist/agents/skills/cursor/gof-composite-pattern/SKILL.md +188 -0
  3233. package/dist/agents/skills/cursor/gof-composite-pattern/skill.yaml +36 -0
  3234. package/dist/agents/skills/cursor/gof-decorator-pattern/SKILL.md +177 -0
  3235. package/dist/agents/skills/cursor/gof-decorator-pattern/skill.yaml +37 -0
  3236. package/dist/agents/skills/cursor/gof-facade-pattern/SKILL.md +143 -0
  3237. package/dist/agents/skills/cursor/gof-facade-pattern/skill.yaml +36 -0
  3238. package/dist/agents/skills/cursor/gof-factory-method/SKILL.md +148 -0
  3239. package/dist/agents/skills/cursor/gof-factory-method/skill.yaml +37 -0
  3240. package/dist/agents/skills/cursor/gof-flyweight-pattern/SKILL.md +160 -0
  3241. package/dist/agents/skills/cursor/gof-flyweight-pattern/skill.yaml +36 -0
  3242. package/dist/agents/skills/cursor/gof-iterator-pattern/SKILL.md +177 -0
  3243. package/dist/agents/skills/cursor/gof-iterator-pattern/skill.yaml +36 -0
  3244. package/dist/agents/skills/cursor/gof-mediator-pattern/SKILL.md +171 -0
  3245. package/dist/agents/skills/cursor/gof-mediator-pattern/skill.yaml +36 -0
  3246. package/dist/agents/skills/cursor/gof-memento-pattern/SKILL.md +207 -0
  3247. package/dist/agents/skills/cursor/gof-memento-pattern/skill.yaml +35 -0
  3248. package/dist/agents/skills/cursor/gof-null-object/SKILL.md +177 -0
  3249. package/dist/agents/skills/cursor/gof-null-object/skill.yaml +36 -0
  3250. package/dist/agents/skills/cursor/gof-observer-pattern/SKILL.md +175 -0
  3251. package/dist/agents/skills/cursor/gof-observer-pattern/skill.yaml +38 -0
  3252. package/dist/agents/skills/cursor/gof-prototype-pattern/SKILL.md +162 -0
  3253. package/dist/agents/skills/cursor/gof-prototype-pattern/skill.yaml +36 -0
  3254. package/dist/agents/skills/cursor/gof-proxy-pattern/SKILL.md +184 -0
  3255. package/dist/agents/skills/cursor/gof-proxy-pattern/skill.yaml +37 -0
  3256. package/dist/agents/skills/cursor/gof-singleton/SKILL.md +149 -0
  3257. package/dist/agents/skills/cursor/gof-singleton/skill.yaml +36 -0
  3258. package/dist/agents/skills/cursor/gof-state-pattern/SKILL.md +220 -0
  3259. package/dist/agents/skills/cursor/gof-state-pattern/skill.yaml +36 -0
  3260. package/dist/agents/skills/cursor/gof-strategy-pattern/SKILL.md +179 -0
  3261. package/dist/agents/skills/cursor/gof-strategy-pattern/skill.yaml +36 -0
  3262. package/dist/agents/skills/cursor/gof-template-method/SKILL.md +189 -0
  3263. package/dist/agents/skills/cursor/gof-template-method/skill.yaml +36 -0
  3264. package/dist/agents/skills/cursor/gof-visitor-pattern/SKILL.md +205 -0
  3265. package/dist/agents/skills/cursor/gof-visitor-pattern/skill.yaml +35 -0
  3266. package/dist/agents/skills/cursor/graphql-apollo-server/SKILL.md +169 -0
  3267. package/dist/agents/skills/cursor/graphql-apollo-server/skill.yaml +42 -0
  3268. package/dist/agents/skills/cursor/graphql-auth-patterns/SKILL.md +198 -0
  3269. package/dist/agents/skills/cursor/graphql-auth-patterns/skill.yaml +45 -0
  3270. package/dist/agents/skills/cursor/graphql-client-patterns/SKILL.md +152 -0
  3271. package/dist/agents/skills/cursor/graphql-client-patterns/skill.yaml +42 -0
  3272. package/dist/agents/skills/cursor/graphql-codegen-pattern/SKILL.md +154 -0
  3273. package/dist/agents/skills/cursor/graphql-codegen-pattern/skill.yaml +40 -0
  3274. package/dist/agents/skills/cursor/graphql-dataloader-pattern/SKILL.md +138 -0
  3275. package/dist/agents/skills/cursor/graphql-dataloader-pattern/skill.yaml +39 -0
  3276. package/dist/agents/skills/cursor/graphql-error-handling/SKILL.md +168 -0
  3277. package/dist/agents/skills/cursor/graphql-error-handling/skill.yaml +42 -0
  3278. package/dist/agents/skills/cursor/graphql-federation-pattern/SKILL.md +137 -0
  3279. package/dist/agents/skills/cursor/graphql-federation-pattern/skill.yaml +42 -0
  3280. package/dist/agents/skills/cursor/graphql-pagination-patterns/SKILL.md +176 -0
  3281. package/dist/agents/skills/cursor/graphql-pagination-patterns/skill.yaml +44 -0
  3282. package/dist/agents/skills/cursor/graphql-performance-patterns/SKILL.md +166 -0
  3283. package/dist/agents/skills/cursor/graphql-performance-patterns/skill.yaml +45 -0
  3284. package/dist/agents/skills/cursor/graphql-resolver-pattern/SKILL.md +129 -0
  3285. package/dist/agents/skills/cursor/graphql-resolver-pattern/skill.yaml +40 -0
  3286. package/dist/agents/skills/cursor/graphql-schema-design/SKILL.md +146 -0
  3287. package/dist/agents/skills/cursor/graphql-schema-design/skill.yaml +44 -0
  3288. package/dist/agents/skills/cursor/graphql-subscriptions/SKILL.md +198 -0
  3289. package/dist/agents/skills/cursor/graphql-subscriptions/skill.yaml +40 -0
  3290. package/dist/agents/skills/cursor/harness-accessibility/skill.yaml +3 -0
  3291. package/dist/agents/skills/cursor/harness-api-design/skill.yaml +8 -0
  3292. package/dist/agents/skills/cursor/harness-architecture-advisor/skill.yaml +3 -0
  3293. package/dist/agents/skills/cursor/harness-auth/skill.yaml +7 -0
  3294. package/dist/agents/skills/cursor/harness-autopilot/SKILL.md +171 -822
  3295. package/dist/agents/skills/cursor/harness-autopilot/skill.yaml +3 -0
  3296. package/dist/agents/skills/cursor/harness-brainstorming/SKILL.md +145 -195
  3297. package/dist/agents/skills/cursor/harness-brainstorming/skill.yaml +6 -0
  3298. package/dist/agents/skills/cursor/harness-caching/skill.yaml +6 -0
  3299. package/dist/agents/skills/cursor/harness-chaos/skill.yaml +3 -0
  3300. package/dist/agents/skills/cursor/harness-code-review/SKILL.md +267 -436
  3301. package/dist/agents/skills/cursor/harness-code-review/skill.yaml +9 -0
  3302. package/dist/agents/skills/cursor/harness-codebase-cleanup/skill.yaml +3 -0
  3303. package/dist/agents/skills/cursor/harness-compliance/skill.yaml +3 -0
  3304. package/dist/agents/skills/cursor/harness-containerization/skill.yaml +8 -0
  3305. package/dist/agents/skills/cursor/harness-data-pipeline/skill.yaml +3 -0
  3306. package/dist/agents/skills/cursor/harness-data-validation/skill.yaml +8 -0
  3307. package/dist/agents/skills/cursor/harness-database/skill.yaml +15 -0
  3308. package/dist/agents/skills/cursor/harness-debugging/skill.yaml +3 -0
  3309. package/dist/agents/skills/cursor/harness-dependency-health/skill.yaml +3 -0
  3310. package/dist/agents/skills/cursor/harness-deployment/skill.yaml +3 -0
  3311. package/dist/agents/skills/cursor/harness-design/skill.yaml +9 -0
  3312. package/dist/agents/skills/cursor/harness-design-mobile/skill.yaml +3 -0
  3313. package/dist/agents/skills/cursor/harness-design-system/skill.yaml +10 -0
  3314. package/dist/agents/skills/cursor/harness-design-web/skill.yaml +8 -0
  3315. package/dist/agents/skills/cursor/harness-diagnostics/skill.yaml +3 -0
  3316. package/dist/agents/skills/cursor/harness-docs-pipeline/skill.yaml +3 -0
  3317. package/dist/agents/skills/cursor/harness-dx/skill.yaml +3 -0
  3318. package/dist/agents/skills/cursor/harness-e2e/skill.yaml +15 -0
  3319. package/dist/agents/skills/cursor/harness-event-driven/skill.yaml +8 -0
  3320. package/dist/agents/skills/cursor/harness-execution/SKILL.md +180 -271
  3321. package/dist/agents/skills/cursor/harness-execution/skill.yaml +15 -0
  3322. package/dist/agents/skills/cursor/harness-feature-flags/skill.yaml +3 -0
  3323. package/dist/agents/skills/cursor/harness-git-workflow/skill.yaml +3 -0
  3324. package/dist/agents/skills/cursor/harness-hotspot-detector/skill.yaml +3 -0
  3325. package/dist/agents/skills/cursor/harness-i18n/skill.yaml +3 -0
  3326. package/dist/agents/skills/cursor/harness-i18n-process/skill.yaml +3 -0
  3327. package/dist/agents/skills/cursor/harness-i18n-workflow/skill.yaml +3 -0
  3328. package/dist/agents/skills/cursor/harness-impact-analysis/skill.yaml +3 -0
  3329. package/dist/agents/skills/cursor/harness-incident-response/skill.yaml +3 -0
  3330. package/dist/agents/skills/cursor/harness-infrastructure-as-code/skill.yaml +10 -0
  3331. package/dist/agents/skills/cursor/harness-integration-test/skill.yaml +3 -0
  3332. package/dist/agents/skills/cursor/harness-integrity/skill.yaml +3 -0
  3333. package/dist/agents/skills/cursor/harness-knowledge-mapper/skill.yaml +3 -0
  3334. package/dist/agents/skills/cursor/harness-load-testing/skill.yaml +3 -0
  3335. package/dist/agents/skills/cursor/harness-ml-ops/skill.yaml +6 -0
  3336. package/dist/agents/skills/cursor/harness-mobile-patterns/skill.yaml +13 -0
  3337. package/dist/agents/skills/cursor/harness-mutation-test/skill.yaml +3 -0
  3338. package/dist/agents/skills/cursor/harness-observability/skill.yaml +8 -0
  3339. package/dist/agents/skills/cursor/harness-onboarding/skill.yaml +3 -0
  3340. package/dist/agents/skills/cursor/harness-parallel-agents/skill.yaml +3 -0
  3341. package/dist/agents/skills/cursor/harness-perf/skill.yaml +3 -0
  3342. package/dist/agents/skills/cursor/harness-perf-tdd/skill.yaml +3 -0
  3343. package/dist/agents/skills/cursor/harness-planning/SKILL.md +142 -322
  3344. package/dist/agents/skills/cursor/harness-planning/skill.yaml +9 -0
  3345. package/dist/agents/skills/cursor/harness-pre-commit-review/skill.yaml +2 -1
  3346. package/dist/agents/skills/cursor/harness-product-spec/skill.yaml +3 -0
  3347. package/dist/agents/skills/cursor/harness-property-test/skill.yaml +3 -0
  3348. package/dist/agents/skills/cursor/harness-refactoring/skill.yaml +8 -0
  3349. package/dist/agents/skills/cursor/harness-release-readiness/SKILL.md +16 -0
  3350. package/dist/agents/skills/cursor/harness-release-readiness/skill.yaml +3 -0
  3351. package/dist/agents/skills/cursor/harness-resilience/skill.yaml +8 -0
  3352. package/dist/agents/skills/cursor/harness-roadmap/skill.yaml +3 -0
  3353. package/dist/agents/skills/cursor/harness-roadmap-pilot/skill.yaml +3 -0
  3354. package/dist/agents/skills/cursor/harness-router/SKILL.md +154 -0
  3355. package/dist/agents/skills/cursor/harness-router/skill.yaml +47 -0
  3356. package/dist/agents/skills/cursor/harness-secrets/SKILL.md +3 -3
  3357. package/dist/agents/skills/cursor/harness-secrets/skill.yaml +3 -0
  3358. package/dist/agents/skills/cursor/harness-security-review/skill.yaml +13 -0
  3359. package/dist/agents/skills/cursor/harness-security-scan/skill.yaml +9 -0
  3360. package/dist/agents/skills/cursor/harness-skill-authoring/SKILL.md +118 -0
  3361. package/dist/agents/skills/cursor/harness-skill-authoring/skill.yaml +3 -0
  3362. package/dist/agents/skills/cursor/harness-soundness-review/SKILL.md +483 -667
  3363. package/dist/agents/skills/cursor/harness-soundness-review/skill.yaml +3 -0
  3364. package/dist/agents/skills/cursor/harness-sql-review/skill.yaml +10 -0
  3365. package/dist/agents/skills/cursor/harness-state-management/skill.yaml +8 -0
  3366. package/dist/agents/skills/cursor/harness-supply-chain-audit/skill.yaml +3 -0
  3367. package/dist/agents/skills/cursor/harness-tdd/skill.yaml +8 -0
  3368. package/dist/agents/skills/cursor/harness-test-advisor/skill.yaml +3 -0
  3369. package/dist/agents/skills/cursor/harness-test-data/skill.yaml +3 -0
  3370. package/dist/agents/skills/cursor/harness-ux-copy/skill.yaml +15 -0
  3371. package/dist/agents/skills/cursor/harness-verification/SKILL.md +135 -221
  3372. package/dist/agents/skills/cursor/harness-verification/skill.yaml +6 -0
  3373. package/dist/agents/skills/cursor/harness-verify/skill.yaml +3 -0
  3374. package/dist/agents/skills/cursor/harness-visual-regression/skill.yaml +7 -0
  3375. package/dist/agents/skills/cursor/initialize-harness-project/skill.yaml +3 -0
  3376. package/dist/agents/skills/cursor/js-abstract-factory-pattern/SKILL.md +79 -0
  3377. package/dist/agents/skills/cursor/js-abstract-factory-pattern/skill.yaml +36 -0
  3378. package/dist/agents/skills/cursor/js-adapter-pattern/SKILL.md +77 -0
  3379. package/dist/agents/skills/cursor/js-adapter-pattern/skill.yaml +36 -0
  3380. package/dist/agents/skills/cursor/js-bridge-pattern/SKILL.md +90 -0
  3381. package/dist/agents/skills/cursor/js-bridge-pattern/skill.yaml +36 -0
  3382. package/dist/agents/skills/cursor/js-chain-of-responsibility-pattern/SKILL.md +81 -0
  3383. package/dist/agents/skills/cursor/js-chain-of-responsibility-pattern/skill.yaml +36 -0
  3384. package/dist/agents/skills/cursor/js-command-pattern/SKILL.md +81 -0
  3385. package/dist/agents/skills/cursor/js-command-pattern/skill.yaml +37 -0
  3386. package/dist/agents/skills/cursor/js-composite-pattern/SKILL.md +83 -0
  3387. package/dist/agents/skills/cursor/js-composite-pattern/skill.yaml +36 -0
  3388. package/dist/agents/skills/cursor/js-constructor-pattern/SKILL.md +78 -0
  3389. package/dist/agents/skills/cursor/js-constructor-pattern/skill.yaml +37 -0
  3390. package/dist/agents/skills/cursor/js-decorator-pattern/SKILL.md +73 -0
  3391. package/dist/agents/skills/cursor/js-decorator-pattern/skill.yaml +36 -0
  3392. package/dist/agents/skills/cursor/js-dynamic-import/SKILL.md +70 -0
  3393. package/dist/agents/skills/cursor/js-dynamic-import/skill.yaml +37 -0
  3394. package/dist/agents/skills/cursor/js-facade-pattern/SKILL.md +73 -0
  3395. package/dist/agents/skills/cursor/js-facade-pattern/skill.yaml +36 -0
  3396. package/dist/agents/skills/cursor/js-factory-pattern/SKILL.md +74 -0
  3397. package/dist/agents/skills/cursor/js-factory-pattern/skill.yaml +36 -0
  3398. package/dist/agents/skills/cursor/js-flyweight-pattern/SKILL.md +79 -0
  3399. package/dist/agents/skills/cursor/js-flyweight-pattern/skill.yaml +37 -0
  3400. package/dist/agents/skills/cursor/js-iterator-pattern/SKILL.md +78 -0
  3401. package/dist/agents/skills/cursor/js-iterator-pattern/skill.yaml +37 -0
  3402. package/dist/agents/skills/cursor/js-mediator-middleware-pattern/SKILL.md +92 -0
  3403. package/dist/agents/skills/cursor/js-mediator-middleware-pattern/skill.yaml +37 -0
  3404. package/dist/agents/skills/cursor/js-mixin-pattern/SKILL.md +85 -0
  3405. package/dist/agents/skills/cursor/js-mixin-pattern/skill.yaml +36 -0
  3406. package/dist/agents/skills/cursor/js-module-pattern/SKILL.md +75 -0
  3407. package/dist/agents/skills/cursor/js-module-pattern/skill.yaml +37 -0
  3408. package/dist/agents/skills/cursor/js-observer-pattern/SKILL.md +81 -0
  3409. package/dist/agents/skills/cursor/js-observer-pattern/skill.yaml +37 -0
  3410. package/dist/agents/skills/cursor/js-prototype-pattern/SKILL.md +70 -0
  3411. package/dist/agents/skills/cursor/js-prototype-pattern/skill.yaml +36 -0
  3412. package/dist/agents/skills/cursor/js-provider-pattern/SKILL.md +67 -0
  3413. package/dist/agents/skills/cursor/js-provider-pattern/skill.yaml +36 -0
  3414. package/dist/agents/skills/cursor/js-proxy-pattern/SKILL.md +79 -0
  3415. package/dist/agents/skills/cursor/js-proxy-pattern/skill.yaml +37 -0
  3416. package/dist/agents/skills/cursor/js-revealing-module-pattern/SKILL.md +77 -0
  3417. package/dist/agents/skills/cursor/js-revealing-module-pattern/skill.yaml +36 -0
  3418. package/dist/agents/skills/cursor/js-singleton-pattern/SKILL.md +80 -0
  3419. package/dist/agents/skills/cursor/js-singleton-pattern/skill.yaml +36 -0
  3420. package/dist/agents/skills/cursor/js-state-pattern/SKILL.md +90 -0
  3421. package/dist/agents/skills/cursor/js-state-pattern/skill.yaml +36 -0
  3422. package/dist/agents/skills/cursor/js-static-import/SKILL.md +63 -0
  3423. package/dist/agents/skills/cursor/js-static-import/skill.yaml +37 -0
  3424. package/dist/agents/skills/cursor/js-strategy-pattern/SKILL.md +71 -0
  3425. package/dist/agents/skills/cursor/js-strategy-pattern/skill.yaml +36 -0
  3426. package/dist/agents/skills/cursor/js-template-method-pattern/SKILL.md +80 -0
  3427. package/dist/agents/skills/cursor/js-template-method-pattern/skill.yaml +36 -0
  3428. package/dist/agents/skills/cursor/js-visitor-pattern/SKILL.md +85 -0
  3429. package/dist/agents/skills/cursor/js-visitor-pattern/skill.yaml +36 -0
  3430. package/dist/agents/skills/cursor/microservices-api-gateway/SKILL.md +211 -0
  3431. package/dist/agents/skills/cursor/microservices-api-gateway/skill.yaml +41 -0
  3432. package/dist/agents/skills/cursor/microservices-bulkhead-pattern/SKILL.md +215 -0
  3433. package/dist/agents/skills/cursor/microservices-bulkhead-pattern/skill.yaml +40 -0
  3434. package/dist/agents/skills/cursor/microservices-circuit-breaker/SKILL.md +208 -0
  3435. package/dist/agents/skills/cursor/microservices-circuit-breaker/skill.yaml +40 -0
  3436. package/dist/agents/skills/cursor/microservices-config-server/SKILL.md +231 -0
  3437. package/dist/agents/skills/cursor/microservices-config-server/skill.yaml +39 -0
  3438. package/dist/agents/skills/cursor/microservices-cqrs-pattern/SKILL.md +236 -0
  3439. package/dist/agents/skills/cursor/microservices-cqrs-pattern/skill.yaml +42 -0
  3440. package/dist/agents/skills/cursor/microservices-decomposition/SKILL.md +172 -0
  3441. package/dist/agents/skills/cursor/microservices-decomposition/skill.yaml +40 -0
  3442. package/dist/agents/skills/cursor/microservices-distributed-tracing/SKILL.md +222 -0
  3443. package/dist/agents/skills/cursor/microservices-distributed-tracing/skill.yaml +40 -0
  3444. package/dist/agents/skills/cursor/microservices-event-sourcing/SKILL.md +268 -0
  3445. package/dist/agents/skills/cursor/microservices-event-sourcing/skill.yaml +44 -0
  3446. package/dist/agents/skills/cursor/microservices-health-check/SKILL.md +212 -0
  3447. package/dist/agents/skills/cursor/microservices-health-check/skill.yaml +41 -0
  3448. package/dist/agents/skills/cursor/microservices-outbox-pattern/SKILL.md +252 -0
  3449. package/dist/agents/skills/cursor/microservices-outbox-pattern/skill.yaml +41 -0
  3450. package/dist/agents/skills/cursor/microservices-saga-pattern/SKILL.md +196 -0
  3451. package/dist/agents/skills/cursor/microservices-saga-pattern/skill.yaml +41 -0
  3452. package/dist/agents/skills/cursor/microservices-service-discovery/SKILL.md +186 -0
  3453. package/dist/agents/skills/cursor/microservices-service-discovery/skill.yaml +40 -0
  3454. package/dist/agents/skills/cursor/microservices-sidecar-pattern/SKILL.md +187 -0
  3455. package/dist/agents/skills/cursor/microservices-sidecar-pattern/skill.yaml +40 -0
  3456. package/dist/agents/skills/cursor/microservices-strangler-fig/SKILL.md +204 -0
  3457. package/dist/agents/skills/cursor/microservices-strangler-fig/skill.yaml +42 -0
  3458. package/dist/agents/skills/cursor/mobile-animation-patterns/SKILL.md +199 -0
  3459. package/dist/agents/skills/cursor/mobile-animation-patterns/skill.yaml +41 -0
  3460. package/dist/agents/skills/cursor/mobile-deployment-patterns/SKILL.md +262 -0
  3461. package/dist/agents/skills/cursor/mobile-deployment-patterns/skill.yaml +42 -0
  3462. package/dist/agents/skills/cursor/mobile-expo-setup/SKILL.md +194 -0
  3463. package/dist/agents/skills/cursor/mobile-expo-setup/skill.yaml +41 -0
  3464. package/dist/agents/skills/cursor/mobile-flatlist-patterns/SKILL.md +192 -0
  3465. package/dist/agents/skills/cursor/mobile-flatlist-patterns/skill.yaml +40 -0
  3466. package/dist/agents/skills/cursor/mobile-gesture-handling/SKILL.md +207 -0
  3467. package/dist/agents/skills/cursor/mobile-gesture-handling/skill.yaml +41 -0
  3468. package/dist/agents/skills/cursor/mobile-native-modules/SKILL.md +187 -0
  3469. package/dist/agents/skills/cursor/mobile-native-modules/skill.yaml +41 -0
  3470. package/dist/agents/skills/cursor/mobile-navigation-pattern/SKILL.md +227 -0
  3471. package/dist/agents/skills/cursor/mobile-navigation-pattern/skill.yaml +43 -0
  3472. package/dist/agents/skills/cursor/mobile-network-patterns/SKILL.md +274 -0
  3473. package/dist/agents/skills/cursor/mobile-network-patterns/skill.yaml +41 -0
  3474. package/dist/agents/skills/cursor/mobile-performance-patterns/SKILL.md +207 -0
  3475. package/dist/agents/skills/cursor/mobile-performance-patterns/skill.yaml +46 -0
  3476. package/dist/agents/skills/cursor/mobile-push-notifications/SKILL.md +235 -0
  3477. package/dist/agents/skills/cursor/mobile-push-notifications/skill.yaml +41 -0
  3478. package/dist/agents/skills/cursor/mobile-storage-patterns/SKILL.md +235 -0
  3479. package/dist/agents/skills/cursor/mobile-storage-patterns/skill.yaml +41 -0
  3480. package/dist/agents/skills/cursor/mobile-testing-patterns/SKILL.md +246 -0
  3481. package/dist/agents/skills/cursor/mobile-testing-patterns/skill.yaml +42 -0
  3482. package/dist/agents/skills/cursor/nestjs-config-module/SKILL.md +121 -0
  3483. package/dist/agents/skills/cursor/nestjs-config-module/skill.yaml +42 -0
  3484. package/dist/agents/skills/cursor/nestjs-controller-pattern/SKILL.md +93 -0
  3485. package/dist/agents/skills/cursor/nestjs-controller-pattern/skill.yaml +44 -0
  3486. package/dist/agents/skills/cursor/nestjs-dependency-injection/SKILL.md +97 -0
  3487. package/dist/agents/skills/cursor/nestjs-dependency-injection/skill.yaml +42 -0
  3488. package/dist/agents/skills/cursor/nestjs-dto-validation/SKILL.md +133 -0
  3489. package/dist/agents/skills/cursor/nestjs-dto-validation/skill.yaml +43 -0
  3490. package/dist/agents/skills/cursor/nestjs-event-driven/SKILL.md +123 -0
  3491. package/dist/agents/skills/cursor/nestjs-event-driven/skill.yaml +44 -0
  3492. package/dist/agents/skills/cursor/nestjs-exception-filters/SKILL.md +119 -0
  3493. package/dist/agents/skills/cursor/nestjs-exception-filters/skill.yaml +41 -0
  3494. package/dist/agents/skills/cursor/nestjs-graphql-integration/SKILL.md +132 -0
  3495. package/dist/agents/skills/cursor/nestjs-graphql-integration/skill.yaml +43 -0
  3496. package/dist/agents/skills/cursor/nestjs-guards-pattern/SKILL.md +101 -0
  3497. package/dist/agents/skills/cursor/nestjs-guards-pattern/skill.yaml +42 -0
  3498. package/dist/agents/skills/cursor/nestjs-interceptors-pattern/SKILL.md +106 -0
  3499. package/dist/agents/skills/cursor/nestjs-interceptors-pattern/skill.yaml +42 -0
  3500. package/dist/agents/skills/cursor/nestjs-microservices/SKILL.md +132 -0
  3501. package/dist/agents/skills/cursor/nestjs-microservices/skill.yaml +43 -0
  3502. package/dist/agents/skills/cursor/nestjs-middleware-pattern/SKILL.md +104 -0
  3503. package/dist/agents/skills/cursor/nestjs-middleware-pattern/skill.yaml +40 -0
  3504. package/dist/agents/skills/cursor/nestjs-module-pattern/SKILL.md +89 -0
  3505. package/dist/agents/skills/cursor/nestjs-module-pattern/skill.yaml +43 -0
  3506. package/dist/agents/skills/cursor/nestjs-pipes-pattern/SKILL.md +111 -0
  3507. package/dist/agents/skills/cursor/nestjs-pipes-pattern/skill.yaml +41 -0
  3508. package/dist/agents/skills/cursor/nestjs-service-pattern/SKILL.md +83 -0
  3509. package/dist/agents/skills/cursor/nestjs-service-pattern/skill.yaml +40 -0
  3510. package/dist/agents/skills/cursor/nestjs-swagger-integration/SKILL.md +137 -0
  3511. package/dist/agents/skills/cursor/nestjs-swagger-integration/skill.yaml +41 -0
  3512. package/dist/agents/skills/cursor/nestjs-testing-patterns/SKILL.md +130 -0
  3513. package/dist/agents/skills/cursor/nestjs-testing-patterns/skill.yaml +43 -0
  3514. package/dist/agents/skills/cursor/next-app-router/SKILL.md +77 -0
  3515. package/dist/agents/skills/cursor/next-app-router/skill.yaml +45 -0
  3516. package/dist/agents/skills/cursor/next-auth-patterns/SKILL.md +94 -0
  3517. package/dist/agents/skills/cursor/next-auth-patterns/skill.yaml +47 -0
  3518. package/dist/agents/skills/cursor/next-caching-strategies/SKILL.md +83 -0
  3519. package/dist/agents/skills/cursor/next-caching-strategies/skill.yaml +44 -0
  3520. package/dist/agents/skills/cursor/next-data-fetching/SKILL.md +97 -0
  3521. package/dist/agents/skills/cursor/next-data-fetching/skill.yaml +45 -0
  3522. package/dist/agents/skills/cursor/next-deployment-optimization/SKILL.md +92 -0
  3523. package/dist/agents/skills/cursor/next-deployment-optimization/skill.yaml +43 -0
  3524. package/dist/agents/skills/cursor/next-environment-config/SKILL.md +92 -0
  3525. package/dist/agents/skills/cursor/next-environment-config/skill.yaml +44 -0
  3526. package/dist/agents/skills/cursor/next-error-boundaries/SKILL.md +96 -0
  3527. package/dist/agents/skills/cursor/next-error-boundaries/skill.yaml +45 -0
  3528. package/dist/agents/skills/cursor/next-image-optimization/SKILL.md +91 -0
  3529. package/dist/agents/skills/cursor/next-image-optimization/skill.yaml +42 -0
  3530. package/dist/agents/skills/cursor/next-metadata-api/SKILL.md +94 -0
  3531. package/dist/agents/skills/cursor/next-metadata-api/skill.yaml +44 -0
  3532. package/dist/agents/skills/cursor/next-middleware-pattern/SKILL.md +80 -0
  3533. package/dist/agents/skills/cursor/next-middleware-pattern/skill.yaml +44 -0
  3534. package/dist/agents/skills/cursor/next-monorepo-setup/SKILL.md +103 -0
  3535. package/dist/agents/skills/cursor/next-monorepo-setup/skill.yaml +44 -0
  3536. package/dist/agents/skills/cursor/next-parallel-intercepting-routes/SKILL.md +98 -0
  3537. package/dist/agents/skills/cursor/next-parallel-intercepting-routes/skill.yaml +44 -0
  3538. package/dist/agents/skills/cursor/next-route-handlers/SKILL.md +80 -0
  3539. package/dist/agents/skills/cursor/next-route-handlers/skill.yaml +45 -0
  3540. package/dist/agents/skills/cursor/next-server-actions/SKILL.md +97 -0
  3541. package/dist/agents/skills/cursor/next-server-actions/skill.yaml +45 -0
  3542. package/dist/agents/skills/cursor/next-server-components/SKILL.md +82 -0
  3543. package/dist/agents/skills/cursor/next-server-components/skill.yaml +44 -0
  3544. package/dist/agents/skills/cursor/next-static-generation/SKILL.md +75 -0
  3545. package/dist/agents/skills/cursor/next-static-generation/skill.yaml +45 -0
  3546. package/dist/agents/skills/cursor/next-streaming-suspense/SKILL.md +86 -0
  3547. package/dist/agents/skills/cursor/next-streaming-suspense/skill.yaml +44 -0
  3548. package/dist/agents/skills/cursor/next-testing-patterns/SKILL.md +104 -0
  3549. package/dist/agents/skills/cursor/next-testing-patterns/skill.yaml +47 -0
  3550. package/dist/agents/skills/cursor/node-buffer-encoding/SKILL.md +138 -0
  3551. package/dist/agents/skills/cursor/node-buffer-encoding/skill.yaml +40 -0
  3552. package/dist/agents/skills/cursor/node-child-process/SKILL.md +162 -0
  3553. package/dist/agents/skills/cursor/node-child-process/skill.yaml +41 -0
  3554. package/dist/agents/skills/cursor/node-crypto-patterns/SKILL.md +147 -0
  3555. package/dist/agents/skills/cursor/node-crypto-patterns/skill.yaml +42 -0
  3556. package/dist/agents/skills/cursor/node-environment-config/SKILL.md +145 -0
  3557. package/dist/agents/skills/cursor/node-environment-config/skill.yaml +40 -0
  3558. package/dist/agents/skills/cursor/node-error-handling/SKILL.md +183 -0
  3559. package/dist/agents/skills/cursor/node-error-handling/skill.yaml +41 -0
  3560. package/dist/agents/skills/cursor/node-esm-patterns/SKILL.md +149 -0
  3561. package/dist/agents/skills/cursor/node-esm-patterns/skill.yaml +40 -0
  3562. package/dist/agents/skills/cursor/node-event-emitter/SKILL.md +144 -0
  3563. package/dist/agents/skills/cursor/node-event-emitter/skill.yaml +42 -0
  3564. package/dist/agents/skills/cursor/node-express-patterns/SKILL.md +193 -0
  3565. package/dist/agents/skills/cursor/node-express-patterns/skill.yaml +41 -0
  3566. package/dist/agents/skills/cursor/node-fastify-patterns/SKILL.md +200 -0
  3567. package/dist/agents/skills/cursor/node-fastify-patterns/skill.yaml +41 -0
  3568. package/dist/agents/skills/cursor/node-http-server/SKILL.md +159 -0
  3569. package/dist/agents/skills/cursor/node-http-server/skill.yaml +41 -0
  3570. package/dist/agents/skills/cursor/node-path-fs-patterns/SKILL.md +149 -0
  3571. package/dist/agents/skills/cursor/node-path-fs-patterns/skill.yaml +40 -0
  3572. package/dist/agents/skills/cursor/node-performance-profiling/SKILL.md +176 -0
  3573. package/dist/agents/skills/cursor/node-performance-profiling/skill.yaml +45 -0
  3574. package/dist/agents/skills/cursor/node-streams-pattern/SKILL.md +163 -0
  3575. package/dist/agents/skills/cursor/node-streams-pattern/skill.yaml +41 -0
  3576. package/dist/agents/skills/cursor/node-testing-patterns/SKILL.md +205 -0
  3577. package/dist/agents/skills/cursor/node-testing-patterns/skill.yaml +41 -0
  3578. package/dist/agents/skills/cursor/node-worker-threads/SKILL.md +169 -0
  3579. package/dist/agents/skills/cursor/node-worker-threads/skill.yaml +41 -0
  3580. package/dist/agents/skills/cursor/nuxt-auto-imports/SKILL.md +97 -0
  3581. package/dist/agents/skills/cursor/nuxt-auto-imports/skill.yaml +42 -0
  3582. package/dist/agents/skills/cursor/nuxt-composables-pattern/SKILL.md +119 -0
  3583. package/dist/agents/skills/cursor/nuxt-composables-pattern/skill.yaml +42 -0
  3584. package/dist/agents/skills/cursor/nuxt-deployment-config/SKILL.md +209 -0
  3585. package/dist/agents/skills/cursor/nuxt-deployment-config/skill.yaml +44 -0
  3586. package/dist/agents/skills/cursor/nuxt-layouts-pages/SKILL.md +210 -0
  3587. package/dist/agents/skills/cursor/nuxt-layouts-pages/skill.yaml +43 -0
  3588. package/dist/agents/skills/cursor/nuxt-middleware-pattern/SKILL.md +164 -0
  3589. package/dist/agents/skills/cursor/nuxt-middleware-pattern/skill.yaml +42 -0
  3590. package/dist/agents/skills/cursor/nuxt-modules-pattern/SKILL.md +193 -0
  3591. package/dist/agents/skills/cursor/nuxt-modules-pattern/skill.yaml +41 -0
  3592. package/dist/agents/skills/cursor/nuxt-plugins-pattern/SKILL.md +178 -0
  3593. package/dist/agents/skills/cursor/nuxt-plugins-pattern/skill.yaml +41 -0
  3594. package/dist/agents/skills/cursor/nuxt-seo-metadata/SKILL.md +185 -0
  3595. package/dist/agents/skills/cursor/nuxt-seo-metadata/skill.yaml +44 -0
  3596. package/dist/agents/skills/cursor/nuxt-server-routes/SKILL.md +154 -0
  3597. package/dist/agents/skills/cursor/nuxt-server-routes/skill.yaml +42 -0
  3598. package/dist/agents/skills/cursor/nuxt-state-management/SKILL.md +162 -0
  3599. package/dist/agents/skills/cursor/nuxt-state-management/skill.yaml +44 -0
  3600. package/dist/agents/skills/cursor/nuxt-testing-patterns/SKILL.md +203 -0
  3601. package/dist/agents/skills/cursor/nuxt-testing-patterns/skill.yaml +46 -0
  3602. package/dist/agents/skills/cursor/otel-context-propagation/SKILL.md +152 -0
  3603. package/dist/agents/skills/cursor/otel-context-propagation/skill.yaml +40 -0
  3604. package/dist/agents/skills/cursor/otel-custom-instrumentation/SKILL.md +166 -0
  3605. package/dist/agents/skills/cursor/otel-custom-instrumentation/skill.yaml +40 -0
  3606. package/dist/agents/skills/cursor/otel-error-tracking/SKILL.md +163 -0
  3607. package/dist/agents/skills/cursor/otel-error-tracking/skill.yaml +40 -0
  3608. package/dist/agents/skills/cursor/otel-exporter-config/SKILL.md +168 -0
  3609. package/dist/agents/skills/cursor/otel-exporter-config/skill.yaml +40 -0
  3610. package/dist/agents/skills/cursor/otel-logging-pattern/SKILL.md +161 -0
  3611. package/dist/agents/skills/cursor/otel-logging-pattern/skill.yaml +41 -0
  3612. package/dist/agents/skills/cursor/otel-metrics-pattern/SKILL.md +152 -0
  3613. package/dist/agents/skills/cursor/otel-metrics-pattern/skill.yaml +41 -0
  3614. package/dist/agents/skills/cursor/otel-nestjs-integration/SKILL.md +174 -0
  3615. package/dist/agents/skills/cursor/otel-nestjs-integration/skill.yaml +41 -0
  3616. package/dist/agents/skills/cursor/otel-nextjs-integration/SKILL.md +161 -0
  3617. package/dist/agents/skills/cursor/otel-nextjs-integration/skill.yaml +40 -0
  3618. package/dist/agents/skills/cursor/otel-performance-insights/SKILL.md +173 -0
  3619. package/dist/agents/skills/cursor/otel-performance-insights/skill.yaml +45 -0
  3620. package/dist/agents/skills/cursor/otel-sampling-strategies/SKILL.md +162 -0
  3621. package/dist/agents/skills/cursor/otel-sampling-strategies/skill.yaml +39 -0
  3622. package/dist/agents/skills/cursor/otel-sdk-setup/SKILL.md +145 -0
  3623. package/dist/agents/skills/cursor/otel-sdk-setup/skill.yaml +40 -0
  3624. package/dist/agents/skills/cursor/otel-tracing-pattern/SKILL.md +130 -0
  3625. package/dist/agents/skills/cursor/otel-tracing-pattern/skill.yaml +40 -0
  3626. package/dist/agents/skills/cursor/owasp-auth-patterns/SKILL.md +198 -0
  3627. package/dist/agents/skills/cursor/owasp-auth-patterns/skill.yaml +50 -0
  3628. package/dist/agents/skills/cursor/owasp-cryptography/SKILL.md +191 -0
  3629. package/dist/agents/skills/cursor/owasp-cryptography/skill.yaml +48 -0
  3630. package/dist/agents/skills/cursor/owasp-csrf-protection/SKILL.md +175 -0
  3631. package/dist/agents/skills/cursor/owasp-csrf-protection/skill.yaml +45 -0
  3632. package/dist/agents/skills/cursor/owasp-dependency-security/SKILL.md +173 -0
  3633. package/dist/agents/skills/cursor/owasp-dependency-security/skill.yaml +45 -0
  3634. package/dist/agents/skills/cursor/owasp-file-upload-security/SKILL.md +199 -0
  3635. package/dist/agents/skills/cursor/owasp-file-upload-security/skill.yaml +44 -0
  3636. package/dist/agents/skills/cursor/owasp-idor-prevention/SKILL.md +174 -0
  3637. package/dist/agents/skills/cursor/owasp-idor-prevention/skill.yaml +46 -0
  3638. package/dist/agents/skills/cursor/owasp-injection-prevention/SKILL.md +160 -0
  3639. package/dist/agents/skills/cursor/owasp-injection-prevention/skill.yaml +48 -0
  3640. package/dist/agents/skills/cursor/owasp-logging-monitoring/SKILL.md +214 -0
  3641. package/dist/agents/skills/cursor/owasp-logging-monitoring/skill.yaml +46 -0
  3642. package/dist/agents/skills/cursor/owasp-rate-limiting/SKILL.md +216 -0
  3643. package/dist/agents/skills/cursor/owasp-rate-limiting/skill.yaml +45 -0
  3644. package/dist/agents/skills/cursor/owasp-secrets-management/SKILL.md +172 -0
  3645. package/dist/agents/skills/cursor/owasp-secrets-management/skill.yaml +49 -0
  3646. package/dist/agents/skills/cursor/owasp-security-headers/SKILL.md +221 -0
  3647. package/dist/agents/skills/cursor/owasp-security-headers/skill.yaml +44 -0
  3648. package/dist/agents/skills/cursor/owasp-xss-prevention/SKILL.md +174 -0
  3649. package/dist/agents/skills/cursor/owasp-xss-prevention/skill.yaml +45 -0
  3650. package/dist/agents/skills/cursor/perf-browser-cache/SKILL.md +151 -0
  3651. package/dist/agents/skills/cursor/perf-browser-cache/skill.yaml +39 -0
  3652. package/dist/agents/skills/cursor/perf-bundle-analysis/SKILL.md +217 -0
  3653. package/dist/agents/skills/cursor/perf-bundle-analysis/skill.yaml +37 -0
  3654. package/dist/agents/skills/cursor/perf-cache-invalidation/SKILL.md +228 -0
  3655. package/dist/agents/skills/cursor/perf-cache-invalidation/skill.yaml +38 -0
  3656. package/dist/agents/skills/cursor/perf-cdn-cache-control/SKILL.md +198 -0
  3657. package/dist/agents/skills/cursor/perf-cdn-cache-control/skill.yaml +40 -0
  3658. package/dist/agents/skills/cursor/perf-cdn-strategies/SKILL.md +161 -0
  3659. package/dist/agents/skills/cursor/perf-cdn-strategies/skill.yaml +40 -0
  3660. package/dist/agents/skills/cursor/perf-client-side-rendering/SKILL.md +245 -0
  3661. package/dist/agents/skills/cursor/perf-client-side-rendering/skill.yaml +40 -0
  3662. package/dist/agents/skills/cursor/perf-code-splitting/SKILL.md +185 -0
  3663. package/dist/agents/skills/cursor/perf-code-splitting/skill.yaml +39 -0
  3664. package/dist/agents/skills/cursor/perf-compression/SKILL.md +163 -0
  3665. package/dist/agents/skills/cursor/perf-compression/skill.yaml +38 -0
  3666. package/dist/agents/skills/cursor/perf-connection-costs/SKILL.md +165 -0
  3667. package/dist/agents/skills/cursor/perf-connection-costs/skill.yaml +40 -0
  3668. package/dist/agents/skills/cursor/perf-connection-pooling/SKILL.md +250 -0
  3669. package/dist/agents/skills/cursor/perf-connection-pooling/skill.yaml +38 -0
  3670. package/dist/agents/skills/cursor/perf-critical-rendering-path/SKILL.md +167 -0
  3671. package/dist/agents/skills/cursor/perf-critical-rendering-path/skill.yaml +39 -0
  3672. package/dist/agents/skills/cursor/perf-cumulative-layout-shift/SKILL.md +180 -0
  3673. package/dist/agents/skills/cursor/perf-cumulative-layout-shift/skill.yaml +40 -0
  3674. package/dist/agents/skills/cursor/perf-dom-parsing/SKILL.md +153 -0
  3675. package/dist/agents/skills/cursor/perf-dom-parsing/skill.yaml +36 -0
  3676. package/dist/agents/skills/cursor/perf-edge-rendering/SKILL.md +222 -0
  3677. package/dist/agents/skills/cursor/perf-edge-rendering/skill.yaml +39 -0
  3678. package/dist/agents/skills/cursor/perf-event-loop/SKILL.md +203 -0
  3679. package/dist/agents/skills/cursor/perf-event-loop/skill.yaml +38 -0
  3680. package/dist/agents/skills/cursor/perf-font-loading/SKILL.md +222 -0
  3681. package/dist/agents/skills/cursor/perf-font-loading/skill.yaml +39 -0
  3682. package/dist/agents/skills/cursor/perf-garbage-collection/SKILL.md +192 -0
  3683. package/dist/agents/skills/cursor/perf-garbage-collection/skill.yaml +40 -0
  3684. package/dist/agents/skills/cursor/perf-heap-profiling/SKILL.md +160 -0
  3685. package/dist/agents/skills/cursor/perf-heap-profiling/skill.yaml +38 -0
  3686. package/dist/agents/skills/cursor/perf-http2-multiplexing/SKILL.md +163 -0
  3687. package/dist/agents/skills/cursor/perf-http2-multiplexing/skill.yaml +38 -0
  3688. package/dist/agents/skills/cursor/perf-http3-quic/SKILL.md +165 -0
  3689. package/dist/agents/skills/cursor/perf-http3-quic/skill.yaml +37 -0
  3690. package/dist/agents/skills/cursor/perf-image-formats/SKILL.md +183 -0
  3691. package/dist/agents/skills/cursor/perf-image-formats/skill.yaml +39 -0
  3692. package/dist/agents/skills/cursor/perf-index-strategies/SKILL.md +210 -0
  3693. package/dist/agents/skills/cursor/perf-index-strategies/skill.yaml +40 -0
  3694. package/dist/agents/skills/cursor/perf-interaction-to-next-paint/SKILL.md +170 -0
  3695. package/dist/agents/skills/cursor/perf-interaction-to-next-paint/skill.yaml +40 -0
  3696. package/dist/agents/skills/cursor/perf-largest-contentful-paint/SKILL.md +162 -0
  3697. package/dist/agents/skills/cursor/perf-largest-contentful-paint/skill.yaml +41 -0
  3698. package/dist/agents/skills/cursor/perf-layout-reflow/SKILL.md +187 -0
  3699. package/dist/agents/skills/cursor/perf-layout-reflow/skill.yaml +38 -0
  3700. package/dist/agents/skills/cursor/perf-lazy-loading/SKILL.md +217 -0
  3701. package/dist/agents/skills/cursor/perf-lazy-loading/skill.yaml +38 -0
  3702. package/dist/agents/skills/cursor/perf-lazy-loading-media/SKILL.md +233 -0
  3703. package/dist/agents/skills/cursor/perf-lazy-loading-media/skill.yaml +38 -0
  3704. package/dist/agents/skills/cursor/perf-long-tasks/SKILL.md +194 -0
  3705. package/dist/agents/skills/cursor/perf-long-tasks/skill.yaml +38 -0
  3706. package/dist/agents/skills/cursor/perf-memory-leaks/SKILL.md +218 -0
  3707. package/dist/agents/skills/cursor/perf-memory-leaks/skill.yaml +38 -0
  3708. package/dist/agents/skills/cursor/perf-module-federation/SKILL.md +242 -0
  3709. package/dist/agents/skills/cursor/perf-module-federation/skill.yaml +38 -0
  3710. package/dist/agents/skills/cursor/perf-n-plus-one/SKILL.md +237 -0
  3711. package/dist/agents/skills/cursor/perf-n-plus-one/skill.yaml +40 -0
  3712. package/dist/agents/skills/cursor/perf-paint-compositing/SKILL.md +181 -0
  3713. package/dist/agents/skills/cursor/perf-paint-compositing/skill.yaml +40 -0
  3714. package/dist/agents/skills/cursor/perf-performance-api/SKILL.md +249 -0
  3715. package/dist/agents/skills/cursor/perf-performance-api/skill.yaml +41 -0
  3716. package/dist/agents/skills/cursor/perf-profiling-methodology/SKILL.md +181 -0
  3717. package/dist/agents/skills/cursor/perf-profiling-methodology/skill.yaml +44 -0
  3718. package/dist/agents/skills/cursor/perf-query-optimization/SKILL.md +203 -0
  3719. package/dist/agents/skills/cursor/perf-query-optimization/skill.yaml +39 -0
  3720. package/dist/agents/skills/cursor/perf-resource-hints/SKILL.md +167 -0
  3721. package/dist/agents/skills/cursor/perf-resource-hints/skill.yaml +40 -0
  3722. package/dist/agents/skills/cursor/perf-responsive-images/SKILL.md +225 -0
  3723. package/dist/agents/skills/cursor/perf-responsive-images/skill.yaml +38 -0
  3724. package/dist/agents/skills/cursor/perf-server-side-caching/SKILL.md +194 -0
  3725. package/dist/agents/skills/cursor/perf-server-side-caching/skill.yaml +40 -0
  3726. package/dist/agents/skills/cursor/perf-server-side-rendering/SKILL.md +239 -0
  3727. package/dist/agents/skills/cursor/perf-server-side-rendering/skill.yaml +39 -0
  3728. package/dist/agents/skills/cursor/perf-service-worker-caching/SKILL.md +247 -0
  3729. package/dist/agents/skills/cursor/perf-service-worker-caching/skill.yaml +40 -0
  3730. package/dist/agents/skills/cursor/perf-static-generation/SKILL.md +241 -0
  3731. package/dist/agents/skills/cursor/perf-static-generation/skill.yaml +39 -0
  3732. package/dist/agents/skills/cursor/perf-streaming-rendering/SKILL.md +242 -0
  3733. package/dist/agents/skills/cursor/perf-streaming-rendering/skill.yaml +37 -0
  3734. package/dist/agents/skills/cursor/perf-style-calculation/SKILL.md +166 -0
  3735. package/dist/agents/skills/cursor/perf-style-calculation/skill.yaml +36 -0
  3736. package/dist/agents/skills/cursor/perf-svg-optimization/SKILL.md +249 -0
  3737. package/dist/agents/skills/cursor/perf-svg-optimization/skill.yaml +37 -0
  3738. package/dist/agents/skills/cursor/perf-tree-shaking/SKILL.md +225 -0
  3739. package/dist/agents/skills/cursor/perf-tree-shaking/skill.yaml +38 -0
  3740. package/dist/agents/skills/cursor/perf-web-workers/SKILL.md +237 -0
  3741. package/dist/agents/skills/cursor/perf-web-workers/skill.yaml +40 -0
  3742. package/dist/agents/skills/cursor/prisma-client-queries/SKILL.md +147 -0
  3743. package/dist/agents/skills/cursor/prisma-client-queries/skill.yaml +47 -0
  3744. package/dist/agents/skills/cursor/prisma-filtering-sorting/SKILL.md +157 -0
  3745. package/dist/agents/skills/cursor/prisma-filtering-sorting/skill.yaml +46 -0
  3746. package/dist/agents/skills/cursor/prisma-migrations/SKILL.md +115 -0
  3747. package/dist/agents/skills/cursor/prisma-migrations/skill.yaml +44 -0
  3748. package/dist/agents/skills/cursor/prisma-performance-patterns/SKILL.md +160 -0
  3749. package/dist/agents/skills/cursor/prisma-performance-patterns/skill.yaml +51 -0
  3750. package/dist/agents/skills/cursor/prisma-raw-queries/SKILL.md +125 -0
  3751. package/dist/agents/skills/cursor/prisma-raw-queries/skill.yaml +42 -0
  3752. package/dist/agents/skills/cursor/prisma-relations-pattern/SKILL.md +151 -0
  3753. package/dist/agents/skills/cursor/prisma-relations-pattern/skill.yaml +43 -0
  3754. package/dist/agents/skills/cursor/prisma-schema-design/SKILL.md +108 -0
  3755. package/dist/agents/skills/cursor/prisma-schema-design/skill.yaml +50 -0
  3756. package/dist/agents/skills/cursor/prisma-seeding-pattern/SKILL.md +168 -0
  3757. package/dist/agents/skills/cursor/prisma-seeding-pattern/skill.yaml +42 -0
  3758. package/dist/agents/skills/cursor/prisma-soft-delete/SKILL.md +172 -0
  3759. package/dist/agents/skills/cursor/prisma-soft-delete/skill.yaml +42 -0
  3760. package/dist/agents/skills/cursor/prisma-transactions/SKILL.md +147 -0
  3761. package/dist/agents/skills/cursor/prisma-transactions/skill.yaml +45 -0
  3762. package/dist/agents/skills/cursor/prisma-type-generation/SKILL.md +180 -0
  3763. package/dist/agents/skills/cursor/prisma-type-generation/skill.yaml +43 -0
  3764. package/dist/agents/skills/cursor/react-2026/SKILL.md +86 -0
  3765. package/dist/agents/skills/cursor/react-2026/skill.yaml +40 -0
  3766. package/dist/agents/skills/cursor/react-client-rendering/SKILL.md +60 -0
  3767. package/dist/agents/skills/cursor/react-client-rendering/skill.yaml +38 -0
  3768. package/dist/agents/skills/cursor/react-compound-pattern/SKILL.md +80 -0
  3769. package/dist/agents/skills/cursor/react-compound-pattern/skill.yaml +37 -0
  3770. package/dist/agents/skills/cursor/react-concurrent-ui/SKILL.md +59 -0
  3771. package/dist/agents/skills/cursor/react-concurrent-ui/skill.yaml +37 -0
  3772. package/dist/agents/skills/cursor/react-container-presentational/SKILL.md +76 -0
  3773. package/dist/agents/skills/cursor/react-container-presentational/skill.yaml +37 -0
  3774. package/dist/agents/skills/cursor/react-context-pattern/SKILL.md +75 -0
  3775. package/dist/agents/skills/cursor/react-context-pattern/skill.yaml +38 -0
  3776. package/dist/agents/skills/cursor/react-dynamic-import/SKILL.md +65 -0
  3777. package/dist/agents/skills/cursor/react-dynamic-import/skill.yaml +41 -0
  3778. package/dist/agents/skills/cursor/react-hoc-pattern/SKILL.md +71 -0
  3779. package/dist/agents/skills/cursor/react-hoc-pattern/skill.yaml +36 -0
  3780. package/dist/agents/skills/cursor/react-hooks-pattern/SKILL.md +74 -0
  3781. package/dist/agents/skills/cursor/react-hooks-pattern/skill.yaml +38 -0
  3782. package/dist/agents/skills/cursor/react-islands-pattern/SKILL.md +67 -0
  3783. package/dist/agents/skills/cursor/react-islands-pattern/skill.yaml +40 -0
  3784. package/dist/agents/skills/cursor/react-memoization-pattern/SKILL.md +64 -0
  3785. package/dist/agents/skills/cursor/react-memoization-pattern/skill.yaml +38 -0
  3786. package/dist/agents/skills/cursor/react-progressive-hydration/SKILL.md +74 -0
  3787. package/dist/agents/skills/cursor/react-progressive-hydration/skill.yaml +38 -0
  3788. package/dist/agents/skills/cursor/react-provider-pattern/SKILL.md +72 -0
  3789. package/dist/agents/skills/cursor/react-provider-pattern/skill.yaml +38 -0
  3790. package/dist/agents/skills/cursor/react-render-props-pattern/SKILL.md +73 -0
  3791. package/dist/agents/skills/cursor/react-render-props-pattern/skill.yaml +36 -0
  3792. package/dist/agents/skills/cursor/react-server-components/SKILL.md +81 -0
  3793. package/dist/agents/skills/cursor/react-server-components/skill.yaml +40 -0
  3794. package/dist/agents/skills/cursor/react-server-rendering/SKILL.md +63 -0
  3795. package/dist/agents/skills/cursor/react-server-rendering/skill.yaml +40 -0
  3796. package/dist/agents/skills/cursor/react-state-management-pattern/SKILL.md +72 -0
  3797. package/dist/agents/skills/cursor/react-state-management-pattern/skill.yaml +41 -0
  3798. package/dist/agents/skills/cursor/react-static-import/SKILL.md +61 -0
  3799. package/dist/agents/skills/cursor/react-static-import/skill.yaml +38 -0
  3800. package/dist/agents/skills/cursor/react-suspense-pattern/SKILL.md +62 -0
  3801. package/dist/agents/skills/cursor/react-suspense-pattern/skill.yaml +38 -0
  3802. package/dist/agents/skills/cursor/redux-entity-adapter/SKILL.md +120 -0
  3803. package/dist/agents/skills/cursor/redux-entity-adapter/skill.yaml +40 -0
  3804. package/dist/agents/skills/cursor/redux-listener-middleware/SKILL.md +117 -0
  3805. package/dist/agents/skills/cursor/redux-listener-middleware/skill.yaml +40 -0
  3806. package/dist/agents/skills/cursor/redux-persistence-pattern/SKILL.md +144 -0
  3807. package/dist/agents/skills/cursor/redux-persistence-pattern/skill.yaml +41 -0
  3808. package/dist/agents/skills/cursor/redux-rtk-optimistic/SKILL.md +117 -0
  3809. package/dist/agents/skills/cursor/redux-rtk-optimistic/skill.yaml +40 -0
  3810. package/dist/agents/skills/cursor/redux-rtk-query-endpoints/SKILL.md +131 -0
  3811. package/dist/agents/skills/cursor/redux-rtk-query-endpoints/skill.yaml +41 -0
  3812. package/dist/agents/skills/cursor/redux-rtk-query-setup/SKILL.md +117 -0
  3813. package/dist/agents/skills/cursor/redux-rtk-query-setup/skill.yaml +40 -0
  3814. package/dist/agents/skills/cursor/redux-selectors-pattern/SKILL.md +100 -0
  3815. package/dist/agents/skills/cursor/redux-selectors-pattern/skill.yaml +40 -0
  3816. package/dist/agents/skills/cursor/redux-slice-pattern/SKILL.md +117 -0
  3817. package/dist/agents/skills/cursor/redux-slice-pattern/skill.yaml +40 -0
  3818. package/dist/agents/skills/cursor/redux-store-setup/SKILL.md +103 -0
  3819. package/dist/agents/skills/cursor/redux-store-setup/skill.yaml +40 -0
  3820. package/dist/agents/skills/cursor/redux-testing-patterns/SKILL.md +138 -0
  3821. package/dist/agents/skills/cursor/redux-testing-patterns/skill.yaml +42 -0
  3822. package/dist/agents/skills/cursor/redux-thunk-pattern/SKILL.md +119 -0
  3823. package/dist/agents/skills/cursor/redux-thunk-pattern/skill.yaml +42 -0
  3824. package/dist/agents/skills/cursor/redux-typescript-patterns/SKILL.md +115 -0
  3825. package/dist/agents/skills/cursor/redux-typescript-patterns/skill.yaml +41 -0
  3826. package/dist/agents/skills/cursor/resilience-bulkhead-pattern/SKILL.md +145 -0
  3827. package/dist/agents/skills/cursor/resilience-bulkhead-pattern/skill.yaml +39 -0
  3828. package/dist/agents/skills/cursor/resilience-chaos-testing/SKILL.md +172 -0
  3829. package/dist/agents/skills/cursor/resilience-chaos-testing/skill.yaml +39 -0
  3830. package/dist/agents/skills/cursor/resilience-circuit-breaker/SKILL.md +159 -0
  3831. package/dist/agents/skills/cursor/resilience-circuit-breaker/skill.yaml +40 -0
  3832. package/dist/agents/skills/cursor/resilience-dead-letter/SKILL.md +185 -0
  3833. package/dist/agents/skills/cursor/resilience-dead-letter/skill.yaml +40 -0
  3834. package/dist/agents/skills/cursor/resilience-fallback-pattern/SKILL.md +155 -0
  3835. package/dist/agents/skills/cursor/resilience-fallback-pattern/skill.yaml +39 -0
  3836. package/dist/agents/skills/cursor/resilience-health-checks/SKILL.md +180 -0
  3837. package/dist/agents/skills/cursor/resilience-health-checks/skill.yaml +39 -0
  3838. package/dist/agents/skills/cursor/resilience-idempotency/SKILL.md +167 -0
  3839. package/dist/agents/skills/cursor/resilience-idempotency/skill.yaml +39 -0
  3840. package/dist/agents/skills/cursor/resilience-rate-limiting/SKILL.md +171 -0
  3841. package/dist/agents/skills/cursor/resilience-rate-limiting/skill.yaml +39 -0
  3842. package/dist/agents/skills/cursor/resilience-retry-pattern/SKILL.md +137 -0
  3843. package/dist/agents/skills/cursor/resilience-retry-pattern/skill.yaml +40 -0
  3844. package/dist/agents/skills/cursor/resilience-timeout-pattern/SKILL.md +148 -0
  3845. package/dist/agents/skills/cursor/resilience-timeout-pattern/skill.yaml +39 -0
  3846. package/dist/agents/skills/cursor/security-abac-design/SKILL.md +154 -0
  3847. package/dist/agents/skills/cursor/security-abac-design/skill.yaml +41 -0
  3848. package/dist/agents/skills/cursor/security-asymmetric-encryption/SKILL.md +201 -0
  3849. package/dist/agents/skills/cursor/security-asymmetric-encryption/skill.yaml +42 -0
  3850. package/dist/agents/skills/cursor/security-attack-trees/SKILL.md +150 -0
  3851. package/dist/agents/skills/cursor/security-attack-trees/skill.yaml +37 -0
  3852. package/dist/agents/skills/cursor/security-audit-log-design/SKILL.md +227 -0
  3853. package/dist/agents/skills/cursor/security-audit-log-design/skill.yaml +39 -0
  3854. package/dist/agents/skills/cursor/security-authentication-flows/SKILL.md +168 -0
  3855. package/dist/agents/skills/cursor/security-authentication-flows/skill.yaml +42 -0
  3856. package/dist/agents/skills/cursor/security-capability-based-security/SKILL.md +158 -0
  3857. package/dist/agents/skills/cursor/security-capability-based-security/skill.yaml +40 -0
  3858. package/dist/agents/skills/cursor/security-certificate-management/SKILL.md +153 -0
  3859. package/dist/agents/skills/cursor/security-certificate-management/skill.yaml +42 -0
  3860. package/dist/agents/skills/cursor/security-ci-security-testing/SKILL.md +159 -0
  3861. package/dist/agents/skills/cursor/security-ci-security-testing/skill.yaml +43 -0
  3862. package/dist/agents/skills/cursor/security-code-signing/SKILL.md +155 -0
  3863. package/dist/agents/skills/cursor/security-code-signing/skill.yaml +40 -0
  3864. package/dist/agents/skills/cursor/security-compliance-logging/SKILL.md +183 -0
  3865. package/dist/agents/skills/cursor/security-compliance-logging/skill.yaml +38 -0
  3866. package/dist/agents/skills/cursor/security-credential-storage/SKILL.md +222 -0
  3867. package/dist/agents/skills/cursor/security-credential-storage/skill.yaml +41 -0
  3868. package/dist/agents/skills/cursor/security-cryptographic-randomness/SKILL.md +154 -0
  3869. package/dist/agents/skills/cursor/security-cryptographic-randomness/skill.yaml +41 -0
  3870. package/dist/agents/skills/cursor/security-dependency-auditing/SKILL.md +156 -0
  3871. package/dist/agents/skills/cursor/security-dependency-auditing/skill.yaml +39 -0
  3872. package/dist/agents/skills/cursor/security-deserialization-attacks/SKILL.md +180 -0
  3873. package/dist/agents/skills/cursor/security-deserialization-attacks/skill.yaml +38 -0
  3874. package/dist/agents/skills/cursor/security-environment-variable-risks/SKILL.md +153 -0
  3875. package/dist/agents/skills/cursor/security-environment-variable-risks/skill.yaml +37 -0
  3876. package/dist/agents/skills/cursor/security-forensics-fundamentals/SKILL.md +198 -0
  3877. package/dist/agents/skills/cursor/security-forensics-fundamentals/skill.yaml +40 -0
  3878. package/dist/agents/skills/cursor/security-hashing-fundamentals/SKILL.md +212 -0
  3879. package/dist/agents/skills/cursor/security-hashing-fundamentals/skill.yaml +40 -0
  3880. package/dist/agents/skills/cursor/security-hmac-signatures/SKILL.md +165 -0
  3881. package/dist/agents/skills/cursor/security-hmac-signatures/skill.yaml +40 -0
  3882. package/dist/agents/skills/cursor/security-hsts-preloading/SKILL.md +154 -0
  3883. package/dist/agents/skills/cursor/security-hsts-preloading/skill.yaml +38 -0
  3884. package/dist/agents/skills/cursor/security-identity-verification/SKILL.md +157 -0
  3885. package/dist/agents/skills/cursor/security-identity-verification/skill.yaml +39 -0
  3886. package/dist/agents/skills/cursor/security-incident-containment/SKILL.md +190 -0
  3887. package/dist/agents/skills/cursor/security-incident-containment/skill.yaml +40 -0
  3888. package/dist/agents/skills/cursor/security-injection-families/SKILL.md +235 -0
  3889. package/dist/agents/skills/cursor/security-injection-families/skill.yaml +41 -0
  3890. package/dist/agents/skills/cursor/security-log-correlation/SKILL.md +178 -0
  3891. package/dist/agents/skills/cursor/security-log-correlation/skill.yaml +39 -0
  3892. package/dist/agents/skills/cursor/security-memory-safety/SKILL.md +234 -0
  3893. package/dist/agents/skills/cursor/security-memory-safety/skill.yaml +39 -0
  3894. package/dist/agents/skills/cursor/security-mfa-design/SKILL.md +150 -0
  3895. package/dist/agents/skills/cursor/security-mfa-design/skill.yaml +41 -0
  3896. package/dist/agents/skills/cursor/security-microsegmentation/SKILL.md +154 -0
  3897. package/dist/agents/skills/cursor/security-microsegmentation/skill.yaml +40 -0
  3898. package/dist/agents/skills/cursor/security-mtls-design/SKILL.md +158 -0
  3899. package/dist/agents/skills/cursor/security-mtls-design/skill.yaml +39 -0
  3900. package/dist/agents/skills/cursor/security-penetration-testing/SKILL.md +166 -0
  3901. package/dist/agents/skills/cursor/security-penetration-testing/skill.yaml +40 -0
  3902. package/dist/agents/skills/cursor/security-post-incident-review/SKILL.md +205 -0
  3903. package/dist/agents/skills/cursor/security-post-incident-review/skill.yaml +39 -0
  3904. package/dist/agents/skills/cursor/security-race-conditions/SKILL.md +186 -0
  3905. package/dist/agents/skills/cursor/security-race-conditions/skill.yaml +39 -0
  3906. package/dist/agents/skills/cursor/security-rbac-design/SKILL.md +209 -0
  3907. package/dist/agents/skills/cursor/security-rbac-design/skill.yaml +40 -0
  3908. package/dist/agents/skills/cursor/security-rebac-design/SKILL.md +154 -0
  3909. package/dist/agents/skills/cursor/security-rebac-design/skill.yaml +39 -0
  3910. package/dist/agents/skills/cursor/security-sbom-provenance/SKILL.md +157 -0
  3911. package/dist/agents/skills/cursor/security-sbom-provenance/skill.yaml +39 -0
  3912. package/dist/agents/skills/cursor/security-secrets-lifecycle/SKILL.md +190 -0
  3913. package/dist/agents/skills/cursor/security-secrets-lifecycle/skill.yaml +39 -0
  3914. package/dist/agents/skills/cursor/security-security-champions/SKILL.md +165 -0
  3915. package/dist/agents/skills/cursor/security-security-champions/skill.yaml +37 -0
  3916. package/dist/agents/skills/cursor/security-session-management/SKILL.md +196 -0
  3917. package/dist/agents/skills/cursor/security-session-management/skill.yaml +41 -0
  3918. package/dist/agents/skills/cursor/security-shift-left-design/SKILL.md +153 -0
  3919. package/dist/agents/skills/cursor/security-shift-left-design/skill.yaml +38 -0
  3920. package/dist/agents/skills/cursor/security-symmetric-encryption/SKILL.md +176 -0
  3921. package/dist/agents/skills/cursor/security-symmetric-encryption/skill.yaml +41 -0
  3922. package/dist/agents/skills/cursor/security-threat-modeling-process/SKILL.md +150 -0
  3923. package/dist/agents/skills/cursor/security-threat-modeling-process/skill.yaml +38 -0
  3924. package/dist/agents/skills/cursor/security-threat-modeling-stride/SKILL.md +150 -0
  3925. package/dist/agents/skills/cursor/security-threat-modeling-stride/skill.yaml +40 -0
  3926. package/dist/agents/skills/cursor/security-tls-fundamentals/SKILL.md +186 -0
  3927. package/dist/agents/skills/cursor/security-tls-fundamentals/skill.yaml +40 -0
  3928. package/dist/agents/skills/cursor/security-trust-boundaries/SKILL.md +152 -0
  3929. package/dist/agents/skills/cursor/security-trust-boundaries/skill.yaml +39 -0
  3930. package/dist/agents/skills/cursor/security-vault-patterns/SKILL.md +155 -0
  3931. package/dist/agents/skills/cursor/security-vault-patterns/skill.yaml +39 -0
  3932. package/dist/agents/skills/cursor/security-vulnerability-disclosure/SKILL.md +207 -0
  3933. package/dist/agents/skills/cursor/security-vulnerability-disclosure/skill.yaml +39 -0
  3934. package/dist/agents/skills/cursor/security-zero-trust-principles/SKILL.md +229 -0
  3935. package/dist/agents/skills/cursor/security-zero-trust-principles/skill.yaml +40 -0
  3936. package/dist/agents/skills/cursor/state-context-pattern/SKILL.md +143 -0
  3937. package/dist/agents/skills/cursor/state-context-pattern/skill.yaml +39 -0
  3938. package/dist/agents/skills/cursor/state-jotai-atoms/SKILL.md +153 -0
  3939. package/dist/agents/skills/cursor/state-jotai-atoms/skill.yaml +40 -0
  3940. package/dist/agents/skills/cursor/state-selection-patterns/SKILL.md +115 -0
  3941. package/dist/agents/skills/cursor/state-selection-patterns/skill.yaml +40 -0
  3942. package/dist/agents/skills/cursor/state-server-client-sync/SKILL.md +148 -0
  3943. package/dist/agents/skills/cursor/state-server-client-sync/skill.yaml +41 -0
  3944. package/dist/agents/skills/cursor/state-zustand-devtools/SKILL.md +120 -0
  3945. package/dist/agents/skills/cursor/state-zustand-devtools/skill.yaml +39 -0
  3946. package/dist/agents/skills/cursor/state-zustand-immer/SKILL.md +150 -0
  3947. package/dist/agents/skills/cursor/state-zustand-immer/skill.yaml +39 -0
  3948. package/dist/agents/skills/cursor/state-zustand-persist/SKILL.md +148 -0
  3949. package/dist/agents/skills/cursor/state-zustand-persist/skill.yaml +39 -0
  3950. package/dist/agents/skills/cursor/state-zustand-react/SKILL.md +136 -0
  3951. package/dist/agents/skills/cursor/state-zustand-react/skill.yaml +41 -0
  3952. package/dist/agents/skills/cursor/state-zustand-slices/SKILL.md +135 -0
  3953. package/dist/agents/skills/cursor/state-zustand-slices/skill.yaml +40 -0
  3954. package/dist/agents/skills/cursor/state-zustand-store/SKILL.md +123 -0
  3955. package/dist/agents/skills/cursor/state-zustand-store/skill.yaml +40 -0
  3956. package/dist/agents/skills/cursor/svelte-adapter-config/SKILL.md +262 -0
  3957. package/dist/agents/skills/cursor/svelte-adapter-config/skill.yaml +43 -0
  3958. package/dist/agents/skills/cursor/svelte-component-composition/SKILL.md +222 -0
  3959. package/dist/agents/skills/cursor/svelte-component-composition/skill.yaml +42 -0
  3960. package/dist/agents/skills/cursor/svelte-error-pages/SKILL.md +186 -0
  3961. package/dist/agents/skills/cursor/svelte-error-pages/skill.yaml +43 -0
  3962. package/dist/agents/skills/cursor/svelte-form-actions/SKILL.md +230 -0
  3963. package/dist/agents/skills/cursor/svelte-form-actions/skill.yaml +42 -0
  3964. package/dist/agents/skills/cursor/svelte-load-functions/SKILL.md +206 -0
  3965. package/dist/agents/skills/cursor/svelte-load-functions/skill.yaml +45 -0
  3966. package/dist/agents/skills/cursor/svelte-performance-patterns/SKILL.md +218 -0
  3967. package/dist/agents/skills/cursor/svelte-performance-patterns/skill.yaml +49 -0
  3968. package/dist/agents/skills/cursor/svelte-routing-pattern/SKILL.md +203 -0
  3969. package/dist/agents/skills/cursor/svelte-routing-pattern/skill.yaml +44 -0
  3970. package/dist/agents/skills/cursor/svelte-runes-pattern/SKILL.md +204 -0
  3971. package/dist/agents/skills/cursor/svelte-runes-pattern/skill.yaml +44 -0
  3972. package/dist/agents/skills/cursor/svelte-server-hooks/SKILL.md +239 -0
  3973. package/dist/agents/skills/cursor/svelte-server-hooks/skill.yaml +44 -0
  3974. package/dist/agents/skills/cursor/svelte-state-management/SKILL.md +196 -0
  3975. package/dist/agents/skills/cursor/svelte-state-management/skill.yaml +44 -0
  3976. package/dist/agents/skills/cursor/svelte-stores-pattern/SKILL.md +187 -0
  3977. package/dist/agents/skills/cursor/svelte-stores-pattern/skill.yaml +44 -0
  3978. package/dist/agents/skills/cursor/svelte-testing-patterns/SKILL.md +231 -0
  3979. package/dist/agents/skills/cursor/svelte-testing-patterns/skill.yaml +46 -0
  3980. package/dist/agents/skills/cursor/svelte-transitions-animations/SKILL.md +222 -0
  3981. package/dist/agents/skills/cursor/svelte-transitions-animations/skill.yaml +44 -0
  3982. package/dist/agents/skills/cursor/tanstack-cache-management/SKILL.md +108 -0
  3983. package/dist/agents/skills/cursor/tanstack-cache-management/skill.yaml +44 -0
  3984. package/dist/agents/skills/cursor/tanstack-dependent-queries/SKILL.md +108 -0
  3985. package/dist/agents/skills/cursor/tanstack-dependent-queries/skill.yaml +42 -0
  3986. package/dist/agents/skills/cursor/tanstack-devtools/SKILL.md +100 -0
  3987. package/dist/agents/skills/cursor/tanstack-devtools/skill.yaml +44 -0
  3988. package/dist/agents/skills/cursor/tanstack-infinite-queries/SKILL.md +106 -0
  3989. package/dist/agents/skills/cursor/tanstack-infinite-queries/skill.yaml +44 -0
  3990. package/dist/agents/skills/cursor/tanstack-mutation-patterns/SKILL.md +122 -0
  3991. package/dist/agents/skills/cursor/tanstack-mutation-patterns/skill.yaml +44 -0
  3992. package/dist/agents/skills/cursor/tanstack-optimistic-updates/SKILL.md +106 -0
  3993. package/dist/agents/skills/cursor/tanstack-optimistic-updates/skill.yaml +44 -0
  3994. package/dist/agents/skills/cursor/tanstack-prefetching/SKILL.md +106 -0
  3995. package/dist/agents/skills/cursor/tanstack-prefetching/skill.yaml +44 -0
  3996. package/dist/agents/skills/cursor/tanstack-query-invalidation/SKILL.md +95 -0
  3997. package/dist/agents/skills/cursor/tanstack-query-invalidation/skill.yaml +43 -0
  3998. package/dist/agents/skills/cursor/tanstack-query-keys/SKILL.md +94 -0
  3999. package/dist/agents/skills/cursor/tanstack-query-keys/skill.yaml +43 -0
  4000. package/dist/agents/skills/cursor/tanstack-suspense-mode/SKILL.md +96 -0
  4001. package/dist/agents/skills/cursor/tanstack-suspense-mode/skill.yaml +42 -0
  4002. package/dist/agents/skills/cursor/test-accessibility-testing/SKILL.md +201 -0
  4003. package/dist/agents/skills/cursor/test-accessibility-testing/skill.yaml +43 -0
  4004. package/dist/agents/skills/cursor/test-component-react/SKILL.md +173 -0
  4005. package/dist/agents/skills/cursor/test-component-react/skill.yaml +45 -0
  4006. package/dist/agents/skills/cursor/test-component-svelte/SKILL.md +184 -0
  4007. package/dist/agents/skills/cursor/test-component-svelte/skill.yaml +43 -0
  4008. package/dist/agents/skills/cursor/test-contract-testing/SKILL.md +180 -0
  4009. package/dist/agents/skills/cursor/test-contract-testing/skill.yaml +42 -0
  4010. package/dist/agents/skills/cursor/test-coverage-patterns/SKILL.md +165 -0
  4011. package/dist/agents/skills/cursor/test-coverage-patterns/skill.yaml +44 -0
  4012. package/dist/agents/skills/cursor/test-e2e-strategy/SKILL.md +146 -0
  4013. package/dist/agents/skills/cursor/test-e2e-strategy/skill.yaml +44 -0
  4014. package/dist/agents/skills/cursor/test-factory-patterns/SKILL.md +198 -0
  4015. package/dist/agents/skills/cursor/test-factory-patterns/skill.yaml +44 -0
  4016. package/dist/agents/skills/cursor/test-integration-patterns/SKILL.md +202 -0
  4017. package/dist/agents/skills/cursor/test-integration-patterns/skill.yaml +44 -0
  4018. package/dist/agents/skills/cursor/test-mock-patterns/SKILL.md +184 -0
  4019. package/dist/agents/skills/cursor/test-mock-patterns/skill.yaml +45 -0
  4020. package/dist/agents/skills/cursor/test-msw-pattern/SKILL.md +181 -0
  4021. package/dist/agents/skills/cursor/test-msw-pattern/skill.yaml +44 -0
  4022. package/dist/agents/skills/cursor/test-performance-testing/SKILL.md +199 -0
  4023. package/dist/agents/skills/cursor/test-performance-testing/skill.yaml +47 -0
  4024. package/dist/agents/skills/cursor/test-playwright-patterns/SKILL.md +197 -0
  4025. package/dist/agents/skills/cursor/test-playwright-patterns/skill.yaml +44 -0
  4026. package/dist/agents/skills/cursor/test-playwright-setup/SKILL.md +178 -0
  4027. package/dist/agents/skills/cursor/test-playwright-setup/skill.yaml +43 -0
  4028. package/dist/agents/skills/cursor/test-property-based/SKILL.md +172 -0
  4029. package/dist/agents/skills/cursor/test-property-based/skill.yaml +43 -0
  4030. package/dist/agents/skills/cursor/test-snapshot-patterns/SKILL.md +142 -0
  4031. package/dist/agents/skills/cursor/test-snapshot-patterns/skill.yaml +42 -0
  4032. package/dist/agents/skills/cursor/test-tdd-workflow/SKILL.md +185 -0
  4033. package/dist/agents/skills/cursor/test-tdd-workflow/skill.yaml +43 -0
  4034. package/dist/agents/skills/cursor/test-unit-patterns/SKILL.md +209 -0
  4035. package/dist/agents/skills/cursor/test-unit-patterns/skill.yaml +45 -0
  4036. package/dist/agents/skills/cursor/test-vitest-config/SKILL.md +212 -0
  4037. package/dist/agents/skills/cursor/test-vitest-config/skill.yaml +45 -0
  4038. package/dist/agents/skills/cursor/trpc-context-pattern/SKILL.md +190 -0
  4039. package/dist/agents/skills/cursor/trpc-context-pattern/skill.yaml +42 -0
  4040. package/dist/agents/skills/cursor/trpc-error-handling/SKILL.md +133 -0
  4041. package/dist/agents/skills/cursor/trpc-error-handling/skill.yaml +45 -0
  4042. package/dist/agents/skills/cursor/trpc-input-validation/SKILL.md +101 -0
  4043. package/dist/agents/skills/cursor/trpc-input-validation/skill.yaml +44 -0
  4044. package/dist/agents/skills/cursor/trpc-middleware-pattern/SKILL.md +99 -0
  4045. package/dist/agents/skills/cursor/trpc-middleware-pattern/skill.yaml +42 -0
  4046. package/dist/agents/skills/cursor/trpc-nextjs-integration/SKILL.md +203 -0
  4047. package/dist/agents/skills/cursor/trpc-nextjs-integration/skill.yaml +44 -0
  4048. package/dist/agents/skills/cursor/trpc-react-query-integration/SKILL.md +182 -0
  4049. package/dist/agents/skills/cursor/trpc-react-query-integration/skill.yaml +44 -0
  4050. package/dist/agents/skills/cursor/trpc-router-composition/SKILL.md +99 -0
  4051. package/dist/agents/skills/cursor/trpc-router-composition/skill.yaml +45 -0
  4052. package/dist/agents/skills/cursor/trpc-subscription-pattern/SKILL.md +118 -0
  4053. package/dist/agents/skills/cursor/trpc-subscription-pattern/skill.yaml +44 -0
  4054. package/dist/agents/skills/cursor/ts-async-patterns/SKILL.md +193 -0
  4055. package/dist/agents/skills/cursor/ts-async-patterns/skill.yaml +39 -0
  4056. package/dist/agents/skills/cursor/ts-branded-types/SKILL.md +161 -0
  4057. package/dist/agents/skills/cursor/ts-branded-types/skill.yaml +39 -0
  4058. package/dist/agents/skills/cursor/ts-class-patterns/SKILL.md +238 -0
  4059. package/dist/agents/skills/cursor/ts-class-patterns/skill.yaml +39 -0
  4060. package/dist/agents/skills/cursor/ts-conditional-types/SKILL.md +142 -0
  4061. package/dist/agents/skills/cursor/ts-conditional-types/skill.yaml +39 -0
  4062. package/dist/agents/skills/cursor/ts-config-patterns/SKILL.md +190 -0
  4063. package/dist/agents/skills/cursor/ts-config-patterns/skill.yaml +39 -0
  4064. package/dist/agents/skills/cursor/ts-declaration-merging/SKILL.md +187 -0
  4065. package/dist/agents/skills/cursor/ts-declaration-merging/skill.yaml +38 -0
  4066. package/dist/agents/skills/cursor/ts-decorator-patterns/SKILL.md +181 -0
  4067. package/dist/agents/skills/cursor/ts-decorator-patterns/skill.yaml +38 -0
  4068. package/dist/agents/skills/cursor/ts-discriminated-unions/SKILL.md +186 -0
  4069. package/dist/agents/skills/cursor/ts-discriminated-unions/skill.yaml +39 -0
  4070. package/dist/agents/skills/cursor/ts-error-handling-types/SKILL.md +205 -0
  4071. package/dist/agents/skills/cursor/ts-error-handling-types/skill.yaml +39 -0
  4072. package/dist/agents/skills/cursor/ts-generics-pattern/SKILL.md +104 -0
  4073. package/dist/agents/skills/cursor/ts-generics-pattern/skill.yaml +40 -0
  4074. package/dist/agents/skills/cursor/ts-mapped-types/SKILL.md +147 -0
  4075. package/dist/agents/skills/cursor/ts-mapped-types/skill.yaml +39 -0
  4076. package/dist/agents/skills/cursor/ts-module-patterns/SKILL.md +156 -0
  4077. package/dist/agents/skills/cursor/ts-module-patterns/skill.yaml +38 -0
  4078. package/dist/agents/skills/cursor/ts-performance-patterns/SKILL.md +158 -0
  4079. package/dist/agents/skills/cursor/ts-performance-patterns/skill.yaml +42 -0
  4080. package/dist/agents/skills/cursor/ts-satisfies-operator/SKILL.md +151 -0
  4081. package/dist/agents/skills/cursor/ts-satisfies-operator/skill.yaml +39 -0
  4082. package/dist/agents/skills/cursor/ts-strict-mode/SKILL.md +167 -0
  4083. package/dist/agents/skills/cursor/ts-strict-mode/skill.yaml +39 -0
  4084. package/dist/agents/skills/cursor/ts-template-literal-types/SKILL.md +146 -0
  4085. package/dist/agents/skills/cursor/ts-template-literal-types/skill.yaml +39 -0
  4086. package/dist/agents/skills/cursor/ts-testing-types/SKILL.md +166 -0
  4087. package/dist/agents/skills/cursor/ts-testing-types/skill.yaml +39 -0
  4088. package/dist/agents/skills/cursor/ts-type-guards/SKILL.md +168 -0
  4089. package/dist/agents/skills/cursor/ts-type-guards/skill.yaml +40 -0
  4090. package/dist/agents/skills/cursor/ts-utility-types/SKILL.md +119 -0
  4091. package/dist/agents/skills/cursor/ts-utility-types/skill.yaml +44 -0
  4092. package/dist/agents/skills/cursor/ts-zod-integration/SKILL.md +181 -0
  4093. package/dist/agents/skills/cursor/ts-zod-integration/skill.yaml +38 -0
  4094. package/dist/agents/skills/cursor/ux-active-voice/SKILL.md +150 -0
  4095. package/dist/agents/skills/cursor/ux-active-voice/skill.yaml +32 -0
  4096. package/dist/agents/skills/cursor/ux-button-cta-copy/SKILL.md +159 -0
  4097. package/dist/agents/skills/cursor/ux-button-cta-copy/skill.yaml +34 -0
  4098. package/dist/agents/skills/cursor/ux-confirmation-dialogs/SKILL.md +156 -0
  4099. package/dist/agents/skills/cursor/ux-confirmation-dialogs/skill.yaml +33 -0
  4100. package/dist/agents/skills/cursor/ux-content-hierarchy/SKILL.md +150 -0
  4101. package/dist/agents/skills/cursor/ux-content-hierarchy/skill.yaml +33 -0
  4102. package/dist/agents/skills/cursor/ux-data-table-copy/SKILL.md +154 -0
  4103. package/dist/agents/skills/cursor/ux-data-table-copy/skill.yaml +34 -0
  4104. package/dist/agents/skills/cursor/ux-destructive-action-copy/SKILL.md +152 -0
  4105. package/dist/agents/skills/cursor/ux-destructive-action-copy/skill.yaml +34 -0
  4106. package/dist/agents/skills/cursor/ux-empty-states/SKILL.md +155 -0
  4107. package/dist/agents/skills/cursor/ux-empty-states/skill.yaml +36 -0
  4108. package/dist/agents/skills/cursor/ux-error-messages/SKILL.md +159 -0
  4109. package/dist/agents/skills/cursor/ux-error-messages/skill.yaml +35 -0
  4110. package/dist/agents/skills/cursor/ux-error-severity/SKILL.md +155 -0
  4111. package/dist/agents/skills/cursor/ux-error-severity/skill.yaml +35 -0
  4112. package/dist/agents/skills/cursor/ux-form-labels/SKILL.md +159 -0
  4113. package/dist/agents/skills/cursor/ux-form-labels/skill.yaml +36 -0
  4114. package/dist/agents/skills/cursor/ux-inclusive-language/SKILL.md +161 -0
  4115. package/dist/agents/skills/cursor/ux-inclusive-language/skill.yaml +33 -0
  4116. package/dist/agents/skills/cursor/ux-internationalization-writing/SKILL.md +196 -0
  4117. package/dist/agents/skills/cursor/ux-internationalization-writing/skill.yaml +35 -0
  4118. package/dist/agents/skills/cursor/ux-loading-states/SKILL.md +162 -0
  4119. package/dist/agents/skills/cursor/ux-loading-states/skill.yaml +33 -0
  4120. package/dist/agents/skills/cursor/ux-microcopy-principles/SKILL.md +152 -0
  4121. package/dist/agents/skills/cursor/ux-microcopy-principles/skill.yaml +37 -0
  4122. package/dist/agents/skills/cursor/ux-navigation-labels/SKILL.md +163 -0
  4123. package/dist/agents/skills/cursor/ux-navigation-labels/skill.yaml +35 -0
  4124. package/dist/agents/skills/cursor/ux-notification-copy/SKILL.md +150 -0
  4125. package/dist/agents/skills/cursor/ux-notification-copy/skill.yaml +35 -0
  4126. package/dist/agents/skills/cursor/ux-onboarding-copy/SKILL.md +156 -0
  4127. package/dist/agents/skills/cursor/ux-onboarding-copy/skill.yaml +35 -0
  4128. package/dist/agents/skills/cursor/ux-permission-access-copy/SKILL.md +150 -0
  4129. package/dist/agents/skills/cursor/ux-permission-access-copy/skill.yaml +34 -0
  4130. package/dist/agents/skills/cursor/ux-plain-language/SKILL.md +157 -0
  4131. package/dist/agents/skills/cursor/ux-plain-language/skill.yaml +34 -0
  4132. package/dist/agents/skills/cursor/ux-search-copy/SKILL.md +154 -0
  4133. package/dist/agents/skills/cursor/ux-search-copy/skill.yaml +33 -0
  4134. package/dist/agents/skills/cursor/ux-settings-preferences/SKILL.md +152 -0
  4135. package/dist/agents/skills/cursor/ux-settings-preferences/skill.yaml +33 -0
  4136. package/dist/agents/skills/cursor/ux-success-feedback/SKILL.md +163 -0
  4137. package/dist/agents/skills/cursor/ux-success-feedback/skill.yaml +33 -0
  4138. package/dist/agents/skills/cursor/ux-tooltip-contextual-help/SKILL.md +163 -0
  4139. package/dist/agents/skills/cursor/ux-tooltip-contextual-help/skill.yaml +33 -0
  4140. package/dist/agents/skills/cursor/ux-voice-tone/SKILL.md +150 -0
  4141. package/dist/agents/skills/cursor/ux-voice-tone/skill.yaml +33 -0
  4142. package/dist/agents/skills/cursor/ux-writing-for-scanning/SKILL.md +150 -0
  4143. package/dist/agents/skills/cursor/ux-writing-for-scanning/skill.yaml +35 -0
  4144. package/dist/agents/skills/cursor/validate-context-engineering/skill.yaml +3 -0
  4145. package/dist/agents/skills/cursor/vue-async-components/SKILL.md +67 -0
  4146. package/dist/agents/skills/cursor/vue-async-components/skill.yaml +36 -0
  4147. package/dist/agents/skills/cursor/vue-component-events/SKILL.md +72 -0
  4148. package/dist/agents/skills/cursor/vue-component-events/skill.yaml +36 -0
  4149. package/dist/agents/skills/cursor/vue-composables-pattern/SKILL.md +75 -0
  4150. package/dist/agents/skills/cursor/vue-composables-pattern/skill.yaml +35 -0
  4151. package/dist/agents/skills/cursor/vue-directive-pattern/SKILL.md +66 -0
  4152. package/dist/agents/skills/cursor/vue-directive-pattern/skill.yaml +35 -0
  4153. package/dist/agents/skills/cursor/vue-pinia-pattern/SKILL.md +69 -0
  4154. package/dist/agents/skills/cursor/vue-pinia-pattern/skill.yaml +36 -0
  4155. package/dist/agents/skills/cursor/vue-provide-inject/SKILL.md +66 -0
  4156. package/dist/agents/skills/cursor/vue-provide-inject/skill.yaml +36 -0
  4157. package/dist/agents/skills/cursor/vue-reactive-refs/SKILL.md +67 -0
  4158. package/dist/agents/skills/cursor/vue-reactive-refs/skill.yaml +36 -0
  4159. package/dist/agents/skills/cursor/vue-renderless-components/SKILL.md +69 -0
  4160. package/dist/agents/skills/cursor/vue-renderless-components/skill.yaml +36 -0
  4161. package/dist/agents/skills/cursor/vue-slots-pattern/SKILL.md +72 -0
  4162. package/dist/agents/skills/cursor/vue-slots-pattern/skill.yaml +36 -0
  4163. package/dist/agents/skills/cursor/vue-teleport-pattern/SKILL.md +66 -0
  4164. package/dist/agents/skills/cursor/vue-teleport-pattern/skill.yaml +36 -0
  4165. package/dist/agents/skills/cursor/vue-watchers-pattern/SKILL.md +73 -0
  4166. package/dist/agents/skills/cursor/vue-watchers-pattern/skill.yaml +36 -0
  4167. package/dist/agents/skills/cursor/xstate-actor-pattern/SKILL.md +155 -0
  4168. package/dist/agents/skills/cursor/xstate-actor-pattern/skill.yaml +41 -0
  4169. package/dist/agents/skills/cursor/xstate-guards-actions/SKILL.md +153 -0
  4170. package/dist/agents/skills/cursor/xstate-guards-actions/skill.yaml +42 -0
  4171. package/dist/agents/skills/cursor/xstate-history-states/SKILL.md +123 -0
  4172. package/dist/agents/skills/cursor/xstate-history-states/skill.yaml +40 -0
  4173. package/dist/agents/skills/cursor/xstate-invoke-pattern/SKILL.md +165 -0
  4174. package/dist/agents/skills/cursor/xstate-invoke-pattern/skill.yaml +41 -0
  4175. package/dist/agents/skills/cursor/xstate-machine-definition/SKILL.md +151 -0
  4176. package/dist/agents/skills/cursor/xstate-machine-definition/skill.yaml +41 -0
  4177. package/dist/agents/skills/cursor/xstate-parallel-states/SKILL.md +130 -0
  4178. package/dist/agents/skills/cursor/xstate-parallel-states/skill.yaml +40 -0
  4179. package/dist/agents/skills/cursor/xstate-react-integration/SKILL.md +138 -0
  4180. package/dist/agents/skills/cursor/xstate-react-integration/skill.yaml +40 -0
  4181. package/dist/agents/skills/cursor/xstate-testing-patterns/SKILL.md +173 -0
  4182. package/dist/agents/skills/cursor/xstate-testing-patterns/skill.yaml +40 -0
  4183. package/dist/agents/skills/cursor/xstate-typegen/SKILL.md +168 -0
  4184. package/dist/agents/skills/cursor/xstate-typegen/skill.yaml +40 -0
  4185. package/dist/agents/skills/cursor/xstate-visualization/SKILL.md +124 -0
  4186. package/dist/agents/skills/cursor/xstate-visualization/skill.yaml +40 -0
  4187. package/dist/agents/skills/cursor/zod-array-validation/SKILL.md +160 -0
  4188. package/dist/agents/skills/cursor/zod-array-validation/skill.yaml +43 -0
  4189. package/dist/agents/skills/cursor/zod-async-validation/SKILL.md +205 -0
  4190. package/dist/agents/skills/cursor/zod-async-validation/skill.yaml +41 -0
  4191. package/dist/agents/skills/cursor/zod-error-handling/SKILL.md +206 -0
  4192. package/dist/agents/skills/cursor/zod-error-handling/skill.yaml +42 -0
  4193. package/dist/agents/skills/cursor/zod-infer-types/SKILL.md +192 -0
  4194. package/dist/agents/skills/cursor/zod-infer-types/skill.yaml +42 -0
  4195. package/dist/agents/skills/cursor/zod-nextjs-integration/SKILL.md +232 -0
  4196. package/dist/agents/skills/cursor/zod-nextjs-integration/skill.yaml +43 -0
  4197. package/dist/agents/skills/cursor/zod-object-patterns/SKILL.md +190 -0
  4198. package/dist/agents/skills/cursor/zod-object-patterns/skill.yaml +44 -0
  4199. package/dist/agents/skills/cursor/zod-schema-definition/SKILL.md +170 -0
  4200. package/dist/agents/skills/cursor/zod-schema-definition/skill.yaml +43 -0
  4201. package/dist/agents/skills/cursor/zod-string-validation/SKILL.md +180 -0
  4202. package/dist/agents/skills/cursor/zod-string-validation/skill.yaml +44 -0
  4203. package/dist/agents/skills/cursor/zod-transform-refine/SKILL.md +193 -0
  4204. package/dist/agents/skills/cursor/zod-transform-refine/skill.yaml +43 -0
  4205. package/dist/agents/skills/cursor/zod-union-discriminated/SKILL.md +168 -0
  4206. package/dist/agents/skills/cursor/zod-union-discriminated/skill.yaml +41 -0
  4207. package/dist/agents/skills/gemini-cli/a11y-aria-patterns/SKILL.md +183 -0
  4208. package/dist/agents/skills/gemini-cli/a11y-aria-patterns/skill.yaml +44 -0
  4209. package/dist/agents/skills/gemini-cli/a11y-color-contrast/SKILL.md +156 -0
  4210. package/dist/agents/skills/gemini-cli/a11y-color-contrast/skill.yaml +46 -0
  4211. package/dist/agents/skills/gemini-cli/a11y-form-patterns/SKILL.md +147 -0
  4212. package/dist/agents/skills/gemini-cli/a11y-form-patterns/skill.yaml +47 -0
  4213. package/dist/agents/skills/gemini-cli/a11y-image-text-alt/SKILL.md +159 -0
  4214. package/dist/agents/skills/gemini-cli/a11y-image-text-alt/skill.yaml +44 -0
  4215. package/dist/agents/skills/gemini-cli/a11y-keyboard-navigation/SKILL.md +169 -0
  4216. package/dist/agents/skills/gemini-cli/a11y-keyboard-navigation/skill.yaml +46 -0
  4217. package/dist/agents/skills/gemini-cli/a11y-modal-patterns/SKILL.md +201 -0
  4218. package/dist/agents/skills/gemini-cli/a11y-modal-patterns/skill.yaml +43 -0
  4219. package/dist/agents/skills/gemini-cli/a11y-motion-animation/SKILL.md +199 -0
  4220. package/dist/agents/skills/gemini-cli/a11y-motion-animation/skill.yaml +46 -0
  4221. package/dist/agents/skills/gemini-cli/a11y-screen-reader-testing/SKILL.md +138 -0
  4222. package/dist/agents/skills/gemini-cli/a11y-screen-reader-testing/skill.yaml +44 -0
  4223. package/dist/agents/skills/gemini-cli/a11y-semantic-html/SKILL.md +139 -0
  4224. package/dist/agents/skills/gemini-cli/a11y-semantic-html/skill.yaml +44 -0
  4225. package/dist/agents/skills/gemini-cli/a11y-testing-automation/SKILL.md +206 -0
  4226. package/dist/agents/skills/gemini-cli/a11y-testing-automation/skill.yaml +46 -0
  4227. package/dist/agents/skills/gemini-cli/add-harness-component/skill.yaml +3 -0
  4228. package/dist/agents/skills/gemini-cli/align-documentation/skill.yaml +3 -0
  4229. package/dist/agents/skills/gemini-cli/angular-component-pattern/SKILL.md +112 -0
  4230. package/dist/agents/skills/gemini-cli/angular-component-pattern/skill.yaml +47 -0
  4231. package/dist/agents/skills/gemini-cli/angular-directive-pattern/SKILL.md +166 -0
  4232. package/dist/agents/skills/gemini-cli/angular-directive-pattern/skill.yaml +45 -0
  4233. package/dist/agents/skills/gemini-cli/angular-http-interceptors/SKILL.md +174 -0
  4234. package/dist/agents/skills/gemini-cli/angular-http-interceptors/skill.yaml +45 -0
  4235. package/dist/agents/skills/gemini-cli/angular-lazy-loading/SKILL.md +156 -0
  4236. package/dist/agents/skills/gemini-cli/angular-lazy-loading/skill.yaml +45 -0
  4237. package/dist/agents/skills/gemini-cli/angular-performance-patterns/SKILL.md +141 -0
  4238. package/dist/agents/skills/gemini-cli/angular-performance-patterns/skill.yaml +51 -0
  4239. package/dist/agents/skills/gemini-cli/angular-pipe-pattern/SKILL.md +126 -0
  4240. package/dist/agents/skills/gemini-cli/angular-pipe-pattern/skill.yaml +45 -0
  4241. package/dist/agents/skills/gemini-cli/angular-reactive-forms/SKILL.md +136 -0
  4242. package/dist/agents/skills/gemini-cli/angular-reactive-forms/skill.yaml +45 -0
  4243. package/dist/agents/skills/gemini-cli/angular-routing-guards/SKILL.md +150 -0
  4244. package/dist/agents/skills/gemini-cli/angular-routing-guards/skill.yaml +45 -0
  4245. package/dist/agents/skills/gemini-cli/angular-rxjs-patterns/SKILL.md +152 -0
  4246. package/dist/agents/skills/gemini-cli/angular-rxjs-patterns/skill.yaml +46 -0
  4247. package/dist/agents/skills/gemini-cli/angular-schematics/SKILL.md +184 -0
  4248. package/dist/agents/skills/gemini-cli/angular-schematics/skill.yaml +45 -0
  4249. package/dist/agents/skills/gemini-cli/angular-service-di/SKILL.md +108 -0
  4250. package/dist/agents/skills/gemini-cli/angular-service-di/skill.yaml +46 -0
  4251. package/dist/agents/skills/gemini-cli/angular-signals-pattern/SKILL.md +116 -0
  4252. package/dist/agents/skills/gemini-cli/angular-signals-pattern/skill.yaml +45 -0
  4253. package/dist/agents/skills/gemini-cli/angular-standalone-components/SKILL.md +130 -0
  4254. package/dist/agents/skills/gemini-cli/angular-standalone-components/skill.yaml +45 -0
  4255. package/dist/agents/skills/gemini-cli/angular-state-management/SKILL.md +150 -0
  4256. package/dist/agents/skills/gemini-cli/angular-state-management/skill.yaml +46 -0
  4257. package/dist/agents/skills/gemini-cli/angular-testing-patterns/SKILL.md +180 -0
  4258. package/dist/agents/skills/gemini-cli/angular-testing-patterns/skill.yaml +46 -0
  4259. package/dist/agents/skills/gemini-cli/api-api-keys/SKILL.md +135 -0
  4260. package/dist/agents/skills/gemini-cli/api-api-keys/skill.yaml +41 -0
  4261. package/dist/agents/skills/gemini-cli/api-authentication-patterns/SKILL.md +117 -0
  4262. package/dist/agents/skills/gemini-cli/api-authentication-patterns/skill.yaml +44 -0
  4263. package/dist/agents/skills/gemini-cli/api-backward-compatibility/SKILL.md +170 -0
  4264. package/dist/agents/skills/gemini-cli/api-backward-compatibility/skill.yaml +39 -0
  4265. package/dist/agents/skills/gemini-cli/api-bulk-operations/SKILL.md +198 -0
  4266. package/dist/agents/skills/gemini-cli/api-bulk-operations/skill.yaml +39 -0
  4267. package/dist/agents/skills/gemini-cli/api-conditional-requests/SKILL.md +233 -0
  4268. package/dist/agents/skills/gemini-cli/api-conditional-requests/skill.yaml +41 -0
  4269. package/dist/agents/skills/gemini-cli/api-content-negotiation/SKILL.md +194 -0
  4270. package/dist/agents/skills/gemini-cli/api-content-negotiation/skill.yaml +39 -0
  4271. package/dist/agents/skills/gemini-cli/api-contract-testing/SKILL.md +222 -0
  4272. package/dist/agents/skills/gemini-cli/api-contract-testing/skill.yaml +42 -0
  4273. package/dist/agents/skills/gemini-cli/api-deprecation-strategy/SKILL.md +156 -0
  4274. package/dist/agents/skills/gemini-cli/api-deprecation-strategy/skill.yaml +39 -0
  4275. package/dist/agents/skills/gemini-cli/api-error-contracts/SKILL.md +149 -0
  4276. package/dist/agents/skills/gemini-cli/api-error-contracts/skill.yaml +40 -0
  4277. package/dist/agents/skills/gemini-cli/api-field-selection/SKILL.md +193 -0
  4278. package/dist/agents/skills/gemini-cli/api-field-selection/skill.yaml +39 -0
  4279. package/dist/agents/skills/gemini-cli/api-filtering-sorting/SKILL.md +170 -0
  4280. package/dist/agents/skills/gemini-cli/api-filtering-sorting/skill.yaml +40 -0
  4281. package/dist/agents/skills/gemini-cli/api-hateoas/SKILL.md +212 -0
  4282. package/dist/agents/skills/gemini-cli/api-hateoas/skill.yaml +40 -0
  4283. package/dist/agents/skills/gemini-cli/api-http-caching/SKILL.md +188 -0
  4284. package/dist/agents/skills/gemini-cli/api-http-caching/skill.yaml +43 -0
  4285. package/dist/agents/skills/gemini-cli/api-http-methods/SKILL.md +185 -0
  4286. package/dist/agents/skills/gemini-cli/api-http-methods/skill.yaml +43 -0
  4287. package/dist/agents/skills/gemini-cli/api-idempotency-keys/SKILL.md +176 -0
  4288. package/dist/agents/skills/gemini-cli/api-idempotency-keys/skill.yaml +40 -0
  4289. package/dist/agents/skills/gemini-cli/api-long-running-operations/SKILL.md +209 -0
  4290. package/dist/agents/skills/gemini-cli/api-long-running-operations/skill.yaml +40 -0
  4291. package/dist/agents/skills/gemini-cli/api-nested-vs-flat/SKILL.md +173 -0
  4292. package/dist/agents/skills/gemini-cli/api-nested-vs-flat/skill.yaml +39 -0
  4293. package/dist/agents/skills/gemini-cli/api-oauth2-flows/SKILL.md +150 -0
  4294. package/dist/agents/skills/gemini-cli/api-oauth2-flows/skill.yaml +42 -0
  4295. package/dist/agents/skills/gemini-cli/api-openapi-design/SKILL.md +260 -0
  4296. package/dist/agents/skills/gemini-cli/api-openapi-design/skill.yaml +44 -0
  4297. package/dist/agents/skills/gemini-cli/api-pagination-cursor/SKILL.md +159 -0
  4298. package/dist/agents/skills/gemini-cli/api-pagination-cursor/skill.yaml +40 -0
  4299. package/dist/agents/skills/gemini-cli/api-pagination-keyset/SKILL.md +167 -0
  4300. package/dist/agents/skills/gemini-cli/api-pagination-keyset/skill.yaml +39 -0
  4301. package/dist/agents/skills/gemini-cli/api-pagination-offset/SKILL.md +135 -0
  4302. package/dist/agents/skills/gemini-cli/api-pagination-offset/skill.yaml +39 -0
  4303. package/dist/agents/skills/gemini-cli/api-problem-details-rfc/SKILL.md +164 -0
  4304. package/dist/agents/skills/gemini-cli/api-problem-details-rfc/skill.yaml +38 -0
  4305. package/dist/agents/skills/gemini-cli/api-rate-limit-headers/SKILL.md +144 -0
  4306. package/dist/agents/skills/gemini-cli/api-rate-limit-headers/skill.yaml +39 -0
  4307. package/dist/agents/skills/gemini-cli/api-rate-limiting/SKILL.md +131 -0
  4308. package/dist/agents/skills/gemini-cli/api-rate-limiting/skill.yaml +41 -0
  4309. package/dist/agents/skills/gemini-cli/api-resource-granularity/SKILL.md +165 -0
  4310. package/dist/agents/skills/gemini-cli/api-resource-granularity/skill.yaml +40 -0
  4311. package/dist/agents/skills/gemini-cli/api-resource-modeling/SKILL.md +155 -0
  4312. package/dist/agents/skills/gemini-cli/api-resource-modeling/skill.yaml +40 -0
  4313. package/dist/agents/skills/gemini-cli/api-rest-maturity-model/SKILL.md +215 -0
  4314. package/dist/agents/skills/gemini-cli/api-rest-maturity-model/skill.yaml +39 -0
  4315. package/dist/agents/skills/gemini-cli/api-retry-guidance/SKILL.md +168 -0
  4316. package/dist/agents/skills/gemini-cli/api-retry-guidance/skill.yaml +41 -0
  4317. package/dist/agents/skills/gemini-cli/api-sdk-ergonomics/SKILL.md +194 -0
  4318. package/dist/agents/skills/gemini-cli/api-sdk-ergonomics/skill.yaml +43 -0
  4319. package/dist/agents/skills/gemini-cli/api-status-codes/SKILL.md +196 -0
  4320. package/dist/agents/skills/gemini-cli/api-status-codes/skill.yaml +46 -0
  4321. package/dist/agents/skills/gemini-cli/api-validation-errors/SKILL.md +174 -0
  4322. package/dist/agents/skills/gemini-cli/api-validation-errors/skill.yaml +40 -0
  4323. package/dist/agents/skills/gemini-cli/api-versioning-header/SKILL.md +177 -0
  4324. package/dist/agents/skills/gemini-cli/api-versioning-header/skill.yaml +37 -0
  4325. package/dist/agents/skills/gemini-cli/api-versioning-url/SKILL.md +128 -0
  4326. package/dist/agents/skills/gemini-cli/api-versioning-url/skill.yaml +39 -0
  4327. package/dist/agents/skills/gemini-cli/api-webhook-design/SKILL.md +165 -0
  4328. package/dist/agents/skills/gemini-cli/api-webhook-design/skill.yaml +41 -0
  4329. package/dist/agents/skills/gemini-cli/api-webhook-security/SKILL.md +176 -0
  4330. package/dist/agents/skills/gemini-cli/api-webhook-security/skill.yaml +41 -0
  4331. package/dist/agents/skills/gemini-cli/astro-component-pattern/SKILL.md +160 -0
  4332. package/dist/agents/skills/gemini-cli/astro-component-pattern/skill.yaml +45 -0
  4333. package/dist/agents/skills/gemini-cli/astro-content-collections/SKILL.md +155 -0
  4334. package/dist/agents/skills/gemini-cli/astro-content-collections/skill.yaml +43 -0
  4335. package/dist/agents/skills/gemini-cli/astro-deployment-config/SKILL.md +208 -0
  4336. package/dist/agents/skills/gemini-cli/astro-deployment-config/skill.yaml +47 -0
  4337. package/dist/agents/skills/gemini-cli/astro-image-optimization/SKILL.md +188 -0
  4338. package/dist/agents/skills/gemini-cli/astro-image-optimization/skill.yaml +46 -0
  4339. package/dist/agents/skills/gemini-cli/astro-integration-pattern/SKILL.md +164 -0
  4340. package/dist/agents/skills/gemini-cli/astro-integration-pattern/skill.yaml +45 -0
  4341. package/dist/agents/skills/gemini-cli/astro-islands-architecture/SKILL.md +103 -0
  4342. package/dist/agents/skills/gemini-cli/astro-islands-architecture/skill.yaml +45 -0
  4343. package/dist/agents/skills/gemini-cli/astro-multi-framework/SKILL.md +161 -0
  4344. package/dist/agents/skills/gemini-cli/astro-multi-framework/skill.yaml +47 -0
  4345. package/dist/agents/skills/gemini-cli/astro-routing-pattern/SKILL.md +135 -0
  4346. package/dist/agents/skills/gemini-cli/astro-routing-pattern/skill.yaml +44 -0
  4347. package/dist/agents/skills/gemini-cli/astro-server-endpoints/SKILL.md +173 -0
  4348. package/dist/agents/skills/gemini-cli/astro-server-endpoints/skill.yaml +45 -0
  4349. package/dist/agents/skills/gemini-cli/astro-ssr-hybrid/SKILL.md +191 -0
  4350. package/dist/agents/skills/gemini-cli/astro-ssr-hybrid/skill.yaml +47 -0
  4351. package/dist/agents/skills/gemini-cli/astro-view-transitions/SKILL.md +168 -0
  4352. package/dist/agents/skills/gemini-cli/astro-view-transitions/skill.yaml +46 -0
  4353. package/dist/agents/skills/gemini-cli/check-mechanical-constraints/skill.yaml +3 -0
  4354. package/dist/agents/skills/gemini-cli/cleanup-dead-code/skill.yaml +3 -0
  4355. package/dist/agents/skills/gemini-cli/css-animation-pattern/SKILL.md +143 -0
  4356. package/dist/agents/skills/gemini-cli/css-animation-pattern/skill.yaml +44 -0
  4357. package/dist/agents/skills/gemini-cli/css-component-variants/SKILL.md +147 -0
  4358. package/dist/agents/skills/gemini-cli/css-component-variants/skill.yaml +43 -0
  4359. package/dist/agents/skills/gemini-cli/css-css-modules/SKILL.md +168 -0
  4360. package/dist/agents/skills/gemini-cli/css-css-modules/skill.yaml +39 -0
  4361. package/dist/agents/skills/gemini-cli/css-custom-components/SKILL.md +178 -0
  4362. package/dist/agents/skills/gemini-cli/css-custom-components/skill.yaml +40 -0
  4363. package/dist/agents/skills/gemini-cli/css-dark-mode/SKILL.md +171 -0
  4364. package/dist/agents/skills/gemini-cli/css-dark-mode/skill.yaml +42 -0
  4365. package/dist/agents/skills/gemini-cli/css-design-tokens/SKILL.md +155 -0
  4366. package/dist/agents/skills/gemini-cli/css-design-tokens/skill.yaml +43 -0
  4367. package/dist/agents/skills/gemini-cli/css-headless-ui/SKILL.md +179 -0
  4368. package/dist/agents/skills/gemini-cli/css-headless-ui/skill.yaml +40 -0
  4369. package/dist/agents/skills/gemini-cli/css-layout-patterns/SKILL.md +155 -0
  4370. package/dist/agents/skills/gemini-cli/css-layout-patterns/skill.yaml +44 -0
  4371. package/dist/agents/skills/gemini-cli/css-performance-patterns/SKILL.md +163 -0
  4372. package/dist/agents/skills/gemini-cli/css-performance-patterns/skill.yaml +46 -0
  4373. package/dist/agents/skills/gemini-cli/css-responsive-design/SKILL.md +161 -0
  4374. package/dist/agents/skills/gemini-cli/css-responsive-design/skill.yaml +43 -0
  4375. package/dist/agents/skills/gemini-cli/css-tailwind-merge/SKILL.md +128 -0
  4376. package/dist/agents/skills/gemini-cli/css-tailwind-merge/skill.yaml +40 -0
  4377. package/dist/agents/skills/gemini-cli/css-tailwind-pattern/SKILL.md +126 -0
  4378. package/dist/agents/skills/gemini-cli/css-tailwind-pattern/skill.yaml +41 -0
  4379. package/dist/agents/skills/gemini-cli/db-acid-in-practice/SKILL.md +215 -0
  4380. package/dist/agents/skills/gemini-cli/db-acid-in-practice/skill.yaml +38 -0
  4381. package/dist/agents/skills/gemini-cli/db-acid-properties/SKILL.md +190 -0
  4382. package/dist/agents/skills/gemini-cli/db-acid-properties/skill.yaml +38 -0
  4383. package/dist/agents/skills/gemini-cli/db-adjacency-list/SKILL.md +199 -0
  4384. package/dist/agents/skills/gemini-cli/db-adjacency-list/skill.yaml +40 -0
  4385. package/dist/agents/skills/gemini-cli/db-audit-trail/SKILL.md +244 -0
  4386. package/dist/agents/skills/gemini-cli/db-audit-trail/skill.yaml +41 -0
  4387. package/dist/agents/skills/gemini-cli/db-btree-index/SKILL.md +182 -0
  4388. package/dist/agents/skills/gemini-cli/db-btree-index/skill.yaml +44 -0
  4389. package/dist/agents/skills/gemini-cli/db-cap-theorem/SKILL.md +156 -0
  4390. package/dist/agents/skills/gemini-cli/db-cap-theorem/skill.yaml +38 -0
  4391. package/dist/agents/skills/gemini-cli/db-closure-table/SKILL.md +197 -0
  4392. package/dist/agents/skills/gemini-cli/db-closure-table/skill.yaml +38 -0
  4393. package/dist/agents/skills/gemini-cli/db-composite-index/SKILL.md +199 -0
  4394. package/dist/agents/skills/gemini-cli/db-composite-index/skill.yaml +41 -0
  4395. package/dist/agents/skills/gemini-cli/db-connection-pooling/SKILL.md +196 -0
  4396. package/dist/agents/skills/gemini-cli/db-connection-pooling/skill.yaml +39 -0
  4397. package/dist/agents/skills/gemini-cli/db-connection-sizing/SKILL.md +236 -0
  4398. package/dist/agents/skills/gemini-cli/db-connection-sizing/skill.yaml +38 -0
  4399. package/dist/agents/skills/gemini-cli/db-covering-index/SKILL.md +203 -0
  4400. package/dist/agents/skills/gemini-cli/db-covering-index/skill.yaml +40 -0
  4401. package/dist/agents/skills/gemini-cli/db-deadlock-prevention/SKILL.md +204 -0
  4402. package/dist/agents/skills/gemini-cli/db-deadlock-prevention/skill.yaml +41 -0
  4403. package/dist/agents/skills/gemini-cli/db-denormalization/SKILL.md +176 -0
  4404. package/dist/agents/skills/gemini-cli/db-denormalization/skill.yaml +38 -0
  4405. package/dist/agents/skills/gemini-cli/db-document-in-relational/SKILL.md +225 -0
  4406. package/dist/agents/skills/gemini-cli/db-document-in-relational/skill.yaml +42 -0
  4407. package/dist/agents/skills/gemini-cli/db-entity-attribute-value/SKILL.md +186 -0
  4408. package/dist/agents/skills/gemini-cli/db-entity-attribute-value/skill.yaml +39 -0
  4409. package/dist/agents/skills/gemini-cli/db-eventual-consistency/SKILL.md +226 -0
  4410. package/dist/agents/skills/gemini-cli/db-eventual-consistency/skill.yaml +38 -0
  4411. package/dist/agents/skills/gemini-cli/db-expand-contract/SKILL.md +199 -0
  4412. package/dist/agents/skills/gemini-cli/db-expand-contract/skill.yaml +40 -0
  4413. package/dist/agents/skills/gemini-cli/db-explain-reading/SKILL.md +213 -0
  4414. package/dist/agents/skills/gemini-cli/db-explain-reading/skill.yaml +44 -0
  4415. package/dist/agents/skills/gemini-cli/db-expression-index/SKILL.md +211 -0
  4416. package/dist/agents/skills/gemini-cli/db-expression-index/skill.yaml +40 -0
  4417. package/dist/agents/skills/gemini-cli/db-first-normal-form/SKILL.md +190 -0
  4418. package/dist/agents/skills/gemini-cli/db-first-normal-form/skill.yaml +38 -0
  4419. package/dist/agents/skills/gemini-cli/db-graph-in-relational/SKILL.md +212 -0
  4420. package/dist/agents/skills/gemini-cli/db-graph-in-relational/skill.yaml +41 -0
  4421. package/dist/agents/skills/gemini-cli/db-hash-index/SKILL.md +176 -0
  4422. package/dist/agents/skills/gemini-cli/db-hash-index/skill.yaml +37 -0
  4423. package/dist/agents/skills/gemini-cli/db-hierarchical-data/SKILL.md +194 -0
  4424. package/dist/agents/skills/gemini-cli/db-hierarchical-data/skill.yaml +41 -0
  4425. package/dist/agents/skills/gemini-cli/db-horizontal-sharding/SKILL.md +228 -0
  4426. package/dist/agents/skills/gemini-cli/db-horizontal-sharding/skill.yaml +40 -0
  4427. package/dist/agents/skills/gemini-cli/db-isolation-levels/SKILL.md +158 -0
  4428. package/dist/agents/skills/gemini-cli/db-isolation-levels/skill.yaml +43 -0
  4429. package/dist/agents/skills/gemini-cli/db-isolation-selection/SKILL.md +160 -0
  4430. package/dist/agents/skills/gemini-cli/db-isolation-selection/skill.yaml +41 -0
  4431. package/dist/agents/skills/gemini-cli/db-migration-rollback/SKILL.md +223 -0
  4432. package/dist/agents/skills/gemini-cli/db-migration-rollback/skill.yaml +40 -0
  4433. package/dist/agents/skills/gemini-cli/db-mvcc/SKILL.md +191 -0
  4434. package/dist/agents/skills/gemini-cli/db-mvcc/skill.yaml +45 -0
  4435. package/dist/agents/skills/gemini-cli/db-nested-sets/SKILL.md +171 -0
  4436. package/dist/agents/skills/gemini-cli/db-nested-sets/skill.yaml +38 -0
  4437. package/dist/agents/skills/gemini-cli/db-optimistic-locking/SKILL.md +151 -0
  4438. package/dist/agents/skills/gemini-cli/db-optimistic-locking/skill.yaml +44 -0
  4439. package/dist/agents/skills/gemini-cli/db-partial-index/SKILL.md +196 -0
  4440. package/dist/agents/skills/gemini-cli/db-partial-index/skill.yaml +39 -0
  4441. package/dist/agents/skills/gemini-cli/db-pessimistic-locking/SKILL.md +158 -0
  4442. package/dist/agents/skills/gemini-cli/db-pessimistic-locking/skill.yaml +44 -0
  4443. package/dist/agents/skills/gemini-cli/db-polymorphic-associations/SKILL.md +187 -0
  4444. package/dist/agents/skills/gemini-cli/db-polymorphic-associations/skill.yaml +42 -0
  4445. package/dist/agents/skills/gemini-cli/db-query-rewriting/SKILL.md +249 -0
  4446. package/dist/agents/skills/gemini-cli/db-query-rewriting/skill.yaml +43 -0
  4447. package/dist/agents/skills/gemini-cli/db-query-statistics/SKILL.md +210 -0
  4448. package/dist/agents/skills/gemini-cli/db-query-statistics/skill.yaml +41 -0
  4449. package/dist/agents/skills/gemini-cli/db-read-phenomena/SKILL.md +205 -0
  4450. package/dist/agents/skills/gemini-cli/db-read-phenomena/skill.yaml +42 -0
  4451. package/dist/agents/skills/gemini-cli/db-scan-types/SKILL.md +248 -0
  4452. package/dist/agents/skills/gemini-cli/db-scan-types/skill.yaml +41 -0
  4453. package/dist/agents/skills/gemini-cli/db-second-normal-form/SKILL.md +183 -0
  4454. package/dist/agents/skills/gemini-cli/db-second-normal-form/skill.yaml +38 -0
  4455. package/dist/agents/skills/gemini-cli/db-table-partitioning/SKILL.md +229 -0
  4456. package/dist/agents/skills/gemini-cli/db-table-partitioning/skill.yaml +39 -0
  4457. package/dist/agents/skills/gemini-cli/db-temporal-data/SKILL.md +194 -0
  4458. package/dist/agents/skills/gemini-cli/db-temporal-data/skill.yaml +41 -0
  4459. package/dist/agents/skills/gemini-cli/db-third-normal-form/SKILL.md +210 -0
  4460. package/dist/agents/skills/gemini-cli/db-third-normal-form/skill.yaml +38 -0
  4461. package/dist/agents/skills/gemini-cli/db-time-series/SKILL.md +196 -0
  4462. package/dist/agents/skills/gemini-cli/db-time-series/skill.yaml +41 -0
  4463. package/dist/agents/skills/gemini-cli/db-vertical-partitioning/SKILL.md +249 -0
  4464. package/dist/agents/skills/gemini-cli/db-vertical-partitioning/skill.yaml +40 -0
  4465. package/dist/agents/skills/gemini-cli/db-zero-downtime-migration/SKILL.md +199 -0
  4466. package/dist/agents/skills/gemini-cli/db-zero-downtime-migration/skill.yaml +42 -0
  4467. package/dist/agents/skills/gemini-cli/design-affordances/SKILL.md +157 -0
  4468. package/dist/agents/skills/gemini-cli/design-affordances/skill.yaml +36 -0
  4469. package/dist/agents/skills/gemini-cli/design-alignment/SKILL.md +148 -0
  4470. package/dist/agents/skills/gemini-cli/design-alignment/skill.yaml +34 -0
  4471. package/dist/agents/skills/gemini-cli/design-apple-hig/SKILL.md +237 -0
  4472. package/dist/agents/skills/gemini-cli/design-apple-hig/skill.yaml +38 -0
  4473. package/dist/agents/skills/gemini-cli/design-atomic-design/SKILL.md +172 -0
  4474. package/dist/agents/skills/gemini-cli/design-atomic-design/skill.yaml +36 -0
  4475. package/dist/agents/skills/gemini-cli/design-brand-consistency/SKILL.md +167 -0
  4476. package/dist/agents/skills/gemini-cli/design-brand-consistency/skill.yaml +36 -0
  4477. package/dist/agents/skills/gemini-cli/design-color-accessibility/SKILL.md +161 -0
  4478. package/dist/agents/skills/gemini-cli/design-color-accessibility/skill.yaml +35 -0
  4479. package/dist/agents/skills/gemini-cli/design-color-harmony/SKILL.md +152 -0
  4480. package/dist/agents/skills/gemini-cli/design-color-harmony/skill.yaml +36 -0
  4481. package/dist/agents/skills/gemini-cli/design-color-psychology/SKILL.md +151 -0
  4482. package/dist/agents/skills/gemini-cli/design-color-psychology/skill.yaml +35 -0
  4483. package/dist/agents/skills/gemini-cli/design-component-anatomy/SKILL.md +243 -0
  4484. package/dist/agents/skills/gemini-cli/design-component-anatomy/skill.yaml +35 -0
  4485. package/dist/agents/skills/gemini-cli/design-consistency/SKILL.md +179 -0
  4486. package/dist/agents/skills/gemini-cli/design-consistency/skill.yaml +36 -0
  4487. package/dist/agents/skills/gemini-cli/design-content-density/SKILL.md +156 -0
  4488. package/dist/agents/skills/gemini-cli/design-content-density/skill.yaml +35 -0
  4489. package/dist/agents/skills/gemini-cli/design-contrast-ratio/SKILL.md +151 -0
  4490. package/dist/agents/skills/gemini-cli/design-contrast-ratio/skill.yaml +36 -0
  4491. package/dist/agents/skills/gemini-cli/design-dark-mode-color/SKILL.md +152 -0
  4492. package/dist/agents/skills/gemini-cli/design-dark-mode-color/skill.yaml +36 -0
  4493. package/dist/agents/skills/gemini-cli/design-data-viz-design/SKILL.md +178 -0
  4494. package/dist/agents/skills/gemini-cli/design-data-viz-design/skill.yaml +36 -0
  4495. package/dist/agents/skills/gemini-cli/design-design-audit/SKILL.md +193 -0
  4496. package/dist/agents/skills/gemini-cli/design-design-audit/skill.yaml +34 -0
  4497. package/dist/agents/skills/gemini-cli/design-design-critique/SKILL.md +175 -0
  4498. package/dist/agents/skills/gemini-cli/design-design-critique/skill.yaml +33 -0
  4499. package/dist/agents/skills/gemini-cli/design-design-documentation/SKILL.md +163 -0
  4500. package/dist/agents/skills/gemini-cli/design-design-documentation/skill.yaml +34 -0
  4501. package/dist/agents/skills/gemini-cli/design-design-governance/SKILL.md +187 -0
  4502. package/dist/agents/skills/gemini-cli/design-design-governance/skill.yaml +35 -0
  4503. package/dist/agents/skills/gemini-cli/design-elevation-shadow/SKILL.md +163 -0
  4504. package/dist/agents/skills/gemini-cli/design-elevation-shadow/skill.yaml +35 -0
  4505. package/dist/agents/skills/gemini-cli/design-empty-error-states/SKILL.md +154 -0
  4506. package/dist/agents/skills/gemini-cli/design-empty-error-states/skill.yaml +38 -0
  4507. package/dist/agents/skills/gemini-cli/design-feedback-patterns/SKILL.md +156 -0
  4508. package/dist/agents/skills/gemini-cli/design-feedback-patterns/skill.yaml +40 -0
  4509. package/dist/agents/skills/gemini-cli/design-fluent-design/SKILL.md +241 -0
  4510. package/dist/agents/skills/gemini-cli/design-fluent-design/skill.yaml +36 -0
  4511. package/dist/agents/skills/gemini-cli/design-font-pairing/SKILL.md +161 -0
  4512. package/dist/agents/skills/gemini-cli/design-font-pairing/skill.yaml +35 -0
  4513. package/dist/agents/skills/gemini-cli/design-form-ux/SKILL.md +156 -0
  4514. package/dist/agents/skills/gemini-cli/design-form-ux/skill.yaml +37 -0
  4515. package/dist/agents/skills/gemini-cli/design-gestalt-closure-continuity/SKILL.md +182 -0
  4516. package/dist/agents/skills/gemini-cli/design-gestalt-closure-continuity/skill.yaml +34 -0
  4517. package/dist/agents/skills/gemini-cli/design-gestalt-common-fate/SKILL.md +214 -0
  4518. package/dist/agents/skills/gemini-cli/design-gestalt-common-fate/skill.yaml +34 -0
  4519. package/dist/agents/skills/gemini-cli/design-gestalt-figure-ground/SKILL.md +189 -0
  4520. package/dist/agents/skills/gemini-cli/design-gestalt-figure-ground/skill.yaml +35 -0
  4521. package/dist/agents/skills/gemini-cli/design-gestalt-proximity/SKILL.md +162 -0
  4522. package/dist/agents/skills/gemini-cli/design-gestalt-proximity/skill.yaml +35 -0
  4523. package/dist/agents/skills/gemini-cli/design-gestalt-similarity/SKILL.md +175 -0
  4524. package/dist/agents/skills/gemini-cli/design-gestalt-similarity/skill.yaml +34 -0
  4525. package/dist/agents/skills/gemini-cli/design-grid-systems/SKILL.md +154 -0
  4526. package/dist/agents/skills/gemini-cli/design-grid-systems/skill.yaml +36 -0
  4527. package/dist/agents/skills/gemini-cli/design-i18n-design/SKILL.md +181 -0
  4528. package/dist/agents/skills/gemini-cli/design-i18n-design/skill.yaml +37 -0
  4529. package/dist/agents/skills/gemini-cli/design-iconography/SKILL.md +169 -0
  4530. package/dist/agents/skills/gemini-cli/design-iconography/skill.yaml +36 -0
  4531. package/dist/agents/skills/gemini-cli/design-illustration-style/SKILL.md +170 -0
  4532. package/dist/agents/skills/gemini-cli/design-illustration-style/skill.yaml +35 -0
  4533. package/dist/agents/skills/gemini-cli/design-imagery-photography/SKILL.md +172 -0
  4534. package/dist/agents/skills/gemini-cli/design-imagery-photography/skill.yaml +36 -0
  4535. package/dist/agents/skills/gemini-cli/design-information-architecture/SKILL.md +155 -0
  4536. package/dist/agents/skills/gemini-cli/design-information-architecture/skill.yaml +38 -0
  4537. package/dist/agents/skills/gemini-cli/design-loading-patterns/SKILL.md +175 -0
  4538. package/dist/agents/skills/gemini-cli/design-loading-patterns/skill.yaml +35 -0
  4539. package/dist/agents/skills/gemini-cli/design-material-design-3/SKILL.md +184 -0
  4540. package/dist/agents/skills/gemini-cli/design-material-design-3/skill.yaml +37 -0
  4541. package/dist/agents/skills/gemini-cli/design-micro-interactions/SKILL.md +156 -0
  4542. package/dist/agents/skills/gemini-cli/design-micro-interactions/skill.yaml +36 -0
  4543. package/dist/agents/skills/gemini-cli/design-motion-principles/SKILL.md +161 -0
  4544. package/dist/agents/skills/gemini-cli/design-motion-principles/skill.yaml +37 -0
  4545. package/dist/agents/skills/gemini-cli/design-naming-conventions/SKILL.md +200 -0
  4546. package/dist/agents/skills/gemini-cli/design-naming-conventions/skill.yaml +35 -0
  4547. package/dist/agents/skills/gemini-cli/design-navigation-ux/SKILL.md +150 -0
  4548. package/dist/agents/skills/gemini-cli/design-navigation-ux/skill.yaml +36 -0
  4549. package/dist/agents/skills/gemini-cli/design-palette-construction/SKILL.md +152 -0
  4550. package/dist/agents/skills/gemini-cli/design-palette-construction/skill.yaml +38 -0
  4551. package/dist/agents/skills/gemini-cli/design-parallax-scroll/SKILL.md +200 -0
  4552. package/dist/agents/skills/gemini-cli/design-parallax-scroll/skill.yaml +35 -0
  4553. package/dist/agents/skills/gemini-cli/design-readability/SKILL.md +183 -0
  4554. package/dist/agents/skills/gemini-cli/design-readability/skill.yaml +39 -0
  4555. package/dist/agents/skills/gemini-cli/design-responsive-strategy/SKILL.md +157 -0
  4556. package/dist/agents/skills/gemini-cli/design-responsive-strategy/skill.yaml +35 -0
  4557. package/dist/agents/skills/gemini-cli/design-responsive-type/SKILL.md +270 -0
  4558. package/dist/agents/skills/gemini-cli/design-responsive-type/skill.yaml +35 -0
  4559. package/dist/agents/skills/gemini-cli/design-state-design/SKILL.md +152 -0
  4560. package/dist/agents/skills/gemini-cli/design-state-design/skill.yaml +37 -0
  4561. package/dist/agents/skills/gemini-cli/design-token-architecture/SKILL.md +218 -0
  4562. package/dist/agents/skills/gemini-cli/design-token-architecture/skill.yaml +37 -0
  4563. package/dist/agents/skills/gemini-cli/design-transitions-timing/SKILL.md +183 -0
  4564. package/dist/agents/skills/gemini-cli/design-transitions-timing/skill.yaml +35 -0
  4565. package/dist/agents/skills/gemini-cli/design-type-scale/SKILL.md +157 -0
  4566. package/dist/agents/skills/gemini-cli/design-type-scale/skill.yaml +35 -0
  4567. package/dist/agents/skills/gemini-cli/design-typographic-hierarchy/SKILL.md +187 -0
  4568. package/dist/agents/skills/gemini-cli/design-typographic-hierarchy/skill.yaml +35 -0
  4569. package/dist/agents/skills/gemini-cli/design-typography-fundamentals/SKILL.md +158 -0
  4570. package/dist/agents/skills/gemini-cli/design-typography-fundamentals/skill.yaml +37 -0
  4571. package/dist/agents/skills/gemini-cli/design-visual-hierarchy/SKILL.md +150 -0
  4572. package/dist/agents/skills/gemini-cli/design-visual-hierarchy/skill.yaml +37 -0
  4573. package/dist/agents/skills/gemini-cli/design-web-fonts/SKILL.md +251 -0
  4574. package/dist/agents/skills/gemini-cli/design-web-fonts/skill.yaml +36 -0
  4575. package/dist/agents/skills/gemini-cli/design-whitespace/SKILL.md +150 -0
  4576. package/dist/agents/skills/gemini-cli/design-whitespace/skill.yaml +37 -0
  4577. package/dist/agents/skills/gemini-cli/detect-doc-drift/skill.yaml +3 -0
  4578. package/dist/agents/skills/gemini-cli/drizzle-filtering-pattern/SKILL.md +185 -0
  4579. package/dist/agents/skills/gemini-cli/drizzle-filtering-pattern/skill.yaml +44 -0
  4580. package/dist/agents/skills/gemini-cli/drizzle-migrations/SKILL.md +139 -0
  4581. package/dist/agents/skills/gemini-cli/drizzle-migrations/skill.yaml +42 -0
  4582. package/dist/agents/skills/gemini-cli/drizzle-performance-patterns/SKILL.md +176 -0
  4583. package/dist/agents/skills/gemini-cli/drizzle-performance-patterns/skill.yaml +50 -0
  4584. package/dist/agents/skills/gemini-cli/drizzle-query-builder/SKILL.md +206 -0
  4585. package/dist/agents/skills/gemini-cli/drizzle-query-builder/skill.yaml +45 -0
  4586. package/dist/agents/skills/gemini-cli/drizzle-raw-sql/SKILL.md +157 -0
  4587. package/dist/agents/skills/gemini-cli/drizzle-raw-sql/skill.yaml +40 -0
  4588. package/dist/agents/skills/gemini-cli/drizzle-relations-pattern/SKILL.md +179 -0
  4589. package/dist/agents/skills/gemini-cli/drizzle-relations-pattern/skill.yaml +42 -0
  4590. package/dist/agents/skills/gemini-cli/drizzle-schema-definition/SKILL.md +151 -0
  4591. package/dist/agents/skills/gemini-cli/drizzle-schema-definition/skill.yaml +50 -0
  4592. package/dist/agents/skills/gemini-cli/drizzle-transactions/SKILL.md +146 -0
  4593. package/dist/agents/skills/gemini-cli/drizzle-transactions/skill.yaml +43 -0
  4594. package/dist/agents/skills/gemini-cli/drizzle-with-nextjs/SKILL.md +199 -0
  4595. package/dist/agents/skills/gemini-cli/drizzle-with-nextjs/skill.yaml +44 -0
  4596. package/dist/agents/skills/gemini-cli/enforce-architecture/skill.yaml +3 -0
  4597. package/dist/agents/skills/gemini-cli/events-event-schema/SKILL.md +180 -0
  4598. package/dist/agents/skills/gemini-cli/events-event-schema/skill.yaml +45 -0
  4599. package/dist/agents/skills/gemini-cli/events-event-storming/SKILL.md +199 -0
  4600. package/dist/agents/skills/gemini-cli/events-event-storming/skill.yaml +45 -0
  4601. package/dist/agents/skills/gemini-cli/events-idempotency/SKILL.md +189 -0
  4602. package/dist/agents/skills/gemini-cli/events-idempotency/skill.yaml +45 -0
  4603. package/dist/agents/skills/gemini-cli/events-kafka-patterns/SKILL.md +190 -0
  4604. package/dist/agents/skills/gemini-cli/events-kafka-patterns/skill.yaml +45 -0
  4605. package/dist/agents/skills/gemini-cli/events-message-queue/SKILL.md +190 -0
  4606. package/dist/agents/skills/gemini-cli/events-message-queue/skill.yaml +44 -0
  4607. package/dist/agents/skills/gemini-cli/events-outbox-pattern/SKILL.md +212 -0
  4608. package/dist/agents/skills/gemini-cli/events-outbox-pattern/skill.yaml +44 -0
  4609. package/dist/agents/skills/gemini-cli/events-pubsub-pattern/SKILL.md +158 -0
  4610. package/dist/agents/skills/gemini-cli/events-pubsub-pattern/skill.yaml +45 -0
  4611. package/dist/agents/skills/gemini-cli/events-redis-pubsub/SKILL.md +183 -0
  4612. package/dist/agents/skills/gemini-cli/events-redis-pubsub/skill.yaml +43 -0
  4613. package/dist/agents/skills/gemini-cli/events-saga-choreography/SKILL.md +177 -0
  4614. package/dist/agents/skills/gemini-cli/events-saga-choreography/skill.yaml +44 -0
  4615. package/dist/agents/skills/gemini-cli/events-sse-pattern/SKILL.md +221 -0
  4616. package/dist/agents/skills/gemini-cli/events-sse-pattern/skill.yaml +43 -0
  4617. package/dist/agents/skills/gemini-cli/events-webhooks-pattern/SKILL.md +215 -0
  4618. package/dist/agents/skills/gemini-cli/events-webhooks-pattern/skill.yaml +46 -0
  4619. package/dist/agents/skills/gemini-cli/events-websocket-pattern/SKILL.md +252 -0
  4620. package/dist/agents/skills/gemini-cli/events-websocket-pattern/skill.yaml +44 -0
  4621. package/dist/agents/skills/gemini-cli/gof-abstract-factory/SKILL.md +193 -0
  4622. package/dist/agents/skills/gemini-cli/gof-abstract-factory/skill.yaml +36 -0
  4623. package/dist/agents/skills/gemini-cli/gof-adapter-pattern/SKILL.md +157 -0
  4624. package/dist/agents/skills/gemini-cli/gof-adapter-pattern/skill.yaml +37 -0
  4625. package/dist/agents/skills/gemini-cli/gof-bridge-pattern/SKILL.md +183 -0
  4626. package/dist/agents/skills/gemini-cli/gof-bridge-pattern/skill.yaml +36 -0
  4627. package/dist/agents/skills/gemini-cli/gof-builder-pattern/SKILL.md +236 -0
  4628. package/dist/agents/skills/gemini-cli/gof-builder-pattern/skill.yaml +36 -0
  4629. package/dist/agents/skills/gemini-cli/gof-chain-of-responsibility/SKILL.md +199 -0
  4630. package/dist/agents/skills/gemini-cli/gof-chain-of-responsibility/skill.yaml +36 -0
  4631. package/dist/agents/skills/gemini-cli/gof-command-pattern/SKILL.md +197 -0
  4632. package/dist/agents/skills/gemini-cli/gof-command-pattern/skill.yaml +36 -0
  4633. package/dist/agents/skills/gemini-cli/gof-composite-pattern/SKILL.md +188 -0
  4634. package/dist/agents/skills/gemini-cli/gof-composite-pattern/skill.yaml +36 -0
  4635. package/dist/agents/skills/gemini-cli/gof-decorator-pattern/SKILL.md +177 -0
  4636. package/dist/agents/skills/gemini-cli/gof-decorator-pattern/skill.yaml +37 -0
  4637. package/dist/agents/skills/gemini-cli/gof-facade-pattern/SKILL.md +143 -0
  4638. package/dist/agents/skills/gemini-cli/gof-facade-pattern/skill.yaml +36 -0
  4639. package/dist/agents/skills/gemini-cli/gof-factory-method/SKILL.md +148 -0
  4640. package/dist/agents/skills/gemini-cli/gof-factory-method/skill.yaml +37 -0
  4641. package/dist/agents/skills/gemini-cli/gof-flyweight-pattern/SKILL.md +160 -0
  4642. package/dist/agents/skills/gemini-cli/gof-flyweight-pattern/skill.yaml +36 -0
  4643. package/dist/agents/skills/gemini-cli/gof-iterator-pattern/SKILL.md +177 -0
  4644. package/dist/agents/skills/gemini-cli/gof-iterator-pattern/skill.yaml +36 -0
  4645. package/dist/agents/skills/gemini-cli/gof-mediator-pattern/SKILL.md +171 -0
  4646. package/dist/agents/skills/gemini-cli/gof-mediator-pattern/skill.yaml +36 -0
  4647. package/dist/agents/skills/gemini-cli/gof-memento-pattern/SKILL.md +207 -0
  4648. package/dist/agents/skills/gemini-cli/gof-memento-pattern/skill.yaml +35 -0
  4649. package/dist/agents/skills/gemini-cli/gof-null-object/SKILL.md +177 -0
  4650. package/dist/agents/skills/gemini-cli/gof-null-object/skill.yaml +36 -0
  4651. package/dist/agents/skills/gemini-cli/gof-observer-pattern/SKILL.md +175 -0
  4652. package/dist/agents/skills/gemini-cli/gof-observer-pattern/skill.yaml +38 -0
  4653. package/dist/agents/skills/gemini-cli/gof-prototype-pattern/SKILL.md +162 -0
  4654. package/dist/agents/skills/gemini-cli/gof-prototype-pattern/skill.yaml +36 -0
  4655. package/dist/agents/skills/gemini-cli/gof-proxy-pattern/SKILL.md +184 -0
  4656. package/dist/agents/skills/gemini-cli/gof-proxy-pattern/skill.yaml +37 -0
  4657. package/dist/agents/skills/gemini-cli/gof-singleton/SKILL.md +149 -0
  4658. package/dist/agents/skills/gemini-cli/gof-singleton/skill.yaml +36 -0
  4659. package/dist/agents/skills/gemini-cli/gof-state-pattern/SKILL.md +220 -0
  4660. package/dist/agents/skills/gemini-cli/gof-state-pattern/skill.yaml +36 -0
  4661. package/dist/agents/skills/gemini-cli/gof-strategy-pattern/SKILL.md +179 -0
  4662. package/dist/agents/skills/gemini-cli/gof-strategy-pattern/skill.yaml +36 -0
  4663. package/dist/agents/skills/gemini-cli/gof-template-method/SKILL.md +189 -0
  4664. package/dist/agents/skills/gemini-cli/gof-template-method/skill.yaml +36 -0
  4665. package/dist/agents/skills/gemini-cli/gof-visitor-pattern/SKILL.md +205 -0
  4666. package/dist/agents/skills/gemini-cli/gof-visitor-pattern/skill.yaml +35 -0
  4667. package/dist/agents/skills/gemini-cli/graphql-apollo-server/SKILL.md +169 -0
  4668. package/dist/agents/skills/gemini-cli/graphql-apollo-server/skill.yaml +42 -0
  4669. package/dist/agents/skills/gemini-cli/graphql-auth-patterns/SKILL.md +198 -0
  4670. package/dist/agents/skills/gemini-cli/graphql-auth-patterns/skill.yaml +45 -0
  4671. package/dist/agents/skills/gemini-cli/graphql-client-patterns/SKILL.md +152 -0
  4672. package/dist/agents/skills/gemini-cli/graphql-client-patterns/skill.yaml +42 -0
  4673. package/dist/agents/skills/gemini-cli/graphql-codegen-pattern/SKILL.md +154 -0
  4674. package/dist/agents/skills/gemini-cli/graphql-codegen-pattern/skill.yaml +40 -0
  4675. package/dist/agents/skills/gemini-cli/graphql-dataloader-pattern/SKILL.md +138 -0
  4676. package/dist/agents/skills/gemini-cli/graphql-dataloader-pattern/skill.yaml +39 -0
  4677. package/dist/agents/skills/gemini-cli/graphql-error-handling/SKILL.md +168 -0
  4678. package/dist/agents/skills/gemini-cli/graphql-error-handling/skill.yaml +42 -0
  4679. package/dist/agents/skills/gemini-cli/graphql-federation-pattern/SKILL.md +137 -0
  4680. package/dist/agents/skills/gemini-cli/graphql-federation-pattern/skill.yaml +42 -0
  4681. package/dist/agents/skills/gemini-cli/graphql-pagination-patterns/SKILL.md +176 -0
  4682. package/dist/agents/skills/gemini-cli/graphql-pagination-patterns/skill.yaml +44 -0
  4683. package/dist/agents/skills/gemini-cli/graphql-performance-patterns/SKILL.md +166 -0
  4684. package/dist/agents/skills/gemini-cli/graphql-performance-patterns/skill.yaml +45 -0
  4685. package/dist/agents/skills/gemini-cli/graphql-resolver-pattern/SKILL.md +129 -0
  4686. package/dist/agents/skills/gemini-cli/graphql-resolver-pattern/skill.yaml +40 -0
  4687. package/dist/agents/skills/gemini-cli/graphql-schema-design/SKILL.md +146 -0
  4688. package/dist/agents/skills/gemini-cli/graphql-schema-design/skill.yaml +44 -0
  4689. package/dist/agents/skills/gemini-cli/graphql-subscriptions/SKILL.md +198 -0
  4690. package/dist/agents/skills/gemini-cli/graphql-subscriptions/skill.yaml +40 -0
  4691. package/dist/agents/skills/gemini-cli/harness-accessibility/skill.yaml +3 -0
  4692. package/dist/agents/skills/gemini-cli/harness-api-design/skill.yaml +8 -0
  4693. package/dist/agents/skills/gemini-cli/harness-architecture-advisor/skill.yaml +3 -0
  4694. package/dist/agents/skills/gemini-cli/harness-auth/skill.yaml +7 -0
  4695. package/dist/agents/skills/gemini-cli/harness-autopilot/SKILL.md +171 -822
  4696. package/dist/agents/skills/gemini-cli/harness-autopilot/skill.yaml +3 -0
  4697. package/dist/agents/skills/gemini-cli/harness-brainstorming/SKILL.md +145 -195
  4698. package/dist/agents/skills/gemini-cli/harness-brainstorming/skill.yaml +6 -0
  4699. package/dist/agents/skills/gemini-cli/harness-caching/skill.yaml +6 -0
  4700. package/dist/agents/skills/gemini-cli/harness-chaos/skill.yaml +3 -0
  4701. package/dist/agents/skills/gemini-cli/harness-code-review/SKILL.md +267 -436
  4702. package/dist/agents/skills/gemini-cli/harness-code-review/skill.yaml +9 -0
  4703. package/dist/agents/skills/gemini-cli/harness-codebase-cleanup/skill.yaml +3 -0
  4704. package/dist/agents/skills/gemini-cli/harness-compliance/skill.yaml +3 -0
  4705. package/dist/agents/skills/gemini-cli/harness-containerization/skill.yaml +8 -0
  4706. package/dist/agents/skills/gemini-cli/harness-data-pipeline/skill.yaml +3 -0
  4707. package/dist/agents/skills/gemini-cli/harness-data-validation/skill.yaml +8 -0
  4708. package/dist/agents/skills/gemini-cli/harness-database/skill.yaml +15 -0
  4709. package/dist/agents/skills/gemini-cli/harness-debugging/skill.yaml +3 -0
  4710. package/dist/agents/skills/gemini-cli/harness-dependency-health/skill.yaml +3 -0
  4711. package/dist/agents/skills/gemini-cli/harness-deployment/skill.yaml +3 -0
  4712. package/dist/agents/skills/gemini-cli/harness-design/skill.yaml +9 -0
  4713. package/dist/agents/skills/gemini-cli/harness-design-mobile/skill.yaml +3 -0
  4714. package/dist/agents/skills/gemini-cli/harness-design-system/skill.yaml +10 -0
  4715. package/dist/agents/skills/gemini-cli/harness-design-web/skill.yaml +8 -0
  4716. package/dist/agents/skills/gemini-cli/harness-diagnostics/skill.yaml +3 -0
  4717. package/dist/agents/skills/gemini-cli/harness-docs-pipeline/skill.yaml +3 -0
  4718. package/dist/agents/skills/gemini-cli/harness-dx/skill.yaml +3 -0
  4719. package/dist/agents/skills/gemini-cli/harness-e2e/skill.yaml +15 -0
  4720. package/dist/agents/skills/gemini-cli/harness-event-driven/skill.yaml +8 -0
  4721. package/dist/agents/skills/gemini-cli/harness-execution/SKILL.md +180 -271
  4722. package/dist/agents/skills/gemini-cli/harness-execution/skill.yaml +15 -0
  4723. package/dist/agents/skills/gemini-cli/harness-feature-flags/skill.yaml +3 -0
  4724. package/dist/agents/skills/gemini-cli/harness-git-workflow/skill.yaml +3 -0
  4725. package/dist/agents/skills/gemini-cli/harness-hotspot-detector/skill.yaml +3 -0
  4726. package/dist/agents/skills/gemini-cli/harness-i18n/skill.yaml +3 -0
  4727. package/dist/agents/skills/gemini-cli/harness-i18n-process/skill.yaml +3 -0
  4728. package/dist/agents/skills/gemini-cli/harness-i18n-workflow/skill.yaml +3 -0
  4729. package/dist/agents/skills/gemini-cli/harness-impact-analysis/skill.yaml +3 -0
  4730. package/dist/agents/skills/gemini-cli/harness-incident-response/skill.yaml +3 -0
  4731. package/dist/agents/skills/gemini-cli/harness-infrastructure-as-code/skill.yaml +10 -0
  4732. package/dist/agents/skills/gemini-cli/harness-integration-test/skill.yaml +3 -0
  4733. package/dist/agents/skills/gemini-cli/harness-integrity/skill.yaml +3 -0
  4734. package/dist/agents/skills/gemini-cli/harness-knowledge-mapper/skill.yaml +3 -0
  4735. package/dist/agents/skills/gemini-cli/harness-load-testing/skill.yaml +3 -0
  4736. package/dist/agents/skills/gemini-cli/harness-ml-ops/skill.yaml +6 -0
  4737. package/dist/agents/skills/gemini-cli/harness-mobile-patterns/skill.yaml +13 -0
  4738. package/dist/agents/skills/gemini-cli/harness-mutation-test/skill.yaml +3 -0
  4739. package/dist/agents/skills/gemini-cli/harness-observability/skill.yaml +8 -0
  4740. package/dist/agents/skills/gemini-cli/harness-onboarding/skill.yaml +3 -0
  4741. package/dist/agents/skills/gemini-cli/harness-parallel-agents/skill.yaml +3 -0
  4742. package/dist/agents/skills/gemini-cli/harness-perf/skill.yaml +3 -0
  4743. package/dist/agents/skills/gemini-cli/harness-perf-tdd/skill.yaml +3 -0
  4744. package/dist/agents/skills/gemini-cli/harness-planning/SKILL.md +142 -322
  4745. package/dist/agents/skills/gemini-cli/harness-planning/skill.yaml +9 -0
  4746. package/dist/agents/skills/gemini-cli/harness-pre-commit-review/skill.yaml +2 -1
  4747. package/dist/agents/skills/gemini-cli/harness-product-spec/skill.yaml +3 -0
  4748. package/dist/agents/skills/gemini-cli/harness-property-test/skill.yaml +3 -0
  4749. package/dist/agents/skills/gemini-cli/harness-refactoring/skill.yaml +8 -0
  4750. package/dist/agents/skills/gemini-cli/harness-release-readiness/SKILL.md +16 -0
  4751. package/dist/agents/skills/gemini-cli/harness-release-readiness/skill.yaml +3 -0
  4752. package/dist/agents/skills/gemini-cli/harness-resilience/skill.yaml +8 -0
  4753. package/dist/agents/skills/gemini-cli/harness-roadmap/skill.yaml +3 -0
  4754. package/dist/agents/skills/gemini-cli/harness-roadmap-pilot/skill.yaml +3 -0
  4755. package/dist/agents/skills/gemini-cli/harness-router/SKILL.md +154 -0
  4756. package/dist/agents/skills/gemini-cli/harness-router/skill.yaml +47 -0
  4757. package/dist/agents/skills/gemini-cli/harness-secrets/SKILL.md +3 -3
  4758. package/dist/agents/skills/gemini-cli/harness-secrets/skill.yaml +3 -0
  4759. package/dist/agents/skills/gemini-cli/harness-security-review/skill.yaml +13 -0
  4760. package/dist/agents/skills/gemini-cli/harness-security-scan/skill.yaml +9 -0
  4761. package/dist/agents/skills/gemini-cli/harness-skill-authoring/SKILL.md +118 -0
  4762. package/dist/agents/skills/gemini-cli/harness-skill-authoring/skill.yaml +3 -0
  4763. package/dist/agents/skills/gemini-cli/harness-soundness-review/SKILL.md +483 -667
  4764. package/dist/agents/skills/gemini-cli/harness-soundness-review/skill.yaml +3 -0
  4765. package/dist/agents/skills/gemini-cli/harness-sql-review/skill.yaml +10 -0
  4766. package/dist/agents/skills/gemini-cli/harness-state-management/skill.yaml +8 -0
  4767. package/dist/agents/skills/gemini-cli/harness-supply-chain-audit/skill.yaml +3 -0
  4768. package/dist/agents/skills/gemini-cli/harness-tdd/skill.yaml +8 -0
  4769. package/dist/agents/skills/gemini-cli/harness-test-advisor/skill.yaml +3 -0
  4770. package/dist/agents/skills/gemini-cli/harness-test-data/skill.yaml +3 -0
  4771. package/dist/agents/skills/gemini-cli/harness-ux-copy/skill.yaml +15 -0
  4772. package/dist/agents/skills/gemini-cli/harness-verification/SKILL.md +135 -221
  4773. package/dist/agents/skills/gemini-cli/harness-verification/skill.yaml +6 -0
  4774. package/dist/agents/skills/gemini-cli/harness-verify/skill.yaml +3 -0
  4775. package/dist/agents/skills/gemini-cli/harness-visual-regression/skill.yaml +7 -0
  4776. package/dist/agents/skills/gemini-cli/initialize-harness-project/skill.yaml +3 -0
  4777. package/dist/agents/skills/gemini-cli/js-abstract-factory-pattern/SKILL.md +79 -0
  4778. package/dist/agents/skills/gemini-cli/js-abstract-factory-pattern/skill.yaml +36 -0
  4779. package/dist/agents/skills/gemini-cli/js-adapter-pattern/SKILL.md +77 -0
  4780. package/dist/agents/skills/gemini-cli/js-adapter-pattern/skill.yaml +36 -0
  4781. package/dist/agents/skills/gemini-cli/js-bridge-pattern/SKILL.md +90 -0
  4782. package/dist/agents/skills/gemini-cli/js-bridge-pattern/skill.yaml +36 -0
  4783. package/dist/agents/skills/gemini-cli/js-chain-of-responsibility-pattern/SKILL.md +81 -0
  4784. package/dist/agents/skills/gemini-cli/js-chain-of-responsibility-pattern/skill.yaml +36 -0
  4785. package/dist/agents/skills/gemini-cli/js-command-pattern/SKILL.md +81 -0
  4786. package/dist/agents/skills/gemini-cli/js-command-pattern/skill.yaml +37 -0
  4787. package/dist/agents/skills/gemini-cli/js-composite-pattern/SKILL.md +83 -0
  4788. package/dist/agents/skills/gemini-cli/js-composite-pattern/skill.yaml +36 -0
  4789. package/dist/agents/skills/gemini-cli/js-constructor-pattern/SKILL.md +78 -0
  4790. package/dist/agents/skills/gemini-cli/js-constructor-pattern/skill.yaml +37 -0
  4791. package/dist/agents/skills/gemini-cli/js-decorator-pattern/SKILL.md +73 -0
  4792. package/dist/agents/skills/gemini-cli/js-decorator-pattern/skill.yaml +36 -0
  4793. package/dist/agents/skills/gemini-cli/js-dynamic-import/SKILL.md +70 -0
  4794. package/dist/agents/skills/gemini-cli/js-dynamic-import/skill.yaml +37 -0
  4795. package/dist/agents/skills/gemini-cli/js-facade-pattern/SKILL.md +73 -0
  4796. package/dist/agents/skills/gemini-cli/js-facade-pattern/skill.yaml +36 -0
  4797. package/dist/agents/skills/gemini-cli/js-factory-pattern/SKILL.md +74 -0
  4798. package/dist/agents/skills/gemini-cli/js-factory-pattern/skill.yaml +36 -0
  4799. package/dist/agents/skills/gemini-cli/js-flyweight-pattern/SKILL.md +79 -0
  4800. package/dist/agents/skills/gemini-cli/js-flyweight-pattern/skill.yaml +37 -0
  4801. package/dist/agents/skills/gemini-cli/js-iterator-pattern/SKILL.md +78 -0
  4802. package/dist/agents/skills/gemini-cli/js-iterator-pattern/skill.yaml +37 -0
  4803. package/dist/agents/skills/gemini-cli/js-mediator-middleware-pattern/SKILL.md +92 -0
  4804. package/dist/agents/skills/gemini-cli/js-mediator-middleware-pattern/skill.yaml +37 -0
  4805. package/dist/agents/skills/gemini-cli/js-mixin-pattern/SKILL.md +85 -0
  4806. package/dist/agents/skills/gemini-cli/js-mixin-pattern/skill.yaml +36 -0
  4807. package/dist/agents/skills/gemini-cli/js-module-pattern/SKILL.md +75 -0
  4808. package/dist/agents/skills/gemini-cli/js-module-pattern/skill.yaml +37 -0
  4809. package/dist/agents/skills/gemini-cli/js-observer-pattern/SKILL.md +81 -0
  4810. package/dist/agents/skills/gemini-cli/js-observer-pattern/skill.yaml +37 -0
  4811. package/dist/agents/skills/gemini-cli/js-prototype-pattern/SKILL.md +70 -0
  4812. package/dist/agents/skills/gemini-cli/js-prototype-pattern/skill.yaml +36 -0
  4813. package/dist/agents/skills/gemini-cli/js-provider-pattern/SKILL.md +67 -0
  4814. package/dist/agents/skills/gemini-cli/js-provider-pattern/skill.yaml +36 -0
  4815. package/dist/agents/skills/gemini-cli/js-proxy-pattern/SKILL.md +79 -0
  4816. package/dist/agents/skills/gemini-cli/js-proxy-pattern/skill.yaml +37 -0
  4817. package/dist/agents/skills/gemini-cli/js-revealing-module-pattern/SKILL.md +77 -0
  4818. package/dist/agents/skills/gemini-cli/js-revealing-module-pattern/skill.yaml +36 -0
  4819. package/dist/agents/skills/gemini-cli/js-singleton-pattern/SKILL.md +80 -0
  4820. package/dist/agents/skills/gemini-cli/js-singleton-pattern/skill.yaml +36 -0
  4821. package/dist/agents/skills/gemini-cli/js-state-pattern/SKILL.md +90 -0
  4822. package/dist/agents/skills/gemini-cli/js-state-pattern/skill.yaml +36 -0
  4823. package/dist/agents/skills/gemini-cli/js-static-import/SKILL.md +63 -0
  4824. package/dist/agents/skills/gemini-cli/js-static-import/skill.yaml +37 -0
  4825. package/dist/agents/skills/gemini-cli/js-strategy-pattern/SKILL.md +71 -0
  4826. package/dist/agents/skills/gemini-cli/js-strategy-pattern/skill.yaml +36 -0
  4827. package/dist/agents/skills/gemini-cli/js-template-method-pattern/SKILL.md +80 -0
  4828. package/dist/agents/skills/gemini-cli/js-template-method-pattern/skill.yaml +36 -0
  4829. package/dist/agents/skills/gemini-cli/js-visitor-pattern/SKILL.md +85 -0
  4830. package/dist/agents/skills/gemini-cli/js-visitor-pattern/skill.yaml +36 -0
  4831. package/dist/agents/skills/gemini-cli/microservices-api-gateway/SKILL.md +211 -0
  4832. package/dist/agents/skills/gemini-cli/microservices-api-gateway/skill.yaml +41 -0
  4833. package/dist/agents/skills/gemini-cli/microservices-bulkhead-pattern/SKILL.md +215 -0
  4834. package/dist/agents/skills/gemini-cli/microservices-bulkhead-pattern/skill.yaml +40 -0
  4835. package/dist/agents/skills/gemini-cli/microservices-circuit-breaker/SKILL.md +208 -0
  4836. package/dist/agents/skills/gemini-cli/microservices-circuit-breaker/skill.yaml +40 -0
  4837. package/dist/agents/skills/gemini-cli/microservices-config-server/SKILL.md +231 -0
  4838. package/dist/agents/skills/gemini-cli/microservices-config-server/skill.yaml +39 -0
  4839. package/dist/agents/skills/gemini-cli/microservices-cqrs-pattern/SKILL.md +236 -0
  4840. package/dist/agents/skills/gemini-cli/microservices-cqrs-pattern/skill.yaml +42 -0
  4841. package/dist/agents/skills/gemini-cli/microservices-decomposition/SKILL.md +172 -0
  4842. package/dist/agents/skills/gemini-cli/microservices-decomposition/skill.yaml +40 -0
  4843. package/dist/agents/skills/gemini-cli/microservices-distributed-tracing/SKILL.md +222 -0
  4844. package/dist/agents/skills/gemini-cli/microservices-distributed-tracing/skill.yaml +40 -0
  4845. package/dist/agents/skills/gemini-cli/microservices-event-sourcing/SKILL.md +268 -0
  4846. package/dist/agents/skills/gemini-cli/microservices-event-sourcing/skill.yaml +44 -0
  4847. package/dist/agents/skills/gemini-cli/microservices-health-check/SKILL.md +212 -0
  4848. package/dist/agents/skills/gemini-cli/microservices-health-check/skill.yaml +41 -0
  4849. package/dist/agents/skills/gemini-cli/microservices-outbox-pattern/SKILL.md +252 -0
  4850. package/dist/agents/skills/gemini-cli/microservices-outbox-pattern/skill.yaml +41 -0
  4851. package/dist/agents/skills/gemini-cli/microservices-saga-pattern/SKILL.md +196 -0
  4852. package/dist/agents/skills/gemini-cli/microservices-saga-pattern/skill.yaml +41 -0
  4853. package/dist/agents/skills/gemini-cli/microservices-service-discovery/SKILL.md +186 -0
  4854. package/dist/agents/skills/gemini-cli/microservices-service-discovery/skill.yaml +40 -0
  4855. package/dist/agents/skills/gemini-cli/microservices-sidecar-pattern/SKILL.md +187 -0
  4856. package/dist/agents/skills/gemini-cli/microservices-sidecar-pattern/skill.yaml +40 -0
  4857. package/dist/agents/skills/gemini-cli/microservices-strangler-fig/SKILL.md +204 -0
  4858. package/dist/agents/skills/gemini-cli/microservices-strangler-fig/skill.yaml +42 -0
  4859. package/dist/agents/skills/gemini-cli/mobile-animation-patterns/SKILL.md +199 -0
  4860. package/dist/agents/skills/gemini-cli/mobile-animation-patterns/skill.yaml +41 -0
  4861. package/dist/agents/skills/gemini-cli/mobile-deployment-patterns/SKILL.md +262 -0
  4862. package/dist/agents/skills/gemini-cli/mobile-deployment-patterns/skill.yaml +42 -0
  4863. package/dist/agents/skills/gemini-cli/mobile-expo-setup/SKILL.md +194 -0
  4864. package/dist/agents/skills/gemini-cli/mobile-expo-setup/skill.yaml +41 -0
  4865. package/dist/agents/skills/gemini-cli/mobile-flatlist-patterns/SKILL.md +192 -0
  4866. package/dist/agents/skills/gemini-cli/mobile-flatlist-patterns/skill.yaml +40 -0
  4867. package/dist/agents/skills/gemini-cli/mobile-gesture-handling/SKILL.md +207 -0
  4868. package/dist/agents/skills/gemini-cli/mobile-gesture-handling/skill.yaml +41 -0
  4869. package/dist/agents/skills/gemini-cli/mobile-native-modules/SKILL.md +187 -0
  4870. package/dist/agents/skills/gemini-cli/mobile-native-modules/skill.yaml +41 -0
  4871. package/dist/agents/skills/gemini-cli/mobile-navigation-pattern/SKILL.md +227 -0
  4872. package/dist/agents/skills/gemini-cli/mobile-navigation-pattern/skill.yaml +43 -0
  4873. package/dist/agents/skills/gemini-cli/mobile-network-patterns/SKILL.md +274 -0
  4874. package/dist/agents/skills/gemini-cli/mobile-network-patterns/skill.yaml +41 -0
  4875. package/dist/agents/skills/gemini-cli/mobile-performance-patterns/SKILL.md +207 -0
  4876. package/dist/agents/skills/gemini-cli/mobile-performance-patterns/skill.yaml +46 -0
  4877. package/dist/agents/skills/gemini-cli/mobile-push-notifications/SKILL.md +235 -0
  4878. package/dist/agents/skills/gemini-cli/mobile-push-notifications/skill.yaml +41 -0
  4879. package/dist/agents/skills/gemini-cli/mobile-storage-patterns/SKILL.md +235 -0
  4880. package/dist/agents/skills/gemini-cli/mobile-storage-patterns/skill.yaml +41 -0
  4881. package/dist/agents/skills/gemini-cli/mobile-testing-patterns/SKILL.md +246 -0
  4882. package/dist/agents/skills/gemini-cli/mobile-testing-patterns/skill.yaml +42 -0
  4883. package/dist/agents/skills/gemini-cli/nestjs-config-module/SKILL.md +121 -0
  4884. package/dist/agents/skills/gemini-cli/nestjs-config-module/skill.yaml +42 -0
  4885. package/dist/agents/skills/gemini-cli/nestjs-controller-pattern/SKILL.md +93 -0
  4886. package/dist/agents/skills/gemini-cli/nestjs-controller-pattern/skill.yaml +44 -0
  4887. package/dist/agents/skills/gemini-cli/nestjs-dependency-injection/SKILL.md +97 -0
  4888. package/dist/agents/skills/gemini-cli/nestjs-dependency-injection/skill.yaml +42 -0
  4889. package/dist/agents/skills/gemini-cli/nestjs-dto-validation/SKILL.md +133 -0
  4890. package/dist/agents/skills/gemini-cli/nestjs-dto-validation/skill.yaml +43 -0
  4891. package/dist/agents/skills/gemini-cli/nestjs-event-driven/SKILL.md +123 -0
  4892. package/dist/agents/skills/gemini-cli/nestjs-event-driven/skill.yaml +44 -0
  4893. package/dist/agents/skills/gemini-cli/nestjs-exception-filters/SKILL.md +119 -0
  4894. package/dist/agents/skills/gemini-cli/nestjs-exception-filters/skill.yaml +41 -0
  4895. package/dist/agents/skills/gemini-cli/nestjs-graphql-integration/SKILL.md +132 -0
  4896. package/dist/agents/skills/gemini-cli/nestjs-graphql-integration/skill.yaml +43 -0
  4897. package/dist/agents/skills/gemini-cli/nestjs-guards-pattern/SKILL.md +101 -0
  4898. package/dist/agents/skills/gemini-cli/nestjs-guards-pattern/skill.yaml +42 -0
  4899. package/dist/agents/skills/gemini-cli/nestjs-interceptors-pattern/SKILL.md +106 -0
  4900. package/dist/agents/skills/gemini-cli/nestjs-interceptors-pattern/skill.yaml +42 -0
  4901. package/dist/agents/skills/gemini-cli/nestjs-microservices/SKILL.md +132 -0
  4902. package/dist/agents/skills/gemini-cli/nestjs-microservices/skill.yaml +43 -0
  4903. package/dist/agents/skills/gemini-cli/nestjs-middleware-pattern/SKILL.md +104 -0
  4904. package/dist/agents/skills/gemini-cli/nestjs-middleware-pattern/skill.yaml +40 -0
  4905. package/dist/agents/skills/gemini-cli/nestjs-module-pattern/SKILL.md +89 -0
  4906. package/dist/agents/skills/gemini-cli/nestjs-module-pattern/skill.yaml +43 -0
  4907. package/dist/agents/skills/gemini-cli/nestjs-pipes-pattern/SKILL.md +111 -0
  4908. package/dist/agents/skills/gemini-cli/nestjs-pipes-pattern/skill.yaml +41 -0
  4909. package/dist/agents/skills/gemini-cli/nestjs-service-pattern/SKILL.md +83 -0
  4910. package/dist/agents/skills/gemini-cli/nestjs-service-pattern/skill.yaml +40 -0
  4911. package/dist/agents/skills/gemini-cli/nestjs-swagger-integration/SKILL.md +137 -0
  4912. package/dist/agents/skills/gemini-cli/nestjs-swagger-integration/skill.yaml +41 -0
  4913. package/dist/agents/skills/gemini-cli/nestjs-testing-patterns/SKILL.md +130 -0
  4914. package/dist/agents/skills/gemini-cli/nestjs-testing-patterns/skill.yaml +43 -0
  4915. package/dist/agents/skills/gemini-cli/next-app-router/SKILL.md +77 -0
  4916. package/dist/agents/skills/gemini-cli/next-app-router/skill.yaml +45 -0
  4917. package/dist/agents/skills/gemini-cli/next-auth-patterns/SKILL.md +94 -0
  4918. package/dist/agents/skills/gemini-cli/next-auth-patterns/skill.yaml +47 -0
  4919. package/dist/agents/skills/gemini-cli/next-caching-strategies/SKILL.md +83 -0
  4920. package/dist/agents/skills/gemini-cli/next-caching-strategies/skill.yaml +44 -0
  4921. package/dist/agents/skills/gemini-cli/next-data-fetching/SKILL.md +97 -0
  4922. package/dist/agents/skills/gemini-cli/next-data-fetching/skill.yaml +45 -0
  4923. package/dist/agents/skills/gemini-cli/next-deployment-optimization/SKILL.md +92 -0
  4924. package/dist/agents/skills/gemini-cli/next-deployment-optimization/skill.yaml +43 -0
  4925. package/dist/agents/skills/gemini-cli/next-environment-config/SKILL.md +92 -0
  4926. package/dist/agents/skills/gemini-cli/next-environment-config/skill.yaml +44 -0
  4927. package/dist/agents/skills/gemini-cli/next-error-boundaries/SKILL.md +96 -0
  4928. package/dist/agents/skills/gemini-cli/next-error-boundaries/skill.yaml +45 -0
  4929. package/dist/agents/skills/gemini-cli/next-image-optimization/SKILL.md +91 -0
  4930. package/dist/agents/skills/gemini-cli/next-image-optimization/skill.yaml +42 -0
  4931. package/dist/agents/skills/gemini-cli/next-metadata-api/SKILL.md +94 -0
  4932. package/dist/agents/skills/gemini-cli/next-metadata-api/skill.yaml +44 -0
  4933. package/dist/agents/skills/gemini-cli/next-middleware-pattern/SKILL.md +80 -0
  4934. package/dist/agents/skills/gemini-cli/next-middleware-pattern/skill.yaml +44 -0
  4935. package/dist/agents/skills/gemini-cli/next-monorepo-setup/SKILL.md +103 -0
  4936. package/dist/agents/skills/gemini-cli/next-monorepo-setup/skill.yaml +44 -0
  4937. package/dist/agents/skills/gemini-cli/next-parallel-intercepting-routes/SKILL.md +98 -0
  4938. package/dist/agents/skills/gemini-cli/next-parallel-intercepting-routes/skill.yaml +44 -0
  4939. package/dist/agents/skills/gemini-cli/next-route-handlers/SKILL.md +80 -0
  4940. package/dist/agents/skills/gemini-cli/next-route-handlers/skill.yaml +45 -0
  4941. package/dist/agents/skills/gemini-cli/next-server-actions/SKILL.md +97 -0
  4942. package/dist/agents/skills/gemini-cli/next-server-actions/skill.yaml +45 -0
  4943. package/dist/agents/skills/gemini-cli/next-server-components/SKILL.md +82 -0
  4944. package/dist/agents/skills/gemini-cli/next-server-components/skill.yaml +44 -0
  4945. package/dist/agents/skills/gemini-cli/next-static-generation/SKILL.md +75 -0
  4946. package/dist/agents/skills/gemini-cli/next-static-generation/skill.yaml +45 -0
  4947. package/dist/agents/skills/gemini-cli/next-streaming-suspense/SKILL.md +86 -0
  4948. package/dist/agents/skills/gemini-cli/next-streaming-suspense/skill.yaml +44 -0
  4949. package/dist/agents/skills/gemini-cli/next-testing-patterns/SKILL.md +104 -0
  4950. package/dist/agents/skills/gemini-cli/next-testing-patterns/skill.yaml +47 -0
  4951. package/dist/agents/skills/gemini-cli/node-buffer-encoding/SKILL.md +138 -0
  4952. package/dist/agents/skills/gemini-cli/node-buffer-encoding/skill.yaml +40 -0
  4953. package/dist/agents/skills/gemini-cli/node-child-process/SKILL.md +162 -0
  4954. package/dist/agents/skills/gemini-cli/node-child-process/skill.yaml +41 -0
  4955. package/dist/agents/skills/gemini-cli/node-crypto-patterns/SKILL.md +147 -0
  4956. package/dist/agents/skills/gemini-cli/node-crypto-patterns/skill.yaml +42 -0
  4957. package/dist/agents/skills/gemini-cli/node-environment-config/SKILL.md +145 -0
  4958. package/dist/agents/skills/gemini-cli/node-environment-config/skill.yaml +40 -0
  4959. package/dist/agents/skills/gemini-cli/node-error-handling/SKILL.md +183 -0
  4960. package/dist/agents/skills/gemini-cli/node-error-handling/skill.yaml +41 -0
  4961. package/dist/agents/skills/gemini-cli/node-esm-patterns/SKILL.md +149 -0
  4962. package/dist/agents/skills/gemini-cli/node-esm-patterns/skill.yaml +40 -0
  4963. package/dist/agents/skills/gemini-cli/node-event-emitter/SKILL.md +144 -0
  4964. package/dist/agents/skills/gemini-cli/node-event-emitter/skill.yaml +42 -0
  4965. package/dist/agents/skills/gemini-cli/node-express-patterns/SKILL.md +193 -0
  4966. package/dist/agents/skills/gemini-cli/node-express-patterns/skill.yaml +41 -0
  4967. package/dist/agents/skills/gemini-cli/node-fastify-patterns/SKILL.md +200 -0
  4968. package/dist/agents/skills/gemini-cli/node-fastify-patterns/skill.yaml +41 -0
  4969. package/dist/agents/skills/gemini-cli/node-http-server/SKILL.md +159 -0
  4970. package/dist/agents/skills/gemini-cli/node-http-server/skill.yaml +41 -0
  4971. package/dist/agents/skills/gemini-cli/node-path-fs-patterns/SKILL.md +149 -0
  4972. package/dist/agents/skills/gemini-cli/node-path-fs-patterns/skill.yaml +40 -0
  4973. package/dist/agents/skills/gemini-cli/node-performance-profiling/SKILL.md +176 -0
  4974. package/dist/agents/skills/gemini-cli/node-performance-profiling/skill.yaml +45 -0
  4975. package/dist/agents/skills/gemini-cli/node-streams-pattern/SKILL.md +163 -0
  4976. package/dist/agents/skills/gemini-cli/node-streams-pattern/skill.yaml +41 -0
  4977. package/dist/agents/skills/gemini-cli/node-testing-patterns/SKILL.md +205 -0
  4978. package/dist/agents/skills/gemini-cli/node-testing-patterns/skill.yaml +41 -0
  4979. package/dist/agents/skills/gemini-cli/node-worker-threads/SKILL.md +169 -0
  4980. package/dist/agents/skills/gemini-cli/node-worker-threads/skill.yaml +41 -0
  4981. package/dist/agents/skills/gemini-cli/nuxt-auto-imports/SKILL.md +97 -0
  4982. package/dist/agents/skills/gemini-cli/nuxt-auto-imports/skill.yaml +42 -0
  4983. package/dist/agents/skills/gemini-cli/nuxt-composables-pattern/SKILL.md +119 -0
  4984. package/dist/agents/skills/gemini-cli/nuxt-composables-pattern/skill.yaml +42 -0
  4985. package/dist/agents/skills/gemini-cli/nuxt-deployment-config/SKILL.md +209 -0
  4986. package/dist/agents/skills/gemini-cli/nuxt-deployment-config/skill.yaml +44 -0
  4987. package/dist/agents/skills/gemini-cli/nuxt-layouts-pages/SKILL.md +210 -0
  4988. package/dist/agents/skills/gemini-cli/nuxt-layouts-pages/skill.yaml +43 -0
  4989. package/dist/agents/skills/gemini-cli/nuxt-middleware-pattern/SKILL.md +164 -0
  4990. package/dist/agents/skills/gemini-cli/nuxt-middleware-pattern/skill.yaml +42 -0
  4991. package/dist/agents/skills/gemini-cli/nuxt-modules-pattern/SKILL.md +193 -0
  4992. package/dist/agents/skills/gemini-cli/nuxt-modules-pattern/skill.yaml +41 -0
  4993. package/dist/agents/skills/gemini-cli/nuxt-plugins-pattern/SKILL.md +178 -0
  4994. package/dist/agents/skills/gemini-cli/nuxt-plugins-pattern/skill.yaml +41 -0
  4995. package/dist/agents/skills/gemini-cli/nuxt-seo-metadata/SKILL.md +185 -0
  4996. package/dist/agents/skills/gemini-cli/nuxt-seo-metadata/skill.yaml +44 -0
  4997. package/dist/agents/skills/gemini-cli/nuxt-server-routes/SKILL.md +154 -0
  4998. package/dist/agents/skills/gemini-cli/nuxt-server-routes/skill.yaml +42 -0
  4999. package/dist/agents/skills/gemini-cli/nuxt-state-management/SKILL.md +162 -0
  5000. package/dist/agents/skills/gemini-cli/nuxt-state-management/skill.yaml +44 -0
  5001. package/dist/agents/skills/gemini-cli/nuxt-testing-patterns/SKILL.md +203 -0
  5002. package/dist/agents/skills/gemini-cli/nuxt-testing-patterns/skill.yaml +46 -0
  5003. package/dist/agents/skills/gemini-cli/otel-context-propagation/SKILL.md +152 -0
  5004. package/dist/agents/skills/gemini-cli/otel-context-propagation/skill.yaml +40 -0
  5005. package/dist/agents/skills/gemini-cli/otel-custom-instrumentation/SKILL.md +166 -0
  5006. package/dist/agents/skills/gemini-cli/otel-custom-instrumentation/skill.yaml +40 -0
  5007. package/dist/agents/skills/gemini-cli/otel-error-tracking/SKILL.md +163 -0
  5008. package/dist/agents/skills/gemini-cli/otel-error-tracking/skill.yaml +40 -0
  5009. package/dist/agents/skills/gemini-cli/otel-exporter-config/SKILL.md +168 -0
  5010. package/dist/agents/skills/gemini-cli/otel-exporter-config/skill.yaml +40 -0
  5011. package/dist/agents/skills/gemini-cli/otel-logging-pattern/SKILL.md +161 -0
  5012. package/dist/agents/skills/gemini-cli/otel-logging-pattern/skill.yaml +41 -0
  5013. package/dist/agents/skills/gemini-cli/otel-metrics-pattern/SKILL.md +152 -0
  5014. package/dist/agents/skills/gemini-cli/otel-metrics-pattern/skill.yaml +41 -0
  5015. package/dist/agents/skills/gemini-cli/otel-nestjs-integration/SKILL.md +174 -0
  5016. package/dist/agents/skills/gemini-cli/otel-nestjs-integration/skill.yaml +41 -0
  5017. package/dist/agents/skills/gemini-cli/otel-nextjs-integration/SKILL.md +161 -0
  5018. package/dist/agents/skills/gemini-cli/otel-nextjs-integration/skill.yaml +40 -0
  5019. package/dist/agents/skills/gemini-cli/otel-performance-insights/SKILL.md +173 -0
  5020. package/dist/agents/skills/gemini-cli/otel-performance-insights/skill.yaml +45 -0
  5021. package/dist/agents/skills/gemini-cli/otel-sampling-strategies/SKILL.md +162 -0
  5022. package/dist/agents/skills/gemini-cli/otel-sampling-strategies/skill.yaml +39 -0
  5023. package/dist/agents/skills/gemini-cli/otel-sdk-setup/SKILL.md +145 -0
  5024. package/dist/agents/skills/gemini-cli/otel-sdk-setup/skill.yaml +40 -0
  5025. package/dist/agents/skills/gemini-cli/otel-tracing-pattern/SKILL.md +130 -0
  5026. package/dist/agents/skills/gemini-cli/otel-tracing-pattern/skill.yaml +40 -0
  5027. package/dist/agents/skills/gemini-cli/owasp-auth-patterns/SKILL.md +198 -0
  5028. package/dist/agents/skills/gemini-cli/owasp-auth-patterns/skill.yaml +50 -0
  5029. package/dist/agents/skills/gemini-cli/owasp-cryptography/SKILL.md +191 -0
  5030. package/dist/agents/skills/gemini-cli/owasp-cryptography/skill.yaml +48 -0
  5031. package/dist/agents/skills/gemini-cli/owasp-csrf-protection/SKILL.md +175 -0
  5032. package/dist/agents/skills/gemini-cli/owasp-csrf-protection/skill.yaml +45 -0
  5033. package/dist/agents/skills/gemini-cli/owasp-dependency-security/SKILL.md +173 -0
  5034. package/dist/agents/skills/gemini-cli/owasp-dependency-security/skill.yaml +45 -0
  5035. package/dist/agents/skills/gemini-cli/owasp-file-upload-security/SKILL.md +199 -0
  5036. package/dist/agents/skills/gemini-cli/owasp-file-upload-security/skill.yaml +44 -0
  5037. package/dist/agents/skills/gemini-cli/owasp-idor-prevention/SKILL.md +174 -0
  5038. package/dist/agents/skills/gemini-cli/owasp-idor-prevention/skill.yaml +46 -0
  5039. package/dist/agents/skills/gemini-cli/owasp-injection-prevention/SKILL.md +160 -0
  5040. package/dist/agents/skills/gemini-cli/owasp-injection-prevention/skill.yaml +48 -0
  5041. package/dist/agents/skills/gemini-cli/owasp-logging-monitoring/SKILL.md +214 -0
  5042. package/dist/agents/skills/gemini-cli/owasp-logging-monitoring/skill.yaml +46 -0
  5043. package/dist/agents/skills/gemini-cli/owasp-rate-limiting/SKILL.md +216 -0
  5044. package/dist/agents/skills/gemini-cli/owasp-rate-limiting/skill.yaml +45 -0
  5045. package/dist/agents/skills/gemini-cli/owasp-secrets-management/SKILL.md +172 -0
  5046. package/dist/agents/skills/gemini-cli/owasp-secrets-management/skill.yaml +49 -0
  5047. package/dist/agents/skills/gemini-cli/owasp-security-headers/SKILL.md +221 -0
  5048. package/dist/agents/skills/gemini-cli/owasp-security-headers/skill.yaml +44 -0
  5049. package/dist/agents/skills/gemini-cli/owasp-xss-prevention/SKILL.md +174 -0
  5050. package/dist/agents/skills/gemini-cli/owasp-xss-prevention/skill.yaml +45 -0
  5051. package/dist/agents/skills/gemini-cli/perf-browser-cache/SKILL.md +151 -0
  5052. package/dist/agents/skills/gemini-cli/perf-browser-cache/skill.yaml +39 -0
  5053. package/dist/agents/skills/gemini-cli/perf-bundle-analysis/SKILL.md +217 -0
  5054. package/dist/agents/skills/gemini-cli/perf-bundle-analysis/skill.yaml +37 -0
  5055. package/dist/agents/skills/gemini-cli/perf-cache-invalidation/SKILL.md +228 -0
  5056. package/dist/agents/skills/gemini-cli/perf-cache-invalidation/skill.yaml +38 -0
  5057. package/dist/agents/skills/gemini-cli/perf-cdn-cache-control/SKILL.md +198 -0
  5058. package/dist/agents/skills/gemini-cli/perf-cdn-cache-control/skill.yaml +40 -0
  5059. package/dist/agents/skills/gemini-cli/perf-cdn-strategies/SKILL.md +161 -0
  5060. package/dist/agents/skills/gemini-cli/perf-cdn-strategies/skill.yaml +40 -0
  5061. package/dist/agents/skills/gemini-cli/perf-client-side-rendering/SKILL.md +245 -0
  5062. package/dist/agents/skills/gemini-cli/perf-client-side-rendering/skill.yaml +40 -0
  5063. package/dist/agents/skills/gemini-cli/perf-code-splitting/SKILL.md +185 -0
  5064. package/dist/agents/skills/gemini-cli/perf-code-splitting/skill.yaml +39 -0
  5065. package/dist/agents/skills/gemini-cli/perf-compression/SKILL.md +163 -0
  5066. package/dist/agents/skills/gemini-cli/perf-compression/skill.yaml +38 -0
  5067. package/dist/agents/skills/gemini-cli/perf-connection-costs/SKILL.md +165 -0
  5068. package/dist/agents/skills/gemini-cli/perf-connection-costs/skill.yaml +40 -0
  5069. package/dist/agents/skills/gemini-cli/perf-connection-pooling/SKILL.md +250 -0
  5070. package/dist/agents/skills/gemini-cli/perf-connection-pooling/skill.yaml +38 -0
  5071. package/dist/agents/skills/gemini-cli/perf-critical-rendering-path/SKILL.md +167 -0
  5072. package/dist/agents/skills/gemini-cli/perf-critical-rendering-path/skill.yaml +39 -0
  5073. package/dist/agents/skills/gemini-cli/perf-cumulative-layout-shift/SKILL.md +180 -0
  5074. package/dist/agents/skills/gemini-cli/perf-cumulative-layout-shift/skill.yaml +40 -0
  5075. package/dist/agents/skills/gemini-cli/perf-dom-parsing/SKILL.md +153 -0
  5076. package/dist/agents/skills/gemini-cli/perf-dom-parsing/skill.yaml +36 -0
  5077. package/dist/agents/skills/gemini-cli/perf-edge-rendering/SKILL.md +222 -0
  5078. package/dist/agents/skills/gemini-cli/perf-edge-rendering/skill.yaml +39 -0
  5079. package/dist/agents/skills/gemini-cli/perf-event-loop/SKILL.md +203 -0
  5080. package/dist/agents/skills/gemini-cli/perf-event-loop/skill.yaml +38 -0
  5081. package/dist/agents/skills/gemini-cli/perf-font-loading/SKILL.md +222 -0
  5082. package/dist/agents/skills/gemini-cli/perf-font-loading/skill.yaml +39 -0
  5083. package/dist/agents/skills/gemini-cli/perf-garbage-collection/SKILL.md +192 -0
  5084. package/dist/agents/skills/gemini-cli/perf-garbage-collection/skill.yaml +40 -0
  5085. package/dist/agents/skills/gemini-cli/perf-heap-profiling/SKILL.md +160 -0
  5086. package/dist/agents/skills/gemini-cli/perf-heap-profiling/skill.yaml +38 -0
  5087. package/dist/agents/skills/gemini-cli/perf-http2-multiplexing/SKILL.md +163 -0
  5088. package/dist/agents/skills/gemini-cli/perf-http2-multiplexing/skill.yaml +38 -0
  5089. package/dist/agents/skills/gemini-cli/perf-http3-quic/SKILL.md +165 -0
  5090. package/dist/agents/skills/gemini-cli/perf-http3-quic/skill.yaml +37 -0
  5091. package/dist/agents/skills/gemini-cli/perf-image-formats/SKILL.md +183 -0
  5092. package/dist/agents/skills/gemini-cli/perf-image-formats/skill.yaml +39 -0
  5093. package/dist/agents/skills/gemini-cli/perf-index-strategies/SKILL.md +210 -0
  5094. package/dist/agents/skills/gemini-cli/perf-index-strategies/skill.yaml +40 -0
  5095. package/dist/agents/skills/gemini-cli/perf-interaction-to-next-paint/SKILL.md +170 -0
  5096. package/dist/agents/skills/gemini-cli/perf-interaction-to-next-paint/skill.yaml +40 -0
  5097. package/dist/agents/skills/gemini-cli/perf-largest-contentful-paint/SKILL.md +162 -0
  5098. package/dist/agents/skills/gemini-cli/perf-largest-contentful-paint/skill.yaml +41 -0
  5099. package/dist/agents/skills/gemini-cli/perf-layout-reflow/SKILL.md +187 -0
  5100. package/dist/agents/skills/gemini-cli/perf-layout-reflow/skill.yaml +38 -0
  5101. package/dist/agents/skills/gemini-cli/perf-lazy-loading/SKILL.md +217 -0
  5102. package/dist/agents/skills/gemini-cli/perf-lazy-loading/skill.yaml +38 -0
  5103. package/dist/agents/skills/gemini-cli/perf-lazy-loading-media/SKILL.md +233 -0
  5104. package/dist/agents/skills/gemini-cli/perf-lazy-loading-media/skill.yaml +38 -0
  5105. package/dist/agents/skills/gemini-cli/perf-long-tasks/SKILL.md +194 -0
  5106. package/dist/agents/skills/gemini-cli/perf-long-tasks/skill.yaml +38 -0
  5107. package/dist/agents/skills/gemini-cli/perf-memory-leaks/SKILL.md +218 -0
  5108. package/dist/agents/skills/gemini-cli/perf-memory-leaks/skill.yaml +38 -0
  5109. package/dist/agents/skills/gemini-cli/perf-module-federation/SKILL.md +242 -0
  5110. package/dist/agents/skills/gemini-cli/perf-module-federation/skill.yaml +38 -0
  5111. package/dist/agents/skills/gemini-cli/perf-n-plus-one/SKILL.md +237 -0
  5112. package/dist/agents/skills/gemini-cli/perf-n-plus-one/skill.yaml +40 -0
  5113. package/dist/agents/skills/gemini-cli/perf-paint-compositing/SKILL.md +181 -0
  5114. package/dist/agents/skills/gemini-cli/perf-paint-compositing/skill.yaml +40 -0
  5115. package/dist/agents/skills/gemini-cli/perf-performance-api/SKILL.md +249 -0
  5116. package/dist/agents/skills/gemini-cli/perf-performance-api/skill.yaml +41 -0
  5117. package/dist/agents/skills/gemini-cli/perf-profiling-methodology/SKILL.md +181 -0
  5118. package/dist/agents/skills/gemini-cli/perf-profiling-methodology/skill.yaml +44 -0
  5119. package/dist/agents/skills/gemini-cli/perf-query-optimization/SKILL.md +203 -0
  5120. package/dist/agents/skills/gemini-cli/perf-query-optimization/skill.yaml +39 -0
  5121. package/dist/agents/skills/gemini-cli/perf-resource-hints/SKILL.md +167 -0
  5122. package/dist/agents/skills/gemini-cli/perf-resource-hints/skill.yaml +40 -0
  5123. package/dist/agents/skills/gemini-cli/perf-responsive-images/SKILL.md +225 -0
  5124. package/dist/agents/skills/gemini-cli/perf-responsive-images/skill.yaml +38 -0
  5125. package/dist/agents/skills/gemini-cli/perf-server-side-caching/SKILL.md +194 -0
  5126. package/dist/agents/skills/gemini-cli/perf-server-side-caching/skill.yaml +40 -0
  5127. package/dist/agents/skills/gemini-cli/perf-server-side-rendering/SKILL.md +239 -0
  5128. package/dist/agents/skills/gemini-cli/perf-server-side-rendering/skill.yaml +39 -0
  5129. package/dist/agents/skills/gemini-cli/perf-service-worker-caching/SKILL.md +247 -0
  5130. package/dist/agents/skills/gemini-cli/perf-service-worker-caching/skill.yaml +40 -0
  5131. package/dist/agents/skills/gemini-cli/perf-static-generation/SKILL.md +241 -0
  5132. package/dist/agents/skills/gemini-cli/perf-static-generation/skill.yaml +39 -0
  5133. package/dist/agents/skills/gemini-cli/perf-streaming-rendering/SKILL.md +242 -0
  5134. package/dist/agents/skills/gemini-cli/perf-streaming-rendering/skill.yaml +37 -0
  5135. package/dist/agents/skills/gemini-cli/perf-style-calculation/SKILL.md +166 -0
  5136. package/dist/agents/skills/gemini-cli/perf-style-calculation/skill.yaml +36 -0
  5137. package/dist/agents/skills/gemini-cli/perf-svg-optimization/SKILL.md +249 -0
  5138. package/dist/agents/skills/gemini-cli/perf-svg-optimization/skill.yaml +37 -0
  5139. package/dist/agents/skills/gemini-cli/perf-tree-shaking/SKILL.md +225 -0
  5140. package/dist/agents/skills/gemini-cli/perf-tree-shaking/skill.yaml +38 -0
  5141. package/dist/agents/skills/gemini-cli/perf-web-workers/SKILL.md +237 -0
  5142. package/dist/agents/skills/gemini-cli/perf-web-workers/skill.yaml +40 -0
  5143. package/dist/agents/skills/gemini-cli/prisma-client-queries/SKILL.md +147 -0
  5144. package/dist/agents/skills/gemini-cli/prisma-client-queries/skill.yaml +47 -0
  5145. package/dist/agents/skills/gemini-cli/prisma-filtering-sorting/SKILL.md +157 -0
  5146. package/dist/agents/skills/gemini-cli/prisma-filtering-sorting/skill.yaml +46 -0
  5147. package/dist/agents/skills/gemini-cli/prisma-migrations/SKILL.md +115 -0
  5148. package/dist/agents/skills/gemini-cli/prisma-migrations/skill.yaml +44 -0
  5149. package/dist/agents/skills/gemini-cli/prisma-performance-patterns/SKILL.md +160 -0
  5150. package/dist/agents/skills/gemini-cli/prisma-performance-patterns/skill.yaml +51 -0
  5151. package/dist/agents/skills/gemini-cli/prisma-raw-queries/SKILL.md +125 -0
  5152. package/dist/agents/skills/gemini-cli/prisma-raw-queries/skill.yaml +42 -0
  5153. package/dist/agents/skills/gemini-cli/prisma-relations-pattern/SKILL.md +151 -0
  5154. package/dist/agents/skills/gemini-cli/prisma-relations-pattern/skill.yaml +43 -0
  5155. package/dist/agents/skills/gemini-cli/prisma-schema-design/SKILL.md +108 -0
  5156. package/dist/agents/skills/gemini-cli/prisma-schema-design/skill.yaml +50 -0
  5157. package/dist/agents/skills/gemini-cli/prisma-seeding-pattern/SKILL.md +168 -0
  5158. package/dist/agents/skills/gemini-cli/prisma-seeding-pattern/skill.yaml +42 -0
  5159. package/dist/agents/skills/gemini-cli/prisma-soft-delete/SKILL.md +172 -0
  5160. package/dist/agents/skills/gemini-cli/prisma-soft-delete/skill.yaml +42 -0
  5161. package/dist/agents/skills/gemini-cli/prisma-transactions/SKILL.md +147 -0
  5162. package/dist/agents/skills/gemini-cli/prisma-transactions/skill.yaml +45 -0
  5163. package/dist/agents/skills/gemini-cli/prisma-type-generation/SKILL.md +180 -0
  5164. package/dist/agents/skills/gemini-cli/prisma-type-generation/skill.yaml +43 -0
  5165. package/dist/agents/skills/gemini-cli/react-2026/SKILL.md +86 -0
  5166. package/dist/agents/skills/gemini-cli/react-2026/skill.yaml +40 -0
  5167. package/dist/agents/skills/gemini-cli/react-client-rendering/SKILL.md +60 -0
  5168. package/dist/agents/skills/gemini-cli/react-client-rendering/skill.yaml +38 -0
  5169. package/dist/agents/skills/gemini-cli/react-compound-pattern/SKILL.md +80 -0
  5170. package/dist/agents/skills/gemini-cli/react-compound-pattern/skill.yaml +37 -0
  5171. package/dist/agents/skills/gemini-cli/react-concurrent-ui/SKILL.md +59 -0
  5172. package/dist/agents/skills/gemini-cli/react-concurrent-ui/skill.yaml +37 -0
  5173. package/dist/agents/skills/gemini-cli/react-container-presentational/SKILL.md +76 -0
  5174. package/dist/agents/skills/gemini-cli/react-container-presentational/skill.yaml +37 -0
  5175. package/dist/agents/skills/gemini-cli/react-context-pattern/SKILL.md +75 -0
  5176. package/dist/agents/skills/gemini-cli/react-context-pattern/skill.yaml +38 -0
  5177. package/dist/agents/skills/gemini-cli/react-dynamic-import/SKILL.md +65 -0
  5178. package/dist/agents/skills/gemini-cli/react-dynamic-import/skill.yaml +41 -0
  5179. package/dist/agents/skills/gemini-cli/react-hoc-pattern/SKILL.md +71 -0
  5180. package/dist/agents/skills/gemini-cli/react-hoc-pattern/skill.yaml +36 -0
  5181. package/dist/agents/skills/gemini-cli/react-hooks-pattern/SKILL.md +74 -0
  5182. package/dist/agents/skills/gemini-cli/react-hooks-pattern/skill.yaml +38 -0
  5183. package/dist/agents/skills/gemini-cli/react-islands-pattern/SKILL.md +67 -0
  5184. package/dist/agents/skills/gemini-cli/react-islands-pattern/skill.yaml +40 -0
  5185. package/dist/agents/skills/gemini-cli/react-memoization-pattern/SKILL.md +64 -0
  5186. package/dist/agents/skills/gemini-cli/react-memoization-pattern/skill.yaml +38 -0
  5187. package/dist/agents/skills/gemini-cli/react-progressive-hydration/SKILL.md +74 -0
  5188. package/dist/agents/skills/gemini-cli/react-progressive-hydration/skill.yaml +38 -0
  5189. package/dist/agents/skills/gemini-cli/react-provider-pattern/SKILL.md +72 -0
  5190. package/dist/agents/skills/gemini-cli/react-provider-pattern/skill.yaml +38 -0
  5191. package/dist/agents/skills/gemini-cli/react-render-props-pattern/SKILL.md +73 -0
  5192. package/dist/agents/skills/gemini-cli/react-render-props-pattern/skill.yaml +36 -0
  5193. package/dist/agents/skills/gemini-cli/react-server-components/SKILL.md +81 -0
  5194. package/dist/agents/skills/gemini-cli/react-server-components/skill.yaml +40 -0
  5195. package/dist/agents/skills/gemini-cli/react-server-rendering/SKILL.md +63 -0
  5196. package/dist/agents/skills/gemini-cli/react-server-rendering/skill.yaml +40 -0
  5197. package/dist/agents/skills/gemini-cli/react-state-management-pattern/SKILL.md +72 -0
  5198. package/dist/agents/skills/gemini-cli/react-state-management-pattern/skill.yaml +41 -0
  5199. package/dist/agents/skills/gemini-cli/react-static-import/SKILL.md +61 -0
  5200. package/dist/agents/skills/gemini-cli/react-static-import/skill.yaml +38 -0
  5201. package/dist/agents/skills/gemini-cli/react-suspense-pattern/SKILL.md +62 -0
  5202. package/dist/agents/skills/gemini-cli/react-suspense-pattern/skill.yaml +38 -0
  5203. package/dist/agents/skills/gemini-cli/redux-entity-adapter/SKILL.md +120 -0
  5204. package/dist/agents/skills/gemini-cli/redux-entity-adapter/skill.yaml +40 -0
  5205. package/dist/agents/skills/gemini-cli/redux-listener-middleware/SKILL.md +117 -0
  5206. package/dist/agents/skills/gemini-cli/redux-listener-middleware/skill.yaml +40 -0
  5207. package/dist/agents/skills/gemini-cli/redux-persistence-pattern/SKILL.md +144 -0
  5208. package/dist/agents/skills/gemini-cli/redux-persistence-pattern/skill.yaml +41 -0
  5209. package/dist/agents/skills/gemini-cli/redux-rtk-optimistic/SKILL.md +117 -0
  5210. package/dist/agents/skills/gemini-cli/redux-rtk-optimistic/skill.yaml +40 -0
  5211. package/dist/agents/skills/gemini-cli/redux-rtk-query-endpoints/SKILL.md +131 -0
  5212. package/dist/agents/skills/gemini-cli/redux-rtk-query-endpoints/skill.yaml +41 -0
  5213. package/dist/agents/skills/gemini-cli/redux-rtk-query-setup/SKILL.md +117 -0
  5214. package/dist/agents/skills/gemini-cli/redux-rtk-query-setup/skill.yaml +40 -0
  5215. package/dist/agents/skills/gemini-cli/redux-selectors-pattern/SKILL.md +100 -0
  5216. package/dist/agents/skills/gemini-cli/redux-selectors-pattern/skill.yaml +40 -0
  5217. package/dist/agents/skills/gemini-cli/redux-slice-pattern/SKILL.md +117 -0
  5218. package/dist/agents/skills/gemini-cli/redux-slice-pattern/skill.yaml +40 -0
  5219. package/dist/agents/skills/gemini-cli/redux-store-setup/SKILL.md +103 -0
  5220. package/dist/agents/skills/gemini-cli/redux-store-setup/skill.yaml +40 -0
  5221. package/dist/agents/skills/gemini-cli/redux-testing-patterns/SKILL.md +138 -0
  5222. package/dist/agents/skills/gemini-cli/redux-testing-patterns/skill.yaml +42 -0
  5223. package/dist/agents/skills/gemini-cli/redux-thunk-pattern/SKILL.md +119 -0
  5224. package/dist/agents/skills/gemini-cli/redux-thunk-pattern/skill.yaml +42 -0
  5225. package/dist/agents/skills/gemini-cli/redux-typescript-patterns/SKILL.md +115 -0
  5226. package/dist/agents/skills/gemini-cli/redux-typescript-patterns/skill.yaml +41 -0
  5227. package/dist/agents/skills/gemini-cli/resilience-bulkhead-pattern/SKILL.md +145 -0
  5228. package/dist/agents/skills/gemini-cli/resilience-bulkhead-pattern/skill.yaml +39 -0
  5229. package/dist/agents/skills/gemini-cli/resilience-chaos-testing/SKILL.md +172 -0
  5230. package/dist/agents/skills/gemini-cli/resilience-chaos-testing/skill.yaml +39 -0
  5231. package/dist/agents/skills/gemini-cli/resilience-circuit-breaker/SKILL.md +159 -0
  5232. package/dist/agents/skills/gemini-cli/resilience-circuit-breaker/skill.yaml +40 -0
  5233. package/dist/agents/skills/gemini-cli/resilience-dead-letter/SKILL.md +185 -0
  5234. package/dist/agents/skills/gemini-cli/resilience-dead-letter/skill.yaml +40 -0
  5235. package/dist/agents/skills/gemini-cli/resilience-fallback-pattern/SKILL.md +155 -0
  5236. package/dist/agents/skills/gemini-cli/resilience-fallback-pattern/skill.yaml +39 -0
  5237. package/dist/agents/skills/gemini-cli/resilience-health-checks/SKILL.md +180 -0
  5238. package/dist/agents/skills/gemini-cli/resilience-health-checks/skill.yaml +39 -0
  5239. package/dist/agents/skills/gemini-cli/resilience-idempotency/SKILL.md +167 -0
  5240. package/dist/agents/skills/gemini-cli/resilience-idempotency/skill.yaml +39 -0
  5241. package/dist/agents/skills/gemini-cli/resilience-rate-limiting/SKILL.md +171 -0
  5242. package/dist/agents/skills/gemini-cli/resilience-rate-limiting/skill.yaml +39 -0
  5243. package/dist/agents/skills/gemini-cli/resilience-retry-pattern/SKILL.md +137 -0
  5244. package/dist/agents/skills/gemini-cli/resilience-retry-pattern/skill.yaml +40 -0
  5245. package/dist/agents/skills/gemini-cli/resilience-timeout-pattern/SKILL.md +148 -0
  5246. package/dist/agents/skills/gemini-cli/resilience-timeout-pattern/skill.yaml +39 -0
  5247. package/dist/agents/skills/gemini-cli/security-abac-design/SKILL.md +154 -0
  5248. package/dist/agents/skills/gemini-cli/security-abac-design/skill.yaml +41 -0
  5249. package/dist/agents/skills/gemini-cli/security-asymmetric-encryption/SKILL.md +201 -0
  5250. package/dist/agents/skills/gemini-cli/security-asymmetric-encryption/skill.yaml +42 -0
  5251. package/dist/agents/skills/gemini-cli/security-attack-trees/SKILL.md +150 -0
  5252. package/dist/agents/skills/gemini-cli/security-attack-trees/skill.yaml +37 -0
  5253. package/dist/agents/skills/gemini-cli/security-audit-log-design/SKILL.md +227 -0
  5254. package/dist/agents/skills/gemini-cli/security-audit-log-design/skill.yaml +39 -0
  5255. package/dist/agents/skills/gemini-cli/security-authentication-flows/SKILL.md +168 -0
  5256. package/dist/agents/skills/gemini-cli/security-authentication-flows/skill.yaml +42 -0
  5257. package/dist/agents/skills/gemini-cli/security-capability-based-security/SKILL.md +158 -0
  5258. package/dist/agents/skills/gemini-cli/security-capability-based-security/skill.yaml +40 -0
  5259. package/dist/agents/skills/gemini-cli/security-certificate-management/SKILL.md +153 -0
  5260. package/dist/agents/skills/gemini-cli/security-certificate-management/skill.yaml +42 -0
  5261. package/dist/agents/skills/gemini-cli/security-ci-security-testing/SKILL.md +159 -0
  5262. package/dist/agents/skills/gemini-cli/security-ci-security-testing/skill.yaml +43 -0
  5263. package/dist/agents/skills/gemini-cli/security-code-signing/SKILL.md +155 -0
  5264. package/dist/agents/skills/gemini-cli/security-code-signing/skill.yaml +40 -0
  5265. package/dist/agents/skills/gemini-cli/security-compliance-logging/SKILL.md +183 -0
  5266. package/dist/agents/skills/gemini-cli/security-compliance-logging/skill.yaml +38 -0
  5267. package/dist/agents/skills/gemini-cli/security-credential-storage/SKILL.md +222 -0
  5268. package/dist/agents/skills/gemini-cli/security-credential-storage/skill.yaml +41 -0
  5269. package/dist/agents/skills/gemini-cli/security-cryptographic-randomness/SKILL.md +154 -0
  5270. package/dist/agents/skills/gemini-cli/security-cryptographic-randomness/skill.yaml +41 -0
  5271. package/dist/agents/skills/gemini-cli/security-dependency-auditing/SKILL.md +156 -0
  5272. package/dist/agents/skills/gemini-cli/security-dependency-auditing/skill.yaml +39 -0
  5273. package/dist/agents/skills/gemini-cli/security-deserialization-attacks/SKILL.md +180 -0
  5274. package/dist/agents/skills/gemini-cli/security-deserialization-attacks/skill.yaml +38 -0
  5275. package/dist/agents/skills/gemini-cli/security-environment-variable-risks/SKILL.md +153 -0
  5276. package/dist/agents/skills/gemini-cli/security-environment-variable-risks/skill.yaml +37 -0
  5277. package/dist/agents/skills/gemini-cli/security-forensics-fundamentals/SKILL.md +198 -0
  5278. package/dist/agents/skills/gemini-cli/security-forensics-fundamentals/skill.yaml +40 -0
  5279. package/dist/agents/skills/gemini-cli/security-hashing-fundamentals/SKILL.md +212 -0
  5280. package/dist/agents/skills/gemini-cli/security-hashing-fundamentals/skill.yaml +40 -0
  5281. package/dist/agents/skills/gemini-cli/security-hmac-signatures/SKILL.md +165 -0
  5282. package/dist/agents/skills/gemini-cli/security-hmac-signatures/skill.yaml +40 -0
  5283. package/dist/agents/skills/gemini-cli/security-hsts-preloading/SKILL.md +154 -0
  5284. package/dist/agents/skills/gemini-cli/security-hsts-preloading/skill.yaml +38 -0
  5285. package/dist/agents/skills/gemini-cli/security-identity-verification/SKILL.md +157 -0
  5286. package/dist/agents/skills/gemini-cli/security-identity-verification/skill.yaml +39 -0
  5287. package/dist/agents/skills/gemini-cli/security-incident-containment/SKILL.md +190 -0
  5288. package/dist/agents/skills/gemini-cli/security-incident-containment/skill.yaml +40 -0
  5289. package/dist/agents/skills/gemini-cli/security-injection-families/SKILL.md +235 -0
  5290. package/dist/agents/skills/gemini-cli/security-injection-families/skill.yaml +41 -0
  5291. package/dist/agents/skills/gemini-cli/security-log-correlation/SKILL.md +178 -0
  5292. package/dist/agents/skills/gemini-cli/security-log-correlation/skill.yaml +39 -0
  5293. package/dist/agents/skills/gemini-cli/security-memory-safety/SKILL.md +234 -0
  5294. package/dist/agents/skills/gemini-cli/security-memory-safety/skill.yaml +39 -0
  5295. package/dist/agents/skills/gemini-cli/security-mfa-design/SKILL.md +150 -0
  5296. package/dist/agents/skills/gemini-cli/security-mfa-design/skill.yaml +41 -0
  5297. package/dist/agents/skills/gemini-cli/security-microsegmentation/SKILL.md +154 -0
  5298. package/dist/agents/skills/gemini-cli/security-microsegmentation/skill.yaml +40 -0
  5299. package/dist/agents/skills/gemini-cli/security-mtls-design/SKILL.md +158 -0
  5300. package/dist/agents/skills/gemini-cli/security-mtls-design/skill.yaml +39 -0
  5301. package/dist/agents/skills/gemini-cli/security-penetration-testing/SKILL.md +166 -0
  5302. package/dist/agents/skills/gemini-cli/security-penetration-testing/skill.yaml +40 -0
  5303. package/dist/agents/skills/gemini-cli/security-post-incident-review/SKILL.md +205 -0
  5304. package/dist/agents/skills/gemini-cli/security-post-incident-review/skill.yaml +39 -0
  5305. package/dist/agents/skills/gemini-cli/security-race-conditions/SKILL.md +186 -0
  5306. package/dist/agents/skills/gemini-cli/security-race-conditions/skill.yaml +39 -0
  5307. package/dist/agents/skills/gemini-cli/security-rbac-design/SKILL.md +209 -0
  5308. package/dist/agents/skills/gemini-cli/security-rbac-design/skill.yaml +40 -0
  5309. package/dist/agents/skills/gemini-cli/security-rebac-design/SKILL.md +154 -0
  5310. package/dist/agents/skills/gemini-cli/security-rebac-design/skill.yaml +39 -0
  5311. package/dist/agents/skills/gemini-cli/security-sbom-provenance/SKILL.md +157 -0
  5312. package/dist/agents/skills/gemini-cli/security-sbom-provenance/skill.yaml +39 -0
  5313. package/dist/agents/skills/gemini-cli/security-secrets-lifecycle/SKILL.md +190 -0
  5314. package/dist/agents/skills/gemini-cli/security-secrets-lifecycle/skill.yaml +39 -0
  5315. package/dist/agents/skills/gemini-cli/security-security-champions/SKILL.md +165 -0
  5316. package/dist/agents/skills/gemini-cli/security-security-champions/skill.yaml +37 -0
  5317. package/dist/agents/skills/gemini-cli/security-session-management/SKILL.md +196 -0
  5318. package/dist/agents/skills/gemini-cli/security-session-management/skill.yaml +41 -0
  5319. package/dist/agents/skills/gemini-cli/security-shift-left-design/SKILL.md +153 -0
  5320. package/dist/agents/skills/gemini-cli/security-shift-left-design/skill.yaml +38 -0
  5321. package/dist/agents/skills/gemini-cli/security-symmetric-encryption/SKILL.md +176 -0
  5322. package/dist/agents/skills/gemini-cli/security-symmetric-encryption/skill.yaml +41 -0
  5323. package/dist/agents/skills/gemini-cli/security-threat-modeling-process/SKILL.md +150 -0
  5324. package/dist/agents/skills/gemini-cli/security-threat-modeling-process/skill.yaml +38 -0
  5325. package/dist/agents/skills/gemini-cli/security-threat-modeling-stride/SKILL.md +150 -0
  5326. package/dist/agents/skills/gemini-cli/security-threat-modeling-stride/skill.yaml +40 -0
  5327. package/dist/agents/skills/gemini-cli/security-tls-fundamentals/SKILL.md +186 -0
  5328. package/dist/agents/skills/gemini-cli/security-tls-fundamentals/skill.yaml +40 -0
  5329. package/dist/agents/skills/gemini-cli/security-trust-boundaries/SKILL.md +152 -0
  5330. package/dist/agents/skills/gemini-cli/security-trust-boundaries/skill.yaml +39 -0
  5331. package/dist/agents/skills/gemini-cli/security-vault-patterns/SKILL.md +155 -0
  5332. package/dist/agents/skills/gemini-cli/security-vault-patterns/skill.yaml +39 -0
  5333. package/dist/agents/skills/gemini-cli/security-vulnerability-disclosure/SKILL.md +207 -0
  5334. package/dist/agents/skills/gemini-cli/security-vulnerability-disclosure/skill.yaml +39 -0
  5335. package/dist/agents/skills/gemini-cli/security-zero-trust-principles/SKILL.md +229 -0
  5336. package/dist/agents/skills/gemini-cli/security-zero-trust-principles/skill.yaml +40 -0
  5337. package/dist/agents/skills/gemini-cli/state-context-pattern/SKILL.md +143 -0
  5338. package/dist/agents/skills/gemini-cli/state-context-pattern/skill.yaml +39 -0
  5339. package/dist/agents/skills/gemini-cli/state-jotai-atoms/SKILL.md +153 -0
  5340. package/dist/agents/skills/gemini-cli/state-jotai-atoms/skill.yaml +40 -0
  5341. package/dist/agents/skills/gemini-cli/state-selection-patterns/SKILL.md +115 -0
  5342. package/dist/agents/skills/gemini-cli/state-selection-patterns/skill.yaml +40 -0
  5343. package/dist/agents/skills/gemini-cli/state-server-client-sync/SKILL.md +148 -0
  5344. package/dist/agents/skills/gemini-cli/state-server-client-sync/skill.yaml +41 -0
  5345. package/dist/agents/skills/gemini-cli/state-zustand-devtools/SKILL.md +120 -0
  5346. package/dist/agents/skills/gemini-cli/state-zustand-devtools/skill.yaml +39 -0
  5347. package/dist/agents/skills/gemini-cli/state-zustand-immer/SKILL.md +150 -0
  5348. package/dist/agents/skills/gemini-cli/state-zustand-immer/skill.yaml +39 -0
  5349. package/dist/agents/skills/gemini-cli/state-zustand-persist/SKILL.md +148 -0
  5350. package/dist/agents/skills/gemini-cli/state-zustand-persist/skill.yaml +39 -0
  5351. package/dist/agents/skills/gemini-cli/state-zustand-react/SKILL.md +136 -0
  5352. package/dist/agents/skills/gemini-cli/state-zustand-react/skill.yaml +41 -0
  5353. package/dist/agents/skills/gemini-cli/state-zustand-slices/SKILL.md +135 -0
  5354. package/dist/agents/skills/gemini-cli/state-zustand-slices/skill.yaml +40 -0
  5355. package/dist/agents/skills/gemini-cli/state-zustand-store/SKILL.md +123 -0
  5356. package/dist/agents/skills/gemini-cli/state-zustand-store/skill.yaml +40 -0
  5357. package/dist/agents/skills/gemini-cli/svelte-adapter-config/SKILL.md +262 -0
  5358. package/dist/agents/skills/gemini-cli/svelte-adapter-config/skill.yaml +43 -0
  5359. package/dist/agents/skills/gemini-cli/svelte-component-composition/SKILL.md +222 -0
  5360. package/dist/agents/skills/gemini-cli/svelte-component-composition/skill.yaml +42 -0
  5361. package/dist/agents/skills/gemini-cli/svelte-error-pages/SKILL.md +186 -0
  5362. package/dist/agents/skills/gemini-cli/svelte-error-pages/skill.yaml +43 -0
  5363. package/dist/agents/skills/gemini-cli/svelte-form-actions/SKILL.md +230 -0
  5364. package/dist/agents/skills/gemini-cli/svelte-form-actions/skill.yaml +42 -0
  5365. package/dist/agents/skills/gemini-cli/svelte-load-functions/SKILL.md +206 -0
  5366. package/dist/agents/skills/gemini-cli/svelte-load-functions/skill.yaml +45 -0
  5367. package/dist/agents/skills/gemini-cli/svelte-performance-patterns/SKILL.md +218 -0
  5368. package/dist/agents/skills/gemini-cli/svelte-performance-patterns/skill.yaml +49 -0
  5369. package/dist/agents/skills/gemini-cli/svelte-routing-pattern/SKILL.md +203 -0
  5370. package/dist/agents/skills/gemini-cli/svelte-routing-pattern/skill.yaml +44 -0
  5371. package/dist/agents/skills/gemini-cli/svelte-runes-pattern/SKILL.md +204 -0
  5372. package/dist/agents/skills/gemini-cli/svelte-runes-pattern/skill.yaml +44 -0
  5373. package/dist/agents/skills/gemini-cli/svelte-server-hooks/SKILL.md +239 -0
  5374. package/dist/agents/skills/gemini-cli/svelte-server-hooks/skill.yaml +44 -0
  5375. package/dist/agents/skills/gemini-cli/svelte-state-management/SKILL.md +196 -0
  5376. package/dist/agents/skills/gemini-cli/svelte-state-management/skill.yaml +44 -0
  5377. package/dist/agents/skills/gemini-cli/svelte-stores-pattern/SKILL.md +187 -0
  5378. package/dist/agents/skills/gemini-cli/svelte-stores-pattern/skill.yaml +44 -0
  5379. package/dist/agents/skills/gemini-cli/svelte-testing-patterns/SKILL.md +231 -0
  5380. package/dist/agents/skills/gemini-cli/svelte-testing-patterns/skill.yaml +46 -0
  5381. package/dist/agents/skills/gemini-cli/svelte-transitions-animations/SKILL.md +222 -0
  5382. package/dist/agents/skills/gemini-cli/svelte-transitions-animations/skill.yaml +44 -0
  5383. package/dist/agents/skills/gemini-cli/tanstack-cache-management/SKILL.md +108 -0
  5384. package/dist/agents/skills/gemini-cli/tanstack-cache-management/skill.yaml +44 -0
  5385. package/dist/agents/skills/gemini-cli/tanstack-dependent-queries/SKILL.md +108 -0
  5386. package/dist/agents/skills/gemini-cli/tanstack-dependent-queries/skill.yaml +42 -0
  5387. package/dist/agents/skills/gemini-cli/tanstack-devtools/SKILL.md +100 -0
  5388. package/dist/agents/skills/gemini-cli/tanstack-devtools/skill.yaml +44 -0
  5389. package/dist/agents/skills/gemini-cli/tanstack-infinite-queries/SKILL.md +106 -0
  5390. package/dist/agents/skills/gemini-cli/tanstack-infinite-queries/skill.yaml +44 -0
  5391. package/dist/agents/skills/gemini-cli/tanstack-mutation-patterns/SKILL.md +122 -0
  5392. package/dist/agents/skills/gemini-cli/tanstack-mutation-patterns/skill.yaml +44 -0
  5393. package/dist/agents/skills/gemini-cli/tanstack-optimistic-updates/SKILL.md +106 -0
  5394. package/dist/agents/skills/gemini-cli/tanstack-optimistic-updates/skill.yaml +44 -0
  5395. package/dist/agents/skills/gemini-cli/tanstack-prefetching/SKILL.md +106 -0
  5396. package/dist/agents/skills/gemini-cli/tanstack-prefetching/skill.yaml +44 -0
  5397. package/dist/agents/skills/gemini-cli/tanstack-query-invalidation/SKILL.md +95 -0
  5398. package/dist/agents/skills/gemini-cli/tanstack-query-invalidation/skill.yaml +43 -0
  5399. package/dist/agents/skills/gemini-cli/tanstack-query-keys/SKILL.md +94 -0
  5400. package/dist/agents/skills/gemini-cli/tanstack-query-keys/skill.yaml +43 -0
  5401. package/dist/agents/skills/gemini-cli/tanstack-suspense-mode/SKILL.md +96 -0
  5402. package/dist/agents/skills/gemini-cli/tanstack-suspense-mode/skill.yaml +42 -0
  5403. package/dist/agents/skills/gemini-cli/test-accessibility-testing/SKILL.md +201 -0
  5404. package/dist/agents/skills/gemini-cli/test-accessibility-testing/skill.yaml +43 -0
  5405. package/dist/agents/skills/gemini-cli/test-component-react/SKILL.md +173 -0
  5406. package/dist/agents/skills/gemini-cli/test-component-react/skill.yaml +45 -0
  5407. package/dist/agents/skills/gemini-cli/test-component-svelte/SKILL.md +184 -0
  5408. package/dist/agents/skills/gemini-cli/test-component-svelte/skill.yaml +43 -0
  5409. package/dist/agents/skills/gemini-cli/test-contract-testing/SKILL.md +180 -0
  5410. package/dist/agents/skills/gemini-cli/test-contract-testing/skill.yaml +42 -0
  5411. package/dist/agents/skills/gemini-cli/test-coverage-patterns/SKILL.md +165 -0
  5412. package/dist/agents/skills/gemini-cli/test-coverage-patterns/skill.yaml +44 -0
  5413. package/dist/agents/skills/gemini-cli/test-e2e-strategy/SKILL.md +146 -0
  5414. package/dist/agents/skills/gemini-cli/test-e2e-strategy/skill.yaml +44 -0
  5415. package/dist/agents/skills/gemini-cli/test-factory-patterns/SKILL.md +198 -0
  5416. package/dist/agents/skills/gemini-cli/test-factory-patterns/skill.yaml +44 -0
  5417. package/dist/agents/skills/gemini-cli/test-integration-patterns/SKILL.md +202 -0
  5418. package/dist/agents/skills/gemini-cli/test-integration-patterns/skill.yaml +44 -0
  5419. package/dist/agents/skills/gemini-cli/test-mock-patterns/SKILL.md +184 -0
  5420. package/dist/agents/skills/gemini-cli/test-mock-patterns/skill.yaml +45 -0
  5421. package/dist/agents/skills/gemini-cli/test-msw-pattern/SKILL.md +181 -0
  5422. package/dist/agents/skills/gemini-cli/test-msw-pattern/skill.yaml +44 -0
  5423. package/dist/agents/skills/gemini-cli/test-performance-testing/SKILL.md +199 -0
  5424. package/dist/agents/skills/gemini-cli/test-performance-testing/skill.yaml +47 -0
  5425. package/dist/agents/skills/gemini-cli/test-playwright-patterns/SKILL.md +197 -0
  5426. package/dist/agents/skills/gemini-cli/test-playwright-patterns/skill.yaml +44 -0
  5427. package/dist/agents/skills/gemini-cli/test-playwright-setup/SKILL.md +178 -0
  5428. package/dist/agents/skills/gemini-cli/test-playwright-setup/skill.yaml +43 -0
  5429. package/dist/agents/skills/gemini-cli/test-property-based/SKILL.md +172 -0
  5430. package/dist/agents/skills/gemini-cli/test-property-based/skill.yaml +43 -0
  5431. package/dist/agents/skills/gemini-cli/test-snapshot-patterns/SKILL.md +142 -0
  5432. package/dist/agents/skills/gemini-cli/test-snapshot-patterns/skill.yaml +42 -0
  5433. package/dist/agents/skills/gemini-cli/test-tdd-workflow/SKILL.md +185 -0
  5434. package/dist/agents/skills/gemini-cli/test-tdd-workflow/skill.yaml +43 -0
  5435. package/dist/agents/skills/gemini-cli/test-unit-patterns/SKILL.md +209 -0
  5436. package/dist/agents/skills/gemini-cli/test-unit-patterns/skill.yaml +45 -0
  5437. package/dist/agents/skills/gemini-cli/test-vitest-config/SKILL.md +212 -0
  5438. package/dist/agents/skills/gemini-cli/test-vitest-config/skill.yaml +45 -0
  5439. package/dist/agents/skills/gemini-cli/trpc-context-pattern/SKILL.md +190 -0
  5440. package/dist/agents/skills/gemini-cli/trpc-context-pattern/skill.yaml +42 -0
  5441. package/dist/agents/skills/gemini-cli/trpc-error-handling/SKILL.md +133 -0
  5442. package/dist/agents/skills/gemini-cli/trpc-error-handling/skill.yaml +45 -0
  5443. package/dist/agents/skills/gemini-cli/trpc-input-validation/SKILL.md +101 -0
  5444. package/dist/agents/skills/gemini-cli/trpc-input-validation/skill.yaml +44 -0
  5445. package/dist/agents/skills/gemini-cli/trpc-middleware-pattern/SKILL.md +99 -0
  5446. package/dist/agents/skills/gemini-cli/trpc-middleware-pattern/skill.yaml +42 -0
  5447. package/dist/agents/skills/gemini-cli/trpc-nextjs-integration/SKILL.md +203 -0
  5448. package/dist/agents/skills/gemini-cli/trpc-nextjs-integration/skill.yaml +44 -0
  5449. package/dist/agents/skills/gemini-cli/trpc-react-query-integration/SKILL.md +182 -0
  5450. package/dist/agents/skills/gemini-cli/trpc-react-query-integration/skill.yaml +44 -0
  5451. package/dist/agents/skills/gemini-cli/trpc-router-composition/SKILL.md +99 -0
  5452. package/dist/agents/skills/gemini-cli/trpc-router-composition/skill.yaml +45 -0
  5453. package/dist/agents/skills/gemini-cli/trpc-subscription-pattern/SKILL.md +118 -0
  5454. package/dist/agents/skills/gemini-cli/trpc-subscription-pattern/skill.yaml +44 -0
  5455. package/dist/agents/skills/gemini-cli/ts-async-patterns/SKILL.md +193 -0
  5456. package/dist/agents/skills/gemini-cli/ts-async-patterns/skill.yaml +39 -0
  5457. package/dist/agents/skills/gemini-cli/ts-branded-types/SKILL.md +161 -0
  5458. package/dist/agents/skills/gemini-cli/ts-branded-types/skill.yaml +39 -0
  5459. package/dist/agents/skills/gemini-cli/ts-class-patterns/SKILL.md +238 -0
  5460. package/dist/agents/skills/gemini-cli/ts-class-patterns/skill.yaml +39 -0
  5461. package/dist/agents/skills/gemini-cli/ts-conditional-types/SKILL.md +142 -0
  5462. package/dist/agents/skills/gemini-cli/ts-conditional-types/skill.yaml +39 -0
  5463. package/dist/agents/skills/gemini-cli/ts-config-patterns/SKILL.md +190 -0
  5464. package/dist/agents/skills/gemini-cli/ts-config-patterns/skill.yaml +39 -0
  5465. package/dist/agents/skills/gemini-cli/ts-declaration-merging/SKILL.md +187 -0
  5466. package/dist/agents/skills/gemini-cli/ts-declaration-merging/skill.yaml +38 -0
  5467. package/dist/agents/skills/gemini-cli/ts-decorator-patterns/SKILL.md +181 -0
  5468. package/dist/agents/skills/gemini-cli/ts-decorator-patterns/skill.yaml +38 -0
  5469. package/dist/agents/skills/gemini-cli/ts-discriminated-unions/SKILL.md +186 -0
  5470. package/dist/agents/skills/gemini-cli/ts-discriminated-unions/skill.yaml +39 -0
  5471. package/dist/agents/skills/gemini-cli/ts-error-handling-types/SKILL.md +205 -0
  5472. package/dist/agents/skills/gemini-cli/ts-error-handling-types/skill.yaml +39 -0
  5473. package/dist/agents/skills/gemini-cli/ts-generics-pattern/SKILL.md +104 -0
  5474. package/dist/agents/skills/gemini-cli/ts-generics-pattern/skill.yaml +40 -0
  5475. package/dist/agents/skills/gemini-cli/ts-mapped-types/SKILL.md +147 -0
  5476. package/dist/agents/skills/gemini-cli/ts-mapped-types/skill.yaml +39 -0
  5477. package/dist/agents/skills/gemini-cli/ts-module-patterns/SKILL.md +156 -0
  5478. package/dist/agents/skills/gemini-cli/ts-module-patterns/skill.yaml +38 -0
  5479. package/dist/agents/skills/gemini-cli/ts-performance-patterns/SKILL.md +158 -0
  5480. package/dist/agents/skills/gemini-cli/ts-performance-patterns/skill.yaml +42 -0
  5481. package/dist/agents/skills/gemini-cli/ts-satisfies-operator/SKILL.md +151 -0
  5482. package/dist/agents/skills/gemini-cli/ts-satisfies-operator/skill.yaml +39 -0
  5483. package/dist/agents/skills/gemini-cli/ts-strict-mode/SKILL.md +167 -0
  5484. package/dist/agents/skills/gemini-cli/ts-strict-mode/skill.yaml +39 -0
  5485. package/dist/agents/skills/gemini-cli/ts-template-literal-types/SKILL.md +146 -0
  5486. package/dist/agents/skills/gemini-cli/ts-template-literal-types/skill.yaml +39 -0
  5487. package/dist/agents/skills/gemini-cli/ts-testing-types/SKILL.md +166 -0
  5488. package/dist/agents/skills/gemini-cli/ts-testing-types/skill.yaml +39 -0
  5489. package/dist/agents/skills/gemini-cli/ts-type-guards/SKILL.md +168 -0
  5490. package/dist/agents/skills/gemini-cli/ts-type-guards/skill.yaml +40 -0
  5491. package/dist/agents/skills/gemini-cli/ts-utility-types/SKILL.md +119 -0
  5492. package/dist/agents/skills/gemini-cli/ts-utility-types/skill.yaml +44 -0
  5493. package/dist/agents/skills/gemini-cli/ts-zod-integration/SKILL.md +181 -0
  5494. package/dist/agents/skills/gemini-cli/ts-zod-integration/skill.yaml +38 -0
  5495. package/dist/agents/skills/gemini-cli/ux-active-voice/SKILL.md +150 -0
  5496. package/dist/agents/skills/gemini-cli/ux-active-voice/skill.yaml +32 -0
  5497. package/dist/agents/skills/gemini-cli/ux-button-cta-copy/SKILL.md +159 -0
  5498. package/dist/agents/skills/gemini-cli/ux-button-cta-copy/skill.yaml +34 -0
  5499. package/dist/agents/skills/gemini-cli/ux-confirmation-dialogs/SKILL.md +156 -0
  5500. package/dist/agents/skills/gemini-cli/ux-confirmation-dialogs/skill.yaml +33 -0
  5501. package/dist/agents/skills/gemini-cli/ux-content-hierarchy/SKILL.md +150 -0
  5502. package/dist/agents/skills/gemini-cli/ux-content-hierarchy/skill.yaml +33 -0
  5503. package/dist/agents/skills/gemini-cli/ux-data-table-copy/SKILL.md +154 -0
  5504. package/dist/agents/skills/gemini-cli/ux-data-table-copy/skill.yaml +34 -0
  5505. package/dist/agents/skills/gemini-cli/ux-destructive-action-copy/SKILL.md +152 -0
  5506. package/dist/agents/skills/gemini-cli/ux-destructive-action-copy/skill.yaml +34 -0
  5507. package/dist/agents/skills/gemini-cli/ux-empty-states/SKILL.md +155 -0
  5508. package/dist/agents/skills/gemini-cli/ux-empty-states/skill.yaml +36 -0
  5509. package/dist/agents/skills/gemini-cli/ux-error-messages/SKILL.md +159 -0
  5510. package/dist/agents/skills/gemini-cli/ux-error-messages/skill.yaml +35 -0
  5511. package/dist/agents/skills/gemini-cli/ux-error-severity/SKILL.md +155 -0
  5512. package/dist/agents/skills/gemini-cli/ux-error-severity/skill.yaml +35 -0
  5513. package/dist/agents/skills/gemini-cli/ux-form-labels/SKILL.md +159 -0
  5514. package/dist/agents/skills/gemini-cli/ux-form-labels/skill.yaml +36 -0
  5515. package/dist/agents/skills/gemini-cli/ux-inclusive-language/SKILL.md +161 -0
  5516. package/dist/agents/skills/gemini-cli/ux-inclusive-language/skill.yaml +33 -0
  5517. package/dist/agents/skills/gemini-cli/ux-internationalization-writing/SKILL.md +196 -0
  5518. package/dist/agents/skills/gemini-cli/ux-internationalization-writing/skill.yaml +35 -0
  5519. package/dist/agents/skills/gemini-cli/ux-loading-states/SKILL.md +162 -0
  5520. package/dist/agents/skills/gemini-cli/ux-loading-states/skill.yaml +33 -0
  5521. package/dist/agents/skills/gemini-cli/ux-microcopy-principles/SKILL.md +152 -0
  5522. package/dist/agents/skills/gemini-cli/ux-microcopy-principles/skill.yaml +37 -0
  5523. package/dist/agents/skills/gemini-cli/ux-navigation-labels/SKILL.md +163 -0
  5524. package/dist/agents/skills/gemini-cli/ux-navigation-labels/skill.yaml +35 -0
  5525. package/dist/agents/skills/gemini-cli/ux-notification-copy/SKILL.md +150 -0
  5526. package/dist/agents/skills/gemini-cli/ux-notification-copy/skill.yaml +35 -0
  5527. package/dist/agents/skills/gemini-cli/ux-onboarding-copy/SKILL.md +156 -0
  5528. package/dist/agents/skills/gemini-cli/ux-onboarding-copy/skill.yaml +35 -0
  5529. package/dist/agents/skills/gemini-cli/ux-permission-access-copy/SKILL.md +150 -0
  5530. package/dist/agents/skills/gemini-cli/ux-permission-access-copy/skill.yaml +34 -0
  5531. package/dist/agents/skills/gemini-cli/ux-plain-language/SKILL.md +157 -0
  5532. package/dist/agents/skills/gemini-cli/ux-plain-language/skill.yaml +34 -0
  5533. package/dist/agents/skills/gemini-cli/ux-search-copy/SKILL.md +154 -0
  5534. package/dist/agents/skills/gemini-cli/ux-search-copy/skill.yaml +33 -0
  5535. package/dist/agents/skills/gemini-cli/ux-settings-preferences/SKILL.md +152 -0
  5536. package/dist/agents/skills/gemini-cli/ux-settings-preferences/skill.yaml +33 -0
  5537. package/dist/agents/skills/gemini-cli/ux-success-feedback/SKILL.md +163 -0
  5538. package/dist/agents/skills/gemini-cli/ux-success-feedback/skill.yaml +33 -0
  5539. package/dist/agents/skills/gemini-cli/ux-tooltip-contextual-help/SKILL.md +163 -0
  5540. package/dist/agents/skills/gemini-cli/ux-tooltip-contextual-help/skill.yaml +33 -0
  5541. package/dist/agents/skills/gemini-cli/ux-voice-tone/SKILL.md +150 -0
  5542. package/dist/agents/skills/gemini-cli/ux-voice-tone/skill.yaml +33 -0
  5543. package/dist/agents/skills/gemini-cli/ux-writing-for-scanning/SKILL.md +150 -0
  5544. package/dist/agents/skills/gemini-cli/ux-writing-for-scanning/skill.yaml +35 -0
  5545. package/dist/agents/skills/gemini-cli/validate-context-engineering/skill.yaml +3 -0
  5546. package/dist/agents/skills/gemini-cli/vue-async-components/SKILL.md +67 -0
  5547. package/dist/agents/skills/gemini-cli/vue-async-components/skill.yaml +36 -0
  5548. package/dist/agents/skills/gemini-cli/vue-component-events/SKILL.md +72 -0
  5549. package/dist/agents/skills/gemini-cli/vue-component-events/skill.yaml +36 -0
  5550. package/dist/agents/skills/gemini-cli/vue-composables-pattern/SKILL.md +75 -0
  5551. package/dist/agents/skills/gemini-cli/vue-composables-pattern/skill.yaml +35 -0
  5552. package/dist/agents/skills/gemini-cli/vue-directive-pattern/SKILL.md +66 -0
  5553. package/dist/agents/skills/gemini-cli/vue-directive-pattern/skill.yaml +35 -0
  5554. package/dist/agents/skills/gemini-cli/vue-pinia-pattern/SKILL.md +69 -0
  5555. package/dist/agents/skills/gemini-cli/vue-pinia-pattern/skill.yaml +36 -0
  5556. package/dist/agents/skills/gemini-cli/vue-provide-inject/SKILL.md +66 -0
  5557. package/dist/agents/skills/gemini-cli/vue-provide-inject/skill.yaml +36 -0
  5558. package/dist/agents/skills/gemini-cli/vue-reactive-refs/SKILL.md +67 -0
  5559. package/dist/agents/skills/gemini-cli/vue-reactive-refs/skill.yaml +36 -0
  5560. package/dist/agents/skills/gemini-cli/vue-renderless-components/SKILL.md +69 -0
  5561. package/dist/agents/skills/gemini-cli/vue-renderless-components/skill.yaml +36 -0
  5562. package/dist/agents/skills/gemini-cli/vue-slots-pattern/SKILL.md +72 -0
  5563. package/dist/agents/skills/gemini-cli/vue-slots-pattern/skill.yaml +36 -0
  5564. package/dist/agents/skills/gemini-cli/vue-teleport-pattern/SKILL.md +66 -0
  5565. package/dist/agents/skills/gemini-cli/vue-teleport-pattern/skill.yaml +36 -0
  5566. package/dist/agents/skills/gemini-cli/vue-watchers-pattern/SKILL.md +73 -0
  5567. package/dist/agents/skills/gemini-cli/vue-watchers-pattern/skill.yaml +36 -0
  5568. package/dist/agents/skills/gemini-cli/xstate-actor-pattern/SKILL.md +155 -0
  5569. package/dist/agents/skills/gemini-cli/xstate-actor-pattern/skill.yaml +41 -0
  5570. package/dist/agents/skills/gemini-cli/xstate-guards-actions/SKILL.md +153 -0
  5571. package/dist/agents/skills/gemini-cli/xstate-guards-actions/skill.yaml +42 -0
  5572. package/dist/agents/skills/gemini-cli/xstate-history-states/SKILL.md +123 -0
  5573. package/dist/agents/skills/gemini-cli/xstate-history-states/skill.yaml +40 -0
  5574. package/dist/agents/skills/gemini-cli/xstate-invoke-pattern/SKILL.md +165 -0
  5575. package/dist/agents/skills/gemini-cli/xstate-invoke-pattern/skill.yaml +41 -0
  5576. package/dist/agents/skills/gemini-cli/xstate-machine-definition/SKILL.md +151 -0
  5577. package/dist/agents/skills/gemini-cli/xstate-machine-definition/skill.yaml +41 -0
  5578. package/dist/agents/skills/gemini-cli/xstate-parallel-states/SKILL.md +130 -0
  5579. package/dist/agents/skills/gemini-cli/xstate-parallel-states/skill.yaml +40 -0
  5580. package/dist/agents/skills/gemini-cli/xstate-react-integration/SKILL.md +138 -0
  5581. package/dist/agents/skills/gemini-cli/xstate-react-integration/skill.yaml +40 -0
  5582. package/dist/agents/skills/gemini-cli/xstate-testing-patterns/SKILL.md +173 -0
  5583. package/dist/agents/skills/gemini-cli/xstate-testing-patterns/skill.yaml +40 -0
  5584. package/dist/agents/skills/gemini-cli/xstate-typegen/SKILL.md +168 -0
  5585. package/dist/agents/skills/gemini-cli/xstate-typegen/skill.yaml +40 -0
  5586. package/dist/agents/skills/gemini-cli/xstate-visualization/SKILL.md +124 -0
  5587. package/dist/agents/skills/gemini-cli/xstate-visualization/skill.yaml +40 -0
  5588. package/dist/agents/skills/gemini-cli/zod-array-validation/SKILL.md +160 -0
  5589. package/dist/agents/skills/gemini-cli/zod-array-validation/skill.yaml +43 -0
  5590. package/dist/agents/skills/gemini-cli/zod-async-validation/SKILL.md +205 -0
  5591. package/dist/agents/skills/gemini-cli/zod-async-validation/skill.yaml +41 -0
  5592. package/dist/agents/skills/gemini-cli/zod-error-handling/SKILL.md +206 -0
  5593. package/dist/agents/skills/gemini-cli/zod-error-handling/skill.yaml +42 -0
  5594. package/dist/agents/skills/gemini-cli/zod-infer-types/SKILL.md +192 -0
  5595. package/dist/agents/skills/gemini-cli/zod-infer-types/skill.yaml +42 -0
  5596. package/dist/agents/skills/gemini-cli/zod-nextjs-integration/SKILL.md +232 -0
  5597. package/dist/agents/skills/gemini-cli/zod-nextjs-integration/skill.yaml +43 -0
  5598. package/dist/agents/skills/gemini-cli/zod-object-patterns/SKILL.md +190 -0
  5599. package/dist/agents/skills/gemini-cli/zod-object-patterns/skill.yaml +44 -0
  5600. package/dist/agents/skills/gemini-cli/zod-schema-definition/SKILL.md +170 -0
  5601. package/dist/agents/skills/gemini-cli/zod-schema-definition/skill.yaml +43 -0
  5602. package/dist/agents/skills/gemini-cli/zod-string-validation/SKILL.md +180 -0
  5603. package/dist/agents/skills/gemini-cli/zod-string-validation/skill.yaml +44 -0
  5604. package/dist/agents/skills/gemini-cli/zod-transform-refine/SKILL.md +193 -0
  5605. package/dist/agents/skills/gemini-cli/zod-transform-refine/skill.yaml +43 -0
  5606. package/dist/agents/skills/gemini-cli/zod-union-discriminated/SKILL.md +168 -0
  5607. package/dist/agents/skills/gemini-cli/zod-union-discriminated/skill.yaml +41 -0
  5608. package/dist/agents/skills/tests/schema.ts +16 -1
  5609. package/dist/agents/skills/tests/structure.test.ts +52 -9
  5610. package/dist/agents-md-MMVRF77L.js +9 -0
  5611. package/dist/architecture-JAEDPYQZ.js +14 -0
  5612. package/dist/assess-project-7JZCVM7D.js +9 -0
  5613. package/dist/bin/harness-mcp.js +16 -16
  5614. package/dist/bin/harness.js +25 -25
  5615. package/dist/check-phase-gate-YQHAH4LL.js +14 -0
  5616. package/dist/chunk-2DAMN7ED.js +293 -0
  5617. package/dist/chunk-6B6UN6SG.js +112 -0
  5618. package/dist/chunk-AVVJ5EUU.js +337 -0
  5619. package/dist/chunk-BWWNQPPO.js +248 -0
  5620. package/dist/chunk-C5FTJ3EU.js +122 -0
  5621. package/dist/chunk-CQ553GZO.js +350 -0
  5622. package/dist/chunk-GISMXMVL.js +164 -0
  5623. package/dist/chunk-HVFCCARH.js +89 -0
  5624. package/dist/chunk-I4QR3HNH.js +59 -0
  5625. package/dist/chunk-JGMCHJ6B.js +187 -0
  5626. package/dist/chunk-JT732X6S.js +103 -0
  5627. package/dist/chunk-LVYPPKZI.js +78 -0
  5628. package/dist/chunk-LY3YVKXL.js +7141 -0
  5629. package/dist/chunk-MS6KDQW7.js +201 -0
  5630. package/dist/chunk-NU3BPEDR.js +85 -0
  5631. package/dist/chunk-NV4FPO7J.js +300 -0
  5632. package/dist/chunk-OZIHPMA7.js +5171 -0
  5633. package/dist/chunk-PCWYYFBP.js +15559 -0
  5634. package/dist/chunk-TDLOFNNQ.js +62 -0
  5635. package/dist/chunk-TUJAHI22.js +130 -0
  5636. package/dist/chunk-UQEUYRBP.js +125 -0
  5637. package/dist/chunk-W2OZK3KC.js +250 -0
  5638. package/dist/chunk-XNEMDKV5.js +199 -0
  5639. package/dist/chunk-ZKVLBOYA.js +8439 -0
  5640. package/dist/chunk-ZOVATVQC.js +122 -0
  5641. package/dist/ci-workflow-HDH4LCOF.js +9 -0
  5642. package/dist/create-skill-QCXINA5Q.js +11 -0
  5643. package/dist/dist-QW5G3GX3.js +104 -0
  5644. package/dist/dist-RRMRZRV7.js +18 -0
  5645. package/dist/dist-TZQUURSP.js +695 -0
  5646. package/dist/docs-6SPJYTRR.js +15 -0
  5647. package/dist/engine-CSITRE3J.js +9 -0
  5648. package/dist/entropy-FZP643BK.js +13 -0
  5649. package/dist/feedback-RSPUJCJJ.js +18 -0
  5650. package/dist/generate-agent-definitions-OLYWXTYH.js +16 -0
  5651. package/dist/glob-helper-SRXMZPKM.js +52 -0
  5652. package/dist/graph-loader-M6FXJAKK.js +8 -0
  5653. package/dist/index.d.ts +39 -8
  5654. package/dist/index.js +25 -25
  5655. package/dist/loader-P2P7CV2A.js +11 -0
  5656. package/dist/mcp-JZG22CYT.js +37 -0
  5657. package/dist/performance-VVWOIJTE.js +27 -0
  5658. package/dist/review-pipeline-XSRO7HYZ.js +9 -0
  5659. package/dist/runner-TY7DJGQV.js +6 -0
  5660. package/dist/runtime-VMOIIP6B.js +10 -0
  5661. package/dist/security-4AQ46P3H.js +9 -0
  5662. package/dist/skill-executor-GA7BDX3F.js +8 -0
  5663. package/dist/validate-T7UTXLEQ.js +13 -0
  5664. package/dist/validate-cross-check-M4NP2UF5.js +9 -0
  5665. package/package.json +7 -6
  5666. package/dist/agents-md-HCCCO5PK.js +0 -9
  5667. package/dist/architecture-S2H624W7.js +0 -14
  5668. package/dist/assess-project-XSGK44S5.js +0 -9
  5669. package/dist/check-phase-gate-UGBJ237T.js +0 -14
  5670. package/dist/chunk-2DHX6TAP.js +0 -85
  5671. package/dist/chunk-2GT3HO2T.js +0 -103
  5672. package/dist/chunk-2PAPHA77.js +0 -125
  5673. package/dist/chunk-2YA4XRI3.js +0 -187
  5674. package/dist/chunk-35EQ5UEI.js +0 -73
  5675. package/dist/chunk-4FHBPA3E.js +0 -175
  5676. package/dist/chunk-BK52Z6DR.js +0 -6614
  5677. package/dist/chunk-CLD4KL7O.js +0 -4945
  5678. package/dist/chunk-E2GTL3YS.js +0 -52
  5679. package/dist/chunk-I47JLISV.js +0 -62
  5680. package/dist/chunk-KC5CTCEL.js +0 -248
  5681. package/dist/chunk-KTL3PHNQ.js +0 -7701
  5682. package/dist/chunk-KV4M6Y5J.js +0 -346
  5683. package/dist/chunk-MHOO7NLG.js +0 -201
  5684. package/dist/chunk-MZAHE4DK.js +0 -130
  5685. package/dist/chunk-N5G5QMS3.js +0 -103
  5686. package/dist/chunk-NKL53UBL.js +0 -241
  5687. package/dist/chunk-PGF44T2D.js +0 -327
  5688. package/dist/chunk-S5ZXT3TZ.js +0 -89
  5689. package/dist/chunk-SE4YPMLH.js +0 -89
  5690. package/dist/chunk-TRAPF4IX.js +0 -185
  5691. package/dist/chunk-UGD37ECK.js +0 -293
  5692. package/dist/chunk-V27WDRYV.js +0 -14920
  5693. package/dist/chunk-ZRYDYDB2.js +0 -293
  5694. package/dist/chunk-ZYJJUPNE.js +0 -122
  5695. package/dist/ci-workflow-I3V7FZNV.js +0 -9
  5696. package/dist/create-skill-AO25CJFM.js +0 -11
  5697. package/dist/dist-KQSTRP36.js +0 -18
  5698. package/dist/dist-MKWF5CXR.js +0 -659
  5699. package/dist/dist-WU3TVNNG.js +0 -98
  5700. package/dist/docs-R7UVQBMQ.js +0 -15
  5701. package/dist/engine-JGI3MWAC.js +0 -9
  5702. package/dist/entropy-IDHIG7HS.js +0 -13
  5703. package/dist/feedback-JZETY4UR.js +0 -18
  5704. package/dist/generate-agent-definitions-D7B25YTM.js +0 -16
  5705. package/dist/glob-helper-R5FXNUPS.js +0 -52
  5706. package/dist/graph-loader-BJULJYGG.js +0 -8
  5707. package/dist/loader-E4KNTOP2.js +0 -11
  5708. package/dist/mcp-67I2DBNM.js +0 -37
  5709. package/dist/performance-744OSR6P.js +0 -27
  5710. package/dist/review-pipeline-HIO7HBW4.js +0 -9
  5711. package/dist/runner-VMYLHWOC.js +0 -6
  5712. package/dist/runtime-JXQ26U4Z.js +0 -10
  5713. package/dist/security-GDKHVFUC.js +0 -9
  5714. package/dist/skill-executor-2BZQLHYN.js +0 -8
  5715. package/dist/validate-2IUR3OWX.js +0 -13
  5716. package/dist/validate-cross-check-AM4T6P2K.js +0 -9
@@ -1,4945 +0,0 @@
1
- // ../graph/dist/index.mjs
2
- import { z } from "zod";
3
- import { readFile, writeFile, mkdir, access } from "fs/promises";
4
- import { join } from "path";
5
- import * as fs from "fs/promises";
6
- import * as path from "path";
7
- import { execFile } from "child_process";
8
- import { promisify } from "util";
9
- import * as path2 from "path";
10
- import * as fs2 from "fs/promises";
11
- import * as path3 from "path";
12
- import * as crypto from "crypto";
13
- import * as fs3 from "fs/promises";
14
- import * as path4 from "path";
15
- import * as fs4 from "fs/promises";
16
- import * as path5 from "path";
17
- import { minimatch } from "minimatch";
18
- import { relative as relative2 } from "path";
19
- import * as fs5 from "fs/promises";
20
- import * as path6 from "path";
21
- var NODE_TYPES = [
22
- // Code
23
- "repository",
24
- "module",
25
- "file",
26
- "class",
27
- "interface",
28
- "function",
29
- "method",
30
- "variable",
31
- // Knowledge
32
- "adr",
33
- "decision",
34
- "learning",
35
- "failure",
36
- "issue",
37
- "document",
38
- "skill",
39
- "conversation",
40
- // VCS
41
- "commit",
42
- "build",
43
- "test_result",
44
- // Observability (future)
45
- "span",
46
- "metric",
47
- "log",
48
- // Structural
49
- "layer",
50
- "pattern",
51
- "constraint",
52
- "violation",
53
- // Design
54
- "design_token",
55
- "aesthetic_intent",
56
- "design_constraint",
57
- // Traceability
58
- "requirement"
59
- ];
60
- var EDGE_TYPES = [
61
- // Code relationships
62
- "contains",
63
- "imports",
64
- "calls",
65
- "implements",
66
- "inherits",
67
- "references",
68
- // Knowledge relationships
69
- "applies_to",
70
- "caused_by",
71
- "resolved_by",
72
- "documents",
73
- "violates",
74
- "specifies",
75
- "decided",
76
- // VCS relationships
77
- "co_changes_with",
78
- "triggered_by",
79
- "failed_in",
80
- // Execution relationships (future)
81
- "executed_by",
82
- "measured_by",
83
- // Design relationships
84
- "uses_token",
85
- "declares_intent",
86
- "violates_design",
87
- "platform_binding",
88
- // Traceability relationships
89
- "requires",
90
- "verified_by",
91
- "tested_by"
92
- ];
93
- var OBSERVABILITY_TYPES = /* @__PURE__ */ new Set(["span", "metric", "log"]);
94
- var CURRENT_SCHEMA_VERSION = 1;
95
- var GraphNodeSchema = z.object({
96
- id: z.string(),
97
- type: z.enum(NODE_TYPES),
98
- name: z.string(),
99
- path: z.string().optional(),
100
- location: z.object({
101
- fileId: z.string(),
102
- startLine: z.number(),
103
- endLine: z.number(),
104
- startColumn: z.number().optional(),
105
- endColumn: z.number().optional()
106
- }).optional(),
107
- content: z.string().optional(),
108
- hash: z.string().optional(),
109
- metadata: z.record(z.unknown()),
110
- embedding: z.array(z.number()).optional(),
111
- lastModified: z.string().optional()
112
- });
113
- var GraphEdgeSchema = z.object({
114
- from: z.string(),
115
- to: z.string(),
116
- type: z.enum(EDGE_TYPES),
117
- confidence: z.number().min(0).max(1).optional(),
118
- metadata: z.record(z.unknown()).optional()
119
- });
120
- async function saveGraph(dirPath, nodes, edges) {
121
- await mkdir(dirPath, { recursive: true });
122
- const graphData = { nodes, edges };
123
- const metadata = {
124
- schemaVersion: CURRENT_SCHEMA_VERSION,
125
- lastScanTimestamp: (/* @__PURE__ */ new Date()).toISOString(),
126
- nodeCount: nodes.length,
127
- edgeCount: edges.length
128
- };
129
- await Promise.all([
130
- writeFile(join(dirPath, "graph.json"), JSON.stringify(graphData, null, 2), "utf-8"),
131
- writeFile(join(dirPath, "metadata.json"), JSON.stringify(metadata, null, 2), "utf-8")
132
- ]);
133
- }
134
- async function loadGraph(dirPath) {
135
- const metaPath = join(dirPath, "metadata.json");
136
- const graphPath = join(dirPath, "graph.json");
137
- try {
138
- await access(metaPath);
139
- await access(graphPath);
140
- } catch {
141
- return null;
142
- }
143
- const metaContent = await readFile(metaPath, "utf-8");
144
- const metadata = JSON.parse(metaContent);
145
- if (metadata.schemaVersion !== CURRENT_SCHEMA_VERSION) {
146
- return null;
147
- }
148
- const graphContent = await readFile(graphPath, "utf-8");
149
- return JSON.parse(graphContent);
150
- }
151
- var POISONED_KEYS = /* @__PURE__ */ new Set(["__proto__", "constructor", "prototype"]);
152
- function safeMerge(target, source) {
153
- for (const key of Object.keys(source)) {
154
- if (!POISONED_KEYS.has(key)) {
155
- target[key] = source[key];
156
- }
157
- }
158
- }
159
- function edgeKey(from, to, type) {
160
- return `${from}\0${to}\0${type}`;
161
- }
162
- function addToIndex(index, key, edge) {
163
- const list = index.get(key);
164
- if (list) {
165
- list.push(edge);
166
- } else {
167
- index.set(key, [edge]);
168
- }
169
- }
170
- function removeFromIndex(index, key, edge) {
171
- const list = index.get(key);
172
- if (!list) return;
173
- const idx = list.indexOf(edge);
174
- if (idx !== -1) list.splice(idx, 1);
175
- if (list.length === 0) index.delete(key);
176
- }
177
- function filterEdges(candidates, query) {
178
- const results = [];
179
- for (const edge of candidates) {
180
- if (query.from !== void 0 && edge.from !== query.from) continue;
181
- if (query.to !== void 0 && edge.to !== query.to) continue;
182
- if (query.type !== void 0 && edge.type !== query.type) continue;
183
- results.push({ ...edge });
184
- }
185
- return results;
186
- }
187
- var GraphStore = class {
188
- nodeMap = /* @__PURE__ */ new Map();
189
- edgeMap = /* @__PURE__ */ new Map();
190
- // keyed by from\0to\0type
191
- edgesByFrom = /* @__PURE__ */ new Map();
192
- edgesByTo = /* @__PURE__ */ new Map();
193
- edgesByType = /* @__PURE__ */ new Map();
194
- // --- Node operations ---
195
- addNode(node) {
196
- const existing = this.nodeMap.get(node.id);
197
- if (existing) {
198
- safeMerge(existing, node);
199
- } else {
200
- this.nodeMap.set(node.id, { ...node });
201
- }
202
- }
203
- batchAddNodes(nodes) {
204
- for (const node of nodes) {
205
- this.addNode(node);
206
- }
207
- }
208
- getNode(id) {
209
- const node = this.nodeMap.get(id);
210
- if (!node) return null;
211
- return { ...node };
212
- }
213
- findNodes(query) {
214
- const results = [];
215
- for (const node of this.nodeMap.values()) {
216
- if (query.type !== void 0 && node.type !== query.type) continue;
217
- if (query.name !== void 0 && node.name !== query.name) continue;
218
- if (query.path !== void 0 && node.path !== query.path) continue;
219
- results.push({ ...node });
220
- }
221
- return results;
222
- }
223
- removeNode(id) {
224
- this.nodeMap.delete(id);
225
- const fromEdges = this.edgesByFrom.get(id) ?? [];
226
- const toEdges = this.edgesByTo.get(id) ?? [];
227
- const edgesToRemove = /* @__PURE__ */ new Set([...fromEdges, ...toEdges]);
228
- for (const edge of edgesToRemove) {
229
- this.removeEdgeInternal(edge);
230
- }
231
- }
232
- // --- Edge operations ---
233
- addEdge(edge) {
234
- const key = edgeKey(edge.from, edge.to, edge.type);
235
- const existing = this.edgeMap.get(key);
236
- if (existing) {
237
- if (edge.metadata) {
238
- safeMerge(existing, edge);
239
- }
240
- return;
241
- }
242
- const copy = { ...edge };
243
- this.edgeMap.set(key, copy);
244
- addToIndex(this.edgesByFrom, edge.from, copy);
245
- addToIndex(this.edgesByTo, edge.to, copy);
246
- addToIndex(this.edgesByType, edge.type, copy);
247
- }
248
- batchAddEdges(edges) {
249
- for (const edge of edges) {
250
- this.addEdge(edge);
251
- }
252
- }
253
- getEdges(query) {
254
- if (query.from !== void 0 && query.to !== void 0 && query.type !== void 0) {
255
- const edge = this.edgeMap.get(edgeKey(query.from, query.to, query.type));
256
- return edge ? [{ ...edge }] : [];
257
- }
258
- const candidates = this.selectCandidates(query);
259
- return filterEdges(candidates, query);
260
- }
261
- /** Pick the most selective index to start from. */
262
- selectCandidates(query) {
263
- if (query.from !== void 0) {
264
- return this.edgesByFrom.get(query.from) ?? [];
265
- }
266
- if (query.to !== void 0) {
267
- return this.edgesByTo.get(query.to) ?? [];
268
- }
269
- if (query.type !== void 0) {
270
- return this.edgesByType.get(query.type) ?? [];
271
- }
272
- return this.edgeMap.values();
273
- }
274
- getNeighbors(nodeId, direction = "both") {
275
- const neighborIds = /* @__PURE__ */ new Set();
276
- if (direction === "outbound" || direction === "both") {
277
- const outEdges = this.edgesByFrom.get(nodeId) ?? [];
278
- for (const edge of outEdges) {
279
- neighborIds.add(edge.to);
280
- }
281
- }
282
- if (direction === "inbound" || direction === "both") {
283
- const inEdges = this.edgesByTo.get(nodeId) ?? [];
284
- for (const edge of inEdges) {
285
- neighborIds.add(edge.from);
286
- }
287
- }
288
- const results = [];
289
- for (const nid of neighborIds) {
290
- const node = this.getNode(nid);
291
- if (node) results.push(node);
292
- }
293
- return results;
294
- }
295
- // --- Counts ---
296
- get nodeCount() {
297
- return this.nodeMap.size;
298
- }
299
- get edgeCount() {
300
- return this.edgeMap.size;
301
- }
302
- // --- Clear ---
303
- clear() {
304
- this.nodeMap.clear();
305
- this.edgeMap.clear();
306
- this.edgesByFrom.clear();
307
- this.edgesByTo.clear();
308
- this.edgesByType.clear();
309
- }
310
- // --- Persistence ---
311
- async save(dirPath) {
312
- const allNodes = Array.from(this.nodeMap.values()).map((n) => ({ ...n }));
313
- const allEdges = Array.from(this.edgeMap.values()).map((e) => ({ ...e }));
314
- await saveGraph(dirPath, allNodes, allEdges);
315
- }
316
- async load(dirPath) {
317
- const data = await loadGraph(dirPath);
318
- if (!data) return false;
319
- this.clear();
320
- for (const node of data.nodes) {
321
- this.nodeMap.set(node.id, { ...node });
322
- }
323
- for (const edge of data.edges) {
324
- const copy = { ...edge };
325
- const key = edgeKey(edge.from, edge.to, edge.type);
326
- this.edgeMap.set(key, copy);
327
- addToIndex(this.edgesByFrom, edge.from, copy);
328
- addToIndex(this.edgesByTo, edge.to, copy);
329
- addToIndex(this.edgesByType, edge.type, copy);
330
- }
331
- return true;
332
- }
333
- // --- Internal ---
334
- removeEdgeInternal(edge) {
335
- const key = edgeKey(edge.from, edge.to, edge.type);
336
- this.edgeMap.delete(key);
337
- removeFromIndex(this.edgesByFrom, edge.from, edge);
338
- removeFromIndex(this.edgesByTo, edge.to, edge);
339
- removeFromIndex(this.edgesByType, edge.type, edge);
340
- }
341
- };
342
- function cosineSimilarity(a, b) {
343
- let dotProduct = 0;
344
- let normA = 0;
345
- let normB = 0;
346
- for (let i = 0; i < a.length; i++) {
347
- dotProduct += a[i] * b[i];
348
- normA += a[i] * a[i];
349
- normB += b[i] * b[i];
350
- }
351
- const denominator = Math.sqrt(normA) * Math.sqrt(normB);
352
- return denominator === 0 ? 0 : dotProduct / denominator;
353
- }
354
- var VectorStore = class _VectorStore {
355
- dimensions;
356
- vectors = /* @__PURE__ */ new Map();
357
- constructor(dimensions) {
358
- this.dimensions = dimensions;
359
- }
360
- /** Number of vectors currently stored. */
361
- get size() {
362
- return this.vectors.size;
363
- }
364
- /** Add a vector with the given id. Throws if dimensions do not match. */
365
- add(id, vector) {
366
- if (vector.length !== this.dimensions) {
367
- throw new Error(`Dimension mismatch: expected ${this.dimensions}, got ${vector.length}`);
368
- }
369
- this.vectors.set(id, vector);
370
- }
371
- /** Remove a vector by id. Returns true if the vector existed. */
372
- remove(id) {
373
- return this.vectors.delete(id);
374
- }
375
- /** Check whether a vector with the given id exists. */
376
- has(id) {
377
- return this.vectors.has(id);
378
- }
379
- /** Remove all stored vectors. */
380
- clear() {
381
- this.vectors.clear();
382
- }
383
- /**
384
- * Return the top-K most similar vectors to the query, sorted by descending
385
- * cosine similarity score. If the store contains fewer than topK vectors,
386
- * all available results are returned.
387
- */
388
- search(query, topK) {
389
- if (query.length !== this.dimensions) {
390
- throw new Error(`Dimension mismatch: expected ${this.dimensions}, got ${query.length}`);
391
- }
392
- const results = [];
393
- for (const [id, vector] of this.vectors) {
394
- results.push({ id, score: cosineSimilarity(query, vector) });
395
- }
396
- results.sort((a, b) => b.score - a.score);
397
- return results.slice(0, topK);
398
- }
399
- /** Serialize the store to a plain object for persistence. */
400
- serialize() {
401
- const vectors = [];
402
- for (const [id, vector] of this.vectors) {
403
- vectors.push({ id, vector: [...vector] });
404
- }
405
- return { dimensions: this.dimensions, vectors };
406
- }
407
- /** Deserialize a previously-serialized store. */
408
- static deserialize(data) {
409
- const store = new _VectorStore(data.dimensions);
410
- for (const { id, vector } of data.vectors) {
411
- store.add(id, vector);
412
- }
413
- return store;
414
- }
415
- };
416
- function edgeKey2(e) {
417
- return `${e.from}|${e.to}|${e.type}`;
418
- }
419
- function addEdge(state, edge) {
420
- const key = edgeKey2(edge);
421
- if (!state.edgeSet.has(key)) {
422
- state.edgeSet.add(key);
423
- state.resultEdges.push(edge);
424
- }
425
- }
426
- function shouldPruneNode(neighbor, pruneObservability, params) {
427
- if (pruneObservability && OBSERVABILITY_TYPES.has(neighbor.type)) return true;
428
- if (params.includeTypes && !params.includeTypes.includes(neighbor.type)) return true;
429
- if (params.excludeTypes && params.excludeTypes.includes(neighbor.type)) return true;
430
- return false;
431
- }
432
- function isEdgeExcluded(edge, params) {
433
- return !!(params.includeEdges && !params.includeEdges.includes(edge.type));
434
- }
435
- function processNeighbor(store, edge, neighborId, nextDepth, queue, state, pruneObservability, params) {
436
- if (isEdgeExcluded(edge, params)) return;
437
- if (state.visited.has(neighborId)) {
438
- addEdge(state, edge);
439
- return;
440
- }
441
- const neighbor = store.getNode(neighborId);
442
- if (!neighbor) return;
443
- state.visited.add(neighborId);
444
- if (shouldPruneNode(neighbor, pruneObservability, params)) {
445
- state.pruned++;
446
- return;
447
- }
448
- state.resultNodeMap.set(neighborId, neighbor);
449
- addEdge(state, edge);
450
- queue.push({ id: neighborId, depth: nextDepth });
451
- }
452
- function addCrossEdges(store, state) {
453
- const resultNodeIds = new Set(state.resultNodeMap.keys());
454
- for (const nodeId of resultNodeIds) {
455
- const outEdges = store.getEdges({ from: nodeId });
456
- for (const edge of outEdges) {
457
- if (resultNodeIds.has(edge.to)) {
458
- addEdge(state, edge);
459
- }
460
- }
461
- }
462
- }
463
- var ContextQL = class {
464
- store;
465
- constructor(store) {
466
- this.store = store;
467
- }
468
- execute(params) {
469
- const maxDepth = params.maxDepth ?? 3;
470
- const bidirectional = params.bidirectional ?? false;
471
- const pruneObservability = params.pruneObservability ?? true;
472
- const state = {
473
- visited: /* @__PURE__ */ new Set(),
474
- resultNodeMap: /* @__PURE__ */ new Map(),
475
- resultEdges: [],
476
- edgeSet: /* @__PURE__ */ new Set(),
477
- pruned: 0,
478
- depthReached: 0
479
- };
480
- const queue = [];
481
- this.seedRootNodes(params.rootNodeIds, state, queue);
482
- this.runBFS(queue, maxDepth, bidirectional, pruneObservability, params, state);
483
- addCrossEdges(this.store, state);
484
- return {
485
- nodes: Array.from(state.resultNodeMap.values()),
486
- edges: state.resultEdges,
487
- stats: {
488
- totalTraversed: state.visited.size,
489
- totalReturned: state.resultNodeMap.size,
490
- pruned: state.pruned,
491
- depthReached: state.depthReached
492
- }
493
- };
494
- }
495
- seedRootNodes(rootNodeIds, state, queue) {
496
- for (const rootId of rootNodeIds) {
497
- const node = this.store.getNode(rootId);
498
- if (node) {
499
- state.visited.add(rootId);
500
- state.resultNodeMap.set(rootId, node);
501
- queue.push({ id: rootId, depth: 0 });
502
- }
503
- }
504
- }
505
- runBFS(queue, maxDepth, bidirectional, pruneObservability, params, state) {
506
- let head = 0;
507
- while (head < queue.length) {
508
- const entry = queue[head++];
509
- const { id: currentId, depth } = entry;
510
- if (depth >= maxDepth) continue;
511
- const nextDepth = depth + 1;
512
- if (nextDepth > state.depthReached) state.depthReached = nextDepth;
513
- const allEdges = this.gatherEdges(currentId, bidirectional);
514
- for (const { edge, neighborId } of allEdges) {
515
- processNeighbor(
516
- this.store,
517
- edge,
518
- neighborId,
519
- nextDepth,
520
- queue,
521
- state,
522
- pruneObservability,
523
- params
524
- );
525
- }
526
- }
527
- }
528
- gatherEdges(nodeId, bidirectional) {
529
- const outEdges = this.store.getEdges({ from: nodeId });
530
- const inEdges = bidirectional ? this.store.getEdges({ to: nodeId }) : [];
531
- return [
532
- ...outEdges.map((e) => ({ edge: e, neighborId: e.to })),
533
- ...inEdges.map((e) => ({ edge: e, neighborId: e.from }))
534
- ];
535
- }
536
- };
537
- function project(nodes, spec) {
538
- if (!spec) return nodes.map((n) => ({ ...n }));
539
- return nodes.map((node) => {
540
- const projected = {};
541
- for (const field of spec.fields) {
542
- if (field in node) {
543
- projected[field] = node[field];
544
- }
545
- }
546
- return projected;
547
- });
548
- }
549
- var TEST_TYPES = /* @__PURE__ */ new Set(["test_result"]);
550
- var DOC_TYPES = /* @__PURE__ */ new Set(["adr", "decision", "document", "learning"]);
551
- var CODE_TYPES = /* @__PURE__ */ new Set([
552
- "file",
553
- "module",
554
- "class",
555
- "interface",
556
- "function",
557
- "method",
558
- "variable"
559
- ]);
560
- function classifyNodeCategory(node) {
561
- if (TEST_TYPES.has(node.type)) return "tests";
562
- if (DOC_TYPES.has(node.type)) return "docs";
563
- if (CODE_TYPES.has(node.type)) return "code";
564
- return "other";
565
- }
566
- function groupNodesByImpact(nodes, excludeId) {
567
- const tests = [];
568
- const docs = [];
569
- const code = [];
570
- const other = [];
571
- for (const node of nodes) {
572
- if (excludeId && node.id === excludeId) continue;
573
- const category = classifyNodeCategory(node);
574
- if (category === "tests") tests.push(node);
575
- else if (category === "docs") docs.push(node);
576
- else if (category === "code") code.push(node);
577
- else other.push(node);
578
- }
579
- return { tests, docs, code, other };
580
- }
581
- var SKIP_METHOD_NAMES = /* @__PURE__ */ new Set(["constructor", "if", "for", "while", "switch"]);
582
- function countBraces(line) {
583
- let net = 0;
584
- for (const ch of line) {
585
- if (ch === "{") net++;
586
- else if (ch === "}") net--;
587
- }
588
- return net;
589
- }
590
- var CodeIngestor = class {
591
- constructor(store) {
592
- this.store = store;
593
- }
594
- store;
595
- async ingest(rootDir) {
596
- const start = Date.now();
597
- const errors = [];
598
- let nodesAdded = 0;
599
- let edgesAdded = 0;
600
- const files = await this.findSourceFiles(rootDir);
601
- const nameToFiles = /* @__PURE__ */ new Map();
602
- const fileContents = /* @__PURE__ */ new Map();
603
- for (const filePath of files) {
604
- try {
605
- const result = await this.processFile(filePath, rootDir, nameToFiles, fileContents);
606
- nodesAdded += result.nodesAdded;
607
- edgesAdded += result.edgesAdded;
608
- } catch (err) {
609
- errors.push(`${filePath}: ${err instanceof Error ? err.message : String(err)}`);
610
- }
611
- }
612
- const callsEdges = this.extractCallsEdges(nameToFiles, fileContents);
613
- for (const edge of callsEdges) {
614
- this.store.addEdge(edge);
615
- edgesAdded++;
616
- }
617
- edgesAdded += this.extractReqAnnotations(fileContents, rootDir);
618
- return {
619
- nodesAdded,
620
- nodesUpdated: 0,
621
- edgesAdded,
622
- edgesUpdated: 0,
623
- errors,
624
- durationMs: Date.now() - start
625
- };
626
- }
627
- async processFile(filePath, rootDir, nameToFiles, fileContents) {
628
- let nodesAdded = 0;
629
- let edgesAdded = 0;
630
- const relativePath = path.relative(rootDir, filePath).replace(/\\/g, "/");
631
- const content = await fs.readFile(filePath, "utf-8");
632
- const stat2 = await fs.stat(filePath);
633
- const fileId = `file:${relativePath}`;
634
- fileContents.set(relativePath, content);
635
- const fileNode = {
636
- id: fileId,
637
- type: "file",
638
- name: path.basename(filePath),
639
- path: relativePath,
640
- metadata: { language: this.detectLanguage(filePath) },
641
- lastModified: stat2.mtime.toISOString()
642
- };
643
- this.store.addNode(fileNode);
644
- nodesAdded++;
645
- const symbols = this.extractSymbols(content, fileId, relativePath);
646
- for (const { node, edge } of symbols) {
647
- this.store.addNode(node);
648
- this.store.addEdge(edge);
649
- nodesAdded++;
650
- edgesAdded++;
651
- this.trackCallable(node, relativePath, nameToFiles);
652
- }
653
- const imports = await this.extractImports(content, fileId, relativePath, rootDir);
654
- for (const edge of imports) {
655
- this.store.addEdge(edge);
656
- edgesAdded++;
657
- }
658
- return { nodesAdded, edgesAdded };
659
- }
660
- trackCallable(node, relativePath, nameToFiles) {
661
- if (node.type !== "function" && node.type !== "method") return;
662
- let files = nameToFiles.get(node.name);
663
- if (!files) {
664
- files = /* @__PURE__ */ new Set();
665
- nameToFiles.set(node.name, files);
666
- }
667
- files.add(relativePath);
668
- }
669
- async findSourceFiles(dir) {
670
- const results = [];
671
- const entries = await fs.readdir(dir, { withFileTypes: true });
672
- for (const entry of entries) {
673
- const fullPath = path.join(dir, entry.name);
674
- if (entry.isDirectory() && entry.name !== "node_modules" && entry.name !== "dist") {
675
- results.push(...await this.findSourceFiles(fullPath));
676
- } else if (entry.isFile() && /\.(ts|tsx|js|jsx)$/.test(entry.name) && !entry.name.endsWith(".d.ts")) {
677
- results.push(fullPath);
678
- }
679
- }
680
- return results;
681
- }
682
- extractSymbols(content, fileId, relativePath) {
683
- const results = [];
684
- const lines = content.split("\n");
685
- const ctx = { className: null, classId: null, insideClass: false, braceDepth: 0 };
686
- for (let i = 0; i < lines.length; i++) {
687
- const line = lines[i];
688
- if (this.tryExtractFunction(line, lines, i, fileId, relativePath, ctx, results)) continue;
689
- if (this.tryExtractClass(line, lines, i, fileId, relativePath, ctx, results)) continue;
690
- if (this.tryExtractInterface(line, lines, i, fileId, relativePath, ctx, results)) continue;
691
- if (this.updateClassContext(line, ctx)) continue;
692
- if (this.tryExtractMethod(line, lines, i, fileId, relativePath, ctx, results)) continue;
693
- if (ctx.insideClass) continue;
694
- this.tryExtractVariable(line, i, fileId, relativePath, results);
695
- }
696
- return results;
697
- }
698
- tryExtractFunction(line, lines, i, fileId, relativePath, ctx, results) {
699
- const fnMatch = line.match(/(?:export\s+)?(?:async\s+)?function\s+(\w+)/);
700
- if (!fnMatch) return false;
701
- const name = fnMatch[1];
702
- const id = `function:${relativePath}:${name}`;
703
- const endLine = this.findClosingBrace(lines, i);
704
- results.push({
705
- node: {
706
- id,
707
- type: "function",
708
- name,
709
- path: relativePath,
710
- location: { fileId, startLine: i + 1, endLine },
711
- metadata: {
712
- exported: line.includes("export"),
713
- cyclomaticComplexity: this.computeCyclomaticComplexity(lines.slice(i, endLine)),
714
- nestingDepth: this.computeMaxNesting(lines.slice(i, endLine)),
715
- lineCount: endLine - i,
716
- parameterCount: this.countParameters(line)
717
- }
718
- },
719
- edge: { from: fileId, to: id, type: "contains" }
720
- });
721
- if (!ctx.insideClass) {
722
- ctx.className = null;
723
- ctx.classId = null;
724
- }
725
- return true;
726
- }
727
- tryExtractClass(line, lines, i, fileId, relativePath, ctx, results) {
728
- const classMatch = line.match(/(?:export\s+)?class\s+(\w+)/);
729
- if (!classMatch) return false;
730
- const name = classMatch[1];
731
- const id = `class:${relativePath}:${name}`;
732
- const endLine = this.findClosingBrace(lines, i);
733
- results.push({
734
- node: {
735
- id,
736
- type: "class",
737
- name,
738
- path: relativePath,
739
- location: { fileId, startLine: i + 1, endLine },
740
- metadata: { exported: line.includes("export") }
741
- },
742
- edge: { from: fileId, to: id, type: "contains" }
743
- });
744
- ctx.className = name;
745
- ctx.classId = id;
746
- ctx.insideClass = true;
747
- ctx.braceDepth = countBraces(line);
748
- return true;
749
- }
750
- tryExtractInterface(line, lines, i, fileId, relativePath, ctx, results) {
751
- const ifaceMatch = line.match(/(?:export\s+)?interface\s+(\w+)/);
752
- if (!ifaceMatch) return false;
753
- const name = ifaceMatch[1];
754
- const id = `interface:${relativePath}:${name}`;
755
- const endLine = this.findClosingBrace(lines, i);
756
- results.push({
757
- node: {
758
- id,
759
- type: "interface",
760
- name,
761
- path: relativePath,
762
- location: { fileId, startLine: i + 1, endLine },
763
- metadata: { exported: line.includes("export") }
764
- },
765
- edge: { from: fileId, to: id, type: "contains" }
766
- });
767
- ctx.className = null;
768
- ctx.classId = null;
769
- ctx.insideClass = false;
770
- return true;
771
- }
772
- /** Update brace tracking; returns true when line is consumed (class ended or tracked). */
773
- updateClassContext(line, ctx) {
774
- if (!ctx.insideClass) return false;
775
- ctx.braceDepth += countBraces(line);
776
- if (ctx.braceDepth <= 0) {
777
- ctx.className = null;
778
- ctx.classId = null;
779
- ctx.insideClass = false;
780
- return true;
781
- }
782
- return false;
783
- }
784
- tryExtractMethod(line, lines, i, fileId, relativePath, ctx, results) {
785
- if (!ctx.insideClass || !ctx.className || !ctx.classId) return false;
786
- const methodMatch = line.match(
787
- /^\s+(?:(?:public|private|protected|readonly|static|abstract)\s+)*(?:async\s+)?(\w+)\s*\(/
788
- );
789
- if (!methodMatch) return false;
790
- const methodName = methodMatch[1];
791
- if (SKIP_METHOD_NAMES.has(methodName)) return false;
792
- const id = `method:${relativePath}:${ctx.className}.${methodName}`;
793
- const endLine = this.findClosingBrace(lines, i);
794
- results.push({
795
- node: {
796
- id,
797
- type: "method",
798
- name: methodName,
799
- path: relativePath,
800
- location: { fileId, startLine: i + 1, endLine },
801
- metadata: {
802
- className: ctx.className,
803
- exported: false,
804
- cyclomaticComplexity: this.computeCyclomaticComplexity(lines.slice(i, endLine)),
805
- nestingDepth: this.computeMaxNesting(lines.slice(i, endLine)),
806
- lineCount: endLine - i,
807
- parameterCount: this.countParameters(line)
808
- }
809
- },
810
- edge: { from: ctx.classId, to: id, type: "contains" }
811
- });
812
- return true;
813
- }
814
- tryExtractVariable(line, i, fileId, relativePath, results) {
815
- const varMatch = line.match(/(?:export\s+)?(?:const|let|var)\s+(\w+)/);
816
- if (!varMatch) return;
817
- const name = varMatch[1];
818
- const id = `variable:${relativePath}:${name}`;
819
- results.push({
820
- node: {
821
- id,
822
- type: "variable",
823
- name,
824
- path: relativePath,
825
- location: { fileId, startLine: i + 1, endLine: i + 1 },
826
- metadata: { exported: line.includes("export") }
827
- },
828
- edge: { from: fileId, to: id, type: "contains" }
829
- });
830
- }
831
- /**
832
- * Find the closing brace for a construct starting at the given line.
833
- * Uses a simple brace-counting heuristic. Returns 1-indexed line number.
834
- */
835
- findClosingBrace(lines, startIndex) {
836
- let depth = 0;
837
- for (let i = startIndex; i < lines.length; i++) {
838
- const line = lines[i];
839
- for (const ch of line) {
840
- if (ch === "{") depth++;
841
- if (ch === "}") depth--;
842
- }
843
- if (depth <= 0 && i > startIndex) {
844
- return i + 1;
845
- }
846
- if (depth === 0 && i === startIndex) {
847
- if (line.includes("{")) {
848
- return i + 1;
849
- }
850
- }
851
- }
852
- return startIndex + 1;
853
- }
854
- /**
855
- * Second pass: scan each file for identifiers matching known callable names,
856
- * then create file-to-file "calls" edges. Uses regex heuristic (not AST).
857
- */
858
- extractCallsEdges(nameToFiles, fileContents) {
859
- const edges = [];
860
- const seen = /* @__PURE__ */ new Set();
861
- for (const [filePath, content] of fileContents) {
862
- const callerFileId = `file:${filePath}`;
863
- const callPattern = /\b([a-zA-Z_$][\w$]*)\s*\(/g;
864
- let match;
865
- while ((match = callPattern.exec(content)) !== null) {
866
- const name = match[1];
867
- const targetFiles = nameToFiles.get(name);
868
- if (!targetFiles) continue;
869
- for (const targetFile of targetFiles) {
870
- if (targetFile === filePath) continue;
871
- const targetFileId = `file:${targetFile}`;
872
- const key = `${callerFileId}|${targetFileId}`;
873
- if (seen.has(key)) continue;
874
- seen.add(key);
875
- edges.push({
876
- from: callerFileId,
877
- to: targetFileId,
878
- type: "calls",
879
- metadata: { confidence: "regex" }
880
- });
881
- }
882
- }
883
- }
884
- return edges;
885
- }
886
- async extractImports(content, fileId, relativePath, rootDir) {
887
- const edges = [];
888
- const importRegex = /import\s+(?:type\s+)?(?:\{[^}]*\}|[\w*]+)\s+from\s+['"]([^'"]+)['"]/g;
889
- let match;
890
- while ((match = importRegex.exec(content)) !== null) {
891
- const importPath = match[1];
892
- if (!importPath.startsWith(".")) continue;
893
- const resolvedPath = await this.resolveImportPath(relativePath, importPath, rootDir);
894
- if (resolvedPath) {
895
- const targetId = `file:${resolvedPath}`;
896
- const isTypeOnly = match[0].includes("import type");
897
- edges.push({
898
- from: fileId,
899
- to: targetId,
900
- type: "imports",
901
- metadata: { importType: isTypeOnly ? "type-only" : "static" }
902
- });
903
- }
904
- }
905
- return edges;
906
- }
907
- async resolveImportPath(fromFile, importPath, rootDir) {
908
- const fromDir = path.dirname(fromFile);
909
- const resolved = path.normalize(path.join(fromDir, importPath)).replace(/\\/g, "/");
910
- const extensions = [".ts", ".tsx", ".js", ".jsx"];
911
- for (const ext of extensions) {
912
- const candidate = resolved.replace(/\.js$/, "") + ext;
913
- const fullPath = path.join(rootDir, candidate);
914
- try {
915
- await fs.access(fullPath);
916
- return candidate;
917
- } catch {
918
- }
919
- }
920
- for (const ext of extensions) {
921
- const candidate = path.join(resolved, `index${ext}`).replace(/\\/g, "/");
922
- const fullPath = path.join(rootDir, candidate);
923
- try {
924
- await fs.access(fullPath);
925
- return candidate;
926
- } catch {
927
- }
928
- }
929
- return null;
930
- }
931
- computeCyclomaticComplexity(lines) {
932
- let complexity = 1;
933
- const decisionPattern = /\b(if|else\s+if|while|for|case)\b|\?\s*[^:?]|&&|\|\||catch\b/g;
934
- for (const line of lines) {
935
- const trimmed = line.trim();
936
- if (trimmed.startsWith("//") || trimmed.startsWith("*")) continue;
937
- const matches = trimmed.match(decisionPattern);
938
- if (matches) complexity += matches.length;
939
- }
940
- return complexity;
941
- }
942
- computeMaxNesting(lines) {
943
- let maxDepth = 0;
944
- let currentDepth = 0;
945
- for (const line of lines) {
946
- const trimmed = line.trim();
947
- if (trimmed.startsWith("//") || trimmed.startsWith("*")) continue;
948
- for (const ch of trimmed) {
949
- if (ch === "{") {
950
- currentDepth++;
951
- if (currentDepth > maxDepth) maxDepth = currentDepth;
952
- } else if (ch === "}") {
953
- currentDepth--;
954
- }
955
- }
956
- }
957
- return Math.max(0, maxDepth - 1);
958
- }
959
- countParameters(declarationLine) {
960
- const parenMatch = declarationLine.match(/\(([^)]*)\)/);
961
- if (!parenMatch || !parenMatch[1].trim()) return 0;
962
- let depth = 0;
963
- let count = 1;
964
- for (const ch of parenMatch[1]) {
965
- if (ch === "<" || ch === "(") depth++;
966
- else if (ch === ">" || ch === ")") depth--;
967
- else if (ch === "," && depth === 0) count++;
968
- }
969
- return count;
970
- }
971
- detectLanguage(filePath) {
972
- if (/\.tsx?$/.test(filePath)) return "typescript";
973
- if (/\.jsx?$/.test(filePath)) return "javascript";
974
- return "unknown";
975
- }
976
- /**
977
- * Scan file contents for @req annotations and create verified_by edges
978
- * linking requirement nodes to the annotated files.
979
- * Format: // @req <feature-name>#<index>
980
- */
981
- extractReqAnnotations(fileContents, rootDir) {
982
- const REQ_TAG = /\/\/\s*@req\s+([\w-]+)#(\d+)/g;
983
- const reqNodes = this.store.findNodes({ type: "requirement" });
984
- let edgesAdded = 0;
985
- for (const [filePath, content] of fileContents) {
986
- let match;
987
- REQ_TAG.lastIndex = 0;
988
- while ((match = REQ_TAG.exec(content)) !== null) {
989
- const featureName = match[1];
990
- const reqIndex = parseInt(match[2], 10);
991
- const reqNode = reqNodes.find(
992
- (n) => n.metadata.featureName === featureName && n.metadata.index === reqIndex
993
- );
994
- if (!reqNode) {
995
- console.warn(
996
- `@req annotation references non-existent requirement: ${featureName}#${reqIndex} in ${filePath}`
997
- );
998
- continue;
999
- }
1000
- const relPath = path.relative(rootDir, filePath).replace(/\\/g, "/");
1001
- const fileNodeId = `file:${relPath}`;
1002
- this.store.addEdge({
1003
- from: reqNode.id,
1004
- to: fileNodeId,
1005
- type: "verified_by",
1006
- confidence: 1,
1007
- metadata: {
1008
- method: "annotation",
1009
- tag: `@req ${featureName}#${reqIndex}`,
1010
- confidence: 1
1011
- }
1012
- });
1013
- edgesAdded++;
1014
- }
1015
- }
1016
- return edgesAdded;
1017
- }
1018
- };
1019
- var execFileAsync = promisify(execFile);
1020
- var GitIngestor = class {
1021
- constructor(store, gitRunner) {
1022
- this.store = store;
1023
- this.gitRunner = gitRunner;
1024
- }
1025
- store;
1026
- gitRunner;
1027
- async ingest(rootDir) {
1028
- const start = Date.now();
1029
- const errors = [];
1030
- let nodesAdded = 0;
1031
- let nodesUpdated = 0;
1032
- let edgesAdded = 0;
1033
- let edgesUpdated = 0;
1034
- let output;
1035
- try {
1036
- output = await this.runGit(rootDir, [
1037
- "log",
1038
- "--format=%H|%an|%ae|%aI|%s",
1039
- "--name-only",
1040
- "-n",
1041
- "100"
1042
- ]);
1043
- } catch (err) {
1044
- errors.push(`git log failed: ${err instanceof Error ? err.message : String(err)}`);
1045
- return {
1046
- nodesAdded: 0,
1047
- nodesUpdated: 0,
1048
- edgesAdded: 0,
1049
- edgesUpdated: 0,
1050
- errors,
1051
- durationMs: Date.now() - start
1052
- };
1053
- }
1054
- const commits = this.parseGitLog(output);
1055
- for (const commit of commits) {
1056
- const nodeId = `commit:${commit.shortHash}`;
1057
- this.store.addNode({
1058
- id: nodeId,
1059
- type: "commit",
1060
- name: commit.message,
1061
- metadata: {
1062
- author: commit.author,
1063
- email: commit.email,
1064
- date: commit.date,
1065
- hash: commit.hash
1066
- }
1067
- });
1068
- nodesAdded++;
1069
- for (const file of commit.files) {
1070
- const fileNodeId = `file:${file}`;
1071
- const existingNode = this.store.getNode(fileNodeId);
1072
- if (existingNode) {
1073
- this.store.addEdge({
1074
- from: fileNodeId,
1075
- to: nodeId,
1076
- type: "triggered_by"
1077
- });
1078
- edgesAdded++;
1079
- }
1080
- }
1081
- }
1082
- const coChanges = this.computeCoChanges(commits);
1083
- for (const { fileA, fileB, count } of coChanges) {
1084
- const fileAId = `file:${fileA}`;
1085
- const fileBId = `file:${fileB}`;
1086
- const nodeA = this.store.getNode(fileAId);
1087
- const nodeB = this.store.getNode(fileBId);
1088
- if (nodeA && nodeB) {
1089
- this.store.addEdge({
1090
- from: fileAId,
1091
- to: fileBId,
1092
- type: "co_changes_with",
1093
- metadata: { count }
1094
- });
1095
- edgesAdded++;
1096
- }
1097
- }
1098
- return {
1099
- nodesAdded,
1100
- nodesUpdated,
1101
- edgesAdded,
1102
- edgesUpdated,
1103
- errors,
1104
- durationMs: Date.now() - start
1105
- };
1106
- }
1107
- async runGit(rootDir, args) {
1108
- if (this.gitRunner) {
1109
- return this.gitRunner(rootDir, args);
1110
- }
1111
- const { stdout } = await execFileAsync("git", args, { cwd: rootDir });
1112
- return stdout;
1113
- }
1114
- parseGitLog(output) {
1115
- if (!output.trim()) return [];
1116
- const commits = [];
1117
- const lines = output.split("\n");
1118
- let current = null;
1119
- for (const line of lines) {
1120
- const trimmed = line.trim();
1121
- if (!trimmed) {
1122
- if (current && current.hasFiles) {
1123
- commits.push({
1124
- hash: current.hash,
1125
- shortHash: current.shortHash,
1126
- author: current.author,
1127
- email: current.email,
1128
- date: current.date,
1129
- message: current.message,
1130
- files: current.files
1131
- });
1132
- current = null;
1133
- }
1134
- continue;
1135
- }
1136
- const parts = trimmed.split("|");
1137
- if (parts.length >= 5 && /^[0-9a-f]{7,40}$/.test(parts[0])) {
1138
- if (current) {
1139
- commits.push({
1140
- hash: current.hash,
1141
- shortHash: current.shortHash,
1142
- author: current.author,
1143
- email: current.email,
1144
- date: current.date,
1145
- message: current.message,
1146
- files: current.files
1147
- });
1148
- }
1149
- current = {
1150
- hash: parts[0],
1151
- shortHash: parts[0].substring(0, 7),
1152
- author: parts[1],
1153
- email: parts[2],
1154
- date: parts[3],
1155
- message: parts.slice(4).join("|"),
1156
- // message may contain |
1157
- files: [],
1158
- hasFiles: false
1159
- };
1160
- } else if (current) {
1161
- current.files.push(trimmed);
1162
- current.hasFiles = true;
1163
- }
1164
- }
1165
- if (current) {
1166
- commits.push({
1167
- hash: current.hash,
1168
- shortHash: current.shortHash,
1169
- author: current.author,
1170
- email: current.email,
1171
- date: current.date,
1172
- message: current.message,
1173
- files: current.files
1174
- });
1175
- }
1176
- return commits;
1177
- }
1178
- computeCoChanges(commits) {
1179
- const pairCounts = /* @__PURE__ */ new Map();
1180
- for (const commit of commits) {
1181
- const files = [...commit.files].sort();
1182
- for (let i = 0; i < files.length; i++) {
1183
- for (let j = i + 1; j < files.length; j++) {
1184
- const key = `${files[i]}||${files[j]}`;
1185
- pairCounts.set(key, (pairCounts.get(key) ?? 0) + 1);
1186
- }
1187
- }
1188
- }
1189
- const results = [];
1190
- for (const [key, count] of pairCounts) {
1191
- if (count >= 2) {
1192
- const [fileA, fileB] = key.split("||");
1193
- results.push({ fileA, fileB, count });
1194
- }
1195
- }
1196
- return results;
1197
- }
1198
- };
1199
- var TopologicalLinker = class {
1200
- constructor(store) {
1201
- this.store = store;
1202
- }
1203
- store;
1204
- link() {
1205
- let edgesAdded = 0;
1206
- const files = this.store.findNodes({ type: "file" });
1207
- const directories = /* @__PURE__ */ new Map();
1208
- for (const file of files) {
1209
- if (!file.path) continue;
1210
- const dir = path2.dirname(file.path);
1211
- if (!directories.has(dir)) {
1212
- directories.set(dir, []);
1213
- }
1214
- directories.get(dir).push(file.id);
1215
- }
1216
- for (const [dir, fileIds] of directories) {
1217
- if (fileIds.length < 1) continue;
1218
- const moduleId = `module:${dir}`;
1219
- const moduleName = dir === "." ? "root" : path2.basename(dir);
1220
- this.store.addNode({
1221
- id: moduleId,
1222
- type: "module",
1223
- name: moduleName,
1224
- path: dir,
1225
- metadata: { fileCount: fileIds.length }
1226
- });
1227
- for (const fileId of fileIds) {
1228
- this.store.addEdge({
1229
- from: moduleId,
1230
- to: fileId,
1231
- type: "contains"
1232
- });
1233
- edgesAdded++;
1234
- }
1235
- }
1236
- const cycles = this.detectCycles(files.map((f) => f.id));
1237
- return { edgesAdded, cycles };
1238
- }
1239
- detectCycles(fileIds) {
1240
- const cycles = [];
1241
- const visited = /* @__PURE__ */ new Set();
1242
- const inStack = /* @__PURE__ */ new Set();
1243
- const stack = [];
1244
- const dfs = (nodeId) => {
1245
- if (inStack.has(nodeId)) {
1246
- const cycleStart = stack.indexOf(nodeId);
1247
- if (cycleStart !== -1) {
1248
- cycles.push(stack.slice(cycleStart).concat(nodeId));
1249
- }
1250
- return;
1251
- }
1252
- if (visited.has(nodeId)) return;
1253
- visited.add(nodeId);
1254
- inStack.add(nodeId);
1255
- stack.push(nodeId);
1256
- const importEdges = this.store.getEdges({ from: nodeId, type: "imports" });
1257
- for (const edge of importEdges) {
1258
- dfs(edge.to);
1259
- }
1260
- stack.pop();
1261
- inStack.delete(nodeId);
1262
- };
1263
- for (const fileId of fileIds) {
1264
- if (!visited.has(fileId)) {
1265
- dfs(fileId);
1266
- }
1267
- }
1268
- return cycles;
1269
- }
1270
- };
1271
- function hash(text) {
1272
- return crypto.createHash("sha256").update(text).digest("hex").slice(0, 8);
1273
- }
1274
- function mergeResults(...results) {
1275
- return {
1276
- nodesAdded: results.reduce((s, r) => s + r.nodesAdded, 0),
1277
- nodesUpdated: results.reduce((s, r) => s + r.nodesUpdated, 0),
1278
- edgesAdded: results.reduce((s, r) => s + r.edgesAdded, 0),
1279
- edgesUpdated: results.reduce((s, r) => s + r.edgesUpdated, 0),
1280
- errors: results.flatMap((r) => r.errors),
1281
- durationMs: results.reduce((s, r) => s + r.durationMs, 0)
1282
- };
1283
- }
1284
- function emptyResult(durationMs = 0) {
1285
- return { nodesAdded: 0, nodesUpdated: 0, edgesAdded: 0, edgesUpdated: 0, errors: [], durationMs };
1286
- }
1287
- var CODE_NODE_TYPES = ["file", "function", "class", "method", "interface", "variable"];
1288
- var KnowledgeIngestor = class {
1289
- constructor(store) {
1290
- this.store = store;
1291
- }
1292
- store;
1293
- async ingestADRs(adrDir) {
1294
- const start = Date.now();
1295
- const errors = [];
1296
- let nodesAdded = 0;
1297
- let edgesAdded = 0;
1298
- let files;
1299
- try {
1300
- files = await this.findMarkdownFiles(adrDir);
1301
- } catch {
1302
- return emptyResult(Date.now() - start);
1303
- }
1304
- for (const filePath of files) {
1305
- try {
1306
- const content = await fs2.readFile(filePath, "utf-8");
1307
- const filename = path3.basename(filePath, ".md");
1308
- const titleMatch = content.match(/^#\s+(.+)$/m);
1309
- const title = titleMatch ? titleMatch[1].trim() : filename;
1310
- const dateMatch = content.match(/\*\*Date:\*\*\s*(.+)/);
1311
- const statusMatch = content.match(/\*\*Status:\*\*\s*(.+)/);
1312
- const date = dateMatch ? dateMatch[1].trim() : void 0;
1313
- const status = statusMatch ? statusMatch[1].trim() : void 0;
1314
- const nodeId = `adr:${filename}`;
1315
- this.store.addNode({
1316
- id: nodeId,
1317
- type: "adr",
1318
- name: title,
1319
- path: filePath,
1320
- metadata: { date, status }
1321
- });
1322
- nodesAdded++;
1323
- edgesAdded += this.linkToCode(content, nodeId, "documents");
1324
- } catch (err) {
1325
- errors.push(`${filePath}: ${err instanceof Error ? err.message : String(err)}`);
1326
- }
1327
- }
1328
- return {
1329
- nodesAdded,
1330
- nodesUpdated: 0,
1331
- edgesAdded,
1332
- edgesUpdated: 0,
1333
- errors,
1334
- durationMs: Date.now() - start
1335
- };
1336
- }
1337
- async ingestLearnings(projectPath) {
1338
- const start = Date.now();
1339
- const filePath = path3.join(projectPath, ".harness", "learnings.md");
1340
- let content;
1341
- try {
1342
- content = await fs2.readFile(filePath, "utf-8");
1343
- } catch {
1344
- return emptyResult(Date.now() - start);
1345
- }
1346
- const errors = [];
1347
- let nodesAdded = 0;
1348
- let edgesAdded = 0;
1349
- const lines = content.split("\n");
1350
- let currentDate;
1351
- for (const line of lines) {
1352
- const headingMatch = line.match(/^##\s+(\S+)/);
1353
- if (headingMatch) {
1354
- currentDate = headingMatch[1];
1355
- continue;
1356
- }
1357
- const bulletMatch = line.match(/^-\s+(.+)/);
1358
- if (!bulletMatch) continue;
1359
- const text = bulletMatch[1];
1360
- const skillMatch = text.match(/\[skill:([^\]]+)\]/);
1361
- const outcomeMatch = text.match(/\[outcome:([^\]]+)\]/);
1362
- const skill = skillMatch ? skillMatch[1] : void 0;
1363
- const outcome = outcomeMatch ? outcomeMatch[1] : void 0;
1364
- const nodeId = `learning:${hash(text)}`;
1365
- this.store.addNode({
1366
- id: nodeId,
1367
- type: "learning",
1368
- name: text,
1369
- metadata: { skill, outcome, date: currentDate }
1370
- });
1371
- nodesAdded++;
1372
- edgesAdded += this.linkToCode(text, nodeId, "applies_to");
1373
- }
1374
- return {
1375
- nodesAdded,
1376
- nodesUpdated: 0,
1377
- edgesAdded,
1378
- edgesUpdated: 0,
1379
- errors,
1380
- durationMs: Date.now() - start
1381
- };
1382
- }
1383
- async ingestFailures(projectPath) {
1384
- const start = Date.now();
1385
- const filePath = path3.join(projectPath, ".harness", "failures.md");
1386
- let content;
1387
- try {
1388
- content = await fs2.readFile(filePath, "utf-8");
1389
- } catch {
1390
- return emptyResult(Date.now() - start);
1391
- }
1392
- const errors = [];
1393
- let nodesAdded = 0;
1394
- let edgesAdded = 0;
1395
- const sections = content.split(/^##\s+/m).filter((s) => s.trim());
1396
- for (const section of sections) {
1397
- const dateMatch = section.match(/\*\*Date:\*\*\s*(.+)/);
1398
- const skillMatch = section.match(/\*\*Skill:\*\*\s*(.+)/);
1399
- const typeMatch = section.match(/\*\*Type:\*\*\s*(.+)/);
1400
- const descMatch = section.match(/\*\*Description:\*\*\s*(.+)/);
1401
- const date = dateMatch ? dateMatch[1].trim() : void 0;
1402
- const skill = skillMatch ? skillMatch[1].trim() : void 0;
1403
- const failureType = typeMatch ? typeMatch[1].trim() : void 0;
1404
- const description = descMatch ? descMatch[1].trim() : void 0;
1405
- if (!description) continue;
1406
- const nodeId = `failure:${hash(description)}`;
1407
- this.store.addNode({
1408
- id: nodeId,
1409
- type: "failure",
1410
- name: description,
1411
- metadata: { date, skill, type: failureType }
1412
- });
1413
- nodesAdded++;
1414
- edgesAdded += this.linkToCode(description, nodeId, "caused_by");
1415
- }
1416
- return {
1417
- nodesAdded,
1418
- nodesUpdated: 0,
1419
- edgesAdded,
1420
- edgesUpdated: 0,
1421
- errors,
1422
- durationMs: Date.now() - start
1423
- };
1424
- }
1425
- async ingestAll(projectPath, opts) {
1426
- const start = Date.now();
1427
- const adrDir = opts?.adrDir ?? path3.join(projectPath, "docs", "adr");
1428
- const [adrResult, learningsResult, failuresResult] = await Promise.all([
1429
- this.ingestADRs(adrDir),
1430
- this.ingestLearnings(projectPath),
1431
- this.ingestFailures(projectPath)
1432
- ]);
1433
- const merged = mergeResults(adrResult, learningsResult, failuresResult);
1434
- return { ...merged, durationMs: Date.now() - start };
1435
- }
1436
- linkToCode(content, sourceNodeId, edgeType) {
1437
- let count = 0;
1438
- for (const nodeType of CODE_NODE_TYPES) {
1439
- const codeNodes = this.store.findNodes({ type: nodeType });
1440
- for (const node of codeNodes) {
1441
- let nameMatches = false;
1442
- if (node.name.length >= 3) {
1443
- const escaped = node.name.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
1444
- const namePattern = new RegExp(`\\b${escaped}\\b`, "i");
1445
- nameMatches = namePattern.test(content);
1446
- }
1447
- let pathMatches = false;
1448
- if (node.path && node.path.includes(path3.sep)) {
1449
- pathMatches = content.includes(node.path);
1450
- }
1451
- if (nameMatches || pathMatches) {
1452
- this.store.addEdge({
1453
- from: sourceNodeId,
1454
- to: node.id,
1455
- type: edgeType
1456
- });
1457
- count++;
1458
- }
1459
- }
1460
- }
1461
- return count;
1462
- }
1463
- async findMarkdownFiles(dir) {
1464
- const results = [];
1465
- const entries = await fs2.readdir(dir, { withFileTypes: true });
1466
- for (const entry of entries) {
1467
- const fullPath = path3.join(dir, entry.name);
1468
- if (entry.isDirectory()) {
1469
- results.push(...await this.findMarkdownFiles(fullPath));
1470
- } else if (entry.isFile() && entry.name.endsWith(".md")) {
1471
- results.push(fullPath);
1472
- }
1473
- }
1474
- return results;
1475
- }
1476
- };
1477
- var REQUIREMENT_SECTIONS = [
1478
- "Observable Truths",
1479
- "Success Criteria",
1480
- "Acceptance Criteria"
1481
- ];
1482
- var SECTION_HEADING_RE = /^#{2,3}\s+(.+)$/;
1483
- var NUMBERED_ITEM_RE = /^\s*(\d+)\.\s+(.+)$/;
1484
- function detectEarsPattern(text) {
1485
- const lower = text.toLowerCase();
1486
- if (/^if\b.+\bthen\b.+\bshall not\b/.test(lower)) return "unwanted";
1487
- if (/^when\b/.test(lower)) return "event-driven";
1488
- if (/^while\b/.test(lower)) return "state-driven";
1489
- if (/^where\b/.test(lower)) return "optional";
1490
- if (/^the\s+\w+\s+shall\b/.test(lower)) return "ubiquitous";
1491
- return void 0;
1492
- }
1493
- var CODE_NODE_TYPES2 = ["file", "function", "class", "method", "interface", "variable"];
1494
- var RequirementIngestor = class {
1495
- constructor(store) {
1496
- this.store = store;
1497
- }
1498
- store;
1499
- /**
1500
- * Scan a specs directory for `<feature>/proposal.md` files,
1501
- * extract numbered requirements from recognized sections,
1502
- * and create requirement nodes with convention-based edges.
1503
- */
1504
- async ingestSpecs(specsDir) {
1505
- const start = Date.now();
1506
- const errors = [];
1507
- let nodesAdded = 0;
1508
- let edgesAdded = 0;
1509
- let featureDirs;
1510
- try {
1511
- const entries = await fs3.readdir(specsDir, { withFileTypes: true });
1512
- featureDirs = entries.filter((e) => e.isDirectory()).map((e) => path4.join(specsDir, e.name));
1513
- } catch {
1514
- return emptyResult(Date.now() - start);
1515
- }
1516
- for (const featureDir of featureDirs) {
1517
- const featureName = path4.basename(featureDir);
1518
- const specPath = path4.join(featureDir, "proposal.md").replaceAll("\\", "/");
1519
- let content;
1520
- try {
1521
- content = await fs3.readFile(specPath, "utf-8");
1522
- } catch {
1523
- continue;
1524
- }
1525
- try {
1526
- const specHash = hash(specPath);
1527
- const specNodeId = `file:${specPath}`;
1528
- this.store.addNode({
1529
- id: specNodeId,
1530
- type: "document",
1531
- name: path4.basename(specPath),
1532
- path: specPath,
1533
- metadata: { featureName }
1534
- });
1535
- const requirements = this.extractRequirements(content, specPath, specHash, featureName);
1536
- for (const req of requirements) {
1537
- this.store.addNode(req.node);
1538
- nodesAdded++;
1539
- this.store.addEdge({
1540
- from: req.node.id,
1541
- to: specNodeId,
1542
- type: "specifies"
1543
- });
1544
- edgesAdded++;
1545
- edgesAdded += this.linkByPathPattern(req.node.id, featureName);
1546
- edgesAdded += this.linkByKeywordOverlap(req.node.id, req.node.name);
1547
- }
1548
- } catch (err) {
1549
- errors.push(`${specPath}: ${err instanceof Error ? err.message : String(err)}`);
1550
- }
1551
- }
1552
- return {
1553
- nodesAdded,
1554
- nodesUpdated: 0,
1555
- edgesAdded,
1556
- edgesUpdated: 0,
1557
- errors,
1558
- durationMs: Date.now() - start
1559
- };
1560
- }
1561
- /**
1562
- * Parse markdown content and extract numbered items from recognized sections.
1563
- */
1564
- extractRequirements(content, specPath, specHash, featureName) {
1565
- const lines = content.split("\n");
1566
- const results = [];
1567
- let currentSection;
1568
- let inRequirementSection = false;
1569
- let globalIndex = 0;
1570
- for (let i = 0; i < lines.length; i++) {
1571
- const line = lines[i];
1572
- const headingMatch = line.match(SECTION_HEADING_RE);
1573
- if (headingMatch) {
1574
- const heading = headingMatch[1].trim();
1575
- const isReqSection = REQUIREMENT_SECTIONS.some(
1576
- (s) => heading.toLowerCase() === s.toLowerCase()
1577
- );
1578
- if (isReqSection) {
1579
- currentSection = heading;
1580
- inRequirementSection = true;
1581
- } else {
1582
- inRequirementSection = false;
1583
- }
1584
- continue;
1585
- }
1586
- if (!inRequirementSection) continue;
1587
- const itemMatch = line.match(NUMBERED_ITEM_RE);
1588
- if (!itemMatch) continue;
1589
- const index = parseInt(itemMatch[1], 10);
1590
- const text = itemMatch[2].trim();
1591
- const rawText = line.trim();
1592
- const lineNumber = i + 1;
1593
- globalIndex++;
1594
- const nodeId = `req:${specHash}:${globalIndex}`;
1595
- const earsPattern = detectEarsPattern(text);
1596
- results.push({
1597
- node: {
1598
- id: nodeId,
1599
- type: "requirement",
1600
- name: text,
1601
- path: specPath,
1602
- location: {
1603
- fileId: `file:${specPath}`,
1604
- startLine: lineNumber,
1605
- endLine: lineNumber
1606
- },
1607
- metadata: {
1608
- specPath,
1609
- index,
1610
- section: currentSection,
1611
- rawText,
1612
- earsPattern,
1613
- featureName
1614
- }
1615
- }
1616
- });
1617
- }
1618
- return results;
1619
- }
1620
- /**
1621
- * Convention-based linking: match requirement to code/test files
1622
- * by feature name in their path.
1623
- */
1624
- linkByPathPattern(reqId, featureName) {
1625
- let count = 0;
1626
- const fileNodes = this.store.findNodes({ type: "file" });
1627
- for (const node of fileNodes) {
1628
- if (!node.path) continue;
1629
- const normalizedPath = node.path.replace(/\\/g, "/");
1630
- const isCodeMatch = normalizedPath.includes("packages/") && path4.basename(normalizedPath).includes(featureName);
1631
- const isTestMatch = normalizedPath.includes("/tests/") && // platform-safe
1632
- path4.basename(normalizedPath).includes(featureName);
1633
- if (isCodeMatch && !isTestMatch) {
1634
- this.store.addEdge({
1635
- from: reqId,
1636
- to: node.id,
1637
- type: "requires",
1638
- confidence: 0.5,
1639
- metadata: { method: "convention", matchReason: "path-pattern" }
1640
- });
1641
- count++;
1642
- } else if (isTestMatch) {
1643
- this.store.addEdge({
1644
- from: reqId,
1645
- to: node.id,
1646
- type: "verified_by",
1647
- confidence: 0.5,
1648
- metadata: { method: "convention", matchReason: "path-pattern" }
1649
- });
1650
- count++;
1651
- }
1652
- }
1653
- return count;
1654
- }
1655
- /**
1656
- * Convention-based linking: match requirement text to code nodes
1657
- * by keyword overlap (function/class names appearing in requirement text).
1658
- */
1659
- linkByKeywordOverlap(reqId, reqText) {
1660
- let count = 0;
1661
- for (const nodeType of CODE_NODE_TYPES2) {
1662
- const codeNodes = this.store.findNodes({ type: nodeType });
1663
- for (const node of codeNodes) {
1664
- if (node.name.length < 3) continue;
1665
- const escaped = node.name.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
1666
- const namePattern = new RegExp(`\\b${escaped}\\b`, "i");
1667
- if (namePattern.test(reqText)) {
1668
- const edgeType = node.path?.replace(/\\/g, "/").includes("/tests/") ? "verified_by" : "requires";
1669
- this.store.addEdge({
1670
- from: reqId,
1671
- to: node.id,
1672
- type: edgeType,
1673
- confidence: 0.6,
1674
- metadata: { method: "convention", matchReason: "keyword-overlap" }
1675
- });
1676
- count++;
1677
- }
1678
- }
1679
- }
1680
- return count;
1681
- }
1682
- };
1683
- var CODE_NODE_TYPES3 = ["file", "function", "class", "method", "interface", "variable"];
1684
- var SANITIZE_RULES = [
1685
- // Strip XML/HTML-like instruction tags that could be interpreted as system prompts
1686
- {
1687
- pattern: /<\/?(?:system|instruction|prompt|role|context|tool_call|function_call|assistant|human|user)[^>]*>/gi,
1688
- replacement: ""
1689
- },
1690
- // Strip markdown-style system prompt markers (including trailing space)
1691
- {
1692
- pattern: /^#{1,3}\s*(?:system|instruction|prompt)\s*[::]\s*/gim,
1693
- replacement: ""
1694
- },
1695
- // Strip common injection prefixes
1696
- {
1697
- pattern: /(?:ignore|disregard|forget)\s+(?:all\s+)?(?:previous|prior|above)\s+(?:instructions?|prompts?|context)/gi,
1698
- replacement: "[filtered]"
1699
- },
1700
- // Strip "you are now" re-roling attempts (only when followed by AI/agent role words)
1701
- {
1702
- pattern: /you\s+are\s+now\s+(?:a\s+)?(?:helpful\s+)?(?:an?\s+)?(?:assistant|system|ai|bot|agent|tool)\b/gi,
1703
- replacement: "[filtered]"
1704
- }
1705
- ];
1706
- function sanitizeExternalText(text, maxLength = 2e3) {
1707
- let sanitized = text;
1708
- for (const rule of SANITIZE_RULES) {
1709
- sanitized = sanitized.replace(rule.pattern, rule.replacement);
1710
- }
1711
- if (sanitized.length > maxLength) {
1712
- sanitized = sanitized.slice(0, maxLength) + "\u2026";
1713
- }
1714
- return sanitized;
1715
- }
1716
- function linkToCode(store, content, sourceNodeId, edgeType, options) {
1717
- let edgesCreated = 0;
1718
- for (const type of CODE_NODE_TYPES3) {
1719
- const nodes = store.findNodes({ type });
1720
- for (const node of nodes) {
1721
- if (node.name.length < 3) continue;
1722
- const escaped = node.name.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
1723
- const pattern = new RegExp(`\\b${escaped}\\b`, "i");
1724
- let matched = pattern.test(content);
1725
- if (!matched && options?.checkPaths && node.path) {
1726
- matched = content.includes(node.path);
1727
- }
1728
- if (matched) {
1729
- store.addEdge({ from: sourceNodeId, to: node.id, type: edgeType });
1730
- edgesCreated++;
1731
- }
1732
- }
1733
- }
1734
- return edgesCreated;
1735
- }
1736
- var SyncManager = class {
1737
- constructor(store, graphDir) {
1738
- this.store = store;
1739
- this.metadataPath = path5.join(graphDir, "sync-metadata.json");
1740
- }
1741
- store;
1742
- registrations = /* @__PURE__ */ new Map();
1743
- metadataPath;
1744
- registerConnector(connector, config) {
1745
- this.registrations.set(connector.name, { connector, config });
1746
- }
1747
- async sync(connectorName) {
1748
- const registration = this.registrations.get(connectorName);
1749
- if (!registration) {
1750
- return {
1751
- nodesAdded: 0,
1752
- nodesUpdated: 0,
1753
- edgesAdded: 0,
1754
- edgesUpdated: 0,
1755
- errors: [`Connector "${connectorName}" not registered`],
1756
- durationMs: 0
1757
- };
1758
- }
1759
- const { connector, config } = registration;
1760
- const result = await connector.ingest(this.store, config);
1761
- const metadata = await this.loadMetadata();
1762
- metadata.connectors[connectorName] = {
1763
- lastSyncTimestamp: (/* @__PURE__ */ new Date()).toISOString(),
1764
- lastResult: result
1765
- };
1766
- await this.saveMetadata(metadata);
1767
- return result;
1768
- }
1769
- async syncAll() {
1770
- const combined = {
1771
- nodesAdded: 0,
1772
- nodesUpdated: 0,
1773
- edgesAdded: 0,
1774
- edgesUpdated: 0,
1775
- errors: [],
1776
- durationMs: 0
1777
- };
1778
- for (const [name] of this.registrations) {
1779
- const result = await this.sync(name);
1780
- combined.nodesAdded += result.nodesAdded;
1781
- combined.nodesUpdated += result.nodesUpdated;
1782
- combined.edgesAdded += result.edgesAdded;
1783
- combined.edgesUpdated += result.edgesUpdated;
1784
- combined.errors.push(...result.errors);
1785
- combined.durationMs += result.durationMs;
1786
- }
1787
- return combined;
1788
- }
1789
- async getMetadata() {
1790
- return this.loadMetadata();
1791
- }
1792
- async loadMetadata() {
1793
- try {
1794
- const raw = await fs4.readFile(this.metadataPath, "utf-8");
1795
- return JSON.parse(raw);
1796
- } catch {
1797
- return { connectors: {} };
1798
- }
1799
- }
1800
- async saveMetadata(metadata) {
1801
- await fs4.mkdir(path5.dirname(this.metadataPath), { recursive: true });
1802
- await fs4.writeFile(this.metadataPath, JSON.stringify(metadata, null, 2), "utf-8");
1803
- }
1804
- };
1805
- function buildIngestResult(nodesAdded, edgesAdded, errors, start) {
1806
- return {
1807
- nodesAdded,
1808
- nodesUpdated: 0,
1809
- edgesAdded,
1810
- edgesUpdated: 0,
1811
- errors,
1812
- durationMs: Date.now() - start
1813
- };
1814
- }
1815
- function buildJql(config) {
1816
- const project2 = config.project;
1817
- let jql = project2 ? `project=${project2}` : "";
1818
- const filters = config.filters;
1819
- if (filters?.status?.length) {
1820
- jql += `${jql ? " AND " : ""}status IN (${filters.status.map((s) => `"${s}"`).join(",")})`;
1821
- }
1822
- if (filters?.labels?.length) {
1823
- jql += `${jql ? " AND " : ""}labels IN (${filters.labels.map((l) => `"${l}"`).join(",")})`;
1824
- }
1825
- return jql;
1826
- }
1827
- var JiraConnector = class {
1828
- name = "jira";
1829
- source = "jira";
1830
- httpClient;
1831
- constructor(httpClient) {
1832
- this.httpClient = httpClient ?? ((url, options) => fetch(url, options));
1833
- }
1834
- async ingest(store, config) {
1835
- const start = Date.now();
1836
- let nodesAdded = 0;
1837
- let edgesAdded = 0;
1838
- const apiKeyEnv = config.apiKeyEnv ?? "JIRA_API_KEY";
1839
- const apiKey = process.env[apiKeyEnv];
1840
- if (!apiKey) {
1841
- return buildIngestResult(
1842
- 0,
1843
- 0,
1844
- [`Missing API key: environment variable "${apiKeyEnv}" is not set`],
1845
- start
1846
- );
1847
- }
1848
- const baseUrlEnv = config.baseUrlEnv ?? "JIRA_BASE_URL";
1849
- const baseUrl = process.env[baseUrlEnv];
1850
- if (!baseUrl) {
1851
- return buildIngestResult(
1852
- 0,
1853
- 0,
1854
- [`Missing base URL: environment variable "${baseUrlEnv}" is not set`],
1855
- start
1856
- );
1857
- }
1858
- const jql = buildJql(config);
1859
- const headers = {
1860
- Authorization: `Basic ${apiKey}`,
1861
- "Content-Type": "application/json"
1862
- };
1863
- try {
1864
- let startAt = 0;
1865
- const maxResults = 50;
1866
- let total = Infinity;
1867
- while (startAt < total) {
1868
- const url = `${baseUrl}/rest/api/2/search?jql=${encodeURIComponent(jql)}&startAt=${startAt}&maxResults=${maxResults}`;
1869
- const response = await this.httpClient(url, { headers });
1870
- if (!response.ok) {
1871
- return buildIngestResult(nodesAdded, edgesAdded, ["Jira API request failed"], start);
1872
- }
1873
- const data = await response.json();
1874
- total = data.total;
1875
- for (const issue of data.issues) {
1876
- const counts = this.processIssue(store, issue);
1877
- nodesAdded += counts.nodesAdded;
1878
- edgesAdded += counts.edgesAdded;
1879
- }
1880
- startAt += maxResults;
1881
- }
1882
- } catch (err) {
1883
- return buildIngestResult(
1884
- nodesAdded,
1885
- edgesAdded,
1886
- [`Jira API error: ${err instanceof Error ? err.message : String(err)}`],
1887
- start
1888
- );
1889
- }
1890
- return buildIngestResult(nodesAdded, edgesAdded, [], start);
1891
- }
1892
- processIssue(store, issue) {
1893
- const nodeId = `issue:jira:${issue.key}`;
1894
- store.addNode({
1895
- id: nodeId,
1896
- type: "issue",
1897
- name: sanitizeExternalText(issue.fields.summary, 500),
1898
- metadata: {
1899
- key: issue.key,
1900
- status: issue.fields.status?.name,
1901
- priority: issue.fields.priority?.name,
1902
- assignee: issue.fields.assignee?.displayName,
1903
- labels: issue.fields.labels ?? []
1904
- }
1905
- });
1906
- const searchText = sanitizeExternalText(
1907
- [issue.fields.summary, issue.fields.description ?? ""].join(" ")
1908
- );
1909
- const edgesAdded = linkToCode(store, searchText, nodeId, "applies_to");
1910
- return { nodesAdded: 1, edgesAdded };
1911
- }
1912
- };
1913
- var SlackConnector = class {
1914
- name = "slack";
1915
- source = "slack";
1916
- httpClient;
1917
- constructor(httpClient) {
1918
- this.httpClient = httpClient ?? ((url, options) => fetch(url, options));
1919
- }
1920
- async ingest(store, config) {
1921
- const start = Date.now();
1922
- const errors = [];
1923
- let nodesAdded = 0;
1924
- let edgesAdded = 0;
1925
- const apiKeyEnv = config.apiKeyEnv ?? "SLACK_API_KEY";
1926
- const apiKey = process.env[apiKeyEnv];
1927
- if (!apiKey) {
1928
- return {
1929
- nodesAdded: 0,
1930
- nodesUpdated: 0,
1931
- edgesAdded: 0,
1932
- edgesUpdated: 0,
1933
- errors: [`Missing API key: environment variable "${apiKeyEnv}" is not set`],
1934
- durationMs: Date.now() - start
1935
- };
1936
- }
1937
- const channels = config.channels ?? [];
1938
- const oldest = config.lookbackDays ? String(Math.floor((Date.now() - Number(config.lookbackDays) * 864e5) / 1e3)) : void 0;
1939
- for (const channel of channels) {
1940
- try {
1941
- const result = await this.processChannel(store, channel, apiKey, oldest);
1942
- nodesAdded += result.nodesAdded;
1943
- edgesAdded += result.edgesAdded;
1944
- errors.push(...result.errors);
1945
- } catch (err) {
1946
- errors.push(
1947
- `Slack API error for channel ${channel}: ${err instanceof Error ? err.message : String(err)}`
1948
- );
1949
- }
1950
- }
1951
- return {
1952
- nodesAdded,
1953
- nodesUpdated: 0,
1954
- edgesAdded,
1955
- edgesUpdated: 0,
1956
- errors,
1957
- durationMs: Date.now() - start
1958
- };
1959
- }
1960
- async processChannel(store, channel, apiKey, oldest) {
1961
- const errors = [];
1962
- let nodesAdded = 0;
1963
- let edgesAdded = 0;
1964
- let url = `https://slack.com/api/conversations.history?channel=${encodeURIComponent(channel)}`;
1965
- if (oldest) {
1966
- url += `&oldest=${oldest}`;
1967
- }
1968
- const response = await this.httpClient(url, {
1969
- headers: {
1970
- Authorization: `Bearer ${apiKey}`,
1971
- "Content-Type": "application/json"
1972
- }
1973
- });
1974
- if (!response.ok) {
1975
- return {
1976
- nodesAdded: 0,
1977
- edgesAdded: 0,
1978
- errors: [`Slack API request failed for channel ${channel}`]
1979
- };
1980
- }
1981
- const data = await response.json();
1982
- if (!data.ok) {
1983
- return { nodesAdded: 0, edgesAdded: 0, errors: [`Slack API error for channel ${channel}`] };
1984
- }
1985
- for (const message of data.messages) {
1986
- const nodeId = `conversation:slack:${channel}:${message.ts}`;
1987
- const sanitizedText = sanitizeExternalText(message.text);
1988
- const snippet = sanitizedText.length > 100 ? sanitizedText.slice(0, 100) : sanitizedText;
1989
- store.addNode({
1990
- id: nodeId,
1991
- type: "conversation",
1992
- name: snippet,
1993
- metadata: {
1994
- author: message.user,
1995
- channel,
1996
- timestamp: message.ts
1997
- }
1998
- });
1999
- nodesAdded++;
2000
- edgesAdded += linkToCode(store, sanitizedText, nodeId, "references", {
2001
- checkPaths: true
2002
- });
2003
- }
2004
- return { nodesAdded, edgesAdded, errors };
2005
- }
2006
- };
2007
- var ConfluenceConnector = class {
2008
- name = "confluence";
2009
- source = "confluence";
2010
- httpClient;
2011
- constructor(httpClient) {
2012
- this.httpClient = httpClient ?? ((url, options) => fetch(url, options));
2013
- }
2014
- async ingest(store, config) {
2015
- const start = Date.now();
2016
- const errors = [];
2017
- let nodesAdded = 0;
2018
- let edgesAdded = 0;
2019
- const apiKeyEnv = config.apiKeyEnv ?? "CONFLUENCE_API_KEY";
2020
- const apiKey = process.env[apiKeyEnv];
2021
- if (!apiKey) {
2022
- return {
2023
- nodesAdded: 0,
2024
- nodesUpdated: 0,
2025
- edgesAdded: 0,
2026
- edgesUpdated: 0,
2027
- errors: [`Missing API key: environment variable "${apiKeyEnv}" is not set`],
2028
- durationMs: Date.now() - start
2029
- };
2030
- }
2031
- const baseUrlEnv = config.baseUrlEnv ?? "CONFLUENCE_BASE_URL";
2032
- const baseUrl = process.env[baseUrlEnv] ?? "";
2033
- const spaceKey = config.spaceKey ?? "";
2034
- try {
2035
- const result = await this.fetchAllPages(store, baseUrl, apiKey, spaceKey);
2036
- nodesAdded = result.nodesAdded;
2037
- edgesAdded = result.edgesAdded;
2038
- errors.push(...result.errors);
2039
- } catch (err) {
2040
- errors.push(`Confluence fetch error: ${err instanceof Error ? err.message : String(err)}`);
2041
- }
2042
- return {
2043
- nodesAdded,
2044
- nodesUpdated: 0,
2045
- edgesAdded,
2046
- edgesUpdated: 0,
2047
- errors,
2048
- durationMs: Date.now() - start
2049
- };
2050
- }
2051
- async fetchAllPages(store, baseUrl, apiKey, spaceKey) {
2052
- const errors = [];
2053
- let nodesAdded = 0;
2054
- let edgesAdded = 0;
2055
- let nextUrl = `${baseUrl}/wiki/api/v2/pages?spaceKey=${encodeURIComponent(spaceKey)}&limit=25&body-format=storage`;
2056
- while (nextUrl) {
2057
- const response = await this.httpClient(nextUrl, {
2058
- headers: { Authorization: `Bearer ${apiKey}` }
2059
- });
2060
- if (!response.ok) {
2061
- errors.push(`Confluence API error: status ${response.status}`);
2062
- break;
2063
- }
2064
- const data = await response.json();
2065
- for (const page of data.results) {
2066
- const counts = this.processPage(store, page, spaceKey);
2067
- nodesAdded += counts.nodesAdded;
2068
- edgesAdded += counts.edgesAdded;
2069
- }
2070
- nextUrl = data._links?.next ? `${baseUrl}${data._links.next}` : null;
2071
- }
2072
- return { nodesAdded, edgesAdded, errors };
2073
- }
2074
- processPage(store, page, spaceKey) {
2075
- const nodeId = `confluence:${page.id}`;
2076
- store.addNode({
2077
- id: nodeId,
2078
- type: "document",
2079
- name: sanitizeExternalText(page.title, 500),
2080
- metadata: {
2081
- source: "confluence",
2082
- spaceKey,
2083
- pageId: page.id,
2084
- status: page.status,
2085
- url: page._links?.webui ?? ""
2086
- }
2087
- });
2088
- const text = sanitizeExternalText(`${page.title} ${page.body?.storage?.value ?? ""}`);
2089
- const edgesAdded = linkToCode(store, text, nodeId, "documents");
2090
- return { nodesAdded: 1, edgesAdded };
2091
- }
2092
- };
2093
- var CIConnector = class {
2094
- name = "ci";
2095
- source = "github-actions";
2096
- httpClient;
2097
- constructor(httpClient) {
2098
- this.httpClient = httpClient ?? ((url, options) => fetch(url, options));
2099
- }
2100
- async ingest(store, config) {
2101
- const start = Date.now();
2102
- const errors = [];
2103
- let nodesAdded = 0;
2104
- let edgesAdded = 0;
2105
- const apiKeyEnv = config.apiKeyEnv ?? "GITHUB_TOKEN";
2106
- const apiKey = process.env[apiKeyEnv];
2107
- if (!apiKey) {
2108
- return {
2109
- nodesAdded: 0,
2110
- nodesUpdated: 0,
2111
- edgesAdded: 0,
2112
- edgesUpdated: 0,
2113
- errors: [`Missing API key: environment variable "${apiKeyEnv}" is not set`],
2114
- durationMs: Date.now() - start
2115
- };
2116
- }
2117
- const repo = config.repo ?? "";
2118
- const maxRuns = config.maxRuns ?? 10;
2119
- try {
2120
- const url = `https://api.github.com/repos/${repo}/actions/runs?per_page=${maxRuns}`;
2121
- const response = await this.httpClient(url, {
2122
- headers: { Authorization: `Bearer ${apiKey}`, Accept: "application/vnd.github.v3+json" }
2123
- });
2124
- if (!response.ok) {
2125
- errors.push(`GitHub Actions API error: status ${response.status}`);
2126
- return {
2127
- nodesAdded: 0,
2128
- nodesUpdated: 0,
2129
- edgesAdded: 0,
2130
- edgesUpdated: 0,
2131
- errors,
2132
- durationMs: Date.now() - start
2133
- };
2134
- }
2135
- const data = await response.json();
2136
- for (const run of data.workflow_runs) {
2137
- const buildId = `build:${run.id}`;
2138
- const safeName = sanitizeExternalText(run.name, 200);
2139
- store.addNode({
2140
- id: buildId,
2141
- type: "build",
2142
- name: `${safeName} #${run.id}`,
2143
- metadata: {
2144
- source: "github-actions",
2145
- status: run.status,
2146
- conclusion: run.conclusion,
2147
- branch: run.head_branch,
2148
- sha: run.head_sha,
2149
- url: run.html_url,
2150
- createdAt: run.created_at
2151
- }
2152
- });
2153
- nodesAdded++;
2154
- const commitNode = store.getNode(`commit:${run.head_sha}`);
2155
- if (commitNode) {
2156
- store.addEdge({ from: buildId, to: commitNode.id, type: "triggered_by" });
2157
- edgesAdded++;
2158
- }
2159
- if (run.conclusion === "failure") {
2160
- const testResultId = `test_result:${run.id}`;
2161
- store.addNode({
2162
- id: testResultId,
2163
- type: "test_result",
2164
- name: `Failed: ${safeName} #${run.id}`,
2165
- metadata: {
2166
- source: "github-actions",
2167
- buildId: String(run.id),
2168
- conclusion: "failure",
2169
- branch: run.head_branch,
2170
- sha: run.head_sha
2171
- }
2172
- });
2173
- nodesAdded++;
2174
- store.addEdge({ from: testResultId, to: buildId, type: "failed_in" });
2175
- edgesAdded++;
2176
- }
2177
- }
2178
- } catch (err) {
2179
- errors.push(
2180
- `GitHub Actions fetch error: ${err instanceof Error ? err.message : String(err)}`
2181
- );
2182
- }
2183
- return {
2184
- nodesAdded,
2185
- nodesUpdated: 0,
2186
- edgesAdded,
2187
- edgesUpdated: 0,
2188
- errors,
2189
- durationMs: Date.now() - start
2190
- };
2191
- }
2192
- };
2193
- var STOP_WORDS = /* @__PURE__ */ new Set([
2194
- "the",
2195
- "a",
2196
- "an",
2197
- "is",
2198
- "are",
2199
- "was",
2200
- "were",
2201
- "be",
2202
- "been",
2203
- "being",
2204
- "have",
2205
- "has",
2206
- "had",
2207
- "do",
2208
- "does",
2209
- "did",
2210
- "will",
2211
- "would",
2212
- "could",
2213
- "should",
2214
- "may",
2215
- "might",
2216
- "shall",
2217
- "can",
2218
- "to",
2219
- "of",
2220
- "in",
2221
- "for",
2222
- "on",
2223
- "with",
2224
- "at",
2225
- "by",
2226
- "from",
2227
- "as",
2228
- "into",
2229
- "about",
2230
- "this",
2231
- "that",
2232
- "it",
2233
- "not",
2234
- "but",
2235
- "and",
2236
- "or",
2237
- "if",
2238
- "then",
2239
- "so"
2240
- ]);
2241
- var FusionLayer = class {
2242
- store;
2243
- vectorStore;
2244
- keywordWeight;
2245
- semanticWeight;
2246
- constructor(store, vectorStore, keywordWeight = 0.6, semanticWeight = 0.4) {
2247
- this.store = store;
2248
- this.vectorStore = vectorStore;
2249
- this.keywordWeight = keywordWeight;
2250
- this.semanticWeight = semanticWeight;
2251
- }
2252
- search(query, topK = 10, queryEmbedding) {
2253
- const keywords = this.extractKeywords(query);
2254
- if (keywords.length === 0) {
2255
- return [];
2256
- }
2257
- const allNodes = this.store.findNodes({});
2258
- const semanticScores = /* @__PURE__ */ new Map();
2259
- if (queryEmbedding && this.vectorStore) {
2260
- const vectorResults = this.vectorStore.search(queryEmbedding, allNodes.length);
2261
- for (const vr of vectorResults) {
2262
- semanticScores.set(vr.id, vr.score);
2263
- }
2264
- }
2265
- const hasSemanticScores = semanticScores.size > 0;
2266
- const kwWeight = hasSemanticScores ? this.keywordWeight : 1;
2267
- const semWeight = hasSemanticScores ? this.semanticWeight : 0;
2268
- const results = [];
2269
- for (const node of allNodes) {
2270
- const kwScore = this.keywordScore(keywords, node);
2271
- const semScore = semanticScores.get(node.id) ?? 0;
2272
- const fusedScore = kwWeight * kwScore + semWeight * semScore;
2273
- if (fusedScore > 0) {
2274
- results.push({
2275
- nodeId: node.id,
2276
- node,
2277
- score: fusedScore,
2278
- signals: {
2279
- keyword: kwScore,
2280
- semantic: semScore
2281
- }
2282
- });
2283
- }
2284
- }
2285
- results.sort((a, b) => b.score - a.score);
2286
- return results.slice(0, topK);
2287
- }
2288
- extractKeywords(query) {
2289
- const tokens = query.toLowerCase().split(/[\s\-_.,:;!?()[\]{}"'`/\\|@#$%^&*+=<>~]+/).filter((t) => t.length >= 2).filter((t) => !STOP_WORDS.has(t));
2290
- return [...new Set(tokens)];
2291
- }
2292
- keywordScore(keywords, node) {
2293
- if (keywords.length === 0) return 0;
2294
- let totalScore = 0;
2295
- for (const keyword of keywords) {
2296
- totalScore += this.singleKeywordScore(keyword, node);
2297
- }
2298
- return totalScore / keywords.length;
2299
- }
2300
- singleKeywordScore(keyword, node) {
2301
- const nameLower = node.name.toLowerCase();
2302
- if (nameLower === keyword) {
2303
- return 1;
2304
- }
2305
- if (nameLower.includes(keyword)) {
2306
- return 0.7;
2307
- }
2308
- if (node.path && node.path.toLowerCase().includes(keyword)) {
2309
- return 0.5;
2310
- }
2311
- for (const value of Object.values(node.metadata)) {
2312
- if (typeof value === "string" && value.toLowerCase().includes(keyword)) {
2313
- return 0.3;
2314
- }
2315
- }
2316
- return 0;
2317
- }
2318
- };
2319
- var CODE_NODE_TYPES4 = ["file", "function", "class", "method", "interface", "variable"];
2320
- var GraphEntropyAdapter = class {
2321
- constructor(store) {
2322
- this.store = store;
2323
- }
2324
- store;
2325
- /**
2326
- * Find all `documents` edges and classify them as stale or missing-target.
2327
- *
2328
- * 1. Find all `documents` edges in the graph
2329
- * 2. For each edge, check if the target code node still exists in the store
2330
- * 3. If target doesn't exist -> add to missingTargets
2331
- * 4. If target exists -> compare lastModified timestamps to determine staleness
2332
- */
2333
- computeDriftData() {
2334
- const documentsEdges = this.store.getEdges({ type: "documents" });
2335
- const staleEdges = [];
2336
- const missingTargets = [];
2337
- let freshEdges = 0;
2338
- for (const edge of documentsEdges) {
2339
- const codeNode = this.store.getNode(edge.to);
2340
- if (!codeNode) {
2341
- missingTargets.push(edge.to);
2342
- continue;
2343
- }
2344
- const docNode = this.store.getNode(edge.from);
2345
- const codeLastModified = codeNode.lastModified;
2346
- const docLastModified = docNode?.lastModified;
2347
- if (codeLastModified && docLastModified) {
2348
- if (codeLastModified > docLastModified) {
2349
- staleEdges.push({
2350
- docNodeId: edge.from,
2351
- codeNodeId: edge.to,
2352
- edgeType: edge.type,
2353
- codeLastModified,
2354
- docLastModified
2355
- });
2356
- } else {
2357
- freshEdges++;
2358
- }
2359
- } else {
2360
- staleEdges.push({
2361
- docNodeId: edge.from,
2362
- codeNodeId: edge.to,
2363
- edgeType: edge.type,
2364
- codeLastModified,
2365
- docLastModified
2366
- });
2367
- }
2368
- }
2369
- return { staleEdges, missingTargets, freshEdges };
2370
- }
2371
- /**
2372
- * BFS from entry points to find reachable vs unreachable code nodes.
2373
- *
2374
- * 1. Entry points: file nodes named `index.ts` or with metadata `entryPoint: true`
2375
- * 2. BFS following `imports` and `calls` edges (outbound only)
2376
- * 3. Unreachable = code nodes NOT in visited set
2377
- */
2378
- computeDeadCodeData() {
2379
- const entryPoints = this.findEntryPoints();
2380
- const visited = this.bfsFromEntryPoints(entryPoints);
2381
- const unreachableNodes = this.collectUnreachableNodes(visited);
2382
- return { reachableNodeIds: visited, unreachableNodes, entryPoints };
2383
- }
2384
- findEntryPoints() {
2385
- const entryPoints = [];
2386
- for (const nodeType of CODE_NODE_TYPES4) {
2387
- const nodes = this.store.findNodes({ type: nodeType });
2388
- for (const node of nodes) {
2389
- const isIndexFile = nodeType === "file" && node.name === "index.ts";
2390
- if (isIndexFile || node.metadata?.entryPoint === true) {
2391
- entryPoints.push(node.id);
2392
- }
2393
- }
2394
- }
2395
- return entryPoints;
2396
- }
2397
- bfsFromEntryPoints(entryPoints) {
2398
- const visited = /* @__PURE__ */ new Set();
2399
- const queue = [...entryPoints];
2400
- let head = 0;
2401
- while (head < queue.length) {
2402
- const nodeId = queue[head++];
2403
- if (visited.has(nodeId)) continue;
2404
- visited.add(nodeId);
2405
- this.enqueueOutboundEdges(nodeId, visited, queue);
2406
- }
2407
- return visited;
2408
- }
2409
- enqueueOutboundEdges(nodeId, visited, queue) {
2410
- const edgeTypes = ["imports", "calls", "contains"];
2411
- for (const edgeType of edgeTypes) {
2412
- const edges = this.store.getEdges({ from: nodeId, type: edgeType });
2413
- for (const edge of edges) {
2414
- if (!visited.has(edge.to)) {
2415
- queue.push(edge.to);
2416
- }
2417
- }
2418
- }
2419
- }
2420
- collectUnreachableNodes(visited) {
2421
- const unreachableNodes = [];
2422
- for (const nodeType of CODE_NODE_TYPES4) {
2423
- const nodes = this.store.findNodes({ type: nodeType });
2424
- for (const node of nodes) {
2425
- if (!visited.has(node.id)) {
2426
- unreachableNodes.push({
2427
- id: node.id,
2428
- type: node.type,
2429
- name: node.name,
2430
- path: node.path
2431
- });
2432
- }
2433
- }
2434
- }
2435
- return unreachableNodes;
2436
- }
2437
- /**
2438
- * Count all nodes and edges by type.
2439
- */
2440
- computeSnapshotSummary() {
2441
- const nodesByType = {};
2442
- const edgesByType = {};
2443
- const allNodes = this.store.findNodes({});
2444
- for (const node of allNodes) {
2445
- nodesByType[node.type] = (nodesByType[node.type] ?? 0) + 1;
2446
- }
2447
- const allEdges = this.store.getEdges({});
2448
- for (const edge of allEdges) {
2449
- edgesByType[edge.type] = (edgesByType[edge.type] ?? 0) + 1;
2450
- }
2451
- return {
2452
- nodeCount: this.store.nodeCount,
2453
- edgeCount: this.store.edgeCount,
2454
- nodesByType,
2455
- edgesByType
2456
- };
2457
- }
2458
- };
2459
- var GraphComplexityAdapter = class {
2460
- constructor(store) {
2461
- this.store = store;
2462
- }
2463
- store;
2464
- /**
2465
- * Compute complexity hotspots by combining cyclomatic complexity with change frequency.
2466
- *
2467
- * 1. Find all function and method nodes
2468
- * 2. For each, find the containing file and count commit nodes referencing that file
2469
- * 3. Compute hotspotScore = changeFrequency * cyclomaticComplexity
2470
- * 4. Sort descending by score
2471
- * 5. Compute 95th percentile
2472
- */
2473
- computeComplexityHotspots() {
2474
- const functionNodes = [
2475
- ...this.store.findNodes({ type: "function" }),
2476
- ...this.store.findNodes({ type: "method" })
2477
- ];
2478
- if (functionNodes.length === 0) {
2479
- return { hotspots: [], percentile95Score: 0 };
2480
- }
2481
- const fileChangeFrequency = /* @__PURE__ */ new Map();
2482
- const hotspots = [];
2483
- for (const fnNode of functionNodes) {
2484
- const complexity = fnNode.metadata?.cyclomaticComplexity ?? 1;
2485
- const fileId = this.findContainingFileId(fnNode.id);
2486
- if (!fileId) continue;
2487
- const changeFrequency = this.getChangeFrequency(fileId, fileChangeFrequency);
2488
- const hotspotScore = changeFrequency * complexity;
2489
- const filePath = fnNode.path ?? fileId.replace(/^file:/, "");
2490
- hotspots.push({
2491
- file: filePath,
2492
- function: fnNode.name,
2493
- changeFrequency,
2494
- complexity,
2495
- hotspotScore
2496
- });
2497
- }
2498
- hotspots.sort((a, b) => b.hotspotScore - a.hotspotScore);
2499
- const percentile95Score = this.computePercentile(
2500
- hotspots.map((h) => h.hotspotScore),
2501
- 95
2502
- );
2503
- return { hotspots, percentile95Score };
2504
- }
2505
- /**
2506
- * Walk the 'contains' edges to find the file node that contains a given function/method.
2507
- * For methods, walks through the intermediate class node.
2508
- */
2509
- findContainingFileId(nodeId) {
2510
- const containsEdges = this.store.getEdges({ to: nodeId, type: "contains" });
2511
- for (const edge of containsEdges) {
2512
- const sourceNode = this.store.getNode(edge.from);
2513
- if (sourceNode?.type === "file") return sourceNode.id;
2514
- if (sourceNode?.type === "class") {
2515
- const fileId = this.findParentFileOfClass(sourceNode.id);
2516
- if (fileId) return fileId;
2517
- }
2518
- }
2519
- return void 0;
2520
- }
2521
- findParentFileOfClass(classNodeId) {
2522
- const classContainsEdges = this.store.getEdges({ to: classNodeId, type: "contains" });
2523
- for (const classEdge of classContainsEdges) {
2524
- const parentNode = this.store.getNode(classEdge.from);
2525
- if (parentNode?.type === "file") return parentNode.id;
2526
- }
2527
- return void 0;
2528
- }
2529
- getChangeFrequency(fileId, cache) {
2530
- let freq = cache.get(fileId);
2531
- if (freq === void 0) {
2532
- const referencesEdges = this.store.getEdges({ to: fileId, type: "references" });
2533
- freq = referencesEdges.length;
2534
- cache.set(fileId, freq);
2535
- }
2536
- return freq;
2537
- }
2538
- computePercentile(descendingScores, percentile) {
2539
- if (descendingScores.length === 0) return 0;
2540
- const ascending = [...descendingScores].sort((a, b) => a - b);
2541
- const index = Math.ceil(percentile / 100 * ascending.length) - 1;
2542
- return ascending[Math.min(index, ascending.length - 1)];
2543
- }
2544
- };
2545
- var GraphCouplingAdapter = class {
2546
- constructor(store) {
2547
- this.store = store;
2548
- }
2549
- store;
2550
- /**
2551
- * Compute coupling data for all file nodes in the graph.
2552
- *
2553
- * For each file:
2554
- * - fanOut: number of outbound 'imports' edges
2555
- * - fanIn: number of inbound 'imports' edges from other files
2556
- * - couplingRatio: fanOut / (fanIn + fanOut), rounded to 2 decimals (0 if both are 0)
2557
- * - transitiveDepth: longest chain of outbound 'imports' edges via BFS
2558
- */
2559
- computeCouplingData() {
2560
- const fileNodes = this.store.findNodes({ type: "file" });
2561
- if (fileNodes.length === 0) {
2562
- return { files: [] };
2563
- }
2564
- const files = [];
2565
- for (const node of fileNodes) {
2566
- const fileId = node.id;
2567
- const filePath = node.path ?? node.name;
2568
- const outEdges = this.store.getEdges({ from: fileId, type: "imports" });
2569
- const fanOut = outEdges.length;
2570
- const inEdges = this.store.getEdges({ to: fileId, type: "imports" });
2571
- const fanIn = inEdges.length;
2572
- const total = fanIn + fanOut;
2573
- const couplingRatio = total === 0 ? 0 : Math.round(fanOut / total * 100) / 100;
2574
- const transitiveDepth = this.computeTransitiveDepth(fileId);
2575
- files.push({ file: filePath, fanIn, fanOut, couplingRatio, transitiveDepth });
2576
- }
2577
- return { files };
2578
- }
2579
- /**
2580
- * BFS from a node following outbound 'imports' edges to find the maximum depth.
2581
- */
2582
- computeTransitiveDepth(startId) {
2583
- const visited = /* @__PURE__ */ new Set();
2584
- const queue = [[startId, 0]];
2585
- visited.add(startId);
2586
- let maxDepth = 0;
2587
- let head = 0;
2588
- while (head < queue.length) {
2589
- const [nodeId, depth] = queue[head++];
2590
- if (depth > maxDepth) {
2591
- maxDepth = depth;
2592
- }
2593
- const outEdges = this.store.getEdges({ from: nodeId, type: "imports" });
2594
- for (const edge of outEdges) {
2595
- if (!visited.has(edge.to)) {
2596
- visited.add(edge.to);
2597
- queue.push([edge.to, depth + 1]);
2598
- }
2599
- }
2600
- }
2601
- return maxDepth;
2602
- }
2603
- };
2604
- var DEFAULT_THRESHOLD = 2;
2605
- var DEFAULT_METRICS = [
2606
- "cyclomaticComplexity",
2607
- "fanIn",
2608
- "fanOut",
2609
- "hotspotScore",
2610
- "transitiveDepth"
2611
- ];
2612
- var RECOGNIZED_METRICS = new Set(DEFAULT_METRICS);
2613
- var GraphAnomalyAdapter = class {
2614
- constructor(store) {
2615
- this.store = store;
2616
- }
2617
- store;
2618
- detect(options) {
2619
- const threshold = options?.threshold != null && options.threshold > 0 ? options.threshold : DEFAULT_THRESHOLD;
2620
- const requestedMetrics = options?.metrics ?? [...DEFAULT_METRICS];
2621
- const warnings = [];
2622
- const metricsToAnalyze = [];
2623
- for (const m of requestedMetrics) {
2624
- if (RECOGNIZED_METRICS.has(m)) {
2625
- metricsToAnalyze.push(m);
2626
- } else {
2627
- warnings.push(m);
2628
- }
2629
- }
2630
- const allOutliers = [];
2631
- const analyzedNodeIds = /* @__PURE__ */ new Set();
2632
- const couplingMetrics = ["fanIn", "fanOut", "transitiveDepth"];
2633
- const needsCoupling = metricsToAnalyze.some((m) => couplingMetrics.includes(m));
2634
- const needsComplexity = metricsToAnalyze.includes("hotspotScore");
2635
- const cachedCouplingData = needsCoupling ? new GraphCouplingAdapter(this.store).computeCouplingData() : void 0;
2636
- const cachedHotspotData = needsComplexity ? new GraphComplexityAdapter(this.store).computeComplexityHotspots() : void 0;
2637
- for (const metric of metricsToAnalyze) {
2638
- const entries = this.collectMetricValues(metric, cachedCouplingData, cachedHotspotData);
2639
- for (const e of entries) {
2640
- analyzedNodeIds.add(e.nodeId);
2641
- }
2642
- const outliers = this.computeZScoreOutliers(entries, metric, threshold);
2643
- allOutliers.push(...outliers);
2644
- }
2645
- allOutliers.sort((a, b) => b.zScore - a.zScore);
2646
- const articulationPoints = this.findArticulationPoints();
2647
- const outlierNodeIds = new Set(allOutliers.map((o) => o.nodeId));
2648
- const apNodeIds = new Set(articulationPoints.map((ap) => ap.nodeId));
2649
- const overlapping = [...outlierNodeIds].filter((id) => apNodeIds.has(id));
2650
- return {
2651
- statisticalOutliers: allOutliers,
2652
- articulationPoints,
2653
- overlapping,
2654
- summary: {
2655
- totalNodesAnalyzed: analyzedNodeIds.size,
2656
- outlierCount: allOutliers.length,
2657
- articulationPointCount: articulationPoints.length,
2658
- overlapCount: overlapping.length,
2659
- metricsAnalyzed: metricsToAnalyze,
2660
- warnings,
2661
- threshold
2662
- }
2663
- };
2664
- }
2665
- collectMetricValues(metric, cachedCouplingData, cachedHotspotData) {
2666
- const entries = [];
2667
- if (metric === "cyclomaticComplexity") {
2668
- const functionNodes = [
2669
- ...this.store.findNodes({ type: "function" }),
2670
- ...this.store.findNodes({ type: "method" })
2671
- ];
2672
- for (const node of functionNodes) {
2673
- const cc = node.metadata?.cyclomaticComplexity;
2674
- if (typeof cc === "number") {
2675
- entries.push({
2676
- nodeId: node.id,
2677
- nodeName: node.name,
2678
- nodePath: node.path,
2679
- nodeType: node.type,
2680
- value: cc
2681
- });
2682
- }
2683
- }
2684
- } else if (metric === "fanIn" || metric === "fanOut" || metric === "transitiveDepth") {
2685
- const couplingData = cachedCouplingData ?? new GraphCouplingAdapter(this.store).computeCouplingData();
2686
- const fileNodes = this.store.findNodes({ type: "file" });
2687
- for (const fileData of couplingData.files) {
2688
- const fileNode = fileNodes.find((n) => (n.path ?? n.name) === fileData.file);
2689
- if (!fileNode) continue;
2690
- entries.push({
2691
- nodeId: fileNode.id,
2692
- nodeName: fileNode.name,
2693
- nodePath: fileNode.path,
2694
- nodeType: "file",
2695
- value: fileData[metric]
2696
- });
2697
- }
2698
- } else if (metric === "hotspotScore") {
2699
- const hotspots = cachedHotspotData ?? new GraphComplexityAdapter(this.store).computeComplexityHotspots();
2700
- const functionNodes = [
2701
- ...this.store.findNodes({ type: "function" }),
2702
- ...this.store.findNodes({ type: "method" })
2703
- ];
2704
- for (const h of hotspots.hotspots) {
2705
- const fnNode = functionNodes.find(
2706
- (n) => n.name === h.function && (n.path ?? "") === (h.file ?? "")
2707
- );
2708
- if (!fnNode) continue;
2709
- entries.push({
2710
- nodeId: fnNode.id,
2711
- nodeName: fnNode.name,
2712
- nodePath: fnNode.path,
2713
- nodeType: fnNode.type,
2714
- value: h.hotspotScore
2715
- });
2716
- }
2717
- }
2718
- return entries;
2719
- }
2720
- computeZScoreOutliers(entries, metric, threshold) {
2721
- if (entries.length === 0) return [];
2722
- const values = entries.map((e) => e.value);
2723
- const mean = values.reduce((sum, v) => sum + v, 0) / values.length;
2724
- const variance = values.reduce((sum, v) => sum + (v - mean) ** 2, 0) / values.length;
2725
- const stdDev = Math.sqrt(variance);
2726
- if (stdDev === 0) return [];
2727
- const outliers = [];
2728
- for (const entry of entries) {
2729
- const zScore = Math.abs(entry.value - mean) / stdDev;
2730
- if (zScore > threshold) {
2731
- outliers.push({
2732
- nodeId: entry.nodeId,
2733
- nodeName: entry.nodeName,
2734
- nodePath: entry.nodePath,
2735
- nodeType: entry.nodeType,
2736
- metric,
2737
- value: entry.value,
2738
- zScore,
2739
- mean,
2740
- stdDev
2741
- });
2742
- }
2743
- }
2744
- return outliers;
2745
- }
2746
- findArticulationPoints() {
2747
- const fileNodes = this.store.findNodes({ type: "file" });
2748
- if (fileNodes.length === 0) return [];
2749
- const nodeMap = /* @__PURE__ */ new Map();
2750
- const adj = /* @__PURE__ */ new Map();
2751
- for (const node of fileNodes) {
2752
- nodeMap.set(node.id, { name: node.name, path: node.path });
2753
- adj.set(node.id, /* @__PURE__ */ new Set());
2754
- }
2755
- const importEdges = this.store.getEdges({ type: "imports" });
2756
- for (const edge of importEdges) {
2757
- if (adj.has(edge.from) && adj.has(edge.to)) {
2758
- adj.get(edge.from).add(edge.to);
2759
- adj.get(edge.to).add(edge.from);
2760
- }
2761
- }
2762
- const disc = /* @__PURE__ */ new Map();
2763
- const low = /* @__PURE__ */ new Map();
2764
- const parent = /* @__PURE__ */ new Map();
2765
- const apSet = /* @__PURE__ */ new Set();
2766
- let timer = 0;
2767
- const dfs = (u) => {
2768
- disc.set(u, timer);
2769
- low.set(u, timer);
2770
- timer++;
2771
- let children = 0;
2772
- for (const v of adj.get(u)) {
2773
- if (!disc.has(v)) {
2774
- children++;
2775
- parent.set(v, u);
2776
- dfs(v);
2777
- low.set(u, Math.min(low.get(u), low.get(v)));
2778
- if (parent.get(u) === null && children > 1) {
2779
- apSet.add(u);
2780
- }
2781
- if (parent.get(u) !== null && low.get(v) >= disc.get(u)) {
2782
- apSet.add(u);
2783
- }
2784
- } else if (v !== parent.get(u)) {
2785
- low.set(u, Math.min(low.get(u), disc.get(v)));
2786
- }
2787
- }
2788
- };
2789
- for (const nodeId of adj.keys()) {
2790
- if (!disc.has(nodeId)) {
2791
- parent.set(nodeId, null);
2792
- dfs(nodeId);
2793
- }
2794
- }
2795
- const results = [];
2796
- for (const apId of apSet) {
2797
- const { components, dependentCount } = this.computeRemovalImpact(apId, adj);
2798
- const info = nodeMap.get(apId);
2799
- results.push({
2800
- nodeId: apId,
2801
- nodeName: info.name,
2802
- nodePath: info.path,
2803
- componentsIfRemoved: components,
2804
- dependentCount
2805
- });
2806
- }
2807
- results.sort((a, b) => b.dependentCount - a.dependentCount);
2808
- return results;
2809
- }
2810
- computeRemovalImpact(removedId, adj) {
2811
- const visited = /* @__PURE__ */ new Set();
2812
- visited.add(removedId);
2813
- const componentSizes = [];
2814
- for (const nodeId of adj.keys()) {
2815
- if (visited.has(nodeId)) continue;
2816
- const queue = [nodeId];
2817
- visited.add(nodeId);
2818
- let size = 0;
2819
- let head = 0;
2820
- while (head < queue.length) {
2821
- const current = queue[head++];
2822
- size++;
2823
- for (const neighbor of adj.get(current)) {
2824
- if (!visited.has(neighbor)) {
2825
- visited.add(neighbor);
2826
- queue.push(neighbor);
2827
- }
2828
- }
2829
- }
2830
- componentSizes.push(size);
2831
- }
2832
- const components = componentSizes.length;
2833
- if (componentSizes.length <= 1) {
2834
- return { components, dependentCount: 0 };
2835
- }
2836
- const maxSize = Math.max(...componentSizes);
2837
- const dependentCount = componentSizes.reduce((sum, s) => sum + s, 0) - maxSize;
2838
- return { components, dependentCount };
2839
- }
2840
- };
2841
- var INTENTS = ["impact", "find", "relationships", "explain", "anomaly"];
2842
- var SIGNAL_WEIGHTS = {
2843
- keyword: 0.35,
2844
- questionWord: 0.2,
2845
- verbPattern: 0.45
2846
- };
2847
- var INTENT_SIGNALS = {
2848
- impact: {
2849
- keywords: [
2850
- "break",
2851
- "affect",
2852
- "impact",
2853
- "change",
2854
- "depend",
2855
- "blast",
2856
- "radius",
2857
- "cascade",
2858
- "risk",
2859
- "delete",
2860
- "remove"
2861
- ],
2862
- questionWords: ["what", "if"],
2863
- verbPatterns: [
2864
- /what\s+(breaks|happens|is affected)/,
2865
- /if\s+i\s+(change|modify|remove|delete)/,
2866
- /blast\s+radius/,
2867
- /cascad/,
2868
- /what\s+(depend|relies)/
2869
- ]
2870
- },
2871
- find: {
2872
- keywords: ["find", "where", "locate", "search", "list", "all", "every"],
2873
- questionWords: ["where"],
2874
- verbPatterns: [
2875
- /where\s+is/,
2876
- /find\s+(the|all|every)/,
2877
- /show\s+me/,
2878
- /show\s+(all|every|the)/,
2879
- /locate\s+/,
2880
- /list\s+(all|every|the)/
2881
- ]
2882
- },
2883
- relationships: {
2884
- keywords: [
2885
- "connect",
2886
- "call",
2887
- "import",
2888
- "use",
2889
- "depend",
2890
- "link",
2891
- "neighbor",
2892
- "caller",
2893
- "callee"
2894
- ],
2895
- questionWords: ["what", "who"],
2896
- verbPatterns: [/connects?\s+to/, /depends?\s+on/, /\bcalls?\b/, /\bimports?\b/]
2897
- },
2898
- explain: {
2899
- keywords: ["describe", "explain", "tell", "about", "overview", "summary", "work"],
2900
- questionWords: ["what", "how"],
2901
- verbPatterns: [
2902
- /what\s+is\s+\w/,
2903
- /describe\s+/,
2904
- /tell\s+me\s+about/,
2905
- /how\s+does/,
2906
- /overview\s+of/,
2907
- /give\s+me\s+/
2908
- ]
2909
- },
2910
- anomaly: {
2911
- keywords: [
2912
- "wrong",
2913
- "problem",
2914
- "anomaly",
2915
- "smell",
2916
- "issue",
2917
- "outlier",
2918
- "hotspot",
2919
- "suspicious",
2920
- "risk"
2921
- ],
2922
- questionWords: ["what"],
2923
- verbPatterns: [
2924
- /what.*(wrong|problem|smell)/,
2925
- /find.*(issue|anomal|problem)/,
2926
- /code\s+smell/,
2927
- /suspicious/,
2928
- /hotspot/
2929
- ]
2930
- }
2931
- };
2932
- var IntentClassifier = class {
2933
- /**
2934
- * Classify a natural language question into an intent.
2935
- *
2936
- * @param question - The natural language question to classify
2937
- * @returns ClassificationResult with intent, confidence, and per-signal scores
2938
- */
2939
- classify(question) {
2940
- const normalized = question.toLowerCase().trim();
2941
- const scores = [];
2942
- for (const intent of INTENTS) {
2943
- const signals = this.scoreIntent(normalized, INTENT_SIGNALS[intent]);
2944
- const confidence = this.combineSignals(signals);
2945
- scores.push({ intent, confidence, signals });
2946
- }
2947
- scores.sort((a, b) => b.confidence - a.confidence);
2948
- const best = scores[0];
2949
- return {
2950
- intent: best.intent,
2951
- confidence: best.confidence,
2952
- signals: best.signals
2953
- };
2954
- }
2955
- /**
2956
- * Score individual signals for an intent against the normalized query.
2957
- */
2958
- scoreIntent(normalized, signalSet) {
2959
- return {
2960
- keyword: this.scoreKeywords(normalized, signalSet.keywords),
2961
- questionWord: this.scoreQuestionWord(normalized, signalSet.questionWords),
2962
- verbPattern: this.scoreVerbPatterns(normalized, signalSet.verbPatterns)
2963
- };
2964
- }
2965
- /**
2966
- * Score keyword signal: uses word-stem matching (checks if any word in the
2967
- * query starts with the keyword). Saturates at 2 matches to avoid penalizing
2968
- * intents with many keywords when only a few appear in the query.
2969
- */
2970
- scoreKeywords(normalized, keywords) {
2971
- if (keywords.length === 0) return 0;
2972
- const words = normalized.split(/\s+/);
2973
- let matched = 0;
2974
- for (const keyword of keywords) {
2975
- if (words.some((w) => w.startsWith(keyword))) {
2976
- matched++;
2977
- }
2978
- }
2979
- return Math.min(matched / 2, 1);
2980
- }
2981
- /**
2982
- * Score question-word signal: 1.0 if the query starts with a matching
2983
- * question word, 0 otherwise.
2984
- */
2985
- scoreQuestionWord(normalized, questionWords) {
2986
- const firstWord = normalized.split(/\s+/)[0] ?? "";
2987
- return questionWords.includes(firstWord) ? 1 : 0;
2988
- }
2989
- /**
2990
- * Score verb-pattern signal: any matching pattern yields a strong score.
2991
- * Multiple matches increase score but saturate quickly.
2992
- */
2993
- scoreVerbPatterns(normalized, patterns) {
2994
- if (patterns.length === 0) return 0;
2995
- let matched = 0;
2996
- for (const pattern of patterns) {
2997
- if (pattern.test(normalized)) {
2998
- matched++;
2999
- }
3000
- }
3001
- return matched === 0 ? 0 : Math.min(0.6 + matched * 0.2, 1);
3002
- }
3003
- /**
3004
- * Combine individual signal scores into a single confidence score
3005
- * using additive weighted scoring. Each signal contributes weight * score,
3006
- * and the total weights sum to 1.0 so the result is naturally bounded [0, 1].
3007
- */
3008
- combineSignals(signals) {
3009
- let total = 0;
3010
- for (const key of Object.keys(signals)) {
3011
- const weight = SIGNAL_WEIGHTS[key];
3012
- total += signals[key] * weight;
3013
- }
3014
- return total;
3015
- }
3016
- };
3017
- var INTENT_KEYWORDS = /* @__PURE__ */ new Set([
3018
- // impact
3019
- "break",
3020
- "breaks",
3021
- "affect",
3022
- "affects",
3023
- "affected",
3024
- "impact",
3025
- "change",
3026
- "depend",
3027
- "depends",
3028
- "blast",
3029
- "radius",
3030
- "risk",
3031
- "delete",
3032
- "remove",
3033
- "modify",
3034
- "happens",
3035
- // find
3036
- "find",
3037
- "where",
3038
- "locate",
3039
- "search",
3040
- "list",
3041
- "all",
3042
- "every",
3043
- "show",
3044
- // relationships
3045
- "connect",
3046
- "connects",
3047
- "call",
3048
- "calls",
3049
- "import",
3050
- "imports",
3051
- "use",
3052
- "uses",
3053
- "link",
3054
- "neighbor",
3055
- "caller",
3056
- "callers",
3057
- "callee",
3058
- "callees",
3059
- // explain
3060
- "describe",
3061
- "explain",
3062
- "tell",
3063
- "about",
3064
- "overview",
3065
- "summary",
3066
- "work",
3067
- "works",
3068
- // anomaly
3069
- "wrong",
3070
- "problem",
3071
- "problems",
3072
- "anomaly",
3073
- "anomalies",
3074
- "smell",
3075
- "smells",
3076
- "issue",
3077
- "issues",
3078
- "outlier",
3079
- "hotspot",
3080
- "hotspots",
3081
- "suspicious"
3082
- ]);
3083
- var STOP_WORDS2 = /* @__PURE__ */ new Set([
3084
- "a",
3085
- "an",
3086
- "the",
3087
- "is",
3088
- "are",
3089
- "was",
3090
- "were",
3091
- "be",
3092
- "been",
3093
- "being",
3094
- "have",
3095
- "has",
3096
- "had",
3097
- "do",
3098
- "does",
3099
- "did",
3100
- "will",
3101
- "would",
3102
- "could",
3103
- "should",
3104
- "may",
3105
- "might",
3106
- "shall",
3107
- "can",
3108
- "need",
3109
- "must",
3110
- "i",
3111
- "me",
3112
- "my",
3113
- "we",
3114
- "our",
3115
- "you",
3116
- "your",
3117
- "he",
3118
- "she",
3119
- "it",
3120
- "its",
3121
- "they",
3122
- "them",
3123
- "their",
3124
- "this",
3125
- "that",
3126
- "these",
3127
- "those",
3128
- "and",
3129
- "or",
3130
- "but",
3131
- "if",
3132
- "then",
3133
- "else",
3134
- "when",
3135
- "while",
3136
- "for",
3137
- "of",
3138
- "at",
3139
- "by",
3140
- "to",
3141
- "in",
3142
- "on",
3143
- "with",
3144
- "from",
3145
- "up",
3146
- "out",
3147
- "not",
3148
- "no",
3149
- "nor",
3150
- "so",
3151
- "too",
3152
- "very",
3153
- "just",
3154
- "also",
3155
- "what",
3156
- "who",
3157
- "how",
3158
- "which",
3159
- "where",
3160
- "why",
3161
- "there",
3162
- "here",
3163
- "any",
3164
- "some",
3165
- "each",
3166
- "than",
3167
- "like",
3168
- "get",
3169
- "give",
3170
- "go",
3171
- "make",
3172
- "see",
3173
- "know",
3174
- "take"
3175
- ]);
3176
- var PASCAL_OR_CAMEL_RE = /\b([A-Z][a-z]+[A-Za-z]*[a-z][A-Za-z]*|[a-z]+[A-Z][A-Za-z]*)\b/g;
3177
- var FILE_PATH_RE = /(?:\.\/|[a-zA-Z0-9_-]+\/)[a-zA-Z0-9_\-./]+\.[a-zA-Z]{1,10}/g;
3178
- var QUOTED_RE = /["']([^"']+)["']/g;
3179
- function isSkippableWord(cleaned, allConsumed) {
3180
- if (allConsumed.has(cleaned)) return true;
3181
- const lower = cleaned.toLowerCase();
3182
- if (STOP_WORDS2.has(lower)) return true;
3183
- if (INTENT_KEYWORDS.has(lower)) return true;
3184
- if (cleaned === cleaned.toUpperCase() && /^[A-Z]+$/.test(cleaned)) return true;
3185
- return false;
3186
- }
3187
- function buildConsumedSet(quotedConsumed, casingConsumed, pathConsumed) {
3188
- const quotedWords = /* @__PURE__ */ new Set();
3189
- for (const q of quotedConsumed) {
3190
- for (const w of q.split(/\s+/)) {
3191
- if (w.length > 0) quotedWords.add(w);
3192
- }
3193
- }
3194
- return /* @__PURE__ */ new Set([...quotedConsumed, ...quotedWords, ...casingConsumed, ...pathConsumed]);
3195
- }
3196
- var EntityExtractor = class {
3197
- /**
3198
- * Extract candidate entity mentions from a natural language query.
3199
- *
3200
- * @param query - The natural language query to extract entities from
3201
- * @returns Array of raw entity strings in priority order, deduplicated
3202
- */
3203
- extract(query) {
3204
- const trimmed = query.trim();
3205
- if (trimmed.length === 0) return [];
3206
- const seen = /* @__PURE__ */ new Set();
3207
- const result = [];
3208
- const add = (entity) => {
3209
- if (!seen.has(entity)) {
3210
- seen.add(entity);
3211
- result.push(entity);
3212
- }
3213
- };
3214
- const quotedConsumed = /* @__PURE__ */ new Set();
3215
- for (const match of trimmed.matchAll(QUOTED_RE)) {
3216
- const inner = match[1].trim();
3217
- if (inner.length > 0) {
3218
- add(inner);
3219
- quotedConsumed.add(inner);
3220
- }
3221
- }
3222
- const casingConsumed = /* @__PURE__ */ new Set();
3223
- for (const match of trimmed.matchAll(PASCAL_OR_CAMEL_RE)) {
3224
- const token = match[0];
3225
- if (!quotedConsumed.has(token)) {
3226
- add(token);
3227
- casingConsumed.add(token);
3228
- }
3229
- }
3230
- const pathConsumed = /* @__PURE__ */ new Set();
3231
- for (const match of trimmed.matchAll(FILE_PATH_RE)) {
3232
- const path7 = match[0];
3233
- add(path7);
3234
- pathConsumed.add(path7);
3235
- }
3236
- const allConsumed = buildConsumedSet(quotedConsumed, casingConsumed, pathConsumed);
3237
- const words = trimmed.split(/\s+/);
3238
- for (const raw of words) {
3239
- const cleaned = raw.replace(/^[^a-zA-Z0-9]+|[^a-zA-Z0-9]+$/g, "");
3240
- if (cleaned.length === 0) continue;
3241
- if (isSkippableWord(cleaned, allConsumed)) continue;
3242
- add(cleaned);
3243
- }
3244
- return result;
3245
- }
3246
- };
3247
- var EntityResolver = class {
3248
- store;
3249
- fusion;
3250
- constructor(store, fusion) {
3251
- this.store = store;
3252
- this.fusion = fusion;
3253
- }
3254
- /**
3255
- * Resolve an array of raw entity strings to graph nodes.
3256
- *
3257
- * @param raws - Raw entity strings from EntityExtractor
3258
- * @returns Array of ResolvedEntity for each successfully resolved raw string
3259
- */
3260
- resolve(raws) {
3261
- const results = [];
3262
- for (const raw of raws) {
3263
- const resolved = this.resolveOne(raw);
3264
- if (resolved !== void 0) {
3265
- results.push(resolved);
3266
- }
3267
- }
3268
- return results;
3269
- }
3270
- resolveOne(raw) {
3271
- const exactMatches = this.store.findNodes({ name: raw });
3272
- if (exactMatches.length > 0) {
3273
- const node = exactMatches[0];
3274
- return {
3275
- raw,
3276
- nodeId: node.id,
3277
- node,
3278
- confidence: 1,
3279
- method: "exact"
3280
- };
3281
- }
3282
- if (this.fusion) {
3283
- const fusionResults = this.fusion.search(raw, 5);
3284
- if (fusionResults.length > 0 && fusionResults[0].score > 0.5) {
3285
- const top = fusionResults[0];
3286
- return {
3287
- raw,
3288
- nodeId: top.nodeId,
3289
- node: top.node,
3290
- confidence: top.score,
3291
- method: "fusion"
3292
- };
3293
- }
3294
- }
3295
- if (raw.length < 3) return void 0;
3296
- const isPathLike = raw.includes("/");
3297
- const fileNodes = this.store.findNodes({ type: "file" });
3298
- for (const node of fileNodes) {
3299
- if (!node.path) continue;
3300
- if (isPathLike && node.path.includes(raw)) {
3301
- return { raw, nodeId: node.id, node, confidence: 0.6, method: "path" };
3302
- }
3303
- const basename5 = node.path.split("/").pop() ?? "";
3304
- if (basename5.includes(raw)) {
3305
- return { raw, nodeId: node.id, node, confidence: 0.6, method: "path" };
3306
- }
3307
- if (raw.length >= 4 && node.path.includes(raw)) {
3308
- return { raw, nodeId: node.id, node, confidence: 0.6, method: "path" };
3309
- }
3310
- }
3311
- return void 0;
3312
- }
3313
- };
3314
- var ResponseFormatter = class {
3315
- /**
3316
- * Format graph operation results into a human-readable summary.
3317
- *
3318
- * @param intent - The classified intent
3319
- * @param entities - Resolved entities from the query
3320
- * @param data - Raw result data (shape varies per intent)
3321
- * @param query - Original natural language query (optional)
3322
- * @returns Human-readable summary string
3323
- */
3324
- format(intent, entities, data, query) {
3325
- if (data === null || data === void 0) {
3326
- return "No results found.";
3327
- }
3328
- const firstEntity = entities[0];
3329
- const entityName = firstEntity?.raw ?? "the target";
3330
- switch (intent) {
3331
- case "impact":
3332
- return this.formatImpact(entityName, data);
3333
- case "find":
3334
- return this.formatFind(data, query);
3335
- case "relationships":
3336
- return this.formatRelationships(entityName, entities, data);
3337
- case "explain":
3338
- return this.formatExplain(entityName, entities, data);
3339
- case "anomaly":
3340
- return this.formatAnomaly(data);
3341
- default:
3342
- return `Processed results for "${entityName}".`;
3343
- }
3344
- }
3345
- formatImpact(entityName, data) {
3346
- const d = data;
3347
- if ("sourceNodeId" in d && "summary" in d) {
3348
- const summary = d.summary;
3349
- return `Blast radius of **${entityName}**: ${summary.totalAffected} affected nodes (${summary.highRisk} high risk, ${summary.mediumRisk} medium, ${summary.lowRisk} low).`;
3350
- }
3351
- const code = this.safeArrayLength(d?.code);
3352
- const tests = this.safeArrayLength(d?.tests);
3353
- const docs = this.safeArrayLength(d?.docs);
3354
- return `Changing **${entityName}** affects ${this.p(code, "code file")}, ${this.p(tests, "test")}, and ${this.p(docs, "doc")}.`;
3355
- }
3356
- formatFind(data, query) {
3357
- const count = Array.isArray(data) ? data.length : 0;
3358
- if (query) {
3359
- return `Found ${this.p(count, "match", "matches")} for "${query}".`;
3360
- }
3361
- return `Found ${this.p(count, "match", "matches")}.`;
3362
- }
3363
- formatRelationships(entityName, entities, data) {
3364
- const d = data;
3365
- const edges = Array.isArray(d?.edges) ? d.edges : [];
3366
- const firstEntity = entities[0];
3367
- const rootId = firstEntity?.nodeId ?? "";
3368
- let outbound = 0;
3369
- let inbound = 0;
3370
- for (const edge of edges) {
3371
- if (edge.from === rootId) outbound++;
3372
- if (edge.to === rootId) inbound++;
3373
- }
3374
- return `**${entityName}** has ${outbound} outbound and ${inbound} inbound relationships.`;
3375
- }
3376
- formatExplain(entityName, entities, data) {
3377
- const d = data;
3378
- const context = Array.isArray(d?.context) ? d.context : [];
3379
- const firstEntity = entities[0];
3380
- const nodeType = firstEntity?.node.type ?? "node";
3381
- const path7 = firstEntity?.node.path ?? "unknown";
3382
- let neighborCount = 0;
3383
- const firstContext = context[0];
3384
- if (firstContext && Array.isArray(firstContext.nodes)) {
3385
- neighborCount = firstContext.nodes.length;
3386
- }
3387
- return `**${entityName}** is a ${nodeType} at \`${path7}\`. Connected to ${neighborCount} nodes.`;
3388
- }
3389
- formatAnomaly(data) {
3390
- const d = data;
3391
- const outliers = Array.isArray(d?.statisticalOutliers) ? d.statisticalOutliers : [];
3392
- const artPoints = Array.isArray(d?.articulationPoints) ? d.articulationPoints : [];
3393
- const count = outliers.length + artPoints.length;
3394
- if (count === 0) {
3395
- return "Found 0 anomalies.";
3396
- }
3397
- const topItems = [
3398
- ...outliers.slice(0, 2).map((o) => o.nodeId ?? "unknown outlier"),
3399
- ...artPoints.slice(0, 1).map((a) => a.nodeId ?? "unknown bottleneck")
3400
- ].join(", ");
3401
- return `Found ${this.p(count, "anomaly", "anomalies")}: ${topItems}.`;
3402
- }
3403
- safeArrayLength(value) {
3404
- return Array.isArray(value) ? value.length : 0;
3405
- }
3406
- p(count, singular, plural) {
3407
- const word = count === 1 ? singular : plural ?? singular + "s";
3408
- return `${count} ${word}`;
3409
- }
3410
- };
3411
- var CompositeProbabilityStrategy = class _CompositeProbabilityStrategy {
3412
- constructor(changeFreqMap, couplingMap) {
3413
- this.changeFreqMap = changeFreqMap;
3414
- this.couplingMap = couplingMap;
3415
- }
3416
- changeFreqMap;
3417
- couplingMap;
3418
- static BASE_WEIGHTS = {
3419
- imports: 0.7,
3420
- calls: 0.5,
3421
- implements: 0.6,
3422
- inherits: 0.6,
3423
- co_changes_with: 0.4,
3424
- references: 0.2,
3425
- contains: 0.3
3426
- };
3427
- static FALLBACK_WEIGHT = 0.1;
3428
- static EDGE_TYPE_BLEND = 0.5;
3429
- static CHANGE_FREQ_BLEND = 0.3;
3430
- static COUPLING_BLEND = 0.2;
3431
- getEdgeProbability(edge, _fromNode, toNode) {
3432
- const base = _CompositeProbabilityStrategy.BASE_WEIGHTS[edge.type] ?? _CompositeProbabilityStrategy.FALLBACK_WEIGHT;
3433
- const changeFreq = this.changeFreqMap.get(toNode.id) ?? 0;
3434
- const coupling = this.couplingMap.get(toNode.id) ?? 0;
3435
- return Math.min(
3436
- 1,
3437
- base * _CompositeProbabilityStrategy.EDGE_TYPE_BLEND + changeFreq * _CompositeProbabilityStrategy.CHANGE_FREQ_BLEND + coupling * _CompositeProbabilityStrategy.COUPLING_BLEND
3438
- );
3439
- }
3440
- };
3441
- var DEFAULT_PROBABILITY_FLOOR = 0.05;
3442
- var DEFAULT_MAX_DEPTH = 10;
3443
- var CascadeSimulator = class {
3444
- constructor(store) {
3445
- this.store = store;
3446
- }
3447
- store;
3448
- simulate(sourceNodeId, options = {}) {
3449
- const sourceNode = this.store.getNode(sourceNodeId);
3450
- if (!sourceNode) {
3451
- throw new Error(`Node not found: ${sourceNodeId}. Ensure the file has been ingested.`);
3452
- }
3453
- const probabilityFloor = options.probabilityFloor ?? DEFAULT_PROBABILITY_FLOOR;
3454
- const maxDepth = options.maxDepth ?? DEFAULT_MAX_DEPTH;
3455
- const edgeTypeFilter = options.edgeTypes ? new Set(options.edgeTypes) : null;
3456
- const strategy = options.strategy ?? this.buildDefaultStrategy();
3457
- const visited = /* @__PURE__ */ new Map();
3458
- const queue = [];
3459
- const fanOutCount = /* @__PURE__ */ new Map();
3460
- this.seedQueue(
3461
- sourceNodeId,
3462
- sourceNode,
3463
- strategy,
3464
- edgeTypeFilter,
3465
- probabilityFloor,
3466
- queue,
3467
- fanOutCount
3468
- );
3469
- const truncated = this.runBfs(
3470
- queue,
3471
- visited,
3472
- fanOutCount,
3473
- sourceNodeId,
3474
- strategy,
3475
- edgeTypeFilter,
3476
- probabilityFloor,
3477
- maxDepth
3478
- );
3479
- return this.buildResult(sourceNodeId, sourceNode.name, visited, fanOutCount, truncated);
3480
- }
3481
- seedQueue(sourceNodeId, sourceNode, strategy, edgeTypeFilter, probabilityFloor, queue, fanOutCount) {
3482
- const sourceEdges = this.store.getEdges({ from: sourceNodeId });
3483
- for (const edge of sourceEdges) {
3484
- if (edge.to === sourceNodeId) continue;
3485
- if (edgeTypeFilter && !edgeTypeFilter.has(edge.type)) continue;
3486
- const targetNode = this.store.getNode(edge.to);
3487
- if (!targetNode) continue;
3488
- const cumProb = strategy.getEdgeProbability(edge, sourceNode, targetNode);
3489
- if (cumProb < probabilityFloor) continue;
3490
- queue.push({
3491
- nodeId: edge.to,
3492
- cumProb,
3493
- depth: 1,
3494
- parentId: sourceNodeId,
3495
- incomingEdge: edge.type
3496
- });
3497
- }
3498
- fanOutCount.set(
3499
- sourceNodeId,
3500
- sourceEdges.filter(
3501
- (e) => e.to !== sourceNodeId && (!edgeTypeFilter || edgeTypeFilter.has(e.type))
3502
- ).length
3503
- );
3504
- }
3505
- runBfs(queue, visited, fanOutCount, sourceNodeId, strategy, edgeTypeFilter, probabilityFloor, maxDepth) {
3506
- const MAX_QUEUE_SIZE = 1e4;
3507
- let head = 0;
3508
- while (head < queue.length) {
3509
- if (queue.length > MAX_QUEUE_SIZE) return true;
3510
- const entry = queue[head++];
3511
- const existing = visited.get(entry.nodeId);
3512
- if (existing && existing.cumulativeProbability >= entry.cumProb) continue;
3513
- const targetNode = this.store.getNode(entry.nodeId);
3514
- if (!targetNode) continue;
3515
- visited.set(entry.nodeId, {
3516
- nodeId: entry.nodeId,
3517
- name: targetNode.name,
3518
- ...targetNode.path !== void 0 && { path: targetNode.path },
3519
- type: targetNode.type,
3520
- cumulativeProbability: entry.cumProb,
3521
- depth: entry.depth,
3522
- incomingEdge: entry.incomingEdge,
3523
- parentId: entry.parentId
3524
- });
3525
- if (entry.depth < maxDepth) {
3526
- const childCount = this.expandNode(
3527
- entry,
3528
- targetNode,
3529
- sourceNodeId,
3530
- strategy,
3531
- edgeTypeFilter,
3532
- probabilityFloor,
3533
- queue
3534
- );
3535
- fanOutCount.set(entry.nodeId, (fanOutCount.get(entry.nodeId) ?? 0) + childCount);
3536
- }
3537
- }
3538
- return false;
3539
- }
3540
- expandNode(entry, fromNode, sourceNodeId, strategy, edgeTypeFilter, probabilityFloor, queue) {
3541
- const outEdges = this.store.getEdges({ from: entry.nodeId });
3542
- let childCount = 0;
3543
- for (const edge of outEdges) {
3544
- if (edgeTypeFilter && !edgeTypeFilter.has(edge.type)) continue;
3545
- if (edge.to === sourceNodeId) continue;
3546
- const childNode = this.store.getNode(edge.to);
3547
- if (!childNode) continue;
3548
- const newCumProb = entry.cumProb * strategy.getEdgeProbability(edge, fromNode, childNode);
3549
- if (newCumProb < probabilityFloor) continue;
3550
- childCount++;
3551
- queue.push({
3552
- nodeId: edge.to,
3553
- cumProb: newCumProb,
3554
- depth: entry.depth + 1,
3555
- parentId: entry.nodeId,
3556
- incomingEdge: edge.type
3557
- });
3558
- }
3559
- return childCount;
3560
- }
3561
- buildDefaultStrategy() {
3562
- return new CompositeProbabilityStrategy(/* @__PURE__ */ new Map(), /* @__PURE__ */ new Map());
3563
- }
3564
- buildResult(sourceNodeId, sourceName, visited, fanOutCount, truncated = false) {
3565
- if (visited.size === 0) {
3566
- return {
3567
- sourceNodeId,
3568
- sourceName,
3569
- layers: [],
3570
- flatSummary: [],
3571
- summary: {
3572
- totalAffected: 0,
3573
- maxDepthReached: 0,
3574
- highRisk: 0,
3575
- mediumRisk: 0,
3576
- lowRisk: 0,
3577
- categoryBreakdown: { code: 0, tests: 0, docs: 0, other: 0 },
3578
- amplificationPoints: [],
3579
- truncated
3580
- }
3581
- };
3582
- }
3583
- const allNodes = Array.from(visited.values());
3584
- const flatSummary = [...allNodes].sort(
3585
- (a, b) => b.cumulativeProbability - a.cumulativeProbability
3586
- );
3587
- const depthMap = /* @__PURE__ */ new Map();
3588
- for (const node of allNodes) {
3589
- let list = depthMap.get(node.depth);
3590
- if (!list) {
3591
- list = [];
3592
- depthMap.set(node.depth, list);
3593
- }
3594
- list.push(node);
3595
- }
3596
- const layers = [];
3597
- const depths = Array.from(depthMap.keys()).sort((a, b) => a - b);
3598
- for (const depth of depths) {
3599
- const nodes = depthMap.get(depth);
3600
- const breakdown = { code: 0, tests: 0, docs: 0, other: 0 };
3601
- for (const n of nodes) {
3602
- const graphNode = this.store.getNode(n.nodeId);
3603
- if (graphNode) {
3604
- breakdown[classifyNodeCategory(graphNode)]++;
3605
- }
3606
- }
3607
- layers.push({ depth, nodes, categoryBreakdown: breakdown });
3608
- }
3609
- let highRisk = 0;
3610
- let mediumRisk = 0;
3611
- let lowRisk = 0;
3612
- const catBreakdown = { code: 0, tests: 0, docs: 0, other: 0 };
3613
- for (const node of allNodes) {
3614
- if (node.cumulativeProbability >= 0.5) highRisk++;
3615
- else if (node.cumulativeProbability >= 0.2) mediumRisk++;
3616
- else lowRisk++;
3617
- const graphNode = this.store.getNode(node.nodeId);
3618
- if (graphNode) {
3619
- catBreakdown[classifyNodeCategory(graphNode)]++;
3620
- }
3621
- }
3622
- const amplificationPoints = [];
3623
- for (const [nodeId, count] of fanOutCount) {
3624
- if (count > 3) {
3625
- amplificationPoints.push(nodeId);
3626
- }
3627
- }
3628
- const maxDepthReached = allNodes.reduce((max, n) => Math.max(max, n.depth), 0);
3629
- return {
3630
- sourceNodeId,
3631
- sourceName,
3632
- layers,
3633
- flatSummary,
3634
- summary: {
3635
- totalAffected: allNodes.length,
3636
- maxDepthReached,
3637
- highRisk,
3638
- mediumRisk,
3639
- lowRisk,
3640
- categoryBreakdown: catBreakdown,
3641
- amplificationPoints,
3642
- truncated
3643
- }
3644
- };
3645
- }
3646
- };
3647
- var ENTITY_REQUIRED_INTENTS = /* @__PURE__ */ new Set(["impact", "relationships", "explain"]);
3648
- var classifier = new IntentClassifier();
3649
- var extractor = new EntityExtractor();
3650
- var formatter = new ResponseFormatter();
3651
- async function askGraph(store, question) {
3652
- const fusion = new FusionLayer(store);
3653
- const resolver = new EntityResolver(store, fusion);
3654
- const classification = classifier.classify(question);
3655
- if (classification.confidence < 0.3) {
3656
- return {
3657
- intent: classification.intent,
3658
- intentConfidence: classification.confidence,
3659
- entities: [],
3660
- summary: "I'm not sure what you're asking. Try rephrasing your question.",
3661
- data: null,
3662
- suggestions: [
3663
- 'Try "what breaks if I change <name>?" for impact analysis',
3664
- 'Try "where is <name>?" to find entities',
3665
- 'Try "what calls <name>?" for relationships',
3666
- 'Try "what is <name>?" for explanations',
3667
- 'Try "what looks wrong?" for anomaly detection'
3668
- ]
3669
- };
3670
- }
3671
- const rawEntities = extractor.extract(question);
3672
- const entities = resolver.resolve(rawEntities);
3673
- if (ENTITY_REQUIRED_INTENTS.has(classification.intent) && entities.length === 0) {
3674
- return {
3675
- intent: classification.intent,
3676
- intentConfidence: classification.confidence,
3677
- entities: [],
3678
- summary: "Could not find any matching nodes in the graph for your query. Try using exact class names, function names, or file paths.",
3679
- data: null
3680
- };
3681
- }
3682
- let data;
3683
- try {
3684
- data = executeOperation(store, classification.intent, entities, question, fusion);
3685
- } catch (err) {
3686
- return {
3687
- intent: classification.intent,
3688
- intentConfidence: classification.confidence,
3689
- entities,
3690
- summary: `An error occurred while querying the graph: ${err instanceof Error ? err.message : String(err)}`,
3691
- data: null
3692
- };
3693
- }
3694
- const summary = formatter.format(classification.intent, entities, data, question);
3695
- return {
3696
- intent: classification.intent,
3697
- intentConfidence: classification.confidence,
3698
- entities,
3699
- summary,
3700
- data
3701
- };
3702
- }
3703
- function executeOperation(store, intent, entities, question, fusion) {
3704
- const cql = new ContextQL(store);
3705
- switch (intent) {
3706
- case "impact": {
3707
- const rootId = entities[0].nodeId;
3708
- const lowerQuestion = question.toLowerCase();
3709
- if (lowerQuestion.includes("blast radius") || lowerQuestion.includes("cascade")) {
3710
- const simulator = new CascadeSimulator(store);
3711
- return simulator.simulate(rootId);
3712
- }
3713
- const result = cql.execute({
3714
- rootNodeIds: [rootId],
3715
- bidirectional: true,
3716
- maxDepth: 3
3717
- });
3718
- return groupNodesByImpact(result.nodes, rootId);
3719
- }
3720
- case "find": {
3721
- return fusion.search(question, 10);
3722
- }
3723
- case "relationships": {
3724
- const rootId = entities[0].nodeId;
3725
- const result = cql.execute({
3726
- rootNodeIds: [rootId],
3727
- bidirectional: true,
3728
- maxDepth: 1
3729
- });
3730
- return { nodes: result.nodes, edges: result.edges };
3731
- }
3732
- case "explain": {
3733
- const searchResults = fusion.search(question, 10);
3734
- const contextBlocks = [];
3735
- const rootIds = entities.length > 0 ? [entities[0].nodeId] : searchResults.slice(0, 3).map((r) => r.nodeId);
3736
- for (const rootId of rootIds) {
3737
- const expanded = cql.execute({
3738
- rootNodeIds: [rootId],
3739
- maxDepth: 2
3740
- });
3741
- const matchingResult = searchResults.find((r) => r.nodeId === rootId);
3742
- contextBlocks.push({
3743
- rootNode: rootId,
3744
- score: matchingResult?.score ?? 1,
3745
- nodes: expanded.nodes,
3746
- edges: expanded.edges
3747
- });
3748
- }
3749
- return { searchResults, context: contextBlocks };
3750
- }
3751
- case "anomaly": {
3752
- const adapter = new GraphAnomalyAdapter(store);
3753
- return adapter.detect();
3754
- }
3755
- default:
3756
- return null;
3757
- }
3758
- }
3759
- var PHASE_NODE_TYPES = {
3760
- implement: ["file", "function", "class", "method", "interface", "variable"],
3761
- review: ["adr", "document", "learning", "commit"],
3762
- debug: ["failure", "learning", "function", "method"],
3763
- plan: ["adr", "document", "module", "layer"]
3764
- };
3765
- var CODE_NODE_TYPES5 = /* @__PURE__ */ new Set([
3766
- "file",
3767
- "function",
3768
- "class",
3769
- "interface",
3770
- "method",
3771
- "variable"
3772
- ]);
3773
- function estimateNodeTokens(node) {
3774
- let chars = (node.name?.length ?? 0) + (node.path?.length ?? 0) + (node.type?.length ?? 0);
3775
- if (node.metadata) {
3776
- chars += JSON.stringify(node.metadata).length;
3777
- }
3778
- return Math.ceil(chars / 4);
3779
- }
3780
- var Assembler = class {
3781
- store;
3782
- vectorStore;
3783
- fusionLayer;
3784
- constructor(store, vectorStore) {
3785
- this.store = store;
3786
- this.vectorStore = vectorStore;
3787
- }
3788
- getFusionLayer() {
3789
- if (!this.fusionLayer) {
3790
- this.fusionLayer = new FusionLayer(this.store, this.vectorStore);
3791
- }
3792
- return this.fusionLayer;
3793
- }
3794
- /**
3795
- * Assemble context relevant to an intent string within a token budget.
3796
- */
3797
- assembleContext(intent, tokenBudget = 4e3) {
3798
- const fusion = this.getFusionLayer();
3799
- const topResults = fusion.search(intent, 10);
3800
- if (topResults.length === 0) {
3801
- return { nodes: [], edges: [], tokenEstimate: 0, intent, truncated: false };
3802
- }
3803
- const { nodeMap, collectedEdges, nodeScores } = this.expandSearchResults(topResults);
3804
- const sortedNodes = Array.from(nodeMap.values()).sort((a, b) => {
3805
- return (nodeScores.get(b.id) ?? 0) - (nodeScores.get(a.id) ?? 0);
3806
- });
3807
- const { keptNodes, tokenEstimate, truncated } = this.truncateToFit(sortedNodes, tokenBudget);
3808
- const keptNodeIds = new Set(keptNodes.map((n) => n.id));
3809
- const keptEdges = collectedEdges.filter(
3810
- (e) => keptNodeIds.has(e.from) && keptNodeIds.has(e.to)
3811
- );
3812
- return { nodes: keptNodes, edges: keptEdges, tokenEstimate, intent, truncated };
3813
- }
3814
- expandSearchResults(topResults) {
3815
- const contextQL = new ContextQL(this.store);
3816
- const nodeMap = /* @__PURE__ */ new Map();
3817
- const edgeSet = /* @__PURE__ */ new Set();
3818
- const collectedEdges = [];
3819
- const nodeScores = /* @__PURE__ */ new Map();
3820
- for (const result of topResults) {
3821
- nodeScores.set(result.nodeId, result.score);
3822
- const expanded = contextQL.execute({
3823
- rootNodeIds: [result.nodeId],
3824
- maxDepth: 2
3825
- });
3826
- for (const node of expanded.nodes) {
3827
- if (!nodeMap.has(node.id)) {
3828
- nodeMap.set(node.id, node);
3829
- if (!nodeScores.has(node.id)) {
3830
- nodeScores.set(node.id, result.score * 0.5);
3831
- }
3832
- }
3833
- }
3834
- for (const edge of expanded.edges) {
3835
- const key = `${edge.from}|${edge.to}|${edge.type}`;
3836
- if (!edgeSet.has(key)) {
3837
- edgeSet.add(key);
3838
- collectedEdges.push(edge);
3839
- }
3840
- }
3841
- }
3842
- return { nodeMap, collectedEdges, nodeScores };
3843
- }
3844
- truncateToFit(sortedNodes, tokenBudget) {
3845
- let tokenEstimate = 0;
3846
- const keptNodes = [];
3847
- let truncated = false;
3848
- for (const node of sortedNodes) {
3849
- const nodeTokens = estimateNodeTokens(node);
3850
- if (tokenEstimate + nodeTokens > tokenBudget && keptNodes.length > 0) {
3851
- truncated = true;
3852
- break;
3853
- }
3854
- tokenEstimate += nodeTokens;
3855
- keptNodes.push(node);
3856
- }
3857
- return { keptNodes, tokenEstimate, truncated };
3858
- }
3859
- /**
3860
- * Compute a token budget allocation across node types.
3861
- */
3862
- computeBudget(totalTokens, phase) {
3863
- const allNodes = this.store.findNodes({});
3864
- const typeCounts = {};
3865
- for (const node of allNodes) {
3866
- typeCounts[node.type] = (typeCounts[node.type] ?? 0) + 1;
3867
- }
3868
- const density = {};
3869
- const moduleNodes = this.store.findNodes({ type: "module" });
3870
- for (const mod of moduleNodes) {
3871
- const outEdges = this.store.getEdges({ from: mod.id });
3872
- const inEdges = this.store.getEdges({ to: mod.id });
3873
- density[mod.name] = outEdges.length + inEdges.length;
3874
- }
3875
- const boostTypes = phase ? PHASE_NODE_TYPES[phase] : void 0;
3876
- const boostFactor = 2;
3877
- let weightedTotal = 0;
3878
- const weights = {};
3879
- for (const [type, count] of Object.entries(typeCounts)) {
3880
- const isBoosted = boostTypes?.includes(type);
3881
- const weight = count * (isBoosted ? boostFactor : 1);
3882
- weights[type] = weight;
3883
- weightedTotal += weight;
3884
- }
3885
- const allocations = {};
3886
- if (weightedTotal > 0) {
3887
- let allocated = 0;
3888
- const types = Object.keys(weights);
3889
- for (let i = 0; i < types.length; i++) {
3890
- const type = types[i];
3891
- if (i === types.length - 1) {
3892
- allocations[type] = totalTokens - allocated;
3893
- } else {
3894
- const share = Math.round(weights[type] / weightedTotal * totalTokens);
3895
- allocations[type] = share;
3896
- allocated += share;
3897
- }
3898
- }
3899
- }
3900
- return { total: totalTokens, allocations, density };
3901
- }
3902
- /**
3903
- * Filter graph nodes relevant to a development phase.
3904
- */
3905
- filterForPhase(phase) {
3906
- const nodeTypes = PHASE_NODE_TYPES[phase];
3907
- if (!nodeTypes) {
3908
- console.warn(
3909
- `[harness] Unknown phase "${phase}" in filterForPhase. Returning all code nodes.`
3910
- );
3911
- }
3912
- const relevantTypes = nodeTypes ?? PHASE_NODE_TYPES["implement"] ?? [];
3913
- const nodes = [];
3914
- const filePathSet = /* @__PURE__ */ new Set();
3915
- for (const type of relevantTypes) {
3916
- const found = this.store.findNodes({ type });
3917
- for (const node of found) {
3918
- nodes.push(node);
3919
- if (node.path) {
3920
- filePathSet.add(node.path);
3921
- }
3922
- }
3923
- }
3924
- return {
3925
- phase,
3926
- nodes,
3927
- filePaths: Array.from(filePathSet)
3928
- };
3929
- }
3930
- /**
3931
- * Generate a markdown repository map from graph structure.
3932
- */
3933
- generateMap() {
3934
- const moduleNodes = this.store.findNodes({ type: "module" });
3935
- const modulesWithEdgeCount = moduleNodes.map((mod) => {
3936
- const outEdges = this.store.getEdges({ from: mod.id });
3937
- const inEdges = this.store.getEdges({ to: mod.id });
3938
- return { module: mod, edgeCount: outEdges.length + inEdges.length };
3939
- });
3940
- modulesWithEdgeCount.sort((a, b) => b.edgeCount - a.edgeCount);
3941
- const lines = ["# Repository Structure", ""];
3942
- if (modulesWithEdgeCount.length > 0) {
3943
- lines.push("## Modules", "");
3944
- for (const { module: mod, edgeCount } of modulesWithEdgeCount) {
3945
- lines.push(`### ${mod.name} (${edgeCount} connections)`);
3946
- lines.push("");
3947
- const containsEdges = this.store.getEdges({ from: mod.id, type: "contains" });
3948
- for (const edge of containsEdges) {
3949
- const fileNode = this.store.getNode(edge.to);
3950
- if (fileNode && fileNode.type === "file") {
3951
- const symbolEdges = this.store.getEdges({ from: fileNode.id, type: "contains" });
3952
- lines.push(`- ${fileNode.path ?? fileNode.name} (${symbolEdges.length} symbols)`);
3953
- }
3954
- }
3955
- lines.push("");
3956
- }
3957
- }
3958
- const fileNodes = this.store.findNodes({ type: "file" });
3959
- const nonBarrelFiles = fileNodes.filter((n) => !n.name.startsWith("index."));
3960
- const filesWithOutDegree = nonBarrelFiles.map((f) => {
3961
- const outEdges = this.store.getEdges({ from: f.id });
3962
- return { file: f, outDegree: outEdges.length };
3963
- });
3964
- filesWithOutDegree.sort((a, b) => b.outDegree - a.outDegree);
3965
- const entryPoints = filesWithOutDegree.filter((f) => f.outDegree > 0).slice(0, 5);
3966
- if (entryPoints.length > 0) {
3967
- lines.push("## Entry Points", "");
3968
- for (const { file, outDegree } of entryPoints) {
3969
- lines.push(`- ${file.path ?? file.name} (${outDegree} outbound edges)`);
3970
- }
3971
- lines.push("");
3972
- }
3973
- return lines.join("\n");
3974
- }
3975
- /**
3976
- * Check documentation coverage of code nodes.
3977
- */
3978
- checkCoverage() {
3979
- const codeNodes = [];
3980
- for (const type of CODE_NODE_TYPES5) {
3981
- codeNodes.push(...this.store.findNodes({ type }));
3982
- }
3983
- const documented = [];
3984
- const undocumented = [];
3985
- for (const node of codeNodes) {
3986
- const documentsEdges = this.store.getEdges({ to: node.id, type: "documents" });
3987
- if (documentsEdges.length > 0) {
3988
- documented.push(node.id);
3989
- } else {
3990
- undocumented.push(node.id);
3991
- }
3992
- }
3993
- const totalCodeNodes = codeNodes.length;
3994
- const coveragePercentage = totalCodeNodes > 0 ? documented.length / totalCodeNodes * 100 : 0;
3995
- return {
3996
- documented,
3997
- undocumented,
3998
- coveragePercentage,
3999
- totalCodeNodes
4000
- };
4001
- }
4002
- };
4003
- function extractConfidence(edge) {
4004
- return edge.confidence ?? edge.metadata?.confidence ?? 0;
4005
- }
4006
- function extractMethod(edge) {
4007
- return edge.metadata?.method ?? "convention";
4008
- }
4009
- function edgesToTracedFiles(store, edges) {
4010
- return edges.map((edge) => ({
4011
- path: store.getNode(edge.to)?.path ?? edge.to,
4012
- confidence: extractConfidence(edge),
4013
- method: extractMethod(edge)
4014
- }));
4015
- }
4016
- function determineCoverageStatus(hasCode, hasTests) {
4017
- if (hasCode && hasTests) return "full";
4018
- if (hasCode) return "code-only";
4019
- if (hasTests) return "test-only";
4020
- return "none";
4021
- }
4022
- function computeMaxConfidence(codeFiles, testFiles) {
4023
- const allConfidences = [
4024
- ...codeFiles.map((f) => f.confidence),
4025
- ...testFiles.map((f) => f.confidence)
4026
- ];
4027
- return allConfidences.length > 0 ? Math.max(...allConfidences) : 0;
4028
- }
4029
- function buildRequirementCoverage(store, req) {
4030
- const codeFiles = edgesToTracedFiles(store, store.getEdges({ from: req.id, type: "requires" }));
4031
- const testFiles = edgesToTracedFiles(
4032
- store,
4033
- store.getEdges({ from: req.id, type: "verified_by" })
4034
- );
4035
- const hasCode = codeFiles.length > 0;
4036
- const hasTests = testFiles.length > 0;
4037
- return {
4038
- requirementId: req.id,
4039
- requirementName: req.name,
4040
- index: req.metadata?.index ?? 0,
4041
- codeFiles,
4042
- testFiles,
4043
- status: determineCoverageStatus(hasCode, hasTests),
4044
- maxConfidence: computeMaxConfidence(codeFiles, testFiles)
4045
- };
4046
- }
4047
- function computeSummary(requirements) {
4048
- const total = requirements.length;
4049
- const withCode = requirements.filter((r) => r.codeFiles.length > 0).length;
4050
- const withTests = requirements.filter((r) => r.testFiles.length > 0).length;
4051
- const fullyTraced = requirements.filter((r) => r.status === "full").length;
4052
- const untraceable = requirements.filter((r) => r.status === "none").length;
4053
- const coveragePercent = total > 0 ? Math.round(fullyTraced / total * 100) : 0;
4054
- return { total, withCode, withTests, fullyTraced, untraceable, coveragePercent };
4055
- }
4056
- function queryTraceability(store, options) {
4057
- const allRequirements = store.findNodes({ type: "requirement" });
4058
- const filtered = allRequirements.filter((node) => {
4059
- if (options?.specPath && node.metadata?.specPath !== options.specPath) return false;
4060
- if (options?.featureName && node.metadata?.featureName !== options.featureName) return false;
4061
- return true;
4062
- });
4063
- if (filtered.length === 0) return [];
4064
- const groups = /* @__PURE__ */ new Map();
4065
- for (const req of filtered) {
4066
- const meta = req.metadata;
4067
- const specPath = meta?.specPath ?? "";
4068
- const featureName = meta?.featureName ?? "";
4069
- const key = `${specPath}\0${featureName}`;
4070
- const list = groups.get(key);
4071
- if (list) {
4072
- list.push(req);
4073
- } else {
4074
- groups.set(key, [req]);
4075
- }
4076
- }
4077
- const results = [];
4078
- for (const [, reqs] of groups) {
4079
- const firstReq = reqs[0];
4080
- const firstMeta = firstReq.metadata;
4081
- const specPath = firstMeta?.specPath ?? "";
4082
- const featureName = firstMeta?.featureName ?? "";
4083
- const requirements = reqs.map((req) => buildRequirementCoverage(store, req));
4084
- requirements.sort((a, b) => a.index - b.index);
4085
- results.push({
4086
- specPath,
4087
- featureName,
4088
- requirements,
4089
- summary: computeSummary(requirements)
4090
- });
4091
- }
4092
- return results;
4093
- }
4094
- var GraphConstraintAdapter = class {
4095
- constructor(store) {
4096
- this.store = store;
4097
- }
4098
- store;
4099
- computeDependencyGraph() {
4100
- const fileNodes = this.store.findNodes({ type: "file" });
4101
- const nodes = fileNodes.map((n) => n.path ?? n.id);
4102
- const importsEdges = this.store.getEdges({ type: "imports" });
4103
- const edges = importsEdges.map((e) => {
4104
- const fromNode = this.store.getNode(e.from);
4105
- const toNode = this.store.getNode(e.to);
4106
- const fromPath = fromNode?.path ?? e.from;
4107
- const toPath = toNode?.path ?? e.to;
4108
- const importType = e.metadata?.importType ?? "static";
4109
- const line = e.metadata?.line ?? 0;
4110
- return { from: fromPath, to: toPath, importType, line };
4111
- });
4112
- return { nodes, edges };
4113
- }
4114
- computeLayerViolations(layers, rootDir) {
4115
- const { edges } = this.computeDependencyGraph();
4116
- const violations = [];
4117
- for (const edge of edges) {
4118
- const fromRelative = relative2(rootDir, edge.from).replaceAll("\\", "/");
4119
- const toRelative = relative2(rootDir, edge.to).replaceAll("\\", "/");
4120
- const fromLayer = this.resolveLayer(fromRelative, layers);
4121
- const toLayer = this.resolveLayer(toRelative, layers);
4122
- if (!fromLayer || !toLayer) continue;
4123
- if (fromLayer.name === toLayer.name) continue;
4124
- if (!fromLayer.allowedDependencies.includes(toLayer.name)) {
4125
- violations.push({
4126
- file: edge.from,
4127
- imports: edge.to,
4128
- fromLayer: fromLayer.name,
4129
- toLayer: toLayer.name,
4130
- reason: "WRONG_LAYER",
4131
- line: edge.line
4132
- });
4133
- }
4134
- }
4135
- return violations;
4136
- }
4137
- resolveLayer(filePath, layers) {
4138
- for (const layer of layers) {
4139
- for (const pattern of layer.patterns) {
4140
- if (minimatch(filePath, pattern)) {
4141
- return layer;
4142
- }
4143
- }
4144
- }
4145
- return void 0;
4146
- }
4147
- };
4148
- function isDTCGToken(obj) {
4149
- return typeof obj === "object" && obj !== null && "$value" in obj && "$type" in obj;
4150
- }
4151
- async function readFileOrNull(filePath) {
4152
- try {
4153
- return await fs5.readFile(filePath, "utf-8");
4154
- } catch {
4155
- return null;
4156
- }
4157
- }
4158
- function parseJsonOrError(content, filePath) {
4159
- try {
4160
- return { data: JSON.parse(content) };
4161
- } catch (err) {
4162
- return {
4163
- error: `Failed to parse ${filePath}: ${err instanceof Error ? err.message : String(err)}`
4164
- };
4165
- }
4166
- }
4167
- function walkDTCGTokens(store, obj, groupPath, topGroup, tokensPath) {
4168
- let count = 0;
4169
- for (const [key, value] of Object.entries(obj)) {
4170
- if (key.startsWith("$")) continue;
4171
- if (isDTCGToken(value)) {
4172
- const tokenPath = [...groupPath, key].join(".");
4173
- store.addNode({
4174
- id: `design_token:${tokenPath}`,
4175
- type: "design_token",
4176
- name: tokenPath,
4177
- path: tokensPath,
4178
- metadata: {
4179
- tokenType: value.$type,
4180
- value: value.$value,
4181
- group: topGroup || groupPath[0] || key,
4182
- ...value.$description ? { description: value.$description } : {}
4183
- }
4184
- });
4185
- count++;
4186
- } else if (typeof value === "object" && value !== null) {
4187
- count += walkDTCGTokens(
4188
- store,
4189
- value,
4190
- [...groupPath, key],
4191
- topGroup || key,
4192
- tokensPath
4193
- );
4194
- }
4195
- }
4196
- return count;
4197
- }
4198
- function parseAestheticDirection(content) {
4199
- const extract = (pattern) => {
4200
- const m = content.match(pattern);
4201
- return m ? m[1].trim() : void 0;
4202
- };
4203
- const result = {};
4204
- const style = extract(/\*\*Style:\*\*\s*(.+)/);
4205
- if (style !== void 0) result.style = style;
4206
- const tone = extract(/\*\*Tone:\*\*\s*(.+)/);
4207
- if (tone !== void 0) result.tone = tone;
4208
- const differentiator = extract(/\*\*Differentiator:\*\*\s*(.+)/);
4209
- if (differentiator !== void 0) result.differentiator = differentiator;
4210
- const strictness = extract(/^level:\s*(strict|standard|permissive)\s*$/m);
4211
- if (strictness !== void 0) result.strictness = strictness;
4212
- return result;
4213
- }
4214
- function parseAntiPatterns(content) {
4215
- const lines = content.split("\n");
4216
- const patterns = [];
4217
- let inSection = false;
4218
- for (const line of lines) {
4219
- if (/^##\s+Anti-Patterns/i.test(line)) {
4220
- inSection = true;
4221
- continue;
4222
- }
4223
- if (inSection && /^##\s+/.test(line)) {
4224
- break;
4225
- }
4226
- if (inSection) {
4227
- const bulletMatch = line.match(/^-\s+(.+)/);
4228
- if (bulletMatch) {
4229
- patterns.push(bulletMatch[1].trim());
4230
- }
4231
- }
4232
- }
4233
- return patterns;
4234
- }
4235
- var DesignIngestor = class {
4236
- constructor(store) {
4237
- this.store = store;
4238
- }
4239
- store;
4240
- async ingestTokens(tokensPath) {
4241
- const start = Date.now();
4242
- const content = await readFileOrNull(tokensPath);
4243
- if (content === null) return emptyResult(Date.now() - start);
4244
- const parsed = parseJsonOrError(content, tokensPath);
4245
- if ("error" in parsed) {
4246
- return { ...emptyResult(Date.now() - start), errors: [parsed.error] };
4247
- }
4248
- const nodesAdded = walkDTCGTokens(this.store, parsed.data, [], "", tokensPath);
4249
- return {
4250
- nodesAdded,
4251
- nodesUpdated: 0,
4252
- edgesAdded: 0,
4253
- edgesUpdated: 0,
4254
- errors: [],
4255
- durationMs: Date.now() - start
4256
- };
4257
- }
4258
- async ingestDesignIntent(designPath) {
4259
- const start = Date.now();
4260
- const content = await readFileOrNull(designPath);
4261
- if (content === null) return emptyResult(Date.now() - start);
4262
- let nodesAdded = 0;
4263
- const direction = parseAestheticDirection(content);
4264
- const metadata = {};
4265
- if (direction.style) metadata.style = direction.style;
4266
- if (direction.tone) metadata.tone = direction.tone;
4267
- if (direction.differentiator) metadata.differentiator = direction.differentiator;
4268
- if (direction.strictness) metadata.strictness = direction.strictness;
4269
- this.store.addNode({
4270
- id: "aesthetic_intent:project",
4271
- type: "aesthetic_intent",
4272
- name: "project",
4273
- path: designPath,
4274
- metadata
4275
- });
4276
- nodesAdded++;
4277
- for (const text of parseAntiPatterns(content)) {
4278
- this.store.addNode({
4279
- id: `design_constraint:${hash(text)}`,
4280
- type: "design_constraint",
4281
- name: text,
4282
- path: designPath,
4283
- metadata: { rule: text, severity: "warn", scope: "project" }
4284
- });
4285
- nodesAdded++;
4286
- }
4287
- return {
4288
- nodesAdded,
4289
- nodesUpdated: 0,
4290
- edgesAdded: 0,
4291
- edgesUpdated: 0,
4292
- errors: [],
4293
- durationMs: Date.now() - start
4294
- };
4295
- }
4296
- async ingestAll(designDir) {
4297
- const start = Date.now();
4298
- const [tokensResult, intentResult] = await Promise.all([
4299
- this.ingestTokens(path6.join(designDir, "tokens.json")),
4300
- this.ingestDesignIntent(path6.join(designDir, "DESIGN.md"))
4301
- ]);
4302
- const merged = mergeResults(tokensResult, intentResult);
4303
- return { ...merged, durationMs: Date.now() - start };
4304
- }
4305
- };
4306
- var DesignConstraintAdapter = class {
4307
- constructor(store) {
4308
- this.store = store;
4309
- }
4310
- store;
4311
- checkForHardcodedColors(source, file, strictness) {
4312
- const severity = this.mapSeverity(strictness);
4313
- const tokenNodes = this.store.findNodes({ type: "design_token" });
4314
- const colorValues = /* @__PURE__ */ new Set();
4315
- for (const node of tokenNodes) {
4316
- if (node.metadata.tokenType === "color" && typeof node.metadata.value === "string") {
4317
- colorValues.add(node.metadata.value.toLowerCase());
4318
- }
4319
- }
4320
- const hexPattern = /#[0-9a-fA-F]{3,8}\b/g;
4321
- const violations = [];
4322
- let match;
4323
- while ((match = hexPattern.exec(source)) !== null) {
4324
- const hexValue = match[0];
4325
- if (!colorValues.has(hexValue.toLowerCase())) {
4326
- violations.push({
4327
- code: "DESIGN-001",
4328
- file,
4329
- message: `Hardcoded color ${hexValue} is not in the design token set`,
4330
- severity,
4331
- value: hexValue
4332
- });
4333
- }
4334
- }
4335
- return violations;
4336
- }
4337
- checkForHardcodedFonts(source, file, strictness) {
4338
- const severity = this.mapSeverity(strictness);
4339
- const tokenNodes = this.store.findNodes({ type: "design_token" });
4340
- const fontFamilies = /* @__PURE__ */ new Set();
4341
- for (const node of tokenNodes) {
4342
- if (node.metadata.tokenType === "typography") {
4343
- const value = node.metadata.value;
4344
- if (typeof value === "object" && value !== null && "fontFamily" in value) {
4345
- fontFamilies.add(value.fontFamily.toLowerCase());
4346
- }
4347
- }
4348
- }
4349
- const fontPatterns = [/fontFamily:\s*['"]([^'"]+)['"]/g, /font-family:\s*['"]([^'"]+)['"]/g];
4350
- const violations = [];
4351
- const seen = /* @__PURE__ */ new Set();
4352
- for (const pattern of fontPatterns) {
4353
- let match;
4354
- while ((match = pattern.exec(source)) !== null) {
4355
- const fontName = match[1];
4356
- if (seen.has(fontName.toLowerCase())) continue;
4357
- seen.add(fontName.toLowerCase());
4358
- if (!fontFamilies.has(fontName.toLowerCase())) {
4359
- violations.push({
4360
- code: "DESIGN-002",
4361
- file,
4362
- message: `Hardcoded font family "${fontName}" is not in the design token set`,
4363
- severity,
4364
- value: fontName
4365
- });
4366
- }
4367
- }
4368
- }
4369
- return violations;
4370
- }
4371
- checkAll(source, file, strictness) {
4372
- return [
4373
- ...this.checkForHardcodedColors(source, file, strictness),
4374
- ...this.checkForHardcodedFonts(source, file, strictness)
4375
- ];
4376
- }
4377
- mapSeverity(strictness = "standard") {
4378
- switch (strictness) {
4379
- case "permissive":
4380
- return "info";
4381
- case "standard":
4382
- return "warn";
4383
- case "strict":
4384
- return "error";
4385
- }
4386
- }
4387
- };
4388
- var GraphFeedbackAdapter = class {
4389
- constructor(store) {
4390
- this.store = store;
4391
- }
4392
- store;
4393
- computeImpactData(changedFiles) {
4394
- const affectedTests = [];
4395
- const affectedDocs = [];
4396
- let impactScope = 0;
4397
- for (const filePath of changedFiles) {
4398
- const fileNodes = this.store.findNodes({ path: filePath });
4399
- if (fileNodes.length === 0) continue;
4400
- const fileNode = fileNodes[0];
4401
- const inboundImports = this.store.getEdges({ to: fileNode.id, type: "imports" });
4402
- for (const edge of inboundImports) {
4403
- const importerNode = this.store.getNode(edge.from);
4404
- if (importerNode?.path && /test/i.test(importerNode.path)) {
4405
- affectedTests.push({
4406
- testFile: importerNode.path,
4407
- coversFile: filePath
4408
- });
4409
- }
4410
- impactScope++;
4411
- }
4412
- const docsEdges = this.store.getEdges({ to: fileNode.id, type: "documents" });
4413
- for (const edge of docsEdges) {
4414
- const docNode = this.store.getNode(edge.from);
4415
- if (docNode) {
4416
- affectedDocs.push({
4417
- docFile: docNode.path ?? docNode.name,
4418
- documentsFile: filePath
4419
- });
4420
- }
4421
- }
4422
- }
4423
- return { affectedTests, affectedDocs, impactScope };
4424
- }
4425
- computeHarnessCheckData() {
4426
- const nodeCount = this.store.nodeCount;
4427
- const edgeCount = this.store.edgeCount;
4428
- const violatesEdges = this.store.getEdges({ type: "violates" });
4429
- const constraintViolations = violatesEdges.length;
4430
- const fileNodes = this.store.findNodes({ type: "file" });
4431
- let undocumentedFiles = 0;
4432
- for (const node of fileNodes) {
4433
- const docsEdges = this.store.getEdges({ to: node.id, type: "documents" });
4434
- if (docsEdges.length === 0) {
4435
- undocumentedFiles++;
4436
- }
4437
- }
4438
- let unreachableNodes = 0;
4439
- for (const node of fileNodes) {
4440
- const inboundImports = this.store.getEdges({ to: node.id, type: "imports" });
4441
- if (inboundImports.length === 0) {
4442
- const isEntryPoint = node.name === "index.ts" || node.path !== void 0 && node.path.endsWith("/index.ts") || node.metadata?.entryPoint === true;
4443
- if (!isEntryPoint) {
4444
- unreachableNodes++;
4445
- }
4446
- }
4447
- }
4448
- return {
4449
- graphExists: true,
4450
- nodeCount,
4451
- edgeCount,
4452
- constraintViolations,
4453
- undocumentedFiles,
4454
- unreachableNodes
4455
- };
4456
- }
4457
- };
4458
- var DEFAULT_EDGE_TYPES = ["imports", "calls", "references"];
4459
- var TaskIndependenceAnalyzer = class {
4460
- store;
4461
- constructor(store) {
4462
- this.store = store;
4463
- }
4464
- analyze(params) {
4465
- const { tasks } = params;
4466
- const depth = params.depth ?? 1;
4467
- const edgeTypes = params.edgeTypes ?? DEFAULT_EDGE_TYPES;
4468
- this.validate(tasks);
4469
- const useGraph = this.store != null && depth > 0;
4470
- const analysisLevel = useGraph ? "graph-expanded" : "file-only";
4471
- const originalFiles = /* @__PURE__ */ new Map();
4472
- const expandedFiles = /* @__PURE__ */ new Map();
4473
- for (const task of tasks) {
4474
- const origSet = new Set(task.files);
4475
- originalFiles.set(task.id, origSet);
4476
- if (useGraph) {
4477
- const expanded = this.expandViaGraph(task.files, depth, edgeTypes);
4478
- expandedFiles.set(task.id, expanded);
4479
- } else {
4480
- expandedFiles.set(task.id, /* @__PURE__ */ new Map());
4481
- }
4482
- }
4483
- const taskIds = tasks.map((t) => t.id);
4484
- const pairs = [];
4485
- for (let i = 0; i < taskIds.length; i++) {
4486
- for (let j = i + 1; j < taskIds.length; j++) {
4487
- const idA = taskIds[i];
4488
- const idB = taskIds[j];
4489
- const pair = this.computePairOverlap(
4490
- idA,
4491
- idB,
4492
- originalFiles.get(idA),
4493
- originalFiles.get(idB),
4494
- expandedFiles.get(idA),
4495
- expandedFiles.get(idB)
4496
- );
4497
- pairs.push(pair);
4498
- }
4499
- }
4500
- const groups = this.buildGroups(taskIds, pairs);
4501
- const verdict = this.generateVerdict(taskIds, groups, analysisLevel);
4502
- return {
4503
- tasks: taskIds,
4504
- analysisLevel,
4505
- depth,
4506
- pairs,
4507
- groups,
4508
- verdict
4509
- };
4510
- }
4511
- // --- Private methods ---
4512
- validate(tasks) {
4513
- if (tasks.length < 2) {
4514
- throw new Error("At least 2 tasks are required for independence analysis");
4515
- }
4516
- const seenIds = /* @__PURE__ */ new Set();
4517
- for (const task of tasks) {
4518
- if (seenIds.has(task.id)) {
4519
- throw new Error(`Duplicate task ID: "${task.id}"`);
4520
- }
4521
- seenIds.add(task.id);
4522
- if (task.files.length === 0) {
4523
- throw new Error(`Task "${task.id}" has an empty files array`);
4524
- }
4525
- }
4526
- }
4527
- expandViaGraph(files, depth, edgeTypes) {
4528
- const result = /* @__PURE__ */ new Map();
4529
- const store = this.store;
4530
- const cql = new ContextQL(store);
4531
- const fileSet = new Set(files);
4532
- for (const file of files) {
4533
- const nodeId = `file:${file}`;
4534
- const node = store.getNode(nodeId);
4535
- if (!node) continue;
4536
- const queryResult = cql.execute({
4537
- rootNodeIds: [nodeId],
4538
- maxDepth: depth,
4539
- includeEdges: edgeTypes,
4540
- includeTypes: ["file"]
4541
- });
4542
- for (const n of queryResult.nodes) {
4543
- const path7 = n.path ?? n.id.replace(/^file:/, "");
4544
- if (!fileSet.has(path7)) {
4545
- if (!result.has(path7)) {
4546
- result.set(path7, file);
4547
- }
4548
- }
4549
- }
4550
- }
4551
- return result;
4552
- }
4553
- computePairOverlap(idA, idB, origA, origB, expandedA, expandedB) {
4554
- const overlaps = [];
4555
- for (const file of origA) {
4556
- if (origB.has(file)) {
4557
- overlaps.push({ file, type: "direct" });
4558
- }
4559
- }
4560
- const directFiles = new Set(overlaps.map((o) => o.file));
4561
- const transitiveFiles = /* @__PURE__ */ new Set();
4562
- for (const [file, via] of expandedA) {
4563
- if (origB.has(file) && !directFiles.has(file) && !transitiveFiles.has(file)) {
4564
- transitiveFiles.add(file);
4565
- overlaps.push({ file, type: "transitive", via });
4566
- }
4567
- }
4568
- for (const [file, via] of expandedB) {
4569
- if (origA.has(file) && !directFiles.has(file) && !transitiveFiles.has(file)) {
4570
- transitiveFiles.add(file);
4571
- overlaps.push({ file, type: "transitive", via });
4572
- }
4573
- }
4574
- for (const [file, viaA] of expandedA) {
4575
- if (expandedB.has(file) && !directFiles.has(file) && !transitiveFiles.has(file)) {
4576
- transitiveFiles.add(file);
4577
- overlaps.push({ file, type: "transitive", via: viaA });
4578
- }
4579
- }
4580
- return {
4581
- taskA: idA,
4582
- taskB: idB,
4583
- independent: overlaps.length === 0,
4584
- overlaps
4585
- };
4586
- }
4587
- buildGroups(taskIds, pairs) {
4588
- const parent = /* @__PURE__ */ new Map();
4589
- const rank = /* @__PURE__ */ new Map();
4590
- for (const id of taskIds) {
4591
- parent.set(id, id);
4592
- rank.set(id, 0);
4593
- }
4594
- const find = (x) => {
4595
- let root = x;
4596
- while (parent.get(root) !== root) {
4597
- root = parent.get(root);
4598
- }
4599
- let current = x;
4600
- while (current !== root) {
4601
- const next = parent.get(current);
4602
- parent.set(current, root);
4603
- current = next;
4604
- }
4605
- return root;
4606
- };
4607
- const union = (a, b) => {
4608
- const rootA = find(a);
4609
- const rootB = find(b);
4610
- if (rootA === rootB) return;
4611
- const rankA = rank.get(rootA);
4612
- const rankB = rank.get(rootB);
4613
- if (rankA < rankB) {
4614
- parent.set(rootA, rootB);
4615
- } else if (rankA > rankB) {
4616
- parent.set(rootB, rootA);
4617
- } else {
4618
- parent.set(rootB, rootA);
4619
- rank.set(rootA, rankA + 1);
4620
- }
4621
- };
4622
- for (const pair of pairs) {
4623
- if (!pair.independent) {
4624
- union(pair.taskA, pair.taskB);
4625
- }
4626
- }
4627
- const groupMap = /* @__PURE__ */ new Map();
4628
- for (const id of taskIds) {
4629
- const root = find(id);
4630
- if (!groupMap.has(root)) {
4631
- groupMap.set(root, []);
4632
- }
4633
- groupMap.get(root).push(id);
4634
- }
4635
- return Array.from(groupMap.values());
4636
- }
4637
- generateVerdict(taskIds, groups, analysisLevel) {
4638
- const total = taskIds.length;
4639
- const groupCount = groups.length;
4640
- let verdict;
4641
- if (groupCount === 1) {
4642
- verdict = `All ${total} tasks conflict \u2014 must run serially.`;
4643
- } else if (groupCount === total) {
4644
- verdict = `All ${total} tasks are independent \u2014 can all run in parallel.`;
4645
- } else {
4646
- verdict = `${total} tasks form ${groupCount} independent groups \u2014 ${groupCount} parallel waves possible.`;
4647
- }
4648
- if (analysisLevel === "file-only") {
4649
- verdict += " Graph unavailable \u2014 transitive dependencies not checked.";
4650
- }
4651
- return verdict;
4652
- }
4653
- };
4654
- var ConflictPredictor = class {
4655
- store;
4656
- constructor(store) {
4657
- this.store = store;
4658
- }
4659
- predict(params) {
4660
- const analyzer = new TaskIndependenceAnalyzer(this.store);
4661
- const result = analyzer.analyze(params);
4662
- const churnMap = /* @__PURE__ */ new Map();
4663
- const couplingMap = /* @__PURE__ */ new Map();
4664
- let churnThreshold = Infinity;
4665
- let couplingThreshold = Infinity;
4666
- if (this.store != null) {
4667
- const complexityResult = new GraphComplexityAdapter(this.store).computeComplexityHotspots();
4668
- for (const hotspot of complexityResult.hotspots) {
4669
- const existing = churnMap.get(hotspot.file);
4670
- if (existing === void 0 || hotspot.changeFrequency > existing) {
4671
- churnMap.set(hotspot.file, hotspot.changeFrequency);
4672
- }
4673
- }
4674
- const couplingResult = new GraphCouplingAdapter(this.store).computeCouplingData();
4675
- for (const fileData of couplingResult.files) {
4676
- couplingMap.set(fileData.file, fileData.fanIn + fileData.fanOut);
4677
- }
4678
- churnThreshold = this.computePercentile(Array.from(churnMap.values()), 80);
4679
- couplingThreshold = this.computePercentile(Array.from(couplingMap.values()), 80);
4680
- }
4681
- const conflicts = [];
4682
- for (const pair of result.pairs) {
4683
- if (pair.independent) continue;
4684
- const { severity, reason, mitigation } = this.classifyPair(
4685
- pair.taskA,
4686
- pair.taskB,
4687
- pair.overlaps,
4688
- churnMap,
4689
- couplingMap,
4690
- churnThreshold,
4691
- couplingThreshold
4692
- );
4693
- conflicts.push({
4694
- taskA: pair.taskA,
4695
- taskB: pair.taskB,
4696
- severity,
4697
- reason,
4698
- mitigation,
4699
- overlaps: pair.overlaps
4700
- });
4701
- }
4702
- const taskIds = result.tasks;
4703
- const groups = this.buildHighSeverityGroups(taskIds, conflicts);
4704
- const regrouped = !this.groupsEqual(result.groups, groups);
4705
- let highCount = 0;
4706
- let mediumCount = 0;
4707
- let lowCount = 0;
4708
- for (const c of conflicts) {
4709
- if (c.severity === "high") highCount++;
4710
- else if (c.severity === "medium") mediumCount++;
4711
- else lowCount++;
4712
- }
4713
- const verdict = this.generateVerdict(
4714
- taskIds,
4715
- groups,
4716
- result.analysisLevel,
4717
- highCount,
4718
- mediumCount,
4719
- lowCount,
4720
- regrouped
4721
- );
4722
- return {
4723
- tasks: taskIds,
4724
- analysisLevel: result.analysisLevel,
4725
- depth: result.depth,
4726
- conflicts,
4727
- groups,
4728
- summary: {
4729
- high: highCount,
4730
- medium: mediumCount,
4731
- low: lowCount,
4732
- regrouped
4733
- },
4734
- verdict
4735
- };
4736
- }
4737
- // --- Private helpers ---
4738
- classifyPair(taskA, taskB, overlaps, churnMap, couplingMap, churnThreshold, couplingThreshold) {
4739
- let maxSeverity = "low";
4740
- let primaryReason = "";
4741
- let primaryMitigation = "";
4742
- for (const overlap of overlaps) {
4743
- let overlapSeverity;
4744
- let reason;
4745
- let mitigation;
4746
- if (overlap.type === "direct") {
4747
- overlapSeverity = "high";
4748
- reason = `Both tasks write to ${overlap.file}`;
4749
- mitigation = `Serialize: run ${taskA} before ${taskB}`;
4750
- } else {
4751
- const churn = churnMap.get(overlap.file);
4752
- const coupling = couplingMap.get(overlap.file);
4753
- const via = overlap.via ?? "unknown";
4754
- if (churn !== void 0 && churn >= churnThreshold && churnThreshold !== Infinity) {
4755
- overlapSeverity = "medium";
4756
- reason = `Transitive overlap on high-churn file ${overlap.file} (via ${via})`;
4757
- mitigation = `Review: ${overlap.file} changes frequently \u2014 coordinate edits between ${taskA} and ${taskB}`;
4758
- } else if (coupling !== void 0 && coupling >= couplingThreshold && couplingThreshold !== Infinity) {
4759
- overlapSeverity = "medium";
4760
- reason = `Transitive overlap on highly-coupled file ${overlap.file} (via ${via})`;
4761
- mitigation = `Review: ${overlap.file} has high coupling \u2014 coordinate edits between ${taskA} and ${taskB}`;
4762
- } else {
4763
- overlapSeverity = "low";
4764
- reason = `Transitive overlap on ${overlap.file} (via ${via}) \u2014 low risk`;
4765
- mitigation = `Info: transitive overlap unlikely to cause conflicts`;
4766
- }
4767
- }
4768
- if (this.severityRank(overlapSeverity) > this.severityRank(maxSeverity)) {
4769
- maxSeverity = overlapSeverity;
4770
- primaryReason = reason;
4771
- primaryMitigation = mitigation;
4772
- } else if (primaryReason === "") {
4773
- primaryReason = reason;
4774
- primaryMitigation = mitigation;
4775
- }
4776
- }
4777
- return { severity: maxSeverity, reason: primaryReason, mitigation: primaryMitigation };
4778
- }
4779
- severityRank(severity) {
4780
- switch (severity) {
4781
- case "high":
4782
- return 3;
4783
- case "medium":
4784
- return 2;
4785
- case "low":
4786
- return 1;
4787
- }
4788
- }
4789
- computePercentile(values, percentile) {
4790
- if (values.length === 0) return Infinity;
4791
- const sorted = [...values].sort((a, b) => a - b);
4792
- const index = Math.ceil(percentile / 100 * sorted.length) - 1;
4793
- return sorted[Math.min(index, sorted.length - 1)];
4794
- }
4795
- buildHighSeverityGroups(taskIds, conflicts) {
4796
- const parent = /* @__PURE__ */ new Map();
4797
- const rank = /* @__PURE__ */ new Map();
4798
- for (const id of taskIds) {
4799
- parent.set(id, id);
4800
- rank.set(id, 0);
4801
- }
4802
- const find = (x) => {
4803
- let root = x;
4804
- while (parent.get(root) !== root) {
4805
- root = parent.get(root);
4806
- }
4807
- let current = x;
4808
- while (current !== root) {
4809
- const next = parent.get(current);
4810
- parent.set(current, root);
4811
- current = next;
4812
- }
4813
- return root;
4814
- };
4815
- const union = (a, b) => {
4816
- const rootA = find(a);
4817
- const rootB = find(b);
4818
- if (rootA === rootB) return;
4819
- const rankA = rank.get(rootA);
4820
- const rankB = rank.get(rootB);
4821
- if (rankA < rankB) {
4822
- parent.set(rootA, rootB);
4823
- } else if (rankA > rankB) {
4824
- parent.set(rootB, rootA);
4825
- } else {
4826
- parent.set(rootB, rootA);
4827
- rank.set(rootA, rankA + 1);
4828
- }
4829
- };
4830
- for (const conflict of conflicts) {
4831
- if (conflict.severity === "high") {
4832
- union(conflict.taskA, conflict.taskB);
4833
- }
4834
- }
4835
- const groupMap = /* @__PURE__ */ new Map();
4836
- for (const id of taskIds) {
4837
- const root = find(id);
4838
- let group = groupMap.get(root);
4839
- if (group === void 0) {
4840
- group = [];
4841
- groupMap.set(root, group);
4842
- }
4843
- group.push(id);
4844
- }
4845
- return Array.from(groupMap.values());
4846
- }
4847
- groupsEqual(a, b) {
4848
- if (a.length !== b.length) return false;
4849
- const normalize2 = (groups) => groups.map((g) => [...g].sort()).sort((x, y) => {
4850
- const xFirst = x[0];
4851
- const yFirst = y[0];
4852
- return xFirst.localeCompare(yFirst);
4853
- });
4854
- const normA = normalize2(a);
4855
- const normB = normalize2(b);
4856
- for (let i = 0; i < normA.length; i++) {
4857
- const groupA = normA[i];
4858
- const groupB = normB[i];
4859
- if (groupA.length !== groupB.length) return false;
4860
- for (let j = 0; j < groupA.length; j++) {
4861
- if (groupA[j] !== groupB[j]) return false;
4862
- }
4863
- }
4864
- return true;
4865
- }
4866
- generateVerdict(taskIds, groups, analysisLevel, highCount, mediumCount, lowCount, regrouped) {
4867
- const total = taskIds.length;
4868
- const groupCount = groups.length;
4869
- const parts = [];
4870
- const conflictParts = [];
4871
- if (highCount > 0) conflictParts.push(`${highCount} high`);
4872
- if (mediumCount > 0) conflictParts.push(`${mediumCount} medium`);
4873
- if (lowCount > 0) conflictParts.push(`${lowCount} low`);
4874
- if (conflictParts.length === 0) {
4875
- parts.push(`${total} tasks have no conflicts \u2014 can all run in parallel.`);
4876
- } else {
4877
- parts.push(`${total} tasks have ${conflictParts.join(", ")} severity conflicts.`);
4878
- }
4879
- if (groupCount === 1) {
4880
- parts.push(`All tasks must run serially.`);
4881
- } else if (groupCount === total) {
4882
- parts.push(`${groupCount} parallel groups (all independent).`);
4883
- } else {
4884
- parts.push(`${groupCount} parallel groups possible.`);
4885
- }
4886
- if (regrouped) {
4887
- parts.push(`Tasks were regrouped due to high-severity conflicts.`);
4888
- }
4889
- if (analysisLevel === "file-only") {
4890
- parts.push(`Graph unavailable \u2014 severity based on file overlaps only.`);
4891
- }
4892
- return parts.join(" ");
4893
- }
4894
- };
4895
- var VERSION = "0.4.0";
4896
-
4897
- export {
4898
- NODE_TYPES,
4899
- EDGE_TYPES,
4900
- OBSERVABILITY_TYPES,
4901
- CURRENT_SCHEMA_VERSION,
4902
- GraphNodeSchema,
4903
- GraphEdgeSchema,
4904
- saveGraph,
4905
- loadGraph,
4906
- GraphStore,
4907
- VectorStore,
4908
- ContextQL,
4909
- project,
4910
- classifyNodeCategory,
4911
- groupNodesByImpact,
4912
- CodeIngestor,
4913
- GitIngestor,
4914
- TopologicalLinker,
4915
- KnowledgeIngestor,
4916
- RequirementIngestor,
4917
- linkToCode,
4918
- SyncManager,
4919
- JiraConnector,
4920
- SlackConnector,
4921
- ConfluenceConnector,
4922
- CIConnector,
4923
- FusionLayer,
4924
- GraphEntropyAdapter,
4925
- GraphComplexityAdapter,
4926
- GraphCouplingAdapter,
4927
- GraphAnomalyAdapter,
4928
- INTENTS,
4929
- IntentClassifier,
4930
- EntityExtractor,
4931
- EntityResolver,
4932
- ResponseFormatter,
4933
- CompositeProbabilityStrategy,
4934
- CascadeSimulator,
4935
- askGraph,
4936
- Assembler,
4937
- queryTraceability,
4938
- GraphConstraintAdapter,
4939
- DesignIngestor,
4940
- DesignConstraintAdapter,
4941
- GraphFeedbackAdapter,
4942
- TaskIndependenceAnalyzer,
4943
- ConflictPredictor,
4944
- VERSION
4945
- };