@harness-engineering/cli 1.24.0 → 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 (3865) hide show
  1. package/dist/agents/skills/claude-code/a11y-aria-patterns/skill.yaml +1 -0
  2. package/dist/agents/skills/claude-code/a11y-color-contrast/skill.yaml +1 -0
  3. package/dist/agents/skills/claude-code/a11y-form-patterns/skill.yaml +2 -0
  4. package/dist/agents/skills/claude-code/a11y-image-text-alt/skill.yaml +1 -0
  5. package/dist/agents/skills/claude-code/a11y-keyboard-navigation/skill.yaml +1 -0
  6. package/dist/agents/skills/claude-code/a11y-modal-patterns/skill.yaml +1 -0
  7. package/dist/agents/skills/claude-code/a11y-motion-animation/skill.yaml +1 -0
  8. package/dist/agents/skills/claude-code/a11y-screen-reader-testing/skill.yaml +1 -0
  9. package/dist/agents/skills/claude-code/a11y-semantic-html/skill.yaml +1 -0
  10. package/dist/agents/skills/claude-code/a11y-testing-automation/skill.yaml +1 -0
  11. package/dist/agents/skills/claude-code/add-harness-component/skill.yaml +1 -0
  12. package/dist/agents/skills/claude-code/align-documentation/skill.yaml +1 -0
  13. package/dist/agents/skills/claude-code/angular-component-pattern/skill.yaml +1 -0
  14. package/dist/agents/skills/claude-code/angular-directive-pattern/skill.yaml +1 -0
  15. package/dist/agents/skills/claude-code/angular-http-interceptors/skill.yaml +1 -0
  16. package/dist/agents/skills/claude-code/angular-lazy-loading/skill.yaml +1 -0
  17. package/dist/agents/skills/claude-code/angular-performance-patterns/skill.yaml +6 -0
  18. package/dist/agents/skills/claude-code/angular-pipe-pattern/skill.yaml +1 -0
  19. package/dist/agents/skills/claude-code/angular-reactive-forms/skill.yaml +1 -0
  20. package/dist/agents/skills/claude-code/angular-routing-guards/skill.yaml +1 -0
  21. package/dist/agents/skills/claude-code/angular-rxjs-patterns/skill.yaml +1 -0
  22. package/dist/agents/skills/claude-code/angular-schematics/skill.yaml +1 -0
  23. package/dist/agents/skills/claude-code/angular-service-di/skill.yaml +1 -0
  24. package/dist/agents/skills/claude-code/angular-signals-pattern/skill.yaml +1 -0
  25. package/dist/agents/skills/claude-code/angular-standalone-components/skill.yaml +1 -0
  26. package/dist/agents/skills/claude-code/angular-state-management/skill.yaml +1 -0
  27. package/dist/agents/skills/claude-code/angular-testing-patterns/skill.yaml +1 -0
  28. package/dist/agents/skills/claude-code/api-api-keys/SKILL.md +135 -0
  29. package/dist/agents/skills/claude-code/api-api-keys/skill.yaml +41 -0
  30. package/dist/agents/skills/claude-code/api-authentication-patterns/SKILL.md +117 -0
  31. package/dist/agents/skills/claude-code/api-authentication-patterns/skill.yaml +44 -0
  32. package/dist/agents/skills/claude-code/api-backward-compatibility/SKILL.md +170 -0
  33. package/dist/agents/skills/claude-code/api-backward-compatibility/skill.yaml +39 -0
  34. package/dist/agents/skills/claude-code/api-bulk-operations/SKILL.md +198 -0
  35. package/dist/agents/skills/claude-code/api-bulk-operations/skill.yaml +39 -0
  36. package/dist/agents/skills/claude-code/api-conditional-requests/SKILL.md +233 -0
  37. package/dist/agents/skills/claude-code/api-conditional-requests/skill.yaml +41 -0
  38. package/dist/agents/skills/claude-code/api-content-negotiation/SKILL.md +194 -0
  39. package/dist/agents/skills/claude-code/api-content-negotiation/skill.yaml +39 -0
  40. package/dist/agents/skills/claude-code/api-contract-testing/SKILL.md +222 -0
  41. package/dist/agents/skills/claude-code/api-contract-testing/skill.yaml +42 -0
  42. package/dist/agents/skills/claude-code/api-deprecation-strategy/SKILL.md +156 -0
  43. package/dist/agents/skills/claude-code/api-deprecation-strategy/skill.yaml +39 -0
  44. package/dist/agents/skills/claude-code/api-error-contracts/SKILL.md +149 -0
  45. package/dist/agents/skills/claude-code/api-error-contracts/skill.yaml +40 -0
  46. package/dist/agents/skills/claude-code/api-field-selection/SKILL.md +193 -0
  47. package/dist/agents/skills/claude-code/api-field-selection/skill.yaml +39 -0
  48. package/dist/agents/skills/claude-code/api-filtering-sorting/SKILL.md +170 -0
  49. package/dist/agents/skills/claude-code/api-filtering-sorting/skill.yaml +40 -0
  50. package/dist/agents/skills/claude-code/api-hateoas/SKILL.md +212 -0
  51. package/dist/agents/skills/claude-code/api-hateoas/skill.yaml +40 -0
  52. package/dist/agents/skills/claude-code/api-http-caching/SKILL.md +188 -0
  53. package/dist/agents/skills/claude-code/api-http-caching/skill.yaml +43 -0
  54. package/dist/agents/skills/claude-code/api-http-methods/SKILL.md +185 -0
  55. package/dist/agents/skills/claude-code/api-http-methods/skill.yaml +43 -0
  56. package/dist/agents/skills/claude-code/api-idempotency-keys/SKILL.md +176 -0
  57. package/dist/agents/skills/claude-code/api-idempotency-keys/skill.yaml +40 -0
  58. package/dist/agents/skills/claude-code/api-long-running-operations/SKILL.md +209 -0
  59. package/dist/agents/skills/claude-code/api-long-running-operations/skill.yaml +40 -0
  60. package/dist/agents/skills/claude-code/api-nested-vs-flat/SKILL.md +173 -0
  61. package/dist/agents/skills/claude-code/api-nested-vs-flat/skill.yaml +39 -0
  62. package/dist/agents/skills/claude-code/api-oauth2-flows/SKILL.md +150 -0
  63. package/dist/agents/skills/claude-code/api-oauth2-flows/skill.yaml +42 -0
  64. package/dist/agents/skills/claude-code/api-openapi-design/SKILL.md +260 -0
  65. package/dist/agents/skills/claude-code/api-openapi-design/skill.yaml +44 -0
  66. package/dist/agents/skills/claude-code/api-pagination-cursor/SKILL.md +159 -0
  67. package/dist/agents/skills/claude-code/api-pagination-cursor/skill.yaml +40 -0
  68. package/dist/agents/skills/claude-code/api-pagination-keyset/SKILL.md +167 -0
  69. package/dist/agents/skills/claude-code/api-pagination-keyset/skill.yaml +39 -0
  70. package/dist/agents/skills/claude-code/api-pagination-offset/SKILL.md +135 -0
  71. package/dist/agents/skills/claude-code/api-pagination-offset/skill.yaml +39 -0
  72. package/dist/agents/skills/claude-code/api-problem-details-rfc/SKILL.md +164 -0
  73. package/dist/agents/skills/claude-code/api-problem-details-rfc/skill.yaml +38 -0
  74. package/dist/agents/skills/claude-code/api-rate-limit-headers/SKILL.md +144 -0
  75. package/dist/agents/skills/claude-code/api-rate-limit-headers/skill.yaml +39 -0
  76. package/dist/agents/skills/claude-code/api-rate-limiting/SKILL.md +131 -0
  77. package/dist/agents/skills/claude-code/api-rate-limiting/skill.yaml +41 -0
  78. package/dist/agents/skills/claude-code/api-resource-granularity/SKILL.md +165 -0
  79. package/dist/agents/skills/claude-code/api-resource-granularity/skill.yaml +40 -0
  80. package/dist/agents/skills/claude-code/api-resource-modeling/SKILL.md +155 -0
  81. package/dist/agents/skills/claude-code/api-resource-modeling/skill.yaml +40 -0
  82. package/dist/agents/skills/claude-code/api-rest-maturity-model/SKILL.md +215 -0
  83. package/dist/agents/skills/claude-code/api-rest-maturity-model/skill.yaml +39 -0
  84. package/dist/agents/skills/claude-code/api-retry-guidance/SKILL.md +168 -0
  85. package/dist/agents/skills/claude-code/api-retry-guidance/skill.yaml +41 -0
  86. package/dist/agents/skills/claude-code/api-sdk-ergonomics/SKILL.md +194 -0
  87. package/dist/agents/skills/claude-code/api-sdk-ergonomics/skill.yaml +43 -0
  88. package/dist/agents/skills/claude-code/api-status-codes/SKILL.md +196 -0
  89. package/dist/agents/skills/claude-code/api-status-codes/skill.yaml +46 -0
  90. package/dist/agents/skills/claude-code/api-validation-errors/SKILL.md +174 -0
  91. package/dist/agents/skills/claude-code/api-validation-errors/skill.yaml +40 -0
  92. package/dist/agents/skills/claude-code/api-versioning-header/SKILL.md +177 -0
  93. package/dist/agents/skills/claude-code/api-versioning-header/skill.yaml +37 -0
  94. package/dist/agents/skills/claude-code/api-versioning-url/SKILL.md +128 -0
  95. package/dist/agents/skills/claude-code/api-versioning-url/skill.yaml +39 -0
  96. package/dist/agents/skills/claude-code/api-webhook-design/SKILL.md +165 -0
  97. package/dist/agents/skills/claude-code/api-webhook-design/skill.yaml +41 -0
  98. package/dist/agents/skills/claude-code/api-webhook-security/SKILL.md +176 -0
  99. package/dist/agents/skills/claude-code/api-webhook-security/skill.yaml +41 -0
  100. package/dist/agents/skills/claude-code/astro-component-pattern/skill.yaml +1 -0
  101. package/dist/agents/skills/claude-code/astro-content-collections/skill.yaml +1 -0
  102. package/dist/agents/skills/claude-code/astro-deployment-config/skill.yaml +1 -0
  103. package/dist/agents/skills/claude-code/astro-image-optimization/skill.yaml +1 -0
  104. package/dist/agents/skills/claude-code/astro-integration-pattern/skill.yaml +1 -0
  105. package/dist/agents/skills/claude-code/astro-islands-architecture/skill.yaml +1 -0
  106. package/dist/agents/skills/claude-code/astro-multi-framework/skill.yaml +1 -0
  107. package/dist/agents/skills/claude-code/astro-routing-pattern/skill.yaml +1 -0
  108. package/dist/agents/skills/claude-code/astro-server-endpoints/skill.yaml +1 -0
  109. package/dist/agents/skills/claude-code/astro-ssr-hybrid/skill.yaml +1 -0
  110. package/dist/agents/skills/claude-code/astro-view-transitions/skill.yaml +1 -0
  111. package/dist/agents/skills/claude-code/check-mechanical-constraints/skill.yaml +1 -0
  112. package/dist/agents/skills/claude-code/cleanup-dead-code/skill.yaml +1 -0
  113. package/dist/agents/skills/claude-code/css-animation-pattern/skill.yaml +1 -0
  114. package/dist/agents/skills/claude-code/css-component-variants/skill.yaml +1 -0
  115. package/dist/agents/skills/claude-code/css-css-modules/skill.yaml +1 -0
  116. package/dist/agents/skills/claude-code/css-custom-components/skill.yaml +1 -0
  117. package/dist/agents/skills/claude-code/css-dark-mode/skill.yaml +1 -0
  118. package/dist/agents/skills/claude-code/css-design-tokens/skill.yaml +1 -0
  119. package/dist/agents/skills/claude-code/css-headless-ui/skill.yaml +1 -0
  120. package/dist/agents/skills/claude-code/css-layout-patterns/skill.yaml +1 -0
  121. package/dist/agents/skills/claude-code/css-performance-patterns/skill.yaml +6 -0
  122. package/dist/agents/skills/claude-code/css-responsive-design/skill.yaml +1 -0
  123. package/dist/agents/skills/claude-code/css-tailwind-merge/skill.yaml +1 -0
  124. package/dist/agents/skills/claude-code/css-tailwind-pattern/skill.yaml +1 -0
  125. package/dist/agents/skills/claude-code/db-acid-in-practice/SKILL.md +215 -0
  126. package/dist/agents/skills/claude-code/db-acid-in-practice/skill.yaml +38 -0
  127. package/dist/agents/skills/claude-code/db-acid-properties/SKILL.md +190 -0
  128. package/dist/agents/skills/claude-code/db-acid-properties/skill.yaml +38 -0
  129. package/dist/agents/skills/claude-code/db-adjacency-list/SKILL.md +199 -0
  130. package/dist/agents/skills/claude-code/db-adjacency-list/skill.yaml +40 -0
  131. package/dist/agents/skills/claude-code/db-audit-trail/SKILL.md +244 -0
  132. package/dist/agents/skills/claude-code/db-audit-trail/skill.yaml +41 -0
  133. package/dist/agents/skills/claude-code/db-btree-index/SKILL.md +182 -0
  134. package/dist/agents/skills/claude-code/db-btree-index/skill.yaml +44 -0
  135. package/dist/agents/skills/claude-code/db-cap-theorem/SKILL.md +156 -0
  136. package/dist/agents/skills/claude-code/db-cap-theorem/skill.yaml +38 -0
  137. package/dist/agents/skills/claude-code/db-closure-table/SKILL.md +197 -0
  138. package/dist/agents/skills/claude-code/db-closure-table/skill.yaml +38 -0
  139. package/dist/agents/skills/claude-code/db-composite-index/SKILL.md +199 -0
  140. package/dist/agents/skills/claude-code/db-composite-index/skill.yaml +41 -0
  141. package/dist/agents/skills/claude-code/db-connection-pooling/SKILL.md +196 -0
  142. package/dist/agents/skills/claude-code/db-connection-pooling/skill.yaml +39 -0
  143. package/dist/agents/skills/claude-code/db-connection-sizing/SKILL.md +236 -0
  144. package/dist/agents/skills/claude-code/db-connection-sizing/skill.yaml +38 -0
  145. package/dist/agents/skills/claude-code/db-covering-index/SKILL.md +203 -0
  146. package/dist/agents/skills/claude-code/db-covering-index/skill.yaml +40 -0
  147. package/dist/agents/skills/claude-code/db-deadlock-prevention/SKILL.md +204 -0
  148. package/dist/agents/skills/claude-code/db-deadlock-prevention/skill.yaml +41 -0
  149. package/dist/agents/skills/claude-code/db-denormalization/SKILL.md +176 -0
  150. package/dist/agents/skills/claude-code/db-denormalization/skill.yaml +38 -0
  151. package/dist/agents/skills/claude-code/db-document-in-relational/SKILL.md +225 -0
  152. package/dist/agents/skills/claude-code/db-document-in-relational/skill.yaml +42 -0
  153. package/dist/agents/skills/claude-code/db-entity-attribute-value/SKILL.md +186 -0
  154. package/dist/agents/skills/claude-code/db-entity-attribute-value/skill.yaml +39 -0
  155. package/dist/agents/skills/claude-code/db-eventual-consistency/SKILL.md +226 -0
  156. package/dist/agents/skills/claude-code/db-eventual-consistency/skill.yaml +38 -0
  157. package/dist/agents/skills/claude-code/db-expand-contract/SKILL.md +199 -0
  158. package/dist/agents/skills/claude-code/db-expand-contract/skill.yaml +40 -0
  159. package/dist/agents/skills/claude-code/db-explain-reading/SKILL.md +213 -0
  160. package/dist/agents/skills/claude-code/db-explain-reading/skill.yaml +44 -0
  161. package/dist/agents/skills/claude-code/db-expression-index/SKILL.md +211 -0
  162. package/dist/agents/skills/claude-code/db-expression-index/skill.yaml +40 -0
  163. package/dist/agents/skills/claude-code/db-first-normal-form/SKILL.md +190 -0
  164. package/dist/agents/skills/claude-code/db-first-normal-form/skill.yaml +38 -0
  165. package/dist/agents/skills/claude-code/db-graph-in-relational/SKILL.md +212 -0
  166. package/dist/agents/skills/claude-code/db-graph-in-relational/skill.yaml +41 -0
  167. package/dist/agents/skills/claude-code/db-hash-index/SKILL.md +176 -0
  168. package/dist/agents/skills/claude-code/db-hash-index/skill.yaml +37 -0
  169. package/dist/agents/skills/claude-code/db-hierarchical-data/SKILL.md +194 -0
  170. package/dist/agents/skills/claude-code/db-hierarchical-data/skill.yaml +41 -0
  171. package/dist/agents/skills/claude-code/db-horizontal-sharding/SKILL.md +228 -0
  172. package/dist/agents/skills/claude-code/db-horizontal-sharding/skill.yaml +40 -0
  173. package/dist/agents/skills/claude-code/db-isolation-levels/SKILL.md +158 -0
  174. package/dist/agents/skills/claude-code/db-isolation-levels/skill.yaml +43 -0
  175. package/dist/agents/skills/claude-code/db-isolation-selection/SKILL.md +160 -0
  176. package/dist/agents/skills/claude-code/db-isolation-selection/skill.yaml +41 -0
  177. package/dist/agents/skills/claude-code/db-migration-rollback/SKILL.md +223 -0
  178. package/dist/agents/skills/claude-code/db-migration-rollback/skill.yaml +40 -0
  179. package/dist/agents/skills/claude-code/db-mvcc/SKILL.md +191 -0
  180. package/dist/agents/skills/claude-code/db-mvcc/skill.yaml +45 -0
  181. package/dist/agents/skills/claude-code/db-nested-sets/SKILL.md +171 -0
  182. package/dist/agents/skills/claude-code/db-nested-sets/skill.yaml +38 -0
  183. package/dist/agents/skills/claude-code/db-optimistic-locking/SKILL.md +151 -0
  184. package/dist/agents/skills/claude-code/db-optimistic-locking/skill.yaml +44 -0
  185. package/dist/agents/skills/claude-code/db-partial-index/SKILL.md +196 -0
  186. package/dist/agents/skills/claude-code/db-partial-index/skill.yaml +39 -0
  187. package/dist/agents/skills/claude-code/db-pessimistic-locking/SKILL.md +158 -0
  188. package/dist/agents/skills/claude-code/db-pessimistic-locking/skill.yaml +44 -0
  189. package/dist/agents/skills/claude-code/db-polymorphic-associations/SKILL.md +187 -0
  190. package/dist/agents/skills/claude-code/db-polymorphic-associations/skill.yaml +42 -0
  191. package/dist/agents/skills/claude-code/db-query-rewriting/SKILL.md +249 -0
  192. package/dist/agents/skills/claude-code/db-query-rewriting/skill.yaml +43 -0
  193. package/dist/agents/skills/claude-code/db-query-statistics/SKILL.md +210 -0
  194. package/dist/agents/skills/claude-code/db-query-statistics/skill.yaml +41 -0
  195. package/dist/agents/skills/claude-code/db-read-phenomena/SKILL.md +205 -0
  196. package/dist/agents/skills/claude-code/db-read-phenomena/skill.yaml +42 -0
  197. package/dist/agents/skills/claude-code/db-scan-types/SKILL.md +248 -0
  198. package/dist/agents/skills/claude-code/db-scan-types/skill.yaml +41 -0
  199. package/dist/agents/skills/claude-code/db-second-normal-form/SKILL.md +183 -0
  200. package/dist/agents/skills/claude-code/db-second-normal-form/skill.yaml +38 -0
  201. package/dist/agents/skills/claude-code/db-table-partitioning/SKILL.md +229 -0
  202. package/dist/agents/skills/claude-code/db-table-partitioning/skill.yaml +39 -0
  203. package/dist/agents/skills/claude-code/db-temporal-data/SKILL.md +194 -0
  204. package/dist/agents/skills/claude-code/db-temporal-data/skill.yaml +41 -0
  205. package/dist/agents/skills/claude-code/db-third-normal-form/SKILL.md +210 -0
  206. package/dist/agents/skills/claude-code/db-third-normal-form/skill.yaml +38 -0
  207. package/dist/agents/skills/claude-code/db-time-series/SKILL.md +196 -0
  208. package/dist/agents/skills/claude-code/db-time-series/skill.yaml +41 -0
  209. package/dist/agents/skills/claude-code/db-vertical-partitioning/SKILL.md +249 -0
  210. package/dist/agents/skills/claude-code/db-vertical-partitioning/skill.yaml +40 -0
  211. package/dist/agents/skills/claude-code/db-zero-downtime-migration/SKILL.md +199 -0
  212. package/dist/agents/skills/claude-code/db-zero-downtime-migration/skill.yaml +42 -0
  213. package/dist/agents/skills/claude-code/design-affordances/skill.yaml +1 -0
  214. package/dist/agents/skills/claude-code/design-alignment/skill.yaml +1 -0
  215. package/dist/agents/skills/claude-code/design-apple-hig/skill.yaml +1 -0
  216. package/dist/agents/skills/claude-code/design-atomic-design/skill.yaml +1 -0
  217. package/dist/agents/skills/claude-code/design-brand-consistency/skill.yaml +1 -0
  218. package/dist/agents/skills/claude-code/design-color-accessibility/skill.yaml +1 -0
  219. package/dist/agents/skills/claude-code/design-color-harmony/skill.yaml +1 -0
  220. package/dist/agents/skills/claude-code/design-color-psychology/skill.yaml +1 -0
  221. package/dist/agents/skills/claude-code/design-component-anatomy/skill.yaml +1 -0
  222. package/dist/agents/skills/claude-code/design-consistency/skill.yaml +1 -0
  223. package/dist/agents/skills/claude-code/design-content-density/skill.yaml +1 -0
  224. package/dist/agents/skills/claude-code/design-contrast-ratio/skill.yaml +1 -0
  225. package/dist/agents/skills/claude-code/design-dark-mode-color/skill.yaml +1 -0
  226. package/dist/agents/skills/claude-code/design-data-viz-design/skill.yaml +1 -0
  227. package/dist/agents/skills/claude-code/design-design-audit/skill.yaml +1 -0
  228. package/dist/agents/skills/claude-code/design-design-critique/skill.yaml +1 -0
  229. package/dist/agents/skills/claude-code/design-design-documentation/skill.yaml +1 -0
  230. package/dist/agents/skills/claude-code/design-design-governance/skill.yaml +1 -0
  231. package/dist/agents/skills/claude-code/design-elevation-shadow/skill.yaml +1 -0
  232. package/dist/agents/skills/claude-code/design-empty-error-states/skill.yaml +3 -0
  233. package/dist/agents/skills/claude-code/design-feedback-patterns/skill.yaml +5 -0
  234. package/dist/agents/skills/claude-code/design-fluent-design/skill.yaml +1 -0
  235. package/dist/agents/skills/claude-code/design-font-pairing/skill.yaml +1 -0
  236. package/dist/agents/skills/claude-code/design-form-ux/skill.yaml +2 -0
  237. package/dist/agents/skills/claude-code/design-gestalt-closure-continuity/skill.yaml +1 -0
  238. package/dist/agents/skills/claude-code/design-gestalt-common-fate/skill.yaml +1 -0
  239. package/dist/agents/skills/claude-code/design-gestalt-figure-ground/skill.yaml +1 -0
  240. package/dist/agents/skills/claude-code/design-gestalt-proximity/skill.yaml +1 -0
  241. package/dist/agents/skills/claude-code/design-gestalt-similarity/skill.yaml +1 -0
  242. package/dist/agents/skills/claude-code/design-grid-systems/skill.yaml +1 -0
  243. package/dist/agents/skills/claude-code/design-i18n-design/skill.yaml +2 -0
  244. package/dist/agents/skills/claude-code/design-iconography/skill.yaml +1 -0
  245. package/dist/agents/skills/claude-code/design-illustration-style/skill.yaml +1 -0
  246. package/dist/agents/skills/claude-code/design-imagery-photography/skill.yaml +1 -0
  247. package/dist/agents/skills/claude-code/design-information-architecture/skill.yaml +3 -0
  248. package/dist/agents/skills/claude-code/design-loading-patterns/skill.yaml +2 -0
  249. package/dist/agents/skills/claude-code/design-material-design-3/skill.yaml +1 -0
  250. package/dist/agents/skills/claude-code/design-micro-interactions/skill.yaml +1 -0
  251. package/dist/agents/skills/claude-code/design-motion-principles/skill.yaml +1 -0
  252. package/dist/agents/skills/claude-code/design-naming-conventions/skill.yaml +1 -0
  253. package/dist/agents/skills/claude-code/design-navigation-ux/skill.yaml +2 -0
  254. package/dist/agents/skills/claude-code/design-palette-construction/skill.yaml +1 -0
  255. package/dist/agents/skills/claude-code/design-parallax-scroll/skill.yaml +1 -0
  256. package/dist/agents/skills/claude-code/design-readability/skill.yaml +3 -0
  257. package/dist/agents/skills/claude-code/design-responsive-strategy/skill.yaml +1 -0
  258. package/dist/agents/skills/claude-code/design-responsive-type/skill.yaml +1 -0
  259. package/dist/agents/skills/claude-code/design-state-design/skill.yaml +1 -0
  260. package/dist/agents/skills/claude-code/design-token-architecture/skill.yaml +1 -0
  261. package/dist/agents/skills/claude-code/design-transitions-timing/skill.yaml +1 -0
  262. package/dist/agents/skills/claude-code/design-type-scale/skill.yaml +1 -0
  263. package/dist/agents/skills/claude-code/design-typographic-hierarchy/skill.yaml +1 -0
  264. package/dist/agents/skills/claude-code/design-typography-fundamentals/skill.yaml +1 -0
  265. package/dist/agents/skills/claude-code/design-visual-hierarchy/skill.yaml +1 -0
  266. package/dist/agents/skills/claude-code/design-web-fonts/skill.yaml +1 -0
  267. package/dist/agents/skills/claude-code/design-whitespace/skill.yaml +1 -0
  268. package/dist/agents/skills/claude-code/detect-doc-drift/skill.yaml +1 -0
  269. package/dist/agents/skills/claude-code/drizzle-filtering-pattern/skill.yaml +1 -0
  270. package/dist/agents/skills/claude-code/drizzle-migrations/skill.yaml +3 -0
  271. package/dist/agents/skills/claude-code/drizzle-performance-patterns/skill.yaml +8 -0
  272. package/dist/agents/skills/claude-code/drizzle-query-builder/skill.yaml +1 -0
  273. package/dist/agents/skills/claude-code/drizzle-raw-sql/skill.yaml +1 -0
  274. package/dist/agents/skills/claude-code/drizzle-relations-pattern/skill.yaml +1 -0
  275. package/dist/agents/skills/claude-code/drizzle-schema-definition/skill.yaml +4 -0
  276. package/dist/agents/skills/claude-code/drizzle-transactions/skill.yaml +4 -0
  277. package/dist/agents/skills/claude-code/drizzle-with-nextjs/skill.yaml +1 -0
  278. package/dist/agents/skills/claude-code/enforce-architecture/skill.yaml +1 -0
  279. package/dist/agents/skills/claude-code/events-event-schema/skill.yaml +1 -0
  280. package/dist/agents/skills/claude-code/events-event-storming/skill.yaml +1 -0
  281. package/dist/agents/skills/claude-code/events-idempotency/SKILL.md +1 -0
  282. package/dist/agents/skills/claude-code/events-idempotency/skill.yaml +2 -0
  283. package/dist/agents/skills/claude-code/events-kafka-patterns/skill.yaml +1 -0
  284. package/dist/agents/skills/claude-code/events-message-queue/skill.yaml +1 -0
  285. package/dist/agents/skills/claude-code/events-outbox-pattern/skill.yaml +1 -0
  286. package/dist/agents/skills/claude-code/events-pubsub-pattern/skill.yaml +1 -0
  287. package/dist/agents/skills/claude-code/events-redis-pubsub/skill.yaml +1 -0
  288. package/dist/agents/skills/claude-code/events-saga-choreography/skill.yaml +1 -0
  289. package/dist/agents/skills/claude-code/events-sse-pattern/skill.yaml +1 -0
  290. package/dist/agents/skills/claude-code/events-webhooks-pattern/SKILL.md +1 -0
  291. package/dist/agents/skills/claude-code/events-webhooks-pattern/skill.yaml +3 -0
  292. package/dist/agents/skills/claude-code/events-websocket-pattern/skill.yaml +1 -0
  293. package/dist/agents/skills/claude-code/gof-abstract-factory/skill.yaml +1 -0
  294. package/dist/agents/skills/claude-code/gof-adapter-pattern/skill.yaml +1 -0
  295. package/dist/agents/skills/claude-code/gof-bridge-pattern/skill.yaml +1 -0
  296. package/dist/agents/skills/claude-code/gof-builder-pattern/skill.yaml +1 -0
  297. package/dist/agents/skills/claude-code/gof-chain-of-responsibility/skill.yaml +1 -0
  298. package/dist/agents/skills/claude-code/gof-command-pattern/skill.yaml +1 -0
  299. package/dist/agents/skills/claude-code/gof-composite-pattern/skill.yaml +1 -0
  300. package/dist/agents/skills/claude-code/gof-decorator-pattern/skill.yaml +1 -0
  301. package/dist/agents/skills/claude-code/gof-facade-pattern/skill.yaml +1 -0
  302. package/dist/agents/skills/claude-code/gof-factory-method/skill.yaml +1 -0
  303. package/dist/agents/skills/claude-code/gof-flyweight-pattern/skill.yaml +1 -0
  304. package/dist/agents/skills/claude-code/gof-iterator-pattern/skill.yaml +1 -0
  305. package/dist/agents/skills/claude-code/gof-mediator-pattern/skill.yaml +1 -0
  306. package/dist/agents/skills/claude-code/gof-memento-pattern/skill.yaml +1 -0
  307. package/dist/agents/skills/claude-code/gof-null-object/skill.yaml +1 -0
  308. package/dist/agents/skills/claude-code/gof-observer-pattern/skill.yaml +1 -0
  309. package/dist/agents/skills/claude-code/gof-prototype-pattern/skill.yaml +1 -0
  310. package/dist/agents/skills/claude-code/gof-proxy-pattern/skill.yaml +1 -0
  311. package/dist/agents/skills/claude-code/gof-singleton/skill.yaml +1 -0
  312. package/dist/agents/skills/claude-code/gof-state-pattern/skill.yaml +1 -0
  313. package/dist/agents/skills/claude-code/gof-strategy-pattern/skill.yaml +1 -0
  314. package/dist/agents/skills/claude-code/gof-template-method/skill.yaml +1 -0
  315. package/dist/agents/skills/claude-code/gof-visitor-pattern/skill.yaml +1 -0
  316. package/dist/agents/skills/claude-code/graphql-apollo-server/skill.yaml +1 -0
  317. package/dist/agents/skills/claude-code/graphql-auth-patterns/SKILL.md +1 -0
  318. package/dist/agents/skills/claude-code/graphql-auth-patterns/skill.yaml +3 -0
  319. package/dist/agents/skills/claude-code/graphql-client-patterns/skill.yaml +1 -0
  320. package/dist/agents/skills/claude-code/graphql-codegen-pattern/skill.yaml +1 -0
  321. package/dist/agents/skills/claude-code/graphql-dataloader-pattern/skill.yaml +1 -0
  322. package/dist/agents/skills/claude-code/graphql-error-handling/SKILL.md +1 -0
  323. package/dist/agents/skills/claude-code/graphql-error-handling/skill.yaml +3 -0
  324. package/dist/agents/skills/claude-code/graphql-federation-pattern/skill.yaml +1 -0
  325. package/dist/agents/skills/claude-code/graphql-pagination-patterns/SKILL.md +1 -0
  326. package/dist/agents/skills/claude-code/graphql-pagination-patterns/skill.yaml +4 -0
  327. package/dist/agents/skills/claude-code/graphql-performance-patterns/skill.yaml +6 -0
  328. package/dist/agents/skills/claude-code/graphql-resolver-pattern/skill.yaml +1 -0
  329. package/dist/agents/skills/claude-code/graphql-schema-design/SKILL.md +1 -0
  330. package/dist/agents/skills/claude-code/graphql-schema-design/skill.yaml +3 -0
  331. package/dist/agents/skills/claude-code/graphql-subscriptions/skill.yaml +1 -0
  332. package/dist/agents/skills/claude-code/harness-accessibility/skill.yaml +1 -0
  333. package/dist/agents/skills/claude-code/harness-api-design/skill.yaml +1 -0
  334. package/dist/agents/skills/claude-code/harness-architecture-advisor/skill.yaml +1 -0
  335. package/dist/agents/skills/claude-code/harness-auth/skill.yaml +1 -0
  336. package/dist/agents/skills/claude-code/harness-autopilot/SKILL.md +171 -822
  337. package/dist/agents/skills/claude-code/harness-autopilot/skill.yaml +1 -0
  338. package/dist/agents/skills/claude-code/harness-brainstorming/SKILL.md +145 -195
  339. package/dist/agents/skills/claude-code/harness-brainstorming/skill.yaml +4 -0
  340. package/dist/agents/skills/claude-code/harness-caching/skill.yaml +1 -0
  341. package/dist/agents/skills/claude-code/harness-chaos/skill.yaml +1 -0
  342. package/dist/agents/skills/claude-code/harness-code-review/SKILL.md +267 -436
  343. package/dist/agents/skills/claude-code/harness-code-review/skill.yaml +7 -0
  344. package/dist/agents/skills/claude-code/harness-codebase-cleanup/skill.yaml +1 -0
  345. package/dist/agents/skills/claude-code/harness-compliance/skill.yaml +1 -0
  346. package/dist/agents/skills/claude-code/harness-containerization/skill.yaml +1 -0
  347. package/dist/agents/skills/claude-code/harness-data-pipeline/skill.yaml +1 -0
  348. package/dist/agents/skills/claude-code/harness-data-validation/skill.yaml +1 -0
  349. package/dist/agents/skills/claude-code/harness-database/skill.yaml +1 -0
  350. package/dist/agents/skills/claude-code/harness-debugging/skill.yaml +1 -0
  351. package/dist/agents/skills/claude-code/harness-dependency-health/skill.yaml +1 -0
  352. package/dist/agents/skills/claude-code/harness-deployment/skill.yaml +1 -0
  353. package/dist/agents/skills/claude-code/harness-design/skill.yaml +1 -0
  354. package/dist/agents/skills/claude-code/harness-design-mobile/skill.yaml +1 -0
  355. package/dist/agents/skills/claude-code/harness-design-system/skill.yaml +1 -0
  356. package/dist/agents/skills/claude-code/harness-design-web/skill.yaml +1 -0
  357. package/dist/agents/skills/claude-code/harness-diagnostics/skill.yaml +1 -0
  358. package/dist/agents/skills/claude-code/harness-docs-pipeline/skill.yaml +1 -0
  359. package/dist/agents/skills/claude-code/harness-dx/skill.yaml +1 -0
  360. package/dist/agents/skills/claude-code/harness-e2e/skill.yaml +1 -0
  361. package/dist/agents/skills/claude-code/harness-event-driven/skill.yaml +1 -0
  362. package/dist/agents/skills/claude-code/harness-execution/SKILL.md +180 -271
  363. package/dist/agents/skills/claude-code/harness-execution/skill.yaml +13 -0
  364. package/dist/agents/skills/claude-code/harness-feature-flags/skill.yaml +1 -0
  365. package/dist/agents/skills/claude-code/harness-git-workflow/skill.yaml +1 -0
  366. package/dist/agents/skills/claude-code/harness-hotspot-detector/skill.yaml +1 -0
  367. package/dist/agents/skills/claude-code/harness-i18n/skill.yaml +1 -0
  368. package/dist/agents/skills/claude-code/harness-i18n-process/skill.yaml +1 -0
  369. package/dist/agents/skills/claude-code/harness-i18n-workflow/skill.yaml +1 -0
  370. package/dist/agents/skills/claude-code/harness-impact-analysis/skill.yaml +1 -0
  371. package/dist/agents/skills/claude-code/harness-incident-response/skill.yaml +1 -0
  372. package/dist/agents/skills/claude-code/harness-infrastructure-as-code/skill.yaml +1 -0
  373. package/dist/agents/skills/claude-code/harness-integration-test/skill.yaml +1 -0
  374. package/dist/agents/skills/claude-code/harness-integrity/skill.yaml +1 -0
  375. package/dist/agents/skills/claude-code/harness-knowledge-mapper/skill.yaml +1 -0
  376. package/dist/agents/skills/claude-code/harness-load-testing/skill.yaml +1 -0
  377. package/dist/agents/skills/claude-code/harness-ml-ops/skill.yaml +1 -0
  378. package/dist/agents/skills/claude-code/harness-mobile-patterns/skill.yaml +1 -0
  379. package/dist/agents/skills/claude-code/harness-mutation-test/skill.yaml +1 -0
  380. package/dist/agents/skills/claude-code/harness-observability/skill.yaml +1 -0
  381. package/dist/agents/skills/claude-code/harness-onboarding/skill.yaml +1 -0
  382. package/dist/agents/skills/claude-code/harness-parallel-agents/skill.yaml +1 -0
  383. package/dist/agents/skills/claude-code/harness-perf/skill.yaml +1 -0
  384. package/dist/agents/skills/claude-code/harness-perf-tdd/skill.yaml +1 -0
  385. package/dist/agents/skills/claude-code/harness-planning/SKILL.md +142 -322
  386. package/dist/agents/skills/claude-code/harness-planning/skill.yaml +7 -0
  387. package/dist/agents/skills/claude-code/harness-pre-commit-review/skill.yaml +1 -0
  388. package/dist/agents/skills/claude-code/harness-product-spec/skill.yaml +1 -0
  389. package/dist/agents/skills/claude-code/harness-property-test/skill.yaml +1 -0
  390. package/dist/agents/skills/claude-code/harness-refactoring/skill.yaml +1 -0
  391. package/dist/agents/skills/claude-code/harness-release-readiness/skill.yaml +1 -0
  392. package/dist/agents/skills/claude-code/harness-resilience/skill.yaml +1 -0
  393. package/dist/agents/skills/claude-code/harness-roadmap/skill.yaml +1 -0
  394. package/dist/agents/skills/claude-code/harness-roadmap-pilot/skill.yaml +1 -0
  395. package/dist/agents/skills/claude-code/harness-router/SKILL.md +69 -123
  396. package/dist/agents/skills/claude-code/harness-router/skill.yaml +1 -0
  397. package/dist/agents/skills/claude-code/harness-secrets/SKILL.md +3 -3
  398. package/dist/agents/skills/claude-code/harness-secrets/skill.yaml +1 -0
  399. package/dist/agents/skills/claude-code/harness-security-review/skill.yaml +6 -0
  400. package/dist/agents/skills/claude-code/harness-security-scan/skill.yaml +7 -0
  401. package/dist/agents/skills/claude-code/harness-skill-authoring/skill.yaml +1 -0
  402. package/dist/agents/skills/claude-code/harness-soundness-review/SKILL.md +483 -667
  403. package/dist/agents/skills/claude-code/harness-soundness-review/skill.yaml +1 -0
  404. package/dist/agents/skills/claude-code/harness-sql-review/skill.yaml +1 -0
  405. package/dist/agents/skills/claude-code/harness-state-management/skill.yaml +1 -0
  406. package/dist/agents/skills/claude-code/harness-supply-chain-audit/skill.yaml +1 -0
  407. package/dist/agents/skills/claude-code/harness-tdd/skill.yaml +1 -0
  408. package/dist/agents/skills/claude-code/harness-test-advisor/skill.yaml +1 -0
  409. package/dist/agents/skills/claude-code/harness-test-data/skill.yaml +1 -0
  410. package/dist/agents/skills/claude-code/harness-ux-copy/skill.yaml +13 -0
  411. package/dist/agents/skills/claude-code/harness-verification/SKILL.md +135 -221
  412. package/dist/agents/skills/claude-code/harness-verification/skill.yaml +4 -0
  413. package/dist/agents/skills/claude-code/harness-verify/skill.yaml +1 -0
  414. package/dist/agents/skills/claude-code/harness-visual-regression/skill.yaml +1 -0
  415. package/dist/agents/skills/claude-code/initialize-harness-project/skill.yaml +1 -0
  416. package/dist/agents/skills/claude-code/js-abstract-factory-pattern/skill.yaml +1 -0
  417. package/dist/agents/skills/claude-code/js-adapter-pattern/skill.yaml +1 -0
  418. package/dist/agents/skills/claude-code/js-bridge-pattern/skill.yaml +1 -0
  419. package/dist/agents/skills/claude-code/js-chain-of-responsibility-pattern/skill.yaml +1 -0
  420. package/dist/agents/skills/claude-code/js-command-pattern/skill.yaml +1 -0
  421. package/dist/agents/skills/claude-code/js-composite-pattern/skill.yaml +1 -0
  422. package/dist/agents/skills/claude-code/js-constructor-pattern/skill.yaml +1 -0
  423. package/dist/agents/skills/claude-code/js-decorator-pattern/skill.yaml +1 -0
  424. package/dist/agents/skills/claude-code/js-dynamic-import/skill.yaml +1 -0
  425. package/dist/agents/skills/claude-code/js-facade-pattern/skill.yaml +1 -0
  426. package/dist/agents/skills/claude-code/js-factory-pattern/skill.yaml +1 -0
  427. package/dist/agents/skills/claude-code/js-flyweight-pattern/skill.yaml +1 -0
  428. package/dist/agents/skills/claude-code/js-iterator-pattern/skill.yaml +1 -0
  429. package/dist/agents/skills/claude-code/js-mediator-middleware-pattern/skill.yaml +1 -0
  430. package/dist/agents/skills/claude-code/js-mixin-pattern/skill.yaml +1 -0
  431. package/dist/agents/skills/claude-code/js-module-pattern/skill.yaml +1 -0
  432. package/dist/agents/skills/claude-code/js-observer-pattern/skill.yaml +1 -0
  433. package/dist/agents/skills/claude-code/js-prototype-pattern/skill.yaml +1 -0
  434. package/dist/agents/skills/claude-code/js-provider-pattern/skill.yaml +1 -0
  435. package/dist/agents/skills/claude-code/js-proxy-pattern/skill.yaml +1 -0
  436. package/dist/agents/skills/claude-code/js-revealing-module-pattern/skill.yaml +1 -0
  437. package/dist/agents/skills/claude-code/js-singleton-pattern/skill.yaml +1 -0
  438. package/dist/agents/skills/claude-code/js-state-pattern/skill.yaml +1 -0
  439. package/dist/agents/skills/claude-code/js-static-import/skill.yaml +1 -0
  440. package/dist/agents/skills/claude-code/js-strategy-pattern/skill.yaml +1 -0
  441. package/dist/agents/skills/claude-code/js-template-method-pattern/skill.yaml +1 -0
  442. package/dist/agents/skills/claude-code/js-visitor-pattern/skill.yaml +1 -0
  443. package/dist/agents/skills/claude-code/microservices-api-gateway/skill.yaml +1 -0
  444. package/dist/agents/skills/claude-code/microservices-bulkhead-pattern/skill.yaml +1 -0
  445. package/dist/agents/skills/claude-code/microservices-circuit-breaker/skill.yaml +1 -0
  446. package/dist/agents/skills/claude-code/microservices-config-server/SKILL.md +1 -1
  447. package/dist/agents/skills/claude-code/microservices-config-server/skill.yaml +1 -0
  448. package/dist/agents/skills/claude-code/microservices-cqrs-pattern/skill.yaml +3 -0
  449. package/dist/agents/skills/claude-code/microservices-decomposition/skill.yaml +1 -0
  450. package/dist/agents/skills/claude-code/microservices-distributed-tracing/skill.yaml +1 -0
  451. package/dist/agents/skills/claude-code/microservices-event-sourcing/skill.yaml +3 -0
  452. package/dist/agents/skills/claude-code/microservices-health-check/skill.yaml +1 -0
  453. package/dist/agents/skills/claude-code/microservices-outbox-pattern/skill.yaml +1 -0
  454. package/dist/agents/skills/claude-code/microservices-saga-pattern/skill.yaml +1 -0
  455. package/dist/agents/skills/claude-code/microservices-service-discovery/skill.yaml +1 -0
  456. package/dist/agents/skills/claude-code/microservices-sidecar-pattern/skill.yaml +1 -0
  457. package/dist/agents/skills/claude-code/microservices-strangler-fig/skill.yaml +1 -0
  458. package/dist/agents/skills/claude-code/mobile-animation-patterns/skill.yaml +1 -0
  459. package/dist/agents/skills/claude-code/mobile-deployment-patterns/skill.yaml +1 -0
  460. package/dist/agents/skills/claude-code/mobile-expo-setup/skill.yaml +1 -0
  461. package/dist/agents/skills/claude-code/mobile-flatlist-patterns/skill.yaml +1 -0
  462. package/dist/agents/skills/claude-code/mobile-gesture-handling/skill.yaml +1 -0
  463. package/dist/agents/skills/claude-code/mobile-native-modules/skill.yaml +1 -0
  464. package/dist/agents/skills/claude-code/mobile-navigation-pattern/skill.yaml +1 -0
  465. package/dist/agents/skills/claude-code/mobile-network-patterns/skill.yaml +1 -0
  466. package/dist/agents/skills/claude-code/mobile-performance-patterns/skill.yaml +6 -0
  467. package/dist/agents/skills/claude-code/mobile-push-notifications/skill.yaml +1 -0
  468. package/dist/agents/skills/claude-code/mobile-storage-patterns/skill.yaml +1 -0
  469. package/dist/agents/skills/claude-code/mobile-testing-patterns/skill.yaml +1 -0
  470. package/dist/agents/skills/claude-code/nestjs-config-module/skill.yaml +1 -0
  471. package/dist/agents/skills/claude-code/nestjs-controller-pattern/skill.yaml +1 -0
  472. package/dist/agents/skills/claude-code/nestjs-dependency-injection/skill.yaml +1 -0
  473. package/dist/agents/skills/claude-code/nestjs-dto-validation/skill.yaml +1 -0
  474. package/dist/agents/skills/claude-code/nestjs-event-driven/skill.yaml +1 -0
  475. package/dist/agents/skills/claude-code/nestjs-exception-filters/skill.yaml +1 -0
  476. package/dist/agents/skills/claude-code/nestjs-graphql-integration/skill.yaml +1 -0
  477. package/dist/agents/skills/claude-code/nestjs-guards-pattern/skill.yaml +1 -0
  478. package/dist/agents/skills/claude-code/nestjs-interceptors-pattern/skill.yaml +1 -0
  479. package/dist/agents/skills/claude-code/nestjs-microservices/skill.yaml +1 -0
  480. package/dist/agents/skills/claude-code/nestjs-middleware-pattern/skill.yaml +1 -0
  481. package/dist/agents/skills/claude-code/nestjs-module-pattern/skill.yaml +1 -0
  482. package/dist/agents/skills/claude-code/nestjs-pipes-pattern/skill.yaml +1 -0
  483. package/dist/agents/skills/claude-code/nestjs-service-pattern/skill.yaml +1 -0
  484. package/dist/agents/skills/claude-code/nestjs-swagger-integration/skill.yaml +1 -0
  485. package/dist/agents/skills/claude-code/nestjs-testing-patterns/skill.yaml +1 -0
  486. package/dist/agents/skills/claude-code/next-app-router/skill.yaml +1 -0
  487. package/dist/agents/skills/claude-code/next-auth-patterns/skill.yaml +1 -0
  488. package/dist/agents/skills/claude-code/next-caching-strategies/skill.yaml +1 -0
  489. package/dist/agents/skills/claude-code/next-data-fetching/skill.yaml +1 -0
  490. package/dist/agents/skills/claude-code/next-deployment-optimization/skill.yaml +1 -0
  491. package/dist/agents/skills/claude-code/next-environment-config/skill.yaml +1 -0
  492. package/dist/agents/skills/claude-code/next-error-boundaries/skill.yaml +1 -0
  493. package/dist/agents/skills/claude-code/next-image-optimization/skill.yaml +1 -0
  494. package/dist/agents/skills/claude-code/next-metadata-api/skill.yaml +1 -0
  495. package/dist/agents/skills/claude-code/next-middleware-pattern/skill.yaml +1 -0
  496. package/dist/agents/skills/claude-code/next-monorepo-setup/skill.yaml +1 -0
  497. package/dist/agents/skills/claude-code/next-parallel-intercepting-routes/skill.yaml +1 -0
  498. package/dist/agents/skills/claude-code/next-route-handlers/skill.yaml +1 -0
  499. package/dist/agents/skills/claude-code/next-server-actions/skill.yaml +1 -0
  500. package/dist/agents/skills/claude-code/next-server-components/skill.yaml +1 -0
  501. package/dist/agents/skills/claude-code/next-static-generation/skill.yaml +1 -0
  502. package/dist/agents/skills/claude-code/next-streaming-suspense/skill.yaml +1 -0
  503. package/dist/agents/skills/claude-code/next-testing-patterns/skill.yaml +1 -0
  504. package/dist/agents/skills/claude-code/node-buffer-encoding/skill.yaml +1 -0
  505. package/dist/agents/skills/claude-code/node-child-process/skill.yaml +1 -0
  506. package/dist/agents/skills/claude-code/node-crypto-patterns/skill.yaml +1 -0
  507. package/dist/agents/skills/claude-code/node-environment-config/skill.yaml +1 -0
  508. package/dist/agents/skills/claude-code/node-error-handling/skill.yaml +1 -0
  509. package/dist/agents/skills/claude-code/node-esm-patterns/skill.yaml +1 -0
  510. package/dist/agents/skills/claude-code/node-event-emitter/skill.yaml +1 -0
  511. package/dist/agents/skills/claude-code/node-express-patterns/skill.yaml +1 -0
  512. package/dist/agents/skills/claude-code/node-fastify-patterns/skill.yaml +1 -0
  513. package/dist/agents/skills/claude-code/node-http-server/skill.yaml +1 -0
  514. package/dist/agents/skills/claude-code/node-path-fs-patterns/skill.yaml +1 -0
  515. package/dist/agents/skills/claude-code/node-performance-profiling/skill.yaml +6 -0
  516. package/dist/agents/skills/claude-code/node-streams-pattern/skill.yaml +1 -0
  517. package/dist/agents/skills/claude-code/node-testing-patterns/skill.yaml +1 -0
  518. package/dist/agents/skills/claude-code/node-worker-threads/skill.yaml +1 -0
  519. package/dist/agents/skills/claude-code/nuxt-auto-imports/skill.yaml +1 -0
  520. package/dist/agents/skills/claude-code/nuxt-composables-pattern/skill.yaml +1 -0
  521. package/dist/agents/skills/claude-code/nuxt-deployment-config/skill.yaml +1 -0
  522. package/dist/agents/skills/claude-code/nuxt-layouts-pages/skill.yaml +1 -0
  523. package/dist/agents/skills/claude-code/nuxt-middleware-pattern/skill.yaml +1 -0
  524. package/dist/agents/skills/claude-code/nuxt-modules-pattern/skill.yaml +1 -0
  525. package/dist/agents/skills/claude-code/nuxt-plugins-pattern/skill.yaml +1 -0
  526. package/dist/agents/skills/claude-code/nuxt-seo-metadata/skill.yaml +1 -0
  527. package/dist/agents/skills/claude-code/nuxt-server-routes/skill.yaml +1 -0
  528. package/dist/agents/skills/claude-code/nuxt-state-management/skill.yaml +1 -0
  529. package/dist/agents/skills/claude-code/nuxt-testing-patterns/skill.yaml +1 -0
  530. package/dist/agents/skills/claude-code/otel-context-propagation/skill.yaml +1 -0
  531. package/dist/agents/skills/claude-code/otel-custom-instrumentation/skill.yaml +1 -0
  532. package/dist/agents/skills/claude-code/otel-error-tracking/skill.yaml +1 -0
  533. package/dist/agents/skills/claude-code/otel-exporter-config/skill.yaml +1 -0
  534. package/dist/agents/skills/claude-code/otel-logging-pattern/skill.yaml +1 -0
  535. package/dist/agents/skills/claude-code/otel-metrics-pattern/skill.yaml +1 -0
  536. package/dist/agents/skills/claude-code/otel-nestjs-integration/skill.yaml +1 -0
  537. package/dist/agents/skills/claude-code/otel-nextjs-integration/skill.yaml +1 -0
  538. package/dist/agents/skills/claude-code/otel-performance-insights/skill.yaml +5 -0
  539. package/dist/agents/skills/claude-code/otel-sampling-strategies/skill.yaml +1 -0
  540. package/dist/agents/skills/claude-code/otel-sdk-setup/skill.yaml +1 -0
  541. package/dist/agents/skills/claude-code/otel-tracing-pattern/skill.yaml +1 -0
  542. package/dist/agents/skills/claude-code/owasp-auth-patterns/SKILL.md +1 -0
  543. package/dist/agents/skills/claude-code/owasp-auth-patterns/skill.yaml +8 -0
  544. package/dist/agents/skills/claude-code/owasp-cryptography/skill.yaml +6 -0
  545. package/dist/agents/skills/claude-code/owasp-csrf-protection/skill.yaml +3 -0
  546. package/dist/agents/skills/claude-code/owasp-dependency-security/skill.yaml +4 -0
  547. package/dist/agents/skills/claude-code/owasp-file-upload-security/skill.yaml +3 -0
  548. package/dist/agents/skills/claude-code/owasp-idor-prevention/skill.yaml +4 -0
  549. package/dist/agents/skills/claude-code/owasp-injection-prevention/skill.yaml +4 -0
  550. package/dist/agents/skills/claude-code/owasp-logging-monitoring/skill.yaml +5 -0
  551. package/dist/agents/skills/claude-code/owasp-rate-limiting/SKILL.md +1 -0
  552. package/dist/agents/skills/claude-code/owasp-rate-limiting/skill.yaml +5 -0
  553. package/dist/agents/skills/claude-code/owasp-secrets-management/SKILL.md +2 -1
  554. package/dist/agents/skills/claude-code/owasp-secrets-management/skill.yaml +5 -0
  555. package/dist/agents/skills/claude-code/owasp-security-headers/skill.yaml +4 -0
  556. package/dist/agents/skills/claude-code/owasp-xss-prevention/skill.yaml +3 -0
  557. package/dist/agents/skills/claude-code/perf-browser-cache/SKILL.md +151 -0
  558. package/dist/agents/skills/claude-code/perf-browser-cache/skill.yaml +39 -0
  559. package/dist/agents/skills/claude-code/perf-bundle-analysis/SKILL.md +217 -0
  560. package/dist/agents/skills/claude-code/perf-bundle-analysis/skill.yaml +37 -0
  561. package/dist/agents/skills/claude-code/perf-cache-invalidation/SKILL.md +228 -0
  562. package/dist/agents/skills/claude-code/perf-cache-invalidation/skill.yaml +38 -0
  563. package/dist/agents/skills/claude-code/perf-cdn-cache-control/SKILL.md +198 -0
  564. package/dist/agents/skills/claude-code/perf-cdn-cache-control/skill.yaml +40 -0
  565. package/dist/agents/skills/claude-code/perf-cdn-strategies/SKILL.md +161 -0
  566. package/dist/agents/skills/claude-code/perf-cdn-strategies/skill.yaml +40 -0
  567. package/dist/agents/skills/claude-code/perf-client-side-rendering/SKILL.md +245 -0
  568. package/dist/agents/skills/claude-code/perf-client-side-rendering/skill.yaml +40 -0
  569. package/dist/agents/skills/claude-code/perf-code-splitting/SKILL.md +185 -0
  570. package/dist/agents/skills/claude-code/perf-code-splitting/skill.yaml +39 -0
  571. package/dist/agents/skills/claude-code/perf-compression/SKILL.md +163 -0
  572. package/dist/agents/skills/claude-code/perf-compression/skill.yaml +38 -0
  573. package/dist/agents/skills/claude-code/perf-connection-costs/SKILL.md +165 -0
  574. package/dist/agents/skills/claude-code/perf-connection-costs/skill.yaml +40 -0
  575. package/dist/agents/skills/claude-code/perf-connection-pooling/SKILL.md +250 -0
  576. package/dist/agents/skills/claude-code/perf-connection-pooling/skill.yaml +38 -0
  577. package/dist/agents/skills/claude-code/perf-critical-rendering-path/SKILL.md +167 -0
  578. package/dist/agents/skills/claude-code/perf-critical-rendering-path/skill.yaml +39 -0
  579. package/dist/agents/skills/claude-code/perf-cumulative-layout-shift/SKILL.md +180 -0
  580. package/dist/agents/skills/claude-code/perf-cumulative-layout-shift/skill.yaml +40 -0
  581. package/dist/agents/skills/claude-code/perf-dom-parsing/SKILL.md +153 -0
  582. package/dist/agents/skills/claude-code/perf-dom-parsing/skill.yaml +36 -0
  583. package/dist/agents/skills/claude-code/perf-edge-rendering/SKILL.md +222 -0
  584. package/dist/agents/skills/claude-code/perf-edge-rendering/skill.yaml +39 -0
  585. package/dist/agents/skills/claude-code/perf-event-loop/SKILL.md +203 -0
  586. package/dist/agents/skills/claude-code/perf-event-loop/skill.yaml +38 -0
  587. package/dist/agents/skills/claude-code/perf-font-loading/SKILL.md +222 -0
  588. package/dist/agents/skills/claude-code/perf-font-loading/skill.yaml +39 -0
  589. package/dist/agents/skills/claude-code/perf-garbage-collection/SKILL.md +192 -0
  590. package/dist/agents/skills/claude-code/perf-garbage-collection/skill.yaml +40 -0
  591. package/dist/agents/skills/claude-code/perf-heap-profiling/SKILL.md +160 -0
  592. package/dist/agents/skills/claude-code/perf-heap-profiling/skill.yaml +38 -0
  593. package/dist/agents/skills/claude-code/perf-http2-multiplexing/SKILL.md +163 -0
  594. package/dist/agents/skills/claude-code/perf-http2-multiplexing/skill.yaml +38 -0
  595. package/dist/agents/skills/claude-code/perf-http3-quic/SKILL.md +165 -0
  596. package/dist/agents/skills/claude-code/perf-http3-quic/skill.yaml +37 -0
  597. package/dist/agents/skills/claude-code/perf-image-formats/SKILL.md +183 -0
  598. package/dist/agents/skills/claude-code/perf-image-formats/skill.yaml +39 -0
  599. package/dist/agents/skills/claude-code/perf-index-strategies/SKILL.md +210 -0
  600. package/dist/agents/skills/claude-code/perf-index-strategies/skill.yaml +40 -0
  601. package/dist/agents/skills/claude-code/perf-interaction-to-next-paint/SKILL.md +170 -0
  602. package/dist/agents/skills/claude-code/perf-interaction-to-next-paint/skill.yaml +40 -0
  603. package/dist/agents/skills/claude-code/perf-largest-contentful-paint/SKILL.md +162 -0
  604. package/dist/agents/skills/claude-code/perf-largest-contentful-paint/skill.yaml +41 -0
  605. package/dist/agents/skills/claude-code/perf-layout-reflow/SKILL.md +187 -0
  606. package/dist/agents/skills/claude-code/perf-layout-reflow/skill.yaml +38 -0
  607. package/dist/agents/skills/claude-code/perf-lazy-loading/SKILL.md +217 -0
  608. package/dist/agents/skills/claude-code/perf-lazy-loading/skill.yaml +38 -0
  609. package/dist/agents/skills/claude-code/perf-lazy-loading-media/SKILL.md +233 -0
  610. package/dist/agents/skills/claude-code/perf-lazy-loading-media/skill.yaml +38 -0
  611. package/dist/agents/skills/claude-code/perf-long-tasks/SKILL.md +194 -0
  612. package/dist/agents/skills/claude-code/perf-long-tasks/skill.yaml +38 -0
  613. package/dist/agents/skills/claude-code/perf-memory-leaks/SKILL.md +218 -0
  614. package/dist/agents/skills/claude-code/perf-memory-leaks/skill.yaml +38 -0
  615. package/dist/agents/skills/claude-code/perf-module-federation/SKILL.md +242 -0
  616. package/dist/agents/skills/claude-code/perf-module-federation/skill.yaml +38 -0
  617. package/dist/agents/skills/claude-code/perf-n-plus-one/SKILL.md +237 -0
  618. package/dist/agents/skills/claude-code/perf-n-plus-one/skill.yaml +40 -0
  619. package/dist/agents/skills/claude-code/perf-paint-compositing/SKILL.md +181 -0
  620. package/dist/agents/skills/claude-code/perf-paint-compositing/skill.yaml +40 -0
  621. package/dist/agents/skills/claude-code/perf-performance-api/SKILL.md +249 -0
  622. package/dist/agents/skills/claude-code/perf-performance-api/skill.yaml +41 -0
  623. package/dist/agents/skills/claude-code/perf-profiling-methodology/SKILL.md +181 -0
  624. package/dist/agents/skills/claude-code/perf-profiling-methodology/skill.yaml +44 -0
  625. package/dist/agents/skills/claude-code/perf-query-optimization/SKILL.md +203 -0
  626. package/dist/agents/skills/claude-code/perf-query-optimization/skill.yaml +39 -0
  627. package/dist/agents/skills/claude-code/perf-resource-hints/SKILL.md +167 -0
  628. package/dist/agents/skills/claude-code/perf-resource-hints/skill.yaml +40 -0
  629. package/dist/agents/skills/claude-code/perf-responsive-images/SKILL.md +225 -0
  630. package/dist/agents/skills/claude-code/perf-responsive-images/skill.yaml +38 -0
  631. package/dist/agents/skills/claude-code/perf-server-side-caching/SKILL.md +194 -0
  632. package/dist/agents/skills/claude-code/perf-server-side-caching/skill.yaml +40 -0
  633. package/dist/agents/skills/claude-code/perf-server-side-rendering/SKILL.md +239 -0
  634. package/dist/agents/skills/claude-code/perf-server-side-rendering/skill.yaml +39 -0
  635. package/dist/agents/skills/claude-code/perf-service-worker-caching/SKILL.md +247 -0
  636. package/dist/agents/skills/claude-code/perf-service-worker-caching/skill.yaml +40 -0
  637. package/dist/agents/skills/claude-code/perf-static-generation/SKILL.md +241 -0
  638. package/dist/agents/skills/claude-code/perf-static-generation/skill.yaml +39 -0
  639. package/dist/agents/skills/claude-code/perf-streaming-rendering/SKILL.md +242 -0
  640. package/dist/agents/skills/claude-code/perf-streaming-rendering/skill.yaml +37 -0
  641. package/dist/agents/skills/claude-code/perf-style-calculation/SKILL.md +166 -0
  642. package/dist/agents/skills/claude-code/perf-style-calculation/skill.yaml +36 -0
  643. package/dist/agents/skills/claude-code/perf-svg-optimization/SKILL.md +249 -0
  644. package/dist/agents/skills/claude-code/perf-svg-optimization/skill.yaml +37 -0
  645. package/dist/agents/skills/claude-code/perf-tree-shaking/SKILL.md +225 -0
  646. package/dist/agents/skills/claude-code/perf-tree-shaking/skill.yaml +38 -0
  647. package/dist/agents/skills/claude-code/perf-web-workers/SKILL.md +237 -0
  648. package/dist/agents/skills/claude-code/perf-web-workers/skill.yaml +40 -0
  649. package/dist/agents/skills/claude-code/prisma-client-queries/skill.yaml +1 -0
  650. package/dist/agents/skills/claude-code/prisma-filtering-sorting/skill.yaml +1 -0
  651. package/dist/agents/skills/claude-code/prisma-migrations/skill.yaml +3 -0
  652. package/dist/agents/skills/claude-code/prisma-performance-patterns/skill.yaml +8 -0
  653. package/dist/agents/skills/claude-code/prisma-raw-queries/skill.yaml +1 -0
  654. package/dist/agents/skills/claude-code/prisma-relations-pattern/skill.yaml +1 -0
  655. package/dist/agents/skills/claude-code/prisma-schema-design/skill.yaml +4 -0
  656. package/dist/agents/skills/claude-code/prisma-seeding-pattern/skill.yaml +1 -0
  657. package/dist/agents/skills/claude-code/prisma-soft-delete/skill.yaml +1 -0
  658. package/dist/agents/skills/claude-code/prisma-transactions/skill.yaml +4 -0
  659. package/dist/agents/skills/claude-code/prisma-type-generation/skill.yaml +1 -0
  660. package/dist/agents/skills/claude-code/react-2026/skill.yaml +1 -0
  661. package/dist/agents/skills/claude-code/react-client-rendering/skill.yaml +1 -0
  662. package/dist/agents/skills/claude-code/react-compound-pattern/skill.yaml +1 -0
  663. package/dist/agents/skills/claude-code/react-concurrent-ui/skill.yaml +1 -0
  664. package/dist/agents/skills/claude-code/react-container-presentational/skill.yaml +1 -0
  665. package/dist/agents/skills/claude-code/react-context-pattern/skill.yaml +1 -0
  666. package/dist/agents/skills/claude-code/react-dynamic-import/skill.yaml +1 -0
  667. package/dist/agents/skills/claude-code/react-hoc-pattern/skill.yaml +1 -0
  668. package/dist/agents/skills/claude-code/react-hooks-pattern/skill.yaml +1 -0
  669. package/dist/agents/skills/claude-code/react-islands-pattern/skill.yaml +1 -0
  670. package/dist/agents/skills/claude-code/react-memoization-pattern/skill.yaml +1 -0
  671. package/dist/agents/skills/claude-code/react-progressive-hydration/skill.yaml +1 -0
  672. package/dist/agents/skills/claude-code/react-provider-pattern/skill.yaml +1 -0
  673. package/dist/agents/skills/claude-code/react-render-props-pattern/skill.yaml +1 -0
  674. package/dist/agents/skills/claude-code/react-server-components/skill.yaml +1 -0
  675. package/dist/agents/skills/claude-code/react-server-rendering/skill.yaml +1 -0
  676. package/dist/agents/skills/claude-code/react-state-management-pattern/skill.yaml +1 -0
  677. package/dist/agents/skills/claude-code/react-static-import/skill.yaml +1 -0
  678. package/dist/agents/skills/claude-code/react-suspense-pattern/skill.yaml +1 -0
  679. package/dist/agents/skills/claude-code/redux-entity-adapter/skill.yaml +1 -0
  680. package/dist/agents/skills/claude-code/redux-listener-middleware/skill.yaml +1 -0
  681. package/dist/agents/skills/claude-code/redux-persistence-pattern/skill.yaml +1 -0
  682. package/dist/agents/skills/claude-code/redux-rtk-optimistic/skill.yaml +1 -0
  683. package/dist/agents/skills/claude-code/redux-rtk-query-endpoints/skill.yaml +1 -0
  684. package/dist/agents/skills/claude-code/redux-rtk-query-setup/skill.yaml +1 -0
  685. package/dist/agents/skills/claude-code/redux-selectors-pattern/skill.yaml +1 -0
  686. package/dist/agents/skills/claude-code/redux-slice-pattern/skill.yaml +1 -0
  687. package/dist/agents/skills/claude-code/redux-store-setup/skill.yaml +1 -0
  688. package/dist/agents/skills/claude-code/redux-testing-patterns/skill.yaml +1 -0
  689. package/dist/agents/skills/claude-code/redux-thunk-pattern/skill.yaml +1 -0
  690. package/dist/agents/skills/claude-code/redux-typescript-patterns/skill.yaml +1 -0
  691. package/dist/agents/skills/claude-code/resilience-bulkhead-pattern/skill.yaml +1 -0
  692. package/dist/agents/skills/claude-code/resilience-chaos-testing/skill.yaml +1 -0
  693. package/dist/agents/skills/claude-code/resilience-circuit-breaker/skill.yaml +1 -0
  694. package/dist/agents/skills/claude-code/resilience-dead-letter/skill.yaml +1 -0
  695. package/dist/agents/skills/claude-code/resilience-fallback-pattern/skill.yaml +1 -0
  696. package/dist/agents/skills/claude-code/resilience-health-checks/skill.yaml +1 -0
  697. package/dist/agents/skills/claude-code/resilience-idempotency/skill.yaml +1 -0
  698. package/dist/agents/skills/claude-code/resilience-rate-limiting/skill.yaml +1 -0
  699. package/dist/agents/skills/claude-code/resilience-retry-pattern/skill.yaml +1 -0
  700. package/dist/agents/skills/claude-code/resilience-timeout-pattern/skill.yaml +1 -0
  701. package/dist/agents/skills/claude-code/security-abac-design/SKILL.md +154 -0
  702. package/dist/agents/skills/claude-code/security-abac-design/skill.yaml +41 -0
  703. package/dist/agents/skills/claude-code/security-asymmetric-encryption/SKILL.md +201 -0
  704. package/dist/agents/skills/claude-code/security-asymmetric-encryption/skill.yaml +42 -0
  705. package/dist/agents/skills/claude-code/security-attack-trees/SKILL.md +150 -0
  706. package/dist/agents/skills/claude-code/security-attack-trees/skill.yaml +37 -0
  707. package/dist/agents/skills/claude-code/security-audit-log-design/SKILL.md +227 -0
  708. package/dist/agents/skills/claude-code/security-audit-log-design/skill.yaml +39 -0
  709. package/dist/agents/skills/claude-code/security-authentication-flows/SKILL.md +168 -0
  710. package/dist/agents/skills/claude-code/security-authentication-flows/skill.yaml +42 -0
  711. package/dist/agents/skills/claude-code/security-capability-based-security/SKILL.md +158 -0
  712. package/dist/agents/skills/claude-code/security-capability-based-security/skill.yaml +40 -0
  713. package/dist/agents/skills/claude-code/security-certificate-management/SKILL.md +153 -0
  714. package/dist/agents/skills/claude-code/security-certificate-management/skill.yaml +42 -0
  715. package/dist/agents/skills/claude-code/security-ci-security-testing/SKILL.md +159 -0
  716. package/dist/agents/skills/claude-code/security-ci-security-testing/skill.yaml +43 -0
  717. package/dist/agents/skills/claude-code/security-code-signing/SKILL.md +155 -0
  718. package/dist/agents/skills/claude-code/security-code-signing/skill.yaml +40 -0
  719. package/dist/agents/skills/claude-code/security-compliance-logging/SKILL.md +183 -0
  720. package/dist/agents/skills/claude-code/security-compliance-logging/skill.yaml +38 -0
  721. package/dist/agents/skills/claude-code/security-credential-storage/SKILL.md +222 -0
  722. package/dist/agents/skills/claude-code/security-credential-storage/skill.yaml +41 -0
  723. package/dist/agents/skills/claude-code/security-cryptographic-randomness/SKILL.md +154 -0
  724. package/dist/agents/skills/claude-code/security-cryptographic-randomness/skill.yaml +41 -0
  725. package/dist/agents/skills/claude-code/security-dependency-auditing/SKILL.md +156 -0
  726. package/dist/agents/skills/claude-code/security-dependency-auditing/skill.yaml +39 -0
  727. package/dist/agents/skills/claude-code/security-deserialization-attacks/SKILL.md +180 -0
  728. package/dist/agents/skills/claude-code/security-deserialization-attacks/skill.yaml +38 -0
  729. package/dist/agents/skills/claude-code/security-environment-variable-risks/SKILL.md +153 -0
  730. package/dist/agents/skills/claude-code/security-environment-variable-risks/skill.yaml +37 -0
  731. package/dist/agents/skills/claude-code/security-forensics-fundamentals/SKILL.md +198 -0
  732. package/dist/agents/skills/claude-code/security-forensics-fundamentals/skill.yaml +40 -0
  733. package/dist/agents/skills/claude-code/security-hashing-fundamentals/SKILL.md +212 -0
  734. package/dist/agents/skills/claude-code/security-hashing-fundamentals/skill.yaml +40 -0
  735. package/dist/agents/skills/claude-code/security-hmac-signatures/SKILL.md +165 -0
  736. package/dist/agents/skills/claude-code/security-hmac-signatures/skill.yaml +40 -0
  737. package/dist/agents/skills/claude-code/security-hsts-preloading/SKILL.md +154 -0
  738. package/dist/agents/skills/claude-code/security-hsts-preloading/skill.yaml +38 -0
  739. package/dist/agents/skills/claude-code/security-identity-verification/SKILL.md +157 -0
  740. package/dist/agents/skills/claude-code/security-identity-verification/skill.yaml +39 -0
  741. package/dist/agents/skills/claude-code/security-incident-containment/SKILL.md +190 -0
  742. package/dist/agents/skills/claude-code/security-incident-containment/skill.yaml +40 -0
  743. package/dist/agents/skills/claude-code/security-injection-families/SKILL.md +235 -0
  744. package/dist/agents/skills/claude-code/security-injection-families/skill.yaml +41 -0
  745. package/dist/agents/skills/claude-code/security-log-correlation/SKILL.md +178 -0
  746. package/dist/agents/skills/claude-code/security-log-correlation/skill.yaml +39 -0
  747. package/dist/agents/skills/claude-code/security-memory-safety/SKILL.md +234 -0
  748. package/dist/agents/skills/claude-code/security-memory-safety/skill.yaml +39 -0
  749. package/dist/agents/skills/claude-code/security-mfa-design/SKILL.md +150 -0
  750. package/dist/agents/skills/claude-code/security-mfa-design/skill.yaml +41 -0
  751. package/dist/agents/skills/claude-code/security-microsegmentation/SKILL.md +154 -0
  752. package/dist/agents/skills/claude-code/security-microsegmentation/skill.yaml +40 -0
  753. package/dist/agents/skills/claude-code/security-mtls-design/SKILL.md +158 -0
  754. package/dist/agents/skills/claude-code/security-mtls-design/skill.yaml +39 -0
  755. package/dist/agents/skills/claude-code/security-penetration-testing/SKILL.md +166 -0
  756. package/dist/agents/skills/claude-code/security-penetration-testing/skill.yaml +40 -0
  757. package/dist/agents/skills/claude-code/security-post-incident-review/SKILL.md +205 -0
  758. package/dist/agents/skills/claude-code/security-post-incident-review/skill.yaml +39 -0
  759. package/dist/agents/skills/claude-code/security-race-conditions/SKILL.md +186 -0
  760. package/dist/agents/skills/claude-code/security-race-conditions/skill.yaml +39 -0
  761. package/dist/agents/skills/claude-code/security-rbac-design/SKILL.md +209 -0
  762. package/dist/agents/skills/claude-code/security-rbac-design/skill.yaml +40 -0
  763. package/dist/agents/skills/claude-code/security-rebac-design/SKILL.md +154 -0
  764. package/dist/agents/skills/claude-code/security-rebac-design/skill.yaml +39 -0
  765. package/dist/agents/skills/claude-code/security-sbom-provenance/SKILL.md +157 -0
  766. package/dist/agents/skills/claude-code/security-sbom-provenance/skill.yaml +39 -0
  767. package/dist/agents/skills/claude-code/security-secrets-lifecycle/SKILL.md +190 -0
  768. package/dist/agents/skills/claude-code/security-secrets-lifecycle/skill.yaml +39 -0
  769. package/dist/agents/skills/claude-code/security-security-champions/SKILL.md +165 -0
  770. package/dist/agents/skills/claude-code/security-security-champions/skill.yaml +37 -0
  771. package/dist/agents/skills/claude-code/security-session-management/SKILL.md +196 -0
  772. package/dist/agents/skills/claude-code/security-session-management/skill.yaml +41 -0
  773. package/dist/agents/skills/claude-code/security-shift-left-design/SKILL.md +153 -0
  774. package/dist/agents/skills/claude-code/security-shift-left-design/skill.yaml +38 -0
  775. package/dist/agents/skills/claude-code/security-symmetric-encryption/SKILL.md +176 -0
  776. package/dist/agents/skills/claude-code/security-symmetric-encryption/skill.yaml +41 -0
  777. package/dist/agents/skills/claude-code/security-threat-modeling-process/SKILL.md +150 -0
  778. package/dist/agents/skills/claude-code/security-threat-modeling-process/skill.yaml +38 -0
  779. package/dist/agents/skills/claude-code/security-threat-modeling-stride/SKILL.md +150 -0
  780. package/dist/agents/skills/claude-code/security-threat-modeling-stride/skill.yaml +40 -0
  781. package/dist/agents/skills/claude-code/security-tls-fundamentals/SKILL.md +186 -0
  782. package/dist/agents/skills/claude-code/security-tls-fundamentals/skill.yaml +40 -0
  783. package/dist/agents/skills/claude-code/security-trust-boundaries/SKILL.md +152 -0
  784. package/dist/agents/skills/claude-code/security-trust-boundaries/skill.yaml +39 -0
  785. package/dist/agents/skills/claude-code/security-vault-patterns/SKILL.md +155 -0
  786. package/dist/agents/skills/claude-code/security-vault-patterns/skill.yaml +39 -0
  787. package/dist/agents/skills/claude-code/security-vulnerability-disclosure/SKILL.md +207 -0
  788. package/dist/agents/skills/claude-code/security-vulnerability-disclosure/skill.yaml +39 -0
  789. package/dist/agents/skills/claude-code/security-zero-trust-principles/SKILL.md +229 -0
  790. package/dist/agents/skills/claude-code/security-zero-trust-principles/skill.yaml +40 -0
  791. package/dist/agents/skills/claude-code/state-context-pattern/skill.yaml +1 -0
  792. package/dist/agents/skills/claude-code/state-jotai-atoms/skill.yaml +1 -0
  793. package/dist/agents/skills/claude-code/state-selection-patterns/skill.yaml +1 -0
  794. package/dist/agents/skills/claude-code/state-server-client-sync/skill.yaml +1 -0
  795. package/dist/agents/skills/claude-code/state-zustand-devtools/skill.yaml +1 -0
  796. package/dist/agents/skills/claude-code/state-zustand-immer/skill.yaml +1 -0
  797. package/dist/agents/skills/claude-code/state-zustand-persist/skill.yaml +1 -0
  798. package/dist/agents/skills/claude-code/state-zustand-react/skill.yaml +1 -0
  799. package/dist/agents/skills/claude-code/state-zustand-slices/skill.yaml +1 -0
  800. package/dist/agents/skills/claude-code/state-zustand-store/skill.yaml +1 -0
  801. package/dist/agents/skills/claude-code/svelte-adapter-config/skill.yaml +1 -0
  802. package/dist/agents/skills/claude-code/svelte-component-composition/skill.yaml +1 -0
  803. package/dist/agents/skills/claude-code/svelte-error-pages/skill.yaml +1 -0
  804. package/dist/agents/skills/claude-code/svelte-form-actions/skill.yaml +1 -0
  805. package/dist/agents/skills/claude-code/svelte-load-functions/skill.yaml +1 -0
  806. package/dist/agents/skills/claude-code/svelte-performance-patterns/skill.yaml +6 -0
  807. package/dist/agents/skills/claude-code/svelte-routing-pattern/skill.yaml +1 -0
  808. package/dist/agents/skills/claude-code/svelte-runes-pattern/skill.yaml +1 -0
  809. package/dist/agents/skills/claude-code/svelte-server-hooks/skill.yaml +1 -0
  810. package/dist/agents/skills/claude-code/svelte-state-management/skill.yaml +1 -0
  811. package/dist/agents/skills/claude-code/svelte-stores-pattern/skill.yaml +1 -0
  812. package/dist/agents/skills/claude-code/svelte-testing-patterns/skill.yaml +1 -0
  813. package/dist/agents/skills/claude-code/svelte-transitions-animations/skill.yaml +1 -0
  814. package/dist/agents/skills/claude-code/tanstack-cache-management/skill.yaml +1 -0
  815. package/dist/agents/skills/claude-code/tanstack-dependent-queries/skill.yaml +1 -0
  816. package/dist/agents/skills/claude-code/tanstack-devtools/skill.yaml +1 -0
  817. package/dist/agents/skills/claude-code/tanstack-infinite-queries/skill.yaml +1 -0
  818. package/dist/agents/skills/claude-code/tanstack-mutation-patterns/skill.yaml +1 -0
  819. package/dist/agents/skills/claude-code/tanstack-optimistic-updates/skill.yaml +1 -0
  820. package/dist/agents/skills/claude-code/tanstack-prefetching/skill.yaml +1 -0
  821. package/dist/agents/skills/claude-code/tanstack-query-invalidation/skill.yaml +1 -0
  822. package/dist/agents/skills/claude-code/tanstack-query-keys/skill.yaml +1 -0
  823. package/dist/agents/skills/claude-code/tanstack-suspense-mode/skill.yaml +1 -0
  824. package/dist/agents/skills/claude-code/test-accessibility-testing/skill.yaml +1 -0
  825. package/dist/agents/skills/claude-code/test-component-react/skill.yaml +1 -0
  826. package/dist/agents/skills/claude-code/test-component-svelte/skill.yaml +1 -0
  827. package/dist/agents/skills/claude-code/test-contract-testing/skill.yaml +1 -0
  828. package/dist/agents/skills/claude-code/test-coverage-patterns/skill.yaml +1 -0
  829. package/dist/agents/skills/claude-code/test-e2e-strategy/skill.yaml +1 -0
  830. package/dist/agents/skills/claude-code/test-factory-patterns/skill.yaml +1 -0
  831. package/dist/agents/skills/claude-code/test-integration-patterns/skill.yaml +1 -0
  832. package/dist/agents/skills/claude-code/test-mock-patterns/skill.yaml +1 -0
  833. package/dist/agents/skills/claude-code/test-msw-pattern/skill.yaml +1 -0
  834. package/dist/agents/skills/claude-code/test-performance-testing/skill.yaml +5 -0
  835. package/dist/agents/skills/claude-code/test-playwright-patterns/skill.yaml +1 -0
  836. package/dist/agents/skills/claude-code/test-playwright-setup/skill.yaml +1 -0
  837. package/dist/agents/skills/claude-code/test-property-based/skill.yaml +1 -0
  838. package/dist/agents/skills/claude-code/test-snapshot-patterns/skill.yaml +1 -0
  839. package/dist/agents/skills/claude-code/test-tdd-workflow/skill.yaml +1 -0
  840. package/dist/agents/skills/claude-code/test-unit-patterns/skill.yaml +1 -0
  841. package/dist/agents/skills/claude-code/test-vitest-config/skill.yaml +1 -0
  842. package/dist/agents/skills/claude-code/trpc-context-pattern/skill.yaml +1 -0
  843. package/dist/agents/skills/claude-code/trpc-error-handling/SKILL.md +1 -0
  844. package/dist/agents/skills/claude-code/trpc-error-handling/skill.yaml +3 -0
  845. package/dist/agents/skills/claude-code/trpc-input-validation/SKILL.md +1 -0
  846. package/dist/agents/skills/claude-code/trpc-input-validation/skill.yaml +2 -0
  847. package/dist/agents/skills/claude-code/trpc-middleware-pattern/skill.yaml +1 -0
  848. package/dist/agents/skills/claude-code/trpc-nextjs-integration/skill.yaml +1 -0
  849. package/dist/agents/skills/claude-code/trpc-react-query-integration/skill.yaml +1 -0
  850. package/dist/agents/skills/claude-code/trpc-router-composition/SKILL.md +1 -0
  851. package/dist/agents/skills/claude-code/trpc-router-composition/skill.yaml +3 -0
  852. package/dist/agents/skills/claude-code/trpc-subscription-pattern/skill.yaml +1 -0
  853. package/dist/agents/skills/claude-code/ts-async-patterns/skill.yaml +1 -0
  854. package/dist/agents/skills/claude-code/ts-branded-types/skill.yaml +1 -0
  855. package/dist/agents/skills/claude-code/ts-class-patterns/skill.yaml +1 -0
  856. package/dist/agents/skills/claude-code/ts-conditional-types/skill.yaml +1 -0
  857. package/dist/agents/skills/claude-code/ts-config-patterns/skill.yaml +1 -0
  858. package/dist/agents/skills/claude-code/ts-declaration-merging/skill.yaml +1 -0
  859. package/dist/agents/skills/claude-code/ts-decorator-patterns/skill.yaml +1 -0
  860. package/dist/agents/skills/claude-code/ts-discriminated-unions/skill.yaml +1 -0
  861. package/dist/agents/skills/claude-code/ts-error-handling-types/skill.yaml +1 -0
  862. package/dist/agents/skills/claude-code/ts-generics-pattern/skill.yaml +1 -0
  863. package/dist/agents/skills/claude-code/ts-mapped-types/skill.yaml +1 -0
  864. package/dist/agents/skills/claude-code/ts-module-patterns/skill.yaml +1 -0
  865. package/dist/agents/skills/claude-code/ts-performance-patterns/skill.yaml +5 -0
  866. package/dist/agents/skills/claude-code/ts-satisfies-operator/skill.yaml +1 -0
  867. package/dist/agents/skills/claude-code/ts-strict-mode/skill.yaml +1 -0
  868. package/dist/agents/skills/claude-code/ts-template-literal-types/skill.yaml +1 -0
  869. package/dist/agents/skills/claude-code/ts-testing-types/skill.yaml +1 -0
  870. package/dist/agents/skills/claude-code/ts-type-guards/skill.yaml +1 -0
  871. package/dist/agents/skills/claude-code/ts-utility-types/skill.yaml +1 -0
  872. package/dist/agents/skills/claude-code/ts-zod-integration/skill.yaml +1 -0
  873. package/dist/agents/skills/claude-code/ux-active-voice/SKILL.md +150 -0
  874. package/dist/agents/skills/claude-code/ux-active-voice/skill.yaml +32 -0
  875. package/dist/agents/skills/claude-code/ux-button-cta-copy/SKILL.md +159 -0
  876. package/dist/agents/skills/claude-code/ux-button-cta-copy/skill.yaml +34 -0
  877. package/dist/agents/skills/claude-code/ux-confirmation-dialogs/SKILL.md +156 -0
  878. package/dist/agents/skills/claude-code/ux-confirmation-dialogs/skill.yaml +33 -0
  879. package/dist/agents/skills/claude-code/ux-content-hierarchy/SKILL.md +150 -0
  880. package/dist/agents/skills/claude-code/ux-content-hierarchy/skill.yaml +33 -0
  881. package/dist/agents/skills/claude-code/ux-data-table-copy/SKILL.md +154 -0
  882. package/dist/agents/skills/claude-code/ux-data-table-copy/skill.yaml +34 -0
  883. package/dist/agents/skills/claude-code/ux-destructive-action-copy/SKILL.md +152 -0
  884. package/dist/agents/skills/claude-code/ux-destructive-action-copy/skill.yaml +34 -0
  885. package/dist/agents/skills/claude-code/ux-empty-states/SKILL.md +155 -0
  886. package/dist/agents/skills/claude-code/ux-empty-states/skill.yaml +36 -0
  887. package/dist/agents/skills/claude-code/ux-error-messages/SKILL.md +159 -0
  888. package/dist/agents/skills/claude-code/ux-error-messages/skill.yaml +35 -0
  889. package/dist/agents/skills/claude-code/ux-error-severity/SKILL.md +155 -0
  890. package/dist/agents/skills/claude-code/ux-error-severity/skill.yaml +35 -0
  891. package/dist/agents/skills/claude-code/ux-form-labels/SKILL.md +159 -0
  892. package/dist/agents/skills/claude-code/ux-form-labels/skill.yaml +36 -0
  893. package/dist/agents/skills/claude-code/ux-inclusive-language/SKILL.md +161 -0
  894. package/dist/agents/skills/claude-code/ux-inclusive-language/skill.yaml +33 -0
  895. package/dist/agents/skills/claude-code/ux-internationalization-writing/SKILL.md +196 -0
  896. package/dist/agents/skills/claude-code/ux-internationalization-writing/skill.yaml +35 -0
  897. package/dist/agents/skills/claude-code/ux-loading-states/SKILL.md +162 -0
  898. package/dist/agents/skills/claude-code/ux-loading-states/skill.yaml +33 -0
  899. package/dist/agents/skills/claude-code/ux-microcopy-principles/SKILL.md +152 -0
  900. package/dist/agents/skills/claude-code/ux-microcopy-principles/skill.yaml +37 -0
  901. package/dist/agents/skills/claude-code/ux-navigation-labels/SKILL.md +163 -0
  902. package/dist/agents/skills/claude-code/ux-navigation-labels/skill.yaml +35 -0
  903. package/dist/agents/skills/claude-code/ux-notification-copy/SKILL.md +150 -0
  904. package/dist/agents/skills/claude-code/ux-notification-copy/skill.yaml +35 -0
  905. package/dist/agents/skills/claude-code/ux-onboarding-copy/SKILL.md +156 -0
  906. package/dist/agents/skills/claude-code/ux-onboarding-copy/skill.yaml +35 -0
  907. package/dist/agents/skills/claude-code/ux-permission-access-copy/SKILL.md +150 -0
  908. package/dist/agents/skills/claude-code/ux-permission-access-copy/skill.yaml +34 -0
  909. package/dist/agents/skills/claude-code/ux-plain-language/SKILL.md +157 -0
  910. package/dist/agents/skills/claude-code/ux-plain-language/skill.yaml +34 -0
  911. package/dist/agents/skills/claude-code/ux-search-copy/SKILL.md +154 -0
  912. package/dist/agents/skills/claude-code/ux-search-copy/skill.yaml +33 -0
  913. package/dist/agents/skills/claude-code/ux-settings-preferences/SKILL.md +152 -0
  914. package/dist/agents/skills/claude-code/ux-settings-preferences/skill.yaml +33 -0
  915. package/dist/agents/skills/claude-code/ux-success-feedback/SKILL.md +163 -0
  916. package/dist/agents/skills/claude-code/ux-success-feedback/skill.yaml +33 -0
  917. package/dist/agents/skills/claude-code/ux-tooltip-contextual-help/SKILL.md +163 -0
  918. package/dist/agents/skills/claude-code/ux-tooltip-contextual-help/skill.yaml +33 -0
  919. package/dist/agents/skills/claude-code/ux-voice-tone/SKILL.md +150 -0
  920. package/dist/agents/skills/claude-code/ux-voice-tone/skill.yaml +33 -0
  921. package/dist/agents/skills/claude-code/ux-writing-for-scanning/SKILL.md +150 -0
  922. package/dist/agents/skills/claude-code/ux-writing-for-scanning/skill.yaml +35 -0
  923. package/dist/agents/skills/claude-code/validate-context-engineering/skill.yaml +1 -0
  924. package/dist/agents/skills/claude-code/vue-async-components/skill.yaml +1 -0
  925. package/dist/agents/skills/claude-code/vue-component-events/skill.yaml +1 -0
  926. package/dist/agents/skills/claude-code/vue-composables-pattern/skill.yaml +1 -0
  927. package/dist/agents/skills/claude-code/vue-directive-pattern/skill.yaml +1 -0
  928. package/dist/agents/skills/claude-code/vue-pinia-pattern/skill.yaml +1 -0
  929. package/dist/agents/skills/claude-code/vue-provide-inject/skill.yaml +1 -0
  930. package/dist/agents/skills/claude-code/vue-reactive-refs/skill.yaml +1 -0
  931. package/dist/agents/skills/claude-code/vue-renderless-components/skill.yaml +1 -0
  932. package/dist/agents/skills/claude-code/vue-slots-pattern/skill.yaml +1 -0
  933. package/dist/agents/skills/claude-code/vue-teleport-pattern/skill.yaml +1 -0
  934. package/dist/agents/skills/claude-code/vue-watchers-pattern/skill.yaml +1 -0
  935. package/dist/agents/skills/claude-code/xstate-actor-pattern/skill.yaml +1 -0
  936. package/dist/agents/skills/claude-code/xstate-guards-actions/skill.yaml +1 -0
  937. package/dist/agents/skills/claude-code/xstate-history-states/skill.yaml +1 -0
  938. package/dist/agents/skills/claude-code/xstate-invoke-pattern/skill.yaml +1 -0
  939. package/dist/agents/skills/claude-code/xstate-machine-definition/skill.yaml +1 -0
  940. package/dist/agents/skills/claude-code/xstate-parallel-states/skill.yaml +1 -0
  941. package/dist/agents/skills/claude-code/xstate-react-integration/skill.yaml +1 -0
  942. package/dist/agents/skills/claude-code/xstate-testing-patterns/skill.yaml +1 -0
  943. package/dist/agents/skills/claude-code/xstate-typegen/skill.yaml +1 -0
  944. package/dist/agents/skills/claude-code/xstate-visualization/skill.yaml +1 -0
  945. package/dist/agents/skills/claude-code/zod-array-validation/skill.yaml +1 -0
  946. package/dist/agents/skills/claude-code/zod-async-validation/skill.yaml +1 -0
  947. package/dist/agents/skills/claude-code/zod-error-handling/skill.yaml +1 -0
  948. package/dist/agents/skills/claude-code/zod-infer-types/skill.yaml +1 -0
  949. package/dist/agents/skills/claude-code/zod-nextjs-integration/skill.yaml +1 -0
  950. package/dist/agents/skills/claude-code/zod-object-patterns/skill.yaml +1 -0
  951. package/dist/agents/skills/claude-code/zod-schema-definition/skill.yaml +1 -0
  952. package/dist/agents/skills/claude-code/zod-string-validation/skill.yaml +1 -0
  953. package/dist/agents/skills/claude-code/zod-transform-refine/skill.yaml +1 -0
  954. package/dist/agents/skills/claude-code/zod-union-discriminated/skill.yaml +1 -0
  955. package/dist/agents/skills/codex/a11y-aria-patterns/skill.yaml +1 -0
  956. package/dist/agents/skills/codex/a11y-color-contrast/skill.yaml +1 -0
  957. package/dist/agents/skills/codex/a11y-form-patterns/skill.yaml +2 -0
  958. package/dist/agents/skills/codex/a11y-image-text-alt/skill.yaml +1 -0
  959. package/dist/agents/skills/codex/a11y-keyboard-navigation/skill.yaml +1 -0
  960. package/dist/agents/skills/codex/a11y-modal-patterns/skill.yaml +1 -0
  961. package/dist/agents/skills/codex/a11y-motion-animation/skill.yaml +1 -0
  962. package/dist/agents/skills/codex/a11y-screen-reader-testing/skill.yaml +1 -0
  963. package/dist/agents/skills/codex/a11y-semantic-html/skill.yaml +1 -0
  964. package/dist/agents/skills/codex/a11y-testing-automation/skill.yaml +1 -0
  965. package/dist/agents/skills/codex/add-harness-component/skill.yaml +1 -0
  966. package/dist/agents/skills/codex/align-documentation/skill.yaml +1 -0
  967. package/dist/agents/skills/codex/angular-component-pattern/skill.yaml +1 -0
  968. package/dist/agents/skills/codex/angular-directive-pattern/skill.yaml +1 -0
  969. package/dist/agents/skills/codex/angular-http-interceptors/skill.yaml +1 -0
  970. package/dist/agents/skills/codex/angular-lazy-loading/skill.yaml +1 -0
  971. package/dist/agents/skills/codex/angular-performance-patterns/skill.yaml +6 -0
  972. package/dist/agents/skills/codex/angular-pipe-pattern/skill.yaml +1 -0
  973. package/dist/agents/skills/codex/angular-reactive-forms/skill.yaml +1 -0
  974. package/dist/agents/skills/codex/angular-routing-guards/skill.yaml +1 -0
  975. package/dist/agents/skills/codex/angular-rxjs-patterns/skill.yaml +1 -0
  976. package/dist/agents/skills/codex/angular-schematics/skill.yaml +1 -0
  977. package/dist/agents/skills/codex/angular-service-di/skill.yaml +1 -0
  978. package/dist/agents/skills/codex/angular-signals-pattern/skill.yaml +1 -0
  979. package/dist/agents/skills/codex/angular-standalone-components/skill.yaml +1 -0
  980. package/dist/agents/skills/codex/angular-state-management/skill.yaml +1 -0
  981. package/dist/agents/skills/codex/angular-testing-patterns/skill.yaml +1 -0
  982. package/dist/agents/skills/codex/api-api-keys/SKILL.md +135 -0
  983. package/dist/agents/skills/codex/api-api-keys/skill.yaml +41 -0
  984. package/dist/agents/skills/codex/api-authentication-patterns/SKILL.md +117 -0
  985. package/dist/agents/skills/codex/api-authentication-patterns/skill.yaml +44 -0
  986. package/dist/agents/skills/codex/api-backward-compatibility/SKILL.md +170 -0
  987. package/dist/agents/skills/codex/api-backward-compatibility/skill.yaml +39 -0
  988. package/dist/agents/skills/codex/api-bulk-operations/SKILL.md +198 -0
  989. package/dist/agents/skills/codex/api-bulk-operations/skill.yaml +39 -0
  990. package/dist/agents/skills/codex/api-conditional-requests/SKILL.md +233 -0
  991. package/dist/agents/skills/codex/api-conditional-requests/skill.yaml +41 -0
  992. package/dist/agents/skills/codex/api-content-negotiation/SKILL.md +194 -0
  993. package/dist/agents/skills/codex/api-content-negotiation/skill.yaml +39 -0
  994. package/dist/agents/skills/codex/api-contract-testing/SKILL.md +222 -0
  995. package/dist/agents/skills/codex/api-contract-testing/skill.yaml +42 -0
  996. package/dist/agents/skills/codex/api-deprecation-strategy/SKILL.md +156 -0
  997. package/dist/agents/skills/codex/api-deprecation-strategy/skill.yaml +39 -0
  998. package/dist/agents/skills/codex/api-error-contracts/SKILL.md +149 -0
  999. package/dist/agents/skills/codex/api-error-contracts/skill.yaml +40 -0
  1000. package/dist/agents/skills/codex/api-field-selection/SKILL.md +193 -0
  1001. package/dist/agents/skills/codex/api-field-selection/skill.yaml +39 -0
  1002. package/dist/agents/skills/codex/api-filtering-sorting/SKILL.md +170 -0
  1003. package/dist/agents/skills/codex/api-filtering-sorting/skill.yaml +40 -0
  1004. package/dist/agents/skills/codex/api-hateoas/SKILL.md +212 -0
  1005. package/dist/agents/skills/codex/api-hateoas/skill.yaml +40 -0
  1006. package/dist/agents/skills/codex/api-http-caching/SKILL.md +188 -0
  1007. package/dist/agents/skills/codex/api-http-caching/skill.yaml +43 -0
  1008. package/dist/agents/skills/codex/api-http-methods/SKILL.md +185 -0
  1009. package/dist/agents/skills/codex/api-http-methods/skill.yaml +43 -0
  1010. package/dist/agents/skills/codex/api-idempotency-keys/SKILL.md +176 -0
  1011. package/dist/agents/skills/codex/api-idempotency-keys/skill.yaml +40 -0
  1012. package/dist/agents/skills/codex/api-long-running-operations/SKILL.md +209 -0
  1013. package/dist/agents/skills/codex/api-long-running-operations/skill.yaml +40 -0
  1014. package/dist/agents/skills/codex/api-nested-vs-flat/SKILL.md +173 -0
  1015. package/dist/agents/skills/codex/api-nested-vs-flat/skill.yaml +39 -0
  1016. package/dist/agents/skills/codex/api-oauth2-flows/SKILL.md +150 -0
  1017. package/dist/agents/skills/codex/api-oauth2-flows/skill.yaml +42 -0
  1018. package/dist/agents/skills/codex/api-openapi-design/SKILL.md +260 -0
  1019. package/dist/agents/skills/codex/api-openapi-design/skill.yaml +44 -0
  1020. package/dist/agents/skills/codex/api-pagination-cursor/SKILL.md +159 -0
  1021. package/dist/agents/skills/codex/api-pagination-cursor/skill.yaml +40 -0
  1022. package/dist/agents/skills/codex/api-pagination-keyset/SKILL.md +167 -0
  1023. package/dist/agents/skills/codex/api-pagination-keyset/skill.yaml +39 -0
  1024. package/dist/agents/skills/codex/api-pagination-offset/SKILL.md +135 -0
  1025. package/dist/agents/skills/codex/api-pagination-offset/skill.yaml +39 -0
  1026. package/dist/agents/skills/codex/api-problem-details-rfc/SKILL.md +164 -0
  1027. package/dist/agents/skills/codex/api-problem-details-rfc/skill.yaml +38 -0
  1028. package/dist/agents/skills/codex/api-rate-limit-headers/SKILL.md +144 -0
  1029. package/dist/agents/skills/codex/api-rate-limit-headers/skill.yaml +39 -0
  1030. package/dist/agents/skills/codex/api-rate-limiting/SKILL.md +131 -0
  1031. package/dist/agents/skills/codex/api-rate-limiting/skill.yaml +41 -0
  1032. package/dist/agents/skills/codex/api-resource-granularity/SKILL.md +165 -0
  1033. package/dist/agents/skills/codex/api-resource-granularity/skill.yaml +40 -0
  1034. package/dist/agents/skills/codex/api-resource-modeling/SKILL.md +155 -0
  1035. package/dist/agents/skills/codex/api-resource-modeling/skill.yaml +40 -0
  1036. package/dist/agents/skills/codex/api-rest-maturity-model/SKILL.md +215 -0
  1037. package/dist/agents/skills/codex/api-rest-maturity-model/skill.yaml +39 -0
  1038. package/dist/agents/skills/codex/api-retry-guidance/SKILL.md +168 -0
  1039. package/dist/agents/skills/codex/api-retry-guidance/skill.yaml +41 -0
  1040. package/dist/agents/skills/codex/api-sdk-ergonomics/SKILL.md +194 -0
  1041. package/dist/agents/skills/codex/api-sdk-ergonomics/skill.yaml +43 -0
  1042. package/dist/agents/skills/codex/api-status-codes/SKILL.md +196 -0
  1043. package/dist/agents/skills/codex/api-status-codes/skill.yaml +46 -0
  1044. package/dist/agents/skills/codex/api-validation-errors/SKILL.md +174 -0
  1045. package/dist/agents/skills/codex/api-validation-errors/skill.yaml +40 -0
  1046. package/dist/agents/skills/codex/api-versioning-header/SKILL.md +177 -0
  1047. package/dist/agents/skills/codex/api-versioning-header/skill.yaml +37 -0
  1048. package/dist/agents/skills/codex/api-versioning-url/SKILL.md +128 -0
  1049. package/dist/agents/skills/codex/api-versioning-url/skill.yaml +39 -0
  1050. package/dist/agents/skills/codex/api-webhook-design/SKILL.md +165 -0
  1051. package/dist/agents/skills/codex/api-webhook-design/skill.yaml +41 -0
  1052. package/dist/agents/skills/codex/api-webhook-security/SKILL.md +176 -0
  1053. package/dist/agents/skills/codex/api-webhook-security/skill.yaml +41 -0
  1054. package/dist/agents/skills/codex/astro-component-pattern/skill.yaml +1 -0
  1055. package/dist/agents/skills/codex/astro-content-collections/skill.yaml +1 -0
  1056. package/dist/agents/skills/codex/astro-deployment-config/skill.yaml +1 -0
  1057. package/dist/agents/skills/codex/astro-image-optimization/skill.yaml +1 -0
  1058. package/dist/agents/skills/codex/astro-integration-pattern/skill.yaml +1 -0
  1059. package/dist/agents/skills/codex/astro-islands-architecture/skill.yaml +1 -0
  1060. package/dist/agents/skills/codex/astro-multi-framework/skill.yaml +1 -0
  1061. package/dist/agents/skills/codex/astro-routing-pattern/skill.yaml +1 -0
  1062. package/dist/agents/skills/codex/astro-server-endpoints/skill.yaml +1 -0
  1063. package/dist/agents/skills/codex/astro-ssr-hybrid/skill.yaml +1 -0
  1064. package/dist/agents/skills/codex/astro-view-transitions/skill.yaml +1 -0
  1065. package/dist/agents/skills/codex/check-mechanical-constraints/skill.yaml +1 -0
  1066. package/dist/agents/skills/codex/cleanup-dead-code/skill.yaml +1 -0
  1067. package/dist/agents/skills/codex/css-animation-pattern/skill.yaml +1 -0
  1068. package/dist/agents/skills/codex/css-component-variants/skill.yaml +1 -0
  1069. package/dist/agents/skills/codex/css-css-modules/skill.yaml +1 -0
  1070. package/dist/agents/skills/codex/css-custom-components/skill.yaml +1 -0
  1071. package/dist/agents/skills/codex/css-dark-mode/skill.yaml +1 -0
  1072. package/dist/agents/skills/codex/css-design-tokens/skill.yaml +1 -0
  1073. package/dist/agents/skills/codex/css-headless-ui/skill.yaml +1 -0
  1074. package/dist/agents/skills/codex/css-layout-patterns/skill.yaml +1 -0
  1075. package/dist/agents/skills/codex/css-performance-patterns/skill.yaml +6 -0
  1076. package/dist/agents/skills/codex/css-responsive-design/skill.yaml +1 -0
  1077. package/dist/agents/skills/codex/css-tailwind-merge/skill.yaml +1 -0
  1078. package/dist/agents/skills/codex/css-tailwind-pattern/skill.yaml +1 -0
  1079. package/dist/agents/skills/codex/db-acid-in-practice/SKILL.md +215 -0
  1080. package/dist/agents/skills/codex/db-acid-in-practice/skill.yaml +38 -0
  1081. package/dist/agents/skills/codex/db-acid-properties/SKILL.md +190 -0
  1082. package/dist/agents/skills/codex/db-acid-properties/skill.yaml +38 -0
  1083. package/dist/agents/skills/codex/db-adjacency-list/SKILL.md +199 -0
  1084. package/dist/agents/skills/codex/db-adjacency-list/skill.yaml +40 -0
  1085. package/dist/agents/skills/codex/db-audit-trail/SKILL.md +244 -0
  1086. package/dist/agents/skills/codex/db-audit-trail/skill.yaml +41 -0
  1087. package/dist/agents/skills/codex/db-btree-index/SKILL.md +182 -0
  1088. package/dist/agents/skills/codex/db-btree-index/skill.yaml +44 -0
  1089. package/dist/agents/skills/codex/db-cap-theorem/SKILL.md +156 -0
  1090. package/dist/agents/skills/codex/db-cap-theorem/skill.yaml +38 -0
  1091. package/dist/agents/skills/codex/db-closure-table/SKILL.md +197 -0
  1092. package/dist/agents/skills/codex/db-closure-table/skill.yaml +38 -0
  1093. package/dist/agents/skills/codex/db-composite-index/SKILL.md +199 -0
  1094. package/dist/agents/skills/codex/db-composite-index/skill.yaml +41 -0
  1095. package/dist/agents/skills/codex/db-connection-pooling/SKILL.md +196 -0
  1096. package/dist/agents/skills/codex/db-connection-pooling/skill.yaml +39 -0
  1097. package/dist/agents/skills/codex/db-connection-sizing/SKILL.md +236 -0
  1098. package/dist/agents/skills/codex/db-connection-sizing/skill.yaml +38 -0
  1099. package/dist/agents/skills/codex/db-covering-index/SKILL.md +203 -0
  1100. package/dist/agents/skills/codex/db-covering-index/skill.yaml +40 -0
  1101. package/dist/agents/skills/codex/db-deadlock-prevention/SKILL.md +204 -0
  1102. package/dist/agents/skills/codex/db-deadlock-prevention/skill.yaml +41 -0
  1103. package/dist/agents/skills/codex/db-denormalization/SKILL.md +176 -0
  1104. package/dist/agents/skills/codex/db-denormalization/skill.yaml +38 -0
  1105. package/dist/agents/skills/codex/db-document-in-relational/SKILL.md +225 -0
  1106. package/dist/agents/skills/codex/db-document-in-relational/skill.yaml +42 -0
  1107. package/dist/agents/skills/codex/db-entity-attribute-value/SKILL.md +186 -0
  1108. package/dist/agents/skills/codex/db-entity-attribute-value/skill.yaml +39 -0
  1109. package/dist/agents/skills/codex/db-eventual-consistency/SKILL.md +226 -0
  1110. package/dist/agents/skills/codex/db-eventual-consistency/skill.yaml +38 -0
  1111. package/dist/agents/skills/codex/db-expand-contract/SKILL.md +199 -0
  1112. package/dist/agents/skills/codex/db-expand-contract/skill.yaml +40 -0
  1113. package/dist/agents/skills/codex/db-explain-reading/SKILL.md +213 -0
  1114. package/dist/agents/skills/codex/db-explain-reading/skill.yaml +44 -0
  1115. package/dist/agents/skills/codex/db-expression-index/SKILL.md +211 -0
  1116. package/dist/agents/skills/codex/db-expression-index/skill.yaml +40 -0
  1117. package/dist/agents/skills/codex/db-first-normal-form/SKILL.md +190 -0
  1118. package/dist/agents/skills/codex/db-first-normal-form/skill.yaml +38 -0
  1119. package/dist/agents/skills/codex/db-graph-in-relational/SKILL.md +212 -0
  1120. package/dist/agents/skills/codex/db-graph-in-relational/skill.yaml +41 -0
  1121. package/dist/agents/skills/codex/db-hash-index/SKILL.md +176 -0
  1122. package/dist/agents/skills/codex/db-hash-index/skill.yaml +37 -0
  1123. package/dist/agents/skills/codex/db-hierarchical-data/SKILL.md +194 -0
  1124. package/dist/agents/skills/codex/db-hierarchical-data/skill.yaml +41 -0
  1125. package/dist/agents/skills/codex/db-horizontal-sharding/SKILL.md +228 -0
  1126. package/dist/agents/skills/codex/db-horizontal-sharding/skill.yaml +40 -0
  1127. package/dist/agents/skills/codex/db-isolation-levels/SKILL.md +158 -0
  1128. package/dist/agents/skills/codex/db-isolation-levels/skill.yaml +43 -0
  1129. package/dist/agents/skills/codex/db-isolation-selection/SKILL.md +160 -0
  1130. package/dist/agents/skills/codex/db-isolation-selection/skill.yaml +41 -0
  1131. package/dist/agents/skills/codex/db-migration-rollback/SKILL.md +223 -0
  1132. package/dist/agents/skills/codex/db-migration-rollback/skill.yaml +40 -0
  1133. package/dist/agents/skills/codex/db-mvcc/SKILL.md +191 -0
  1134. package/dist/agents/skills/codex/db-mvcc/skill.yaml +45 -0
  1135. package/dist/agents/skills/codex/db-nested-sets/SKILL.md +171 -0
  1136. package/dist/agents/skills/codex/db-nested-sets/skill.yaml +38 -0
  1137. package/dist/agents/skills/codex/db-optimistic-locking/SKILL.md +151 -0
  1138. package/dist/agents/skills/codex/db-optimistic-locking/skill.yaml +44 -0
  1139. package/dist/agents/skills/codex/db-partial-index/SKILL.md +196 -0
  1140. package/dist/agents/skills/codex/db-partial-index/skill.yaml +39 -0
  1141. package/dist/agents/skills/codex/db-pessimistic-locking/SKILL.md +158 -0
  1142. package/dist/agents/skills/codex/db-pessimistic-locking/skill.yaml +44 -0
  1143. package/dist/agents/skills/codex/db-polymorphic-associations/SKILL.md +187 -0
  1144. package/dist/agents/skills/codex/db-polymorphic-associations/skill.yaml +42 -0
  1145. package/dist/agents/skills/codex/db-query-rewriting/SKILL.md +249 -0
  1146. package/dist/agents/skills/codex/db-query-rewriting/skill.yaml +43 -0
  1147. package/dist/agents/skills/codex/db-query-statistics/SKILL.md +210 -0
  1148. package/dist/agents/skills/codex/db-query-statistics/skill.yaml +41 -0
  1149. package/dist/agents/skills/codex/db-read-phenomena/SKILL.md +205 -0
  1150. package/dist/agents/skills/codex/db-read-phenomena/skill.yaml +42 -0
  1151. package/dist/agents/skills/codex/db-scan-types/SKILL.md +248 -0
  1152. package/dist/agents/skills/codex/db-scan-types/skill.yaml +41 -0
  1153. package/dist/agents/skills/codex/db-second-normal-form/SKILL.md +183 -0
  1154. package/dist/agents/skills/codex/db-second-normal-form/skill.yaml +38 -0
  1155. package/dist/agents/skills/codex/db-table-partitioning/SKILL.md +229 -0
  1156. package/dist/agents/skills/codex/db-table-partitioning/skill.yaml +39 -0
  1157. package/dist/agents/skills/codex/db-temporal-data/SKILL.md +194 -0
  1158. package/dist/agents/skills/codex/db-temporal-data/skill.yaml +41 -0
  1159. package/dist/agents/skills/codex/db-third-normal-form/SKILL.md +210 -0
  1160. package/dist/agents/skills/codex/db-third-normal-form/skill.yaml +38 -0
  1161. package/dist/agents/skills/codex/db-time-series/SKILL.md +196 -0
  1162. package/dist/agents/skills/codex/db-time-series/skill.yaml +41 -0
  1163. package/dist/agents/skills/codex/db-vertical-partitioning/SKILL.md +249 -0
  1164. package/dist/agents/skills/codex/db-vertical-partitioning/skill.yaml +40 -0
  1165. package/dist/agents/skills/codex/db-zero-downtime-migration/SKILL.md +199 -0
  1166. package/dist/agents/skills/codex/db-zero-downtime-migration/skill.yaml +42 -0
  1167. package/dist/agents/skills/codex/design-affordances/skill.yaml +1 -0
  1168. package/dist/agents/skills/codex/design-alignment/skill.yaml +1 -0
  1169. package/dist/agents/skills/codex/design-apple-hig/skill.yaml +1 -0
  1170. package/dist/agents/skills/codex/design-atomic-design/skill.yaml +1 -0
  1171. package/dist/agents/skills/codex/design-brand-consistency/skill.yaml +1 -0
  1172. package/dist/agents/skills/codex/design-color-accessibility/skill.yaml +1 -0
  1173. package/dist/agents/skills/codex/design-color-harmony/skill.yaml +1 -0
  1174. package/dist/agents/skills/codex/design-color-psychology/skill.yaml +1 -0
  1175. package/dist/agents/skills/codex/design-component-anatomy/skill.yaml +1 -0
  1176. package/dist/agents/skills/codex/design-consistency/skill.yaml +1 -0
  1177. package/dist/agents/skills/codex/design-content-density/skill.yaml +1 -0
  1178. package/dist/agents/skills/codex/design-contrast-ratio/skill.yaml +1 -0
  1179. package/dist/agents/skills/codex/design-dark-mode-color/skill.yaml +1 -0
  1180. package/dist/agents/skills/codex/design-data-viz-design/skill.yaml +1 -0
  1181. package/dist/agents/skills/codex/design-design-audit/skill.yaml +1 -0
  1182. package/dist/agents/skills/codex/design-design-critique/skill.yaml +1 -0
  1183. package/dist/agents/skills/codex/design-design-documentation/skill.yaml +1 -0
  1184. package/dist/agents/skills/codex/design-design-governance/skill.yaml +1 -0
  1185. package/dist/agents/skills/codex/design-elevation-shadow/skill.yaml +1 -0
  1186. package/dist/agents/skills/codex/design-empty-error-states/skill.yaml +3 -0
  1187. package/dist/agents/skills/codex/design-feedback-patterns/skill.yaml +5 -0
  1188. package/dist/agents/skills/codex/design-fluent-design/skill.yaml +1 -0
  1189. package/dist/agents/skills/codex/design-font-pairing/skill.yaml +1 -0
  1190. package/dist/agents/skills/codex/design-form-ux/skill.yaml +2 -0
  1191. package/dist/agents/skills/codex/design-gestalt-closure-continuity/skill.yaml +1 -0
  1192. package/dist/agents/skills/codex/design-gestalt-common-fate/skill.yaml +1 -0
  1193. package/dist/agents/skills/codex/design-gestalt-figure-ground/skill.yaml +1 -0
  1194. package/dist/agents/skills/codex/design-gestalt-proximity/skill.yaml +1 -0
  1195. package/dist/agents/skills/codex/design-gestalt-similarity/skill.yaml +1 -0
  1196. package/dist/agents/skills/codex/design-grid-systems/skill.yaml +1 -0
  1197. package/dist/agents/skills/codex/design-i18n-design/skill.yaml +2 -0
  1198. package/dist/agents/skills/codex/design-iconography/skill.yaml +1 -0
  1199. package/dist/agents/skills/codex/design-illustration-style/skill.yaml +1 -0
  1200. package/dist/agents/skills/codex/design-imagery-photography/skill.yaml +1 -0
  1201. package/dist/agents/skills/codex/design-information-architecture/skill.yaml +3 -0
  1202. package/dist/agents/skills/codex/design-loading-patterns/skill.yaml +2 -0
  1203. package/dist/agents/skills/codex/design-material-design-3/skill.yaml +1 -0
  1204. package/dist/agents/skills/codex/design-micro-interactions/skill.yaml +1 -0
  1205. package/dist/agents/skills/codex/design-motion-principles/skill.yaml +1 -0
  1206. package/dist/agents/skills/codex/design-naming-conventions/skill.yaml +1 -0
  1207. package/dist/agents/skills/codex/design-navigation-ux/skill.yaml +2 -0
  1208. package/dist/agents/skills/codex/design-palette-construction/skill.yaml +1 -0
  1209. package/dist/agents/skills/codex/design-parallax-scroll/skill.yaml +1 -0
  1210. package/dist/agents/skills/codex/design-readability/skill.yaml +3 -0
  1211. package/dist/agents/skills/codex/design-responsive-strategy/skill.yaml +1 -0
  1212. package/dist/agents/skills/codex/design-responsive-type/skill.yaml +1 -0
  1213. package/dist/agents/skills/codex/design-state-design/skill.yaml +1 -0
  1214. package/dist/agents/skills/codex/design-token-architecture/skill.yaml +1 -0
  1215. package/dist/agents/skills/codex/design-transitions-timing/skill.yaml +1 -0
  1216. package/dist/agents/skills/codex/design-type-scale/skill.yaml +1 -0
  1217. package/dist/agents/skills/codex/design-typographic-hierarchy/skill.yaml +1 -0
  1218. package/dist/agents/skills/codex/design-typography-fundamentals/skill.yaml +1 -0
  1219. package/dist/agents/skills/codex/design-visual-hierarchy/skill.yaml +1 -0
  1220. package/dist/agents/skills/codex/design-web-fonts/skill.yaml +1 -0
  1221. package/dist/agents/skills/codex/design-whitespace/skill.yaml +1 -0
  1222. package/dist/agents/skills/codex/detect-doc-drift/skill.yaml +1 -0
  1223. package/dist/agents/skills/codex/drizzle-filtering-pattern/skill.yaml +1 -0
  1224. package/dist/agents/skills/codex/drizzle-migrations/skill.yaml +3 -0
  1225. package/dist/agents/skills/codex/drizzle-performance-patterns/skill.yaml +8 -0
  1226. package/dist/agents/skills/codex/drizzle-query-builder/skill.yaml +1 -0
  1227. package/dist/agents/skills/codex/drizzle-raw-sql/skill.yaml +1 -0
  1228. package/dist/agents/skills/codex/drizzle-relations-pattern/skill.yaml +1 -0
  1229. package/dist/agents/skills/codex/drizzle-schema-definition/skill.yaml +4 -0
  1230. package/dist/agents/skills/codex/drizzle-transactions/skill.yaml +4 -0
  1231. package/dist/agents/skills/codex/drizzle-with-nextjs/skill.yaml +1 -0
  1232. package/dist/agents/skills/codex/enforce-architecture/skill.yaml +1 -0
  1233. package/dist/agents/skills/codex/events-event-schema/skill.yaml +1 -0
  1234. package/dist/agents/skills/codex/events-event-storming/skill.yaml +1 -0
  1235. package/dist/agents/skills/codex/events-idempotency/SKILL.md +1 -0
  1236. package/dist/agents/skills/codex/events-idempotency/skill.yaml +2 -0
  1237. package/dist/agents/skills/codex/events-kafka-patterns/skill.yaml +1 -0
  1238. package/dist/agents/skills/codex/events-message-queue/skill.yaml +1 -0
  1239. package/dist/agents/skills/codex/events-outbox-pattern/skill.yaml +1 -0
  1240. package/dist/agents/skills/codex/events-pubsub-pattern/skill.yaml +1 -0
  1241. package/dist/agents/skills/codex/events-redis-pubsub/skill.yaml +1 -0
  1242. package/dist/agents/skills/codex/events-saga-choreography/skill.yaml +1 -0
  1243. package/dist/agents/skills/codex/events-sse-pattern/skill.yaml +1 -0
  1244. package/dist/agents/skills/codex/events-webhooks-pattern/SKILL.md +1 -0
  1245. package/dist/agents/skills/codex/events-webhooks-pattern/skill.yaml +3 -0
  1246. package/dist/agents/skills/codex/events-websocket-pattern/skill.yaml +1 -0
  1247. package/dist/agents/skills/codex/gof-abstract-factory/skill.yaml +1 -0
  1248. package/dist/agents/skills/codex/gof-adapter-pattern/skill.yaml +1 -0
  1249. package/dist/agents/skills/codex/gof-bridge-pattern/skill.yaml +1 -0
  1250. package/dist/agents/skills/codex/gof-builder-pattern/skill.yaml +1 -0
  1251. package/dist/agents/skills/codex/gof-chain-of-responsibility/skill.yaml +1 -0
  1252. package/dist/agents/skills/codex/gof-command-pattern/skill.yaml +1 -0
  1253. package/dist/agents/skills/codex/gof-composite-pattern/skill.yaml +1 -0
  1254. package/dist/agents/skills/codex/gof-decorator-pattern/skill.yaml +1 -0
  1255. package/dist/agents/skills/codex/gof-facade-pattern/skill.yaml +1 -0
  1256. package/dist/agents/skills/codex/gof-factory-method/skill.yaml +1 -0
  1257. package/dist/agents/skills/codex/gof-flyweight-pattern/skill.yaml +1 -0
  1258. package/dist/agents/skills/codex/gof-iterator-pattern/skill.yaml +1 -0
  1259. package/dist/agents/skills/codex/gof-mediator-pattern/skill.yaml +1 -0
  1260. package/dist/agents/skills/codex/gof-memento-pattern/skill.yaml +1 -0
  1261. package/dist/agents/skills/codex/gof-null-object/skill.yaml +1 -0
  1262. package/dist/agents/skills/codex/gof-observer-pattern/skill.yaml +1 -0
  1263. package/dist/agents/skills/codex/gof-prototype-pattern/skill.yaml +1 -0
  1264. package/dist/agents/skills/codex/gof-proxy-pattern/skill.yaml +1 -0
  1265. package/dist/agents/skills/codex/gof-singleton/skill.yaml +1 -0
  1266. package/dist/agents/skills/codex/gof-state-pattern/skill.yaml +1 -0
  1267. package/dist/agents/skills/codex/gof-strategy-pattern/skill.yaml +1 -0
  1268. package/dist/agents/skills/codex/gof-template-method/skill.yaml +1 -0
  1269. package/dist/agents/skills/codex/gof-visitor-pattern/skill.yaml +1 -0
  1270. package/dist/agents/skills/codex/graphql-apollo-server/skill.yaml +1 -0
  1271. package/dist/agents/skills/codex/graphql-auth-patterns/SKILL.md +1 -0
  1272. package/dist/agents/skills/codex/graphql-auth-patterns/skill.yaml +3 -0
  1273. package/dist/agents/skills/codex/graphql-client-patterns/skill.yaml +1 -0
  1274. package/dist/agents/skills/codex/graphql-codegen-pattern/skill.yaml +1 -0
  1275. package/dist/agents/skills/codex/graphql-dataloader-pattern/skill.yaml +1 -0
  1276. package/dist/agents/skills/codex/graphql-error-handling/SKILL.md +1 -0
  1277. package/dist/agents/skills/codex/graphql-error-handling/skill.yaml +3 -0
  1278. package/dist/agents/skills/codex/graphql-federation-pattern/skill.yaml +1 -0
  1279. package/dist/agents/skills/codex/graphql-pagination-patterns/SKILL.md +1 -0
  1280. package/dist/agents/skills/codex/graphql-pagination-patterns/skill.yaml +4 -0
  1281. package/dist/agents/skills/codex/graphql-performance-patterns/skill.yaml +6 -0
  1282. package/dist/agents/skills/codex/graphql-resolver-pattern/skill.yaml +1 -0
  1283. package/dist/agents/skills/codex/graphql-schema-design/SKILL.md +1 -0
  1284. package/dist/agents/skills/codex/graphql-schema-design/skill.yaml +3 -0
  1285. package/dist/agents/skills/codex/graphql-subscriptions/skill.yaml +1 -0
  1286. package/dist/agents/skills/codex/harness-accessibility/skill.yaml +1 -0
  1287. package/dist/agents/skills/codex/harness-api-design/skill.yaml +1 -0
  1288. package/dist/agents/skills/codex/harness-architecture-advisor/skill.yaml +1 -0
  1289. package/dist/agents/skills/codex/harness-auth/skill.yaml +1 -0
  1290. package/dist/agents/skills/codex/harness-autopilot/SKILL.md +171 -822
  1291. package/dist/agents/skills/codex/harness-autopilot/skill.yaml +1 -0
  1292. package/dist/agents/skills/codex/harness-brainstorming/SKILL.md +145 -195
  1293. package/dist/agents/skills/codex/harness-brainstorming/skill.yaml +4 -0
  1294. package/dist/agents/skills/codex/harness-caching/skill.yaml +1 -0
  1295. package/dist/agents/skills/codex/harness-chaos/skill.yaml +1 -0
  1296. package/dist/agents/skills/codex/harness-code-review/SKILL.md +267 -436
  1297. package/dist/agents/skills/codex/harness-code-review/skill.yaml +7 -0
  1298. package/dist/agents/skills/codex/harness-codebase-cleanup/skill.yaml +1 -0
  1299. package/dist/agents/skills/codex/harness-compliance/skill.yaml +1 -0
  1300. package/dist/agents/skills/codex/harness-containerization/skill.yaml +1 -0
  1301. package/dist/agents/skills/codex/harness-data-pipeline/skill.yaml +1 -0
  1302. package/dist/agents/skills/codex/harness-data-validation/skill.yaml +1 -0
  1303. package/dist/agents/skills/codex/harness-database/skill.yaml +1 -0
  1304. package/dist/agents/skills/codex/harness-debugging/skill.yaml +1 -0
  1305. package/dist/agents/skills/codex/harness-dependency-health/skill.yaml +1 -0
  1306. package/dist/agents/skills/codex/harness-deployment/skill.yaml +1 -0
  1307. package/dist/agents/skills/codex/harness-design/skill.yaml +1 -0
  1308. package/dist/agents/skills/codex/harness-design-mobile/skill.yaml +1 -0
  1309. package/dist/agents/skills/codex/harness-design-system/skill.yaml +1 -0
  1310. package/dist/agents/skills/codex/harness-design-web/skill.yaml +1 -0
  1311. package/dist/agents/skills/codex/harness-diagnostics/skill.yaml +1 -0
  1312. package/dist/agents/skills/codex/harness-docs-pipeline/skill.yaml +1 -0
  1313. package/dist/agents/skills/codex/harness-dx/skill.yaml +1 -0
  1314. package/dist/agents/skills/codex/harness-e2e/skill.yaml +1 -0
  1315. package/dist/agents/skills/codex/harness-event-driven/skill.yaml +1 -0
  1316. package/dist/agents/skills/codex/harness-execution/SKILL.md +180 -271
  1317. package/dist/agents/skills/codex/harness-execution/skill.yaml +13 -0
  1318. package/dist/agents/skills/codex/harness-feature-flags/skill.yaml +1 -0
  1319. package/dist/agents/skills/codex/harness-git-workflow/skill.yaml +1 -0
  1320. package/dist/agents/skills/codex/harness-hotspot-detector/skill.yaml +1 -0
  1321. package/dist/agents/skills/codex/harness-i18n/skill.yaml +1 -0
  1322. package/dist/agents/skills/codex/harness-i18n-process/skill.yaml +1 -0
  1323. package/dist/agents/skills/codex/harness-i18n-workflow/skill.yaml +1 -0
  1324. package/dist/agents/skills/codex/harness-impact-analysis/skill.yaml +1 -0
  1325. package/dist/agents/skills/codex/harness-incident-response/skill.yaml +1 -0
  1326. package/dist/agents/skills/codex/harness-infrastructure-as-code/skill.yaml +1 -0
  1327. package/dist/agents/skills/codex/harness-integration-test/skill.yaml +1 -0
  1328. package/dist/agents/skills/codex/harness-integrity/skill.yaml +1 -0
  1329. package/dist/agents/skills/codex/harness-knowledge-mapper/skill.yaml +1 -0
  1330. package/dist/agents/skills/codex/harness-load-testing/skill.yaml +1 -0
  1331. package/dist/agents/skills/codex/harness-ml-ops/skill.yaml +1 -0
  1332. package/dist/agents/skills/codex/harness-mobile-patterns/skill.yaml +1 -0
  1333. package/dist/agents/skills/codex/harness-mutation-test/skill.yaml +1 -0
  1334. package/dist/agents/skills/codex/harness-observability/skill.yaml +1 -0
  1335. package/dist/agents/skills/codex/harness-onboarding/skill.yaml +1 -0
  1336. package/dist/agents/skills/codex/harness-parallel-agents/skill.yaml +1 -0
  1337. package/dist/agents/skills/codex/harness-perf/skill.yaml +1 -0
  1338. package/dist/agents/skills/codex/harness-perf-tdd/skill.yaml +1 -0
  1339. package/dist/agents/skills/codex/harness-planning/SKILL.md +142 -322
  1340. package/dist/agents/skills/codex/harness-planning/skill.yaml +7 -0
  1341. package/dist/agents/skills/codex/harness-pre-commit-review/skill.yaml +1 -0
  1342. package/dist/agents/skills/codex/harness-product-spec/skill.yaml +1 -0
  1343. package/dist/agents/skills/codex/harness-property-test/skill.yaml +1 -0
  1344. package/dist/agents/skills/codex/harness-refactoring/skill.yaml +1 -0
  1345. package/dist/agents/skills/codex/harness-release-readiness/skill.yaml +1 -0
  1346. package/dist/agents/skills/codex/harness-resilience/skill.yaml +1 -0
  1347. package/dist/agents/skills/codex/harness-roadmap/skill.yaml +1 -0
  1348. package/dist/agents/skills/codex/harness-roadmap-pilot/skill.yaml +1 -0
  1349. package/dist/agents/skills/codex/harness-router/SKILL.md +69 -123
  1350. package/dist/agents/skills/codex/harness-router/skill.yaml +1 -0
  1351. package/dist/agents/skills/codex/harness-secrets/SKILL.md +3 -3
  1352. package/dist/agents/skills/codex/harness-secrets/skill.yaml +1 -0
  1353. package/dist/agents/skills/codex/harness-security-review/skill.yaml +6 -0
  1354. package/dist/agents/skills/codex/harness-security-scan/skill.yaml +7 -0
  1355. package/dist/agents/skills/codex/harness-skill-authoring/skill.yaml +1 -0
  1356. package/dist/agents/skills/codex/harness-soundness-review/SKILL.md +483 -667
  1357. package/dist/agents/skills/codex/harness-soundness-review/skill.yaml +1 -0
  1358. package/dist/agents/skills/codex/harness-sql-review/skill.yaml +1 -0
  1359. package/dist/agents/skills/codex/harness-state-management/skill.yaml +1 -0
  1360. package/dist/agents/skills/codex/harness-supply-chain-audit/skill.yaml +1 -0
  1361. package/dist/agents/skills/codex/harness-tdd/skill.yaml +1 -0
  1362. package/dist/agents/skills/codex/harness-test-advisor/skill.yaml +1 -0
  1363. package/dist/agents/skills/codex/harness-test-data/skill.yaml +1 -0
  1364. package/dist/agents/skills/codex/harness-ux-copy/skill.yaml +13 -0
  1365. package/dist/agents/skills/codex/harness-verification/SKILL.md +135 -221
  1366. package/dist/agents/skills/codex/harness-verification/skill.yaml +4 -0
  1367. package/dist/agents/skills/codex/harness-verify/skill.yaml +1 -0
  1368. package/dist/agents/skills/codex/harness-visual-regression/skill.yaml +1 -0
  1369. package/dist/agents/skills/codex/initialize-harness-project/skill.yaml +1 -0
  1370. package/dist/agents/skills/codex/js-abstract-factory-pattern/skill.yaml +1 -0
  1371. package/dist/agents/skills/codex/js-adapter-pattern/skill.yaml +1 -0
  1372. package/dist/agents/skills/codex/js-bridge-pattern/skill.yaml +1 -0
  1373. package/dist/agents/skills/codex/js-chain-of-responsibility-pattern/skill.yaml +1 -0
  1374. package/dist/agents/skills/codex/js-command-pattern/skill.yaml +1 -0
  1375. package/dist/agents/skills/codex/js-composite-pattern/skill.yaml +1 -0
  1376. package/dist/agents/skills/codex/js-constructor-pattern/skill.yaml +1 -0
  1377. package/dist/agents/skills/codex/js-decorator-pattern/skill.yaml +1 -0
  1378. package/dist/agents/skills/codex/js-dynamic-import/skill.yaml +1 -0
  1379. package/dist/agents/skills/codex/js-facade-pattern/skill.yaml +1 -0
  1380. package/dist/agents/skills/codex/js-factory-pattern/skill.yaml +1 -0
  1381. package/dist/agents/skills/codex/js-flyweight-pattern/skill.yaml +1 -0
  1382. package/dist/agents/skills/codex/js-iterator-pattern/skill.yaml +1 -0
  1383. package/dist/agents/skills/codex/js-mediator-middleware-pattern/skill.yaml +1 -0
  1384. package/dist/agents/skills/codex/js-mixin-pattern/skill.yaml +1 -0
  1385. package/dist/agents/skills/codex/js-module-pattern/skill.yaml +1 -0
  1386. package/dist/agents/skills/codex/js-observer-pattern/skill.yaml +1 -0
  1387. package/dist/agents/skills/codex/js-prototype-pattern/skill.yaml +1 -0
  1388. package/dist/agents/skills/codex/js-provider-pattern/skill.yaml +1 -0
  1389. package/dist/agents/skills/codex/js-proxy-pattern/skill.yaml +1 -0
  1390. package/dist/agents/skills/codex/js-revealing-module-pattern/skill.yaml +1 -0
  1391. package/dist/agents/skills/codex/js-singleton-pattern/skill.yaml +1 -0
  1392. package/dist/agents/skills/codex/js-state-pattern/skill.yaml +1 -0
  1393. package/dist/agents/skills/codex/js-static-import/skill.yaml +1 -0
  1394. package/dist/agents/skills/codex/js-strategy-pattern/skill.yaml +1 -0
  1395. package/dist/agents/skills/codex/js-template-method-pattern/skill.yaml +1 -0
  1396. package/dist/agents/skills/codex/js-visitor-pattern/skill.yaml +1 -0
  1397. package/dist/agents/skills/codex/microservices-api-gateway/skill.yaml +1 -0
  1398. package/dist/agents/skills/codex/microservices-bulkhead-pattern/skill.yaml +1 -0
  1399. package/dist/agents/skills/codex/microservices-circuit-breaker/skill.yaml +1 -0
  1400. package/dist/agents/skills/codex/microservices-config-server/SKILL.md +1 -1
  1401. package/dist/agents/skills/codex/microservices-config-server/skill.yaml +1 -0
  1402. package/dist/agents/skills/codex/microservices-cqrs-pattern/skill.yaml +3 -0
  1403. package/dist/agents/skills/codex/microservices-decomposition/skill.yaml +1 -0
  1404. package/dist/agents/skills/codex/microservices-distributed-tracing/skill.yaml +1 -0
  1405. package/dist/agents/skills/codex/microservices-event-sourcing/skill.yaml +3 -0
  1406. package/dist/agents/skills/codex/microservices-health-check/skill.yaml +1 -0
  1407. package/dist/agents/skills/codex/microservices-outbox-pattern/skill.yaml +1 -0
  1408. package/dist/agents/skills/codex/microservices-saga-pattern/skill.yaml +1 -0
  1409. package/dist/agents/skills/codex/microservices-service-discovery/skill.yaml +1 -0
  1410. package/dist/agents/skills/codex/microservices-sidecar-pattern/skill.yaml +1 -0
  1411. package/dist/agents/skills/codex/microservices-strangler-fig/skill.yaml +1 -0
  1412. package/dist/agents/skills/codex/mobile-animation-patterns/skill.yaml +1 -0
  1413. package/dist/agents/skills/codex/mobile-deployment-patterns/skill.yaml +1 -0
  1414. package/dist/agents/skills/codex/mobile-expo-setup/skill.yaml +1 -0
  1415. package/dist/agents/skills/codex/mobile-flatlist-patterns/skill.yaml +1 -0
  1416. package/dist/agents/skills/codex/mobile-gesture-handling/skill.yaml +1 -0
  1417. package/dist/agents/skills/codex/mobile-native-modules/skill.yaml +1 -0
  1418. package/dist/agents/skills/codex/mobile-navigation-pattern/skill.yaml +1 -0
  1419. package/dist/agents/skills/codex/mobile-network-patterns/skill.yaml +1 -0
  1420. package/dist/agents/skills/codex/mobile-performance-patterns/skill.yaml +6 -0
  1421. package/dist/agents/skills/codex/mobile-push-notifications/skill.yaml +1 -0
  1422. package/dist/agents/skills/codex/mobile-storage-patterns/skill.yaml +1 -0
  1423. package/dist/agents/skills/codex/mobile-testing-patterns/skill.yaml +1 -0
  1424. package/dist/agents/skills/codex/nestjs-config-module/skill.yaml +1 -0
  1425. package/dist/agents/skills/codex/nestjs-controller-pattern/skill.yaml +1 -0
  1426. package/dist/agents/skills/codex/nestjs-dependency-injection/skill.yaml +1 -0
  1427. package/dist/agents/skills/codex/nestjs-dto-validation/skill.yaml +1 -0
  1428. package/dist/agents/skills/codex/nestjs-event-driven/skill.yaml +1 -0
  1429. package/dist/agents/skills/codex/nestjs-exception-filters/skill.yaml +1 -0
  1430. package/dist/agents/skills/codex/nestjs-graphql-integration/skill.yaml +1 -0
  1431. package/dist/agents/skills/codex/nestjs-guards-pattern/skill.yaml +1 -0
  1432. package/dist/agents/skills/codex/nestjs-interceptors-pattern/skill.yaml +1 -0
  1433. package/dist/agents/skills/codex/nestjs-microservices/skill.yaml +1 -0
  1434. package/dist/agents/skills/codex/nestjs-middleware-pattern/skill.yaml +1 -0
  1435. package/dist/agents/skills/codex/nestjs-module-pattern/skill.yaml +1 -0
  1436. package/dist/agents/skills/codex/nestjs-pipes-pattern/skill.yaml +1 -0
  1437. package/dist/agents/skills/codex/nestjs-service-pattern/skill.yaml +1 -0
  1438. package/dist/agents/skills/codex/nestjs-swagger-integration/skill.yaml +1 -0
  1439. package/dist/agents/skills/codex/nestjs-testing-patterns/skill.yaml +1 -0
  1440. package/dist/agents/skills/codex/next-app-router/skill.yaml +1 -0
  1441. package/dist/agents/skills/codex/next-auth-patterns/skill.yaml +1 -0
  1442. package/dist/agents/skills/codex/next-caching-strategies/skill.yaml +1 -0
  1443. package/dist/agents/skills/codex/next-data-fetching/skill.yaml +1 -0
  1444. package/dist/agents/skills/codex/next-deployment-optimization/skill.yaml +1 -0
  1445. package/dist/agents/skills/codex/next-environment-config/skill.yaml +1 -0
  1446. package/dist/agents/skills/codex/next-error-boundaries/skill.yaml +1 -0
  1447. package/dist/agents/skills/codex/next-image-optimization/skill.yaml +1 -0
  1448. package/dist/agents/skills/codex/next-metadata-api/skill.yaml +1 -0
  1449. package/dist/agents/skills/codex/next-middleware-pattern/skill.yaml +1 -0
  1450. package/dist/agents/skills/codex/next-monorepo-setup/skill.yaml +1 -0
  1451. package/dist/agents/skills/codex/next-parallel-intercepting-routes/skill.yaml +1 -0
  1452. package/dist/agents/skills/codex/next-route-handlers/skill.yaml +1 -0
  1453. package/dist/agents/skills/codex/next-server-actions/skill.yaml +1 -0
  1454. package/dist/agents/skills/codex/next-server-components/skill.yaml +1 -0
  1455. package/dist/agents/skills/codex/next-static-generation/skill.yaml +1 -0
  1456. package/dist/agents/skills/codex/next-streaming-suspense/skill.yaml +1 -0
  1457. package/dist/agents/skills/codex/next-testing-patterns/skill.yaml +1 -0
  1458. package/dist/agents/skills/codex/node-buffer-encoding/skill.yaml +1 -0
  1459. package/dist/agents/skills/codex/node-child-process/skill.yaml +1 -0
  1460. package/dist/agents/skills/codex/node-crypto-patterns/skill.yaml +1 -0
  1461. package/dist/agents/skills/codex/node-environment-config/skill.yaml +1 -0
  1462. package/dist/agents/skills/codex/node-error-handling/skill.yaml +1 -0
  1463. package/dist/agents/skills/codex/node-esm-patterns/skill.yaml +1 -0
  1464. package/dist/agents/skills/codex/node-event-emitter/skill.yaml +1 -0
  1465. package/dist/agents/skills/codex/node-express-patterns/skill.yaml +1 -0
  1466. package/dist/agents/skills/codex/node-fastify-patterns/skill.yaml +1 -0
  1467. package/dist/agents/skills/codex/node-http-server/skill.yaml +1 -0
  1468. package/dist/agents/skills/codex/node-path-fs-patterns/skill.yaml +1 -0
  1469. package/dist/agents/skills/codex/node-performance-profiling/skill.yaml +6 -0
  1470. package/dist/agents/skills/codex/node-streams-pattern/skill.yaml +1 -0
  1471. package/dist/agents/skills/codex/node-testing-patterns/skill.yaml +1 -0
  1472. package/dist/agents/skills/codex/node-worker-threads/skill.yaml +1 -0
  1473. package/dist/agents/skills/codex/nuxt-auto-imports/skill.yaml +1 -0
  1474. package/dist/agents/skills/codex/nuxt-composables-pattern/skill.yaml +1 -0
  1475. package/dist/agents/skills/codex/nuxt-deployment-config/skill.yaml +1 -0
  1476. package/dist/agents/skills/codex/nuxt-layouts-pages/skill.yaml +1 -0
  1477. package/dist/agents/skills/codex/nuxt-middleware-pattern/skill.yaml +1 -0
  1478. package/dist/agents/skills/codex/nuxt-modules-pattern/skill.yaml +1 -0
  1479. package/dist/agents/skills/codex/nuxt-plugins-pattern/skill.yaml +1 -0
  1480. package/dist/agents/skills/codex/nuxt-seo-metadata/skill.yaml +1 -0
  1481. package/dist/agents/skills/codex/nuxt-server-routes/skill.yaml +1 -0
  1482. package/dist/agents/skills/codex/nuxt-state-management/skill.yaml +1 -0
  1483. package/dist/agents/skills/codex/nuxt-testing-patterns/skill.yaml +1 -0
  1484. package/dist/agents/skills/codex/otel-context-propagation/skill.yaml +1 -0
  1485. package/dist/agents/skills/codex/otel-custom-instrumentation/skill.yaml +1 -0
  1486. package/dist/agents/skills/codex/otel-error-tracking/skill.yaml +1 -0
  1487. package/dist/agents/skills/codex/otel-exporter-config/skill.yaml +1 -0
  1488. package/dist/agents/skills/codex/otel-logging-pattern/skill.yaml +1 -0
  1489. package/dist/agents/skills/codex/otel-metrics-pattern/skill.yaml +1 -0
  1490. package/dist/agents/skills/codex/otel-nestjs-integration/skill.yaml +1 -0
  1491. package/dist/agents/skills/codex/otel-nextjs-integration/skill.yaml +1 -0
  1492. package/dist/agents/skills/codex/otel-performance-insights/skill.yaml +5 -0
  1493. package/dist/agents/skills/codex/otel-sampling-strategies/skill.yaml +1 -0
  1494. package/dist/agents/skills/codex/otel-sdk-setup/skill.yaml +1 -0
  1495. package/dist/agents/skills/codex/otel-tracing-pattern/skill.yaml +1 -0
  1496. package/dist/agents/skills/codex/owasp-auth-patterns/SKILL.md +1 -0
  1497. package/dist/agents/skills/codex/owasp-auth-patterns/skill.yaml +8 -0
  1498. package/dist/agents/skills/codex/owasp-cryptography/skill.yaml +6 -0
  1499. package/dist/agents/skills/codex/owasp-csrf-protection/skill.yaml +3 -0
  1500. package/dist/agents/skills/codex/owasp-dependency-security/skill.yaml +4 -0
  1501. package/dist/agents/skills/codex/owasp-file-upload-security/skill.yaml +3 -0
  1502. package/dist/agents/skills/codex/owasp-idor-prevention/skill.yaml +4 -0
  1503. package/dist/agents/skills/codex/owasp-injection-prevention/skill.yaml +4 -0
  1504. package/dist/agents/skills/codex/owasp-logging-monitoring/skill.yaml +5 -0
  1505. package/dist/agents/skills/codex/owasp-rate-limiting/SKILL.md +1 -0
  1506. package/dist/agents/skills/codex/owasp-rate-limiting/skill.yaml +5 -0
  1507. package/dist/agents/skills/codex/owasp-secrets-management/SKILL.md +2 -1
  1508. package/dist/agents/skills/codex/owasp-secrets-management/skill.yaml +5 -0
  1509. package/dist/agents/skills/codex/owasp-security-headers/skill.yaml +4 -0
  1510. package/dist/agents/skills/codex/owasp-xss-prevention/skill.yaml +3 -0
  1511. package/dist/agents/skills/codex/perf-browser-cache/SKILL.md +151 -0
  1512. package/dist/agents/skills/codex/perf-browser-cache/skill.yaml +39 -0
  1513. package/dist/agents/skills/codex/perf-bundle-analysis/SKILL.md +217 -0
  1514. package/dist/agents/skills/codex/perf-bundle-analysis/skill.yaml +37 -0
  1515. package/dist/agents/skills/codex/perf-cache-invalidation/SKILL.md +228 -0
  1516. package/dist/agents/skills/codex/perf-cache-invalidation/skill.yaml +38 -0
  1517. package/dist/agents/skills/codex/perf-cdn-cache-control/SKILL.md +198 -0
  1518. package/dist/agents/skills/codex/perf-cdn-cache-control/skill.yaml +40 -0
  1519. package/dist/agents/skills/codex/perf-cdn-strategies/SKILL.md +161 -0
  1520. package/dist/agents/skills/codex/perf-cdn-strategies/skill.yaml +40 -0
  1521. package/dist/agents/skills/codex/perf-client-side-rendering/SKILL.md +245 -0
  1522. package/dist/agents/skills/codex/perf-client-side-rendering/skill.yaml +40 -0
  1523. package/dist/agents/skills/codex/perf-code-splitting/SKILL.md +185 -0
  1524. package/dist/agents/skills/codex/perf-code-splitting/skill.yaml +39 -0
  1525. package/dist/agents/skills/codex/perf-compression/SKILL.md +163 -0
  1526. package/dist/agents/skills/codex/perf-compression/skill.yaml +38 -0
  1527. package/dist/agents/skills/codex/perf-connection-costs/SKILL.md +165 -0
  1528. package/dist/agents/skills/codex/perf-connection-costs/skill.yaml +40 -0
  1529. package/dist/agents/skills/codex/perf-connection-pooling/SKILL.md +250 -0
  1530. package/dist/agents/skills/codex/perf-connection-pooling/skill.yaml +38 -0
  1531. package/dist/agents/skills/codex/perf-critical-rendering-path/SKILL.md +167 -0
  1532. package/dist/agents/skills/codex/perf-critical-rendering-path/skill.yaml +39 -0
  1533. package/dist/agents/skills/codex/perf-cumulative-layout-shift/SKILL.md +180 -0
  1534. package/dist/agents/skills/codex/perf-cumulative-layout-shift/skill.yaml +40 -0
  1535. package/dist/agents/skills/codex/perf-dom-parsing/SKILL.md +153 -0
  1536. package/dist/agents/skills/codex/perf-dom-parsing/skill.yaml +36 -0
  1537. package/dist/agents/skills/codex/perf-edge-rendering/SKILL.md +222 -0
  1538. package/dist/agents/skills/codex/perf-edge-rendering/skill.yaml +39 -0
  1539. package/dist/agents/skills/codex/perf-event-loop/SKILL.md +203 -0
  1540. package/dist/agents/skills/codex/perf-event-loop/skill.yaml +38 -0
  1541. package/dist/agents/skills/codex/perf-font-loading/SKILL.md +222 -0
  1542. package/dist/agents/skills/codex/perf-font-loading/skill.yaml +39 -0
  1543. package/dist/agents/skills/codex/perf-garbage-collection/SKILL.md +192 -0
  1544. package/dist/agents/skills/codex/perf-garbage-collection/skill.yaml +40 -0
  1545. package/dist/agents/skills/codex/perf-heap-profiling/SKILL.md +160 -0
  1546. package/dist/agents/skills/codex/perf-heap-profiling/skill.yaml +38 -0
  1547. package/dist/agents/skills/codex/perf-http2-multiplexing/SKILL.md +163 -0
  1548. package/dist/agents/skills/codex/perf-http2-multiplexing/skill.yaml +38 -0
  1549. package/dist/agents/skills/codex/perf-http3-quic/SKILL.md +165 -0
  1550. package/dist/agents/skills/codex/perf-http3-quic/skill.yaml +37 -0
  1551. package/dist/agents/skills/codex/perf-image-formats/SKILL.md +183 -0
  1552. package/dist/agents/skills/codex/perf-image-formats/skill.yaml +39 -0
  1553. package/dist/agents/skills/codex/perf-index-strategies/SKILL.md +210 -0
  1554. package/dist/agents/skills/codex/perf-index-strategies/skill.yaml +40 -0
  1555. package/dist/agents/skills/codex/perf-interaction-to-next-paint/SKILL.md +170 -0
  1556. package/dist/agents/skills/codex/perf-interaction-to-next-paint/skill.yaml +40 -0
  1557. package/dist/agents/skills/codex/perf-largest-contentful-paint/SKILL.md +162 -0
  1558. package/dist/agents/skills/codex/perf-largest-contentful-paint/skill.yaml +41 -0
  1559. package/dist/agents/skills/codex/perf-layout-reflow/SKILL.md +187 -0
  1560. package/dist/agents/skills/codex/perf-layout-reflow/skill.yaml +38 -0
  1561. package/dist/agents/skills/codex/perf-lazy-loading/SKILL.md +217 -0
  1562. package/dist/agents/skills/codex/perf-lazy-loading/skill.yaml +38 -0
  1563. package/dist/agents/skills/codex/perf-lazy-loading-media/SKILL.md +233 -0
  1564. package/dist/agents/skills/codex/perf-lazy-loading-media/skill.yaml +38 -0
  1565. package/dist/agents/skills/codex/perf-long-tasks/SKILL.md +194 -0
  1566. package/dist/agents/skills/codex/perf-long-tasks/skill.yaml +38 -0
  1567. package/dist/agents/skills/codex/perf-memory-leaks/SKILL.md +218 -0
  1568. package/dist/agents/skills/codex/perf-memory-leaks/skill.yaml +38 -0
  1569. package/dist/agents/skills/codex/perf-module-federation/SKILL.md +242 -0
  1570. package/dist/agents/skills/codex/perf-module-federation/skill.yaml +38 -0
  1571. package/dist/agents/skills/codex/perf-n-plus-one/SKILL.md +237 -0
  1572. package/dist/agents/skills/codex/perf-n-plus-one/skill.yaml +40 -0
  1573. package/dist/agents/skills/codex/perf-paint-compositing/SKILL.md +181 -0
  1574. package/dist/agents/skills/codex/perf-paint-compositing/skill.yaml +40 -0
  1575. package/dist/agents/skills/codex/perf-performance-api/SKILL.md +249 -0
  1576. package/dist/agents/skills/codex/perf-performance-api/skill.yaml +41 -0
  1577. package/dist/agents/skills/codex/perf-profiling-methodology/SKILL.md +181 -0
  1578. package/dist/agents/skills/codex/perf-profiling-methodology/skill.yaml +44 -0
  1579. package/dist/agents/skills/codex/perf-query-optimization/SKILL.md +203 -0
  1580. package/dist/agents/skills/codex/perf-query-optimization/skill.yaml +39 -0
  1581. package/dist/agents/skills/codex/perf-resource-hints/SKILL.md +167 -0
  1582. package/dist/agents/skills/codex/perf-resource-hints/skill.yaml +40 -0
  1583. package/dist/agents/skills/codex/perf-responsive-images/SKILL.md +225 -0
  1584. package/dist/agents/skills/codex/perf-responsive-images/skill.yaml +38 -0
  1585. package/dist/agents/skills/codex/perf-server-side-caching/SKILL.md +194 -0
  1586. package/dist/agents/skills/codex/perf-server-side-caching/skill.yaml +40 -0
  1587. package/dist/agents/skills/codex/perf-server-side-rendering/SKILL.md +239 -0
  1588. package/dist/agents/skills/codex/perf-server-side-rendering/skill.yaml +39 -0
  1589. package/dist/agents/skills/codex/perf-service-worker-caching/SKILL.md +247 -0
  1590. package/dist/agents/skills/codex/perf-service-worker-caching/skill.yaml +40 -0
  1591. package/dist/agents/skills/codex/perf-static-generation/SKILL.md +241 -0
  1592. package/dist/agents/skills/codex/perf-static-generation/skill.yaml +39 -0
  1593. package/dist/agents/skills/codex/perf-streaming-rendering/SKILL.md +242 -0
  1594. package/dist/agents/skills/codex/perf-streaming-rendering/skill.yaml +37 -0
  1595. package/dist/agents/skills/codex/perf-style-calculation/SKILL.md +166 -0
  1596. package/dist/agents/skills/codex/perf-style-calculation/skill.yaml +36 -0
  1597. package/dist/agents/skills/codex/perf-svg-optimization/SKILL.md +249 -0
  1598. package/dist/agents/skills/codex/perf-svg-optimization/skill.yaml +37 -0
  1599. package/dist/agents/skills/codex/perf-tree-shaking/SKILL.md +225 -0
  1600. package/dist/agents/skills/codex/perf-tree-shaking/skill.yaml +38 -0
  1601. package/dist/agents/skills/codex/perf-web-workers/SKILL.md +237 -0
  1602. package/dist/agents/skills/codex/perf-web-workers/skill.yaml +40 -0
  1603. package/dist/agents/skills/codex/prisma-client-queries/skill.yaml +1 -0
  1604. package/dist/agents/skills/codex/prisma-filtering-sorting/skill.yaml +1 -0
  1605. package/dist/agents/skills/codex/prisma-migrations/skill.yaml +3 -0
  1606. package/dist/agents/skills/codex/prisma-performance-patterns/skill.yaml +8 -0
  1607. package/dist/agents/skills/codex/prisma-raw-queries/skill.yaml +1 -0
  1608. package/dist/agents/skills/codex/prisma-relations-pattern/skill.yaml +1 -0
  1609. package/dist/agents/skills/codex/prisma-schema-design/skill.yaml +4 -0
  1610. package/dist/agents/skills/codex/prisma-seeding-pattern/skill.yaml +1 -0
  1611. package/dist/agents/skills/codex/prisma-soft-delete/skill.yaml +1 -0
  1612. package/dist/agents/skills/codex/prisma-transactions/skill.yaml +4 -0
  1613. package/dist/agents/skills/codex/prisma-type-generation/skill.yaml +1 -0
  1614. package/dist/agents/skills/codex/react-2026/skill.yaml +1 -0
  1615. package/dist/agents/skills/codex/react-client-rendering/skill.yaml +1 -0
  1616. package/dist/agents/skills/codex/react-compound-pattern/skill.yaml +1 -0
  1617. package/dist/agents/skills/codex/react-concurrent-ui/skill.yaml +1 -0
  1618. package/dist/agents/skills/codex/react-container-presentational/skill.yaml +1 -0
  1619. package/dist/agents/skills/codex/react-context-pattern/skill.yaml +1 -0
  1620. package/dist/agents/skills/codex/react-dynamic-import/skill.yaml +1 -0
  1621. package/dist/agents/skills/codex/react-hoc-pattern/skill.yaml +1 -0
  1622. package/dist/agents/skills/codex/react-hooks-pattern/skill.yaml +1 -0
  1623. package/dist/agents/skills/codex/react-islands-pattern/skill.yaml +1 -0
  1624. package/dist/agents/skills/codex/react-memoization-pattern/skill.yaml +1 -0
  1625. package/dist/agents/skills/codex/react-progressive-hydration/skill.yaml +1 -0
  1626. package/dist/agents/skills/codex/react-provider-pattern/skill.yaml +1 -0
  1627. package/dist/agents/skills/codex/react-render-props-pattern/skill.yaml +1 -0
  1628. package/dist/agents/skills/codex/react-server-components/skill.yaml +1 -0
  1629. package/dist/agents/skills/codex/react-server-rendering/skill.yaml +1 -0
  1630. package/dist/agents/skills/codex/react-state-management-pattern/skill.yaml +1 -0
  1631. package/dist/agents/skills/codex/react-static-import/skill.yaml +1 -0
  1632. package/dist/agents/skills/codex/react-suspense-pattern/skill.yaml +1 -0
  1633. package/dist/agents/skills/codex/redux-entity-adapter/skill.yaml +1 -0
  1634. package/dist/agents/skills/codex/redux-listener-middleware/skill.yaml +1 -0
  1635. package/dist/agents/skills/codex/redux-persistence-pattern/skill.yaml +1 -0
  1636. package/dist/agents/skills/codex/redux-rtk-optimistic/skill.yaml +1 -0
  1637. package/dist/agents/skills/codex/redux-rtk-query-endpoints/skill.yaml +1 -0
  1638. package/dist/agents/skills/codex/redux-rtk-query-setup/skill.yaml +1 -0
  1639. package/dist/agents/skills/codex/redux-selectors-pattern/skill.yaml +1 -0
  1640. package/dist/agents/skills/codex/redux-slice-pattern/skill.yaml +1 -0
  1641. package/dist/agents/skills/codex/redux-store-setup/skill.yaml +1 -0
  1642. package/dist/agents/skills/codex/redux-testing-patterns/skill.yaml +1 -0
  1643. package/dist/agents/skills/codex/redux-thunk-pattern/skill.yaml +1 -0
  1644. package/dist/agents/skills/codex/redux-typescript-patterns/skill.yaml +1 -0
  1645. package/dist/agents/skills/codex/resilience-bulkhead-pattern/skill.yaml +1 -0
  1646. package/dist/agents/skills/codex/resilience-chaos-testing/skill.yaml +1 -0
  1647. package/dist/agents/skills/codex/resilience-circuit-breaker/skill.yaml +1 -0
  1648. package/dist/agents/skills/codex/resilience-dead-letter/skill.yaml +1 -0
  1649. package/dist/agents/skills/codex/resilience-fallback-pattern/skill.yaml +1 -0
  1650. package/dist/agents/skills/codex/resilience-health-checks/skill.yaml +1 -0
  1651. package/dist/agents/skills/codex/resilience-idempotency/skill.yaml +1 -0
  1652. package/dist/agents/skills/codex/resilience-rate-limiting/skill.yaml +1 -0
  1653. package/dist/agents/skills/codex/resilience-retry-pattern/skill.yaml +1 -0
  1654. package/dist/agents/skills/codex/resilience-timeout-pattern/skill.yaml +1 -0
  1655. package/dist/agents/skills/codex/security-abac-design/SKILL.md +154 -0
  1656. package/dist/agents/skills/codex/security-abac-design/skill.yaml +41 -0
  1657. package/dist/agents/skills/codex/security-asymmetric-encryption/SKILL.md +201 -0
  1658. package/dist/agents/skills/codex/security-asymmetric-encryption/skill.yaml +42 -0
  1659. package/dist/agents/skills/codex/security-attack-trees/SKILL.md +150 -0
  1660. package/dist/agents/skills/codex/security-attack-trees/skill.yaml +37 -0
  1661. package/dist/agents/skills/codex/security-audit-log-design/SKILL.md +227 -0
  1662. package/dist/agents/skills/codex/security-audit-log-design/skill.yaml +39 -0
  1663. package/dist/agents/skills/codex/security-authentication-flows/SKILL.md +168 -0
  1664. package/dist/agents/skills/codex/security-authentication-flows/skill.yaml +42 -0
  1665. package/dist/agents/skills/codex/security-capability-based-security/SKILL.md +158 -0
  1666. package/dist/agents/skills/codex/security-capability-based-security/skill.yaml +40 -0
  1667. package/dist/agents/skills/codex/security-certificate-management/SKILL.md +153 -0
  1668. package/dist/agents/skills/codex/security-certificate-management/skill.yaml +42 -0
  1669. package/dist/agents/skills/codex/security-ci-security-testing/SKILL.md +159 -0
  1670. package/dist/agents/skills/codex/security-ci-security-testing/skill.yaml +43 -0
  1671. package/dist/agents/skills/codex/security-code-signing/SKILL.md +155 -0
  1672. package/dist/agents/skills/codex/security-code-signing/skill.yaml +40 -0
  1673. package/dist/agents/skills/codex/security-compliance-logging/SKILL.md +183 -0
  1674. package/dist/agents/skills/codex/security-compliance-logging/skill.yaml +38 -0
  1675. package/dist/agents/skills/codex/security-credential-storage/SKILL.md +222 -0
  1676. package/dist/agents/skills/codex/security-credential-storage/skill.yaml +41 -0
  1677. package/dist/agents/skills/codex/security-cryptographic-randomness/SKILL.md +154 -0
  1678. package/dist/agents/skills/codex/security-cryptographic-randomness/skill.yaml +41 -0
  1679. package/dist/agents/skills/codex/security-dependency-auditing/SKILL.md +156 -0
  1680. package/dist/agents/skills/codex/security-dependency-auditing/skill.yaml +39 -0
  1681. package/dist/agents/skills/codex/security-deserialization-attacks/SKILL.md +180 -0
  1682. package/dist/agents/skills/codex/security-deserialization-attacks/skill.yaml +38 -0
  1683. package/dist/agents/skills/codex/security-environment-variable-risks/SKILL.md +153 -0
  1684. package/dist/agents/skills/codex/security-environment-variable-risks/skill.yaml +37 -0
  1685. package/dist/agents/skills/codex/security-forensics-fundamentals/SKILL.md +198 -0
  1686. package/dist/agents/skills/codex/security-forensics-fundamentals/skill.yaml +40 -0
  1687. package/dist/agents/skills/codex/security-hashing-fundamentals/SKILL.md +212 -0
  1688. package/dist/agents/skills/codex/security-hashing-fundamentals/skill.yaml +40 -0
  1689. package/dist/agents/skills/codex/security-hmac-signatures/SKILL.md +165 -0
  1690. package/dist/agents/skills/codex/security-hmac-signatures/skill.yaml +40 -0
  1691. package/dist/agents/skills/codex/security-hsts-preloading/SKILL.md +154 -0
  1692. package/dist/agents/skills/codex/security-hsts-preloading/skill.yaml +38 -0
  1693. package/dist/agents/skills/codex/security-identity-verification/SKILL.md +157 -0
  1694. package/dist/agents/skills/codex/security-identity-verification/skill.yaml +39 -0
  1695. package/dist/agents/skills/codex/security-incident-containment/SKILL.md +190 -0
  1696. package/dist/agents/skills/codex/security-incident-containment/skill.yaml +40 -0
  1697. package/dist/agents/skills/codex/security-injection-families/SKILL.md +235 -0
  1698. package/dist/agents/skills/codex/security-injection-families/skill.yaml +41 -0
  1699. package/dist/agents/skills/codex/security-log-correlation/SKILL.md +178 -0
  1700. package/dist/agents/skills/codex/security-log-correlation/skill.yaml +39 -0
  1701. package/dist/agents/skills/codex/security-memory-safety/SKILL.md +234 -0
  1702. package/dist/agents/skills/codex/security-memory-safety/skill.yaml +39 -0
  1703. package/dist/agents/skills/codex/security-mfa-design/SKILL.md +150 -0
  1704. package/dist/agents/skills/codex/security-mfa-design/skill.yaml +41 -0
  1705. package/dist/agents/skills/codex/security-microsegmentation/SKILL.md +154 -0
  1706. package/dist/agents/skills/codex/security-microsegmentation/skill.yaml +40 -0
  1707. package/dist/agents/skills/codex/security-mtls-design/SKILL.md +158 -0
  1708. package/dist/agents/skills/codex/security-mtls-design/skill.yaml +39 -0
  1709. package/dist/agents/skills/codex/security-penetration-testing/SKILL.md +166 -0
  1710. package/dist/agents/skills/codex/security-penetration-testing/skill.yaml +40 -0
  1711. package/dist/agents/skills/codex/security-post-incident-review/SKILL.md +205 -0
  1712. package/dist/agents/skills/codex/security-post-incident-review/skill.yaml +39 -0
  1713. package/dist/agents/skills/codex/security-race-conditions/SKILL.md +186 -0
  1714. package/dist/agents/skills/codex/security-race-conditions/skill.yaml +39 -0
  1715. package/dist/agents/skills/codex/security-rbac-design/SKILL.md +209 -0
  1716. package/dist/agents/skills/codex/security-rbac-design/skill.yaml +40 -0
  1717. package/dist/agents/skills/codex/security-rebac-design/SKILL.md +154 -0
  1718. package/dist/agents/skills/codex/security-rebac-design/skill.yaml +39 -0
  1719. package/dist/agents/skills/codex/security-sbom-provenance/SKILL.md +157 -0
  1720. package/dist/agents/skills/codex/security-sbom-provenance/skill.yaml +39 -0
  1721. package/dist/agents/skills/codex/security-secrets-lifecycle/SKILL.md +190 -0
  1722. package/dist/agents/skills/codex/security-secrets-lifecycle/skill.yaml +39 -0
  1723. package/dist/agents/skills/codex/security-security-champions/SKILL.md +165 -0
  1724. package/dist/agents/skills/codex/security-security-champions/skill.yaml +37 -0
  1725. package/dist/agents/skills/codex/security-session-management/SKILL.md +196 -0
  1726. package/dist/agents/skills/codex/security-session-management/skill.yaml +41 -0
  1727. package/dist/agents/skills/codex/security-shift-left-design/SKILL.md +153 -0
  1728. package/dist/agents/skills/codex/security-shift-left-design/skill.yaml +38 -0
  1729. package/dist/agents/skills/codex/security-symmetric-encryption/SKILL.md +176 -0
  1730. package/dist/agents/skills/codex/security-symmetric-encryption/skill.yaml +41 -0
  1731. package/dist/agents/skills/codex/security-threat-modeling-process/SKILL.md +150 -0
  1732. package/dist/agents/skills/codex/security-threat-modeling-process/skill.yaml +38 -0
  1733. package/dist/agents/skills/codex/security-threat-modeling-stride/SKILL.md +150 -0
  1734. package/dist/agents/skills/codex/security-threat-modeling-stride/skill.yaml +40 -0
  1735. package/dist/agents/skills/codex/security-tls-fundamentals/SKILL.md +186 -0
  1736. package/dist/agents/skills/codex/security-tls-fundamentals/skill.yaml +40 -0
  1737. package/dist/agents/skills/codex/security-trust-boundaries/SKILL.md +152 -0
  1738. package/dist/agents/skills/codex/security-trust-boundaries/skill.yaml +39 -0
  1739. package/dist/agents/skills/codex/security-vault-patterns/SKILL.md +155 -0
  1740. package/dist/agents/skills/codex/security-vault-patterns/skill.yaml +39 -0
  1741. package/dist/agents/skills/codex/security-vulnerability-disclosure/SKILL.md +207 -0
  1742. package/dist/agents/skills/codex/security-vulnerability-disclosure/skill.yaml +39 -0
  1743. package/dist/agents/skills/codex/security-zero-trust-principles/SKILL.md +229 -0
  1744. package/dist/agents/skills/codex/security-zero-trust-principles/skill.yaml +40 -0
  1745. package/dist/agents/skills/codex/state-context-pattern/skill.yaml +1 -0
  1746. package/dist/agents/skills/codex/state-jotai-atoms/skill.yaml +1 -0
  1747. package/dist/agents/skills/codex/state-selection-patterns/skill.yaml +1 -0
  1748. package/dist/agents/skills/codex/state-server-client-sync/skill.yaml +1 -0
  1749. package/dist/agents/skills/codex/state-zustand-devtools/skill.yaml +1 -0
  1750. package/dist/agents/skills/codex/state-zustand-immer/skill.yaml +1 -0
  1751. package/dist/agents/skills/codex/state-zustand-persist/skill.yaml +1 -0
  1752. package/dist/agents/skills/codex/state-zustand-react/skill.yaml +1 -0
  1753. package/dist/agents/skills/codex/state-zustand-slices/skill.yaml +1 -0
  1754. package/dist/agents/skills/codex/state-zustand-store/skill.yaml +1 -0
  1755. package/dist/agents/skills/codex/svelte-adapter-config/skill.yaml +1 -0
  1756. package/dist/agents/skills/codex/svelte-component-composition/skill.yaml +1 -0
  1757. package/dist/agents/skills/codex/svelte-error-pages/skill.yaml +1 -0
  1758. package/dist/agents/skills/codex/svelte-form-actions/skill.yaml +1 -0
  1759. package/dist/agents/skills/codex/svelte-load-functions/skill.yaml +1 -0
  1760. package/dist/agents/skills/codex/svelte-performance-patterns/skill.yaml +6 -0
  1761. package/dist/agents/skills/codex/svelte-routing-pattern/skill.yaml +1 -0
  1762. package/dist/agents/skills/codex/svelte-runes-pattern/skill.yaml +1 -0
  1763. package/dist/agents/skills/codex/svelte-server-hooks/skill.yaml +1 -0
  1764. package/dist/agents/skills/codex/svelte-state-management/skill.yaml +1 -0
  1765. package/dist/agents/skills/codex/svelte-stores-pattern/skill.yaml +1 -0
  1766. package/dist/agents/skills/codex/svelte-testing-patterns/skill.yaml +1 -0
  1767. package/dist/agents/skills/codex/svelte-transitions-animations/skill.yaml +1 -0
  1768. package/dist/agents/skills/codex/tanstack-cache-management/skill.yaml +1 -0
  1769. package/dist/agents/skills/codex/tanstack-dependent-queries/skill.yaml +1 -0
  1770. package/dist/agents/skills/codex/tanstack-devtools/skill.yaml +1 -0
  1771. package/dist/agents/skills/codex/tanstack-infinite-queries/skill.yaml +1 -0
  1772. package/dist/agents/skills/codex/tanstack-mutation-patterns/skill.yaml +1 -0
  1773. package/dist/agents/skills/codex/tanstack-optimistic-updates/skill.yaml +1 -0
  1774. package/dist/agents/skills/codex/tanstack-prefetching/skill.yaml +1 -0
  1775. package/dist/agents/skills/codex/tanstack-query-invalidation/skill.yaml +1 -0
  1776. package/dist/agents/skills/codex/tanstack-query-keys/skill.yaml +1 -0
  1777. package/dist/agents/skills/codex/tanstack-suspense-mode/skill.yaml +1 -0
  1778. package/dist/agents/skills/codex/test-accessibility-testing/skill.yaml +1 -0
  1779. package/dist/agents/skills/codex/test-component-react/skill.yaml +1 -0
  1780. package/dist/agents/skills/codex/test-component-svelte/skill.yaml +1 -0
  1781. package/dist/agents/skills/codex/test-contract-testing/skill.yaml +1 -0
  1782. package/dist/agents/skills/codex/test-coverage-patterns/skill.yaml +1 -0
  1783. package/dist/agents/skills/codex/test-e2e-strategy/skill.yaml +1 -0
  1784. package/dist/agents/skills/codex/test-factory-patterns/skill.yaml +1 -0
  1785. package/dist/agents/skills/codex/test-integration-patterns/skill.yaml +1 -0
  1786. package/dist/agents/skills/codex/test-mock-patterns/skill.yaml +1 -0
  1787. package/dist/agents/skills/codex/test-msw-pattern/skill.yaml +1 -0
  1788. package/dist/agents/skills/codex/test-performance-testing/skill.yaml +5 -0
  1789. package/dist/agents/skills/codex/test-playwright-patterns/skill.yaml +1 -0
  1790. package/dist/agents/skills/codex/test-playwright-setup/skill.yaml +1 -0
  1791. package/dist/agents/skills/codex/test-property-based/skill.yaml +1 -0
  1792. package/dist/agents/skills/codex/test-snapshot-patterns/skill.yaml +1 -0
  1793. package/dist/agents/skills/codex/test-tdd-workflow/skill.yaml +1 -0
  1794. package/dist/agents/skills/codex/test-unit-patterns/skill.yaml +1 -0
  1795. package/dist/agents/skills/codex/test-vitest-config/skill.yaml +1 -0
  1796. package/dist/agents/skills/codex/trpc-context-pattern/skill.yaml +1 -0
  1797. package/dist/agents/skills/codex/trpc-error-handling/SKILL.md +1 -0
  1798. package/dist/agents/skills/codex/trpc-error-handling/skill.yaml +3 -0
  1799. package/dist/agents/skills/codex/trpc-input-validation/SKILL.md +1 -0
  1800. package/dist/agents/skills/codex/trpc-input-validation/skill.yaml +2 -0
  1801. package/dist/agents/skills/codex/trpc-middleware-pattern/skill.yaml +1 -0
  1802. package/dist/agents/skills/codex/trpc-nextjs-integration/skill.yaml +1 -0
  1803. package/dist/agents/skills/codex/trpc-react-query-integration/skill.yaml +1 -0
  1804. package/dist/agents/skills/codex/trpc-router-composition/SKILL.md +1 -0
  1805. package/dist/agents/skills/codex/trpc-router-composition/skill.yaml +3 -0
  1806. package/dist/agents/skills/codex/trpc-subscription-pattern/skill.yaml +1 -0
  1807. package/dist/agents/skills/codex/ts-async-patterns/skill.yaml +1 -0
  1808. package/dist/agents/skills/codex/ts-branded-types/skill.yaml +1 -0
  1809. package/dist/agents/skills/codex/ts-class-patterns/skill.yaml +1 -0
  1810. package/dist/agents/skills/codex/ts-conditional-types/skill.yaml +1 -0
  1811. package/dist/agents/skills/codex/ts-config-patterns/skill.yaml +1 -0
  1812. package/dist/agents/skills/codex/ts-declaration-merging/skill.yaml +1 -0
  1813. package/dist/agents/skills/codex/ts-decorator-patterns/skill.yaml +1 -0
  1814. package/dist/agents/skills/codex/ts-discriminated-unions/skill.yaml +1 -0
  1815. package/dist/agents/skills/codex/ts-error-handling-types/skill.yaml +1 -0
  1816. package/dist/agents/skills/codex/ts-generics-pattern/skill.yaml +1 -0
  1817. package/dist/agents/skills/codex/ts-mapped-types/skill.yaml +1 -0
  1818. package/dist/agents/skills/codex/ts-module-patterns/skill.yaml +1 -0
  1819. package/dist/agents/skills/codex/ts-performance-patterns/skill.yaml +5 -0
  1820. package/dist/agents/skills/codex/ts-satisfies-operator/skill.yaml +1 -0
  1821. package/dist/agents/skills/codex/ts-strict-mode/skill.yaml +1 -0
  1822. package/dist/agents/skills/codex/ts-template-literal-types/skill.yaml +1 -0
  1823. package/dist/agents/skills/codex/ts-testing-types/skill.yaml +1 -0
  1824. package/dist/agents/skills/codex/ts-type-guards/skill.yaml +1 -0
  1825. package/dist/agents/skills/codex/ts-utility-types/skill.yaml +1 -0
  1826. package/dist/agents/skills/codex/ts-zod-integration/skill.yaml +1 -0
  1827. package/dist/agents/skills/codex/ux-active-voice/SKILL.md +150 -0
  1828. package/dist/agents/skills/codex/ux-active-voice/skill.yaml +32 -0
  1829. package/dist/agents/skills/codex/ux-button-cta-copy/SKILL.md +159 -0
  1830. package/dist/agents/skills/codex/ux-button-cta-copy/skill.yaml +34 -0
  1831. package/dist/agents/skills/codex/ux-confirmation-dialogs/SKILL.md +156 -0
  1832. package/dist/agents/skills/codex/ux-confirmation-dialogs/skill.yaml +33 -0
  1833. package/dist/agents/skills/codex/ux-content-hierarchy/SKILL.md +150 -0
  1834. package/dist/agents/skills/codex/ux-content-hierarchy/skill.yaml +33 -0
  1835. package/dist/agents/skills/codex/ux-data-table-copy/SKILL.md +154 -0
  1836. package/dist/agents/skills/codex/ux-data-table-copy/skill.yaml +34 -0
  1837. package/dist/agents/skills/codex/ux-destructive-action-copy/SKILL.md +152 -0
  1838. package/dist/agents/skills/codex/ux-destructive-action-copy/skill.yaml +34 -0
  1839. package/dist/agents/skills/codex/ux-empty-states/SKILL.md +155 -0
  1840. package/dist/agents/skills/codex/ux-empty-states/skill.yaml +36 -0
  1841. package/dist/agents/skills/codex/ux-error-messages/SKILL.md +159 -0
  1842. package/dist/agents/skills/codex/ux-error-messages/skill.yaml +35 -0
  1843. package/dist/agents/skills/codex/ux-error-severity/SKILL.md +155 -0
  1844. package/dist/agents/skills/codex/ux-error-severity/skill.yaml +35 -0
  1845. package/dist/agents/skills/codex/ux-form-labels/SKILL.md +159 -0
  1846. package/dist/agents/skills/codex/ux-form-labels/skill.yaml +36 -0
  1847. package/dist/agents/skills/codex/ux-inclusive-language/SKILL.md +161 -0
  1848. package/dist/agents/skills/codex/ux-inclusive-language/skill.yaml +33 -0
  1849. package/dist/agents/skills/codex/ux-internationalization-writing/SKILL.md +196 -0
  1850. package/dist/agents/skills/codex/ux-internationalization-writing/skill.yaml +35 -0
  1851. package/dist/agents/skills/codex/ux-loading-states/SKILL.md +162 -0
  1852. package/dist/agents/skills/codex/ux-loading-states/skill.yaml +33 -0
  1853. package/dist/agents/skills/codex/ux-microcopy-principles/SKILL.md +152 -0
  1854. package/dist/agents/skills/codex/ux-microcopy-principles/skill.yaml +37 -0
  1855. package/dist/agents/skills/codex/ux-navigation-labels/SKILL.md +163 -0
  1856. package/dist/agents/skills/codex/ux-navigation-labels/skill.yaml +35 -0
  1857. package/dist/agents/skills/codex/ux-notification-copy/SKILL.md +150 -0
  1858. package/dist/agents/skills/codex/ux-notification-copy/skill.yaml +35 -0
  1859. package/dist/agents/skills/codex/ux-onboarding-copy/SKILL.md +156 -0
  1860. package/dist/agents/skills/codex/ux-onboarding-copy/skill.yaml +35 -0
  1861. package/dist/agents/skills/codex/ux-permission-access-copy/SKILL.md +150 -0
  1862. package/dist/agents/skills/codex/ux-permission-access-copy/skill.yaml +34 -0
  1863. package/dist/agents/skills/codex/ux-plain-language/SKILL.md +157 -0
  1864. package/dist/agents/skills/codex/ux-plain-language/skill.yaml +34 -0
  1865. package/dist/agents/skills/codex/ux-search-copy/SKILL.md +154 -0
  1866. package/dist/agents/skills/codex/ux-search-copy/skill.yaml +33 -0
  1867. package/dist/agents/skills/codex/ux-settings-preferences/SKILL.md +152 -0
  1868. package/dist/agents/skills/codex/ux-settings-preferences/skill.yaml +33 -0
  1869. package/dist/agents/skills/codex/ux-success-feedback/SKILL.md +163 -0
  1870. package/dist/agents/skills/codex/ux-success-feedback/skill.yaml +33 -0
  1871. package/dist/agents/skills/codex/ux-tooltip-contextual-help/SKILL.md +163 -0
  1872. package/dist/agents/skills/codex/ux-tooltip-contextual-help/skill.yaml +33 -0
  1873. package/dist/agents/skills/codex/ux-voice-tone/SKILL.md +150 -0
  1874. package/dist/agents/skills/codex/ux-voice-tone/skill.yaml +33 -0
  1875. package/dist/agents/skills/codex/ux-writing-for-scanning/SKILL.md +150 -0
  1876. package/dist/agents/skills/codex/ux-writing-for-scanning/skill.yaml +35 -0
  1877. package/dist/agents/skills/codex/validate-context-engineering/skill.yaml +1 -0
  1878. package/dist/agents/skills/codex/vue-async-components/skill.yaml +1 -0
  1879. package/dist/agents/skills/codex/vue-component-events/skill.yaml +1 -0
  1880. package/dist/agents/skills/codex/vue-composables-pattern/skill.yaml +1 -0
  1881. package/dist/agents/skills/codex/vue-directive-pattern/skill.yaml +1 -0
  1882. package/dist/agents/skills/codex/vue-pinia-pattern/skill.yaml +1 -0
  1883. package/dist/agents/skills/codex/vue-provide-inject/skill.yaml +1 -0
  1884. package/dist/agents/skills/codex/vue-reactive-refs/skill.yaml +1 -0
  1885. package/dist/agents/skills/codex/vue-renderless-components/skill.yaml +1 -0
  1886. package/dist/agents/skills/codex/vue-slots-pattern/skill.yaml +1 -0
  1887. package/dist/agents/skills/codex/vue-teleport-pattern/skill.yaml +1 -0
  1888. package/dist/agents/skills/codex/vue-watchers-pattern/skill.yaml +1 -0
  1889. package/dist/agents/skills/codex/xstate-actor-pattern/skill.yaml +1 -0
  1890. package/dist/agents/skills/codex/xstate-guards-actions/skill.yaml +1 -0
  1891. package/dist/agents/skills/codex/xstate-history-states/skill.yaml +1 -0
  1892. package/dist/agents/skills/codex/xstate-invoke-pattern/skill.yaml +1 -0
  1893. package/dist/agents/skills/codex/xstate-machine-definition/skill.yaml +1 -0
  1894. package/dist/agents/skills/codex/xstate-parallel-states/skill.yaml +1 -0
  1895. package/dist/agents/skills/codex/xstate-react-integration/skill.yaml +1 -0
  1896. package/dist/agents/skills/codex/xstate-testing-patterns/skill.yaml +1 -0
  1897. package/dist/agents/skills/codex/xstate-typegen/skill.yaml +1 -0
  1898. package/dist/agents/skills/codex/xstate-visualization/skill.yaml +1 -0
  1899. package/dist/agents/skills/codex/zod-array-validation/skill.yaml +1 -0
  1900. package/dist/agents/skills/codex/zod-async-validation/skill.yaml +1 -0
  1901. package/dist/agents/skills/codex/zod-error-handling/skill.yaml +1 -0
  1902. package/dist/agents/skills/codex/zod-infer-types/skill.yaml +1 -0
  1903. package/dist/agents/skills/codex/zod-nextjs-integration/skill.yaml +1 -0
  1904. package/dist/agents/skills/codex/zod-object-patterns/skill.yaml +1 -0
  1905. package/dist/agents/skills/codex/zod-schema-definition/skill.yaml +1 -0
  1906. package/dist/agents/skills/codex/zod-string-validation/skill.yaml +1 -0
  1907. package/dist/agents/skills/codex/zod-transform-refine/skill.yaml +1 -0
  1908. package/dist/agents/skills/codex/zod-union-discriminated/skill.yaml +1 -0
  1909. package/dist/agents/skills/cursor/a11y-aria-patterns/skill.yaml +1 -0
  1910. package/dist/agents/skills/cursor/a11y-color-contrast/skill.yaml +1 -0
  1911. package/dist/agents/skills/cursor/a11y-form-patterns/skill.yaml +2 -0
  1912. package/dist/agents/skills/cursor/a11y-image-text-alt/skill.yaml +1 -0
  1913. package/dist/agents/skills/cursor/a11y-keyboard-navigation/skill.yaml +1 -0
  1914. package/dist/agents/skills/cursor/a11y-modal-patterns/skill.yaml +1 -0
  1915. package/dist/agents/skills/cursor/a11y-motion-animation/skill.yaml +1 -0
  1916. package/dist/agents/skills/cursor/a11y-screen-reader-testing/skill.yaml +1 -0
  1917. package/dist/agents/skills/cursor/a11y-semantic-html/skill.yaml +1 -0
  1918. package/dist/agents/skills/cursor/a11y-testing-automation/skill.yaml +1 -0
  1919. package/dist/agents/skills/cursor/add-harness-component/skill.yaml +1 -0
  1920. package/dist/agents/skills/cursor/align-documentation/skill.yaml +1 -0
  1921. package/dist/agents/skills/cursor/angular-component-pattern/skill.yaml +1 -0
  1922. package/dist/agents/skills/cursor/angular-directive-pattern/skill.yaml +1 -0
  1923. package/dist/agents/skills/cursor/angular-http-interceptors/skill.yaml +1 -0
  1924. package/dist/agents/skills/cursor/angular-lazy-loading/skill.yaml +1 -0
  1925. package/dist/agents/skills/cursor/angular-performance-patterns/skill.yaml +6 -0
  1926. package/dist/agents/skills/cursor/angular-pipe-pattern/skill.yaml +1 -0
  1927. package/dist/agents/skills/cursor/angular-reactive-forms/skill.yaml +1 -0
  1928. package/dist/agents/skills/cursor/angular-routing-guards/skill.yaml +1 -0
  1929. package/dist/agents/skills/cursor/angular-rxjs-patterns/skill.yaml +1 -0
  1930. package/dist/agents/skills/cursor/angular-schematics/skill.yaml +1 -0
  1931. package/dist/agents/skills/cursor/angular-service-di/skill.yaml +1 -0
  1932. package/dist/agents/skills/cursor/angular-signals-pattern/skill.yaml +1 -0
  1933. package/dist/agents/skills/cursor/angular-standalone-components/skill.yaml +1 -0
  1934. package/dist/agents/skills/cursor/angular-state-management/skill.yaml +1 -0
  1935. package/dist/agents/skills/cursor/angular-testing-patterns/skill.yaml +1 -0
  1936. package/dist/agents/skills/cursor/api-api-keys/SKILL.md +135 -0
  1937. package/dist/agents/skills/cursor/api-api-keys/skill.yaml +41 -0
  1938. package/dist/agents/skills/cursor/api-authentication-patterns/SKILL.md +117 -0
  1939. package/dist/agents/skills/cursor/api-authentication-patterns/skill.yaml +44 -0
  1940. package/dist/agents/skills/cursor/api-backward-compatibility/SKILL.md +170 -0
  1941. package/dist/agents/skills/cursor/api-backward-compatibility/skill.yaml +39 -0
  1942. package/dist/agents/skills/cursor/api-bulk-operations/SKILL.md +198 -0
  1943. package/dist/agents/skills/cursor/api-bulk-operations/skill.yaml +39 -0
  1944. package/dist/agents/skills/cursor/api-conditional-requests/SKILL.md +233 -0
  1945. package/dist/agents/skills/cursor/api-conditional-requests/skill.yaml +41 -0
  1946. package/dist/agents/skills/cursor/api-content-negotiation/SKILL.md +194 -0
  1947. package/dist/agents/skills/cursor/api-content-negotiation/skill.yaml +39 -0
  1948. package/dist/agents/skills/cursor/api-contract-testing/SKILL.md +222 -0
  1949. package/dist/agents/skills/cursor/api-contract-testing/skill.yaml +42 -0
  1950. package/dist/agents/skills/cursor/api-deprecation-strategy/SKILL.md +156 -0
  1951. package/dist/agents/skills/cursor/api-deprecation-strategy/skill.yaml +39 -0
  1952. package/dist/agents/skills/cursor/api-error-contracts/SKILL.md +149 -0
  1953. package/dist/agents/skills/cursor/api-error-contracts/skill.yaml +40 -0
  1954. package/dist/agents/skills/cursor/api-field-selection/SKILL.md +193 -0
  1955. package/dist/agents/skills/cursor/api-field-selection/skill.yaml +39 -0
  1956. package/dist/agents/skills/cursor/api-filtering-sorting/SKILL.md +170 -0
  1957. package/dist/agents/skills/cursor/api-filtering-sorting/skill.yaml +40 -0
  1958. package/dist/agents/skills/cursor/api-hateoas/SKILL.md +212 -0
  1959. package/dist/agents/skills/cursor/api-hateoas/skill.yaml +40 -0
  1960. package/dist/agents/skills/cursor/api-http-caching/SKILL.md +188 -0
  1961. package/dist/agents/skills/cursor/api-http-caching/skill.yaml +43 -0
  1962. package/dist/agents/skills/cursor/api-http-methods/SKILL.md +185 -0
  1963. package/dist/agents/skills/cursor/api-http-methods/skill.yaml +43 -0
  1964. package/dist/agents/skills/cursor/api-idempotency-keys/SKILL.md +176 -0
  1965. package/dist/agents/skills/cursor/api-idempotency-keys/skill.yaml +40 -0
  1966. package/dist/agents/skills/cursor/api-long-running-operations/SKILL.md +209 -0
  1967. package/dist/agents/skills/cursor/api-long-running-operations/skill.yaml +40 -0
  1968. package/dist/agents/skills/cursor/api-nested-vs-flat/SKILL.md +173 -0
  1969. package/dist/agents/skills/cursor/api-nested-vs-flat/skill.yaml +39 -0
  1970. package/dist/agents/skills/cursor/api-oauth2-flows/SKILL.md +150 -0
  1971. package/dist/agents/skills/cursor/api-oauth2-flows/skill.yaml +42 -0
  1972. package/dist/agents/skills/cursor/api-openapi-design/SKILL.md +260 -0
  1973. package/dist/agents/skills/cursor/api-openapi-design/skill.yaml +44 -0
  1974. package/dist/agents/skills/cursor/api-pagination-cursor/SKILL.md +159 -0
  1975. package/dist/agents/skills/cursor/api-pagination-cursor/skill.yaml +40 -0
  1976. package/dist/agents/skills/cursor/api-pagination-keyset/SKILL.md +167 -0
  1977. package/dist/agents/skills/cursor/api-pagination-keyset/skill.yaml +39 -0
  1978. package/dist/agents/skills/cursor/api-pagination-offset/SKILL.md +135 -0
  1979. package/dist/agents/skills/cursor/api-pagination-offset/skill.yaml +39 -0
  1980. package/dist/agents/skills/cursor/api-problem-details-rfc/SKILL.md +164 -0
  1981. package/dist/agents/skills/cursor/api-problem-details-rfc/skill.yaml +38 -0
  1982. package/dist/agents/skills/cursor/api-rate-limit-headers/SKILL.md +144 -0
  1983. package/dist/agents/skills/cursor/api-rate-limit-headers/skill.yaml +39 -0
  1984. package/dist/agents/skills/cursor/api-rate-limiting/SKILL.md +131 -0
  1985. package/dist/agents/skills/cursor/api-rate-limiting/skill.yaml +41 -0
  1986. package/dist/agents/skills/cursor/api-resource-granularity/SKILL.md +165 -0
  1987. package/dist/agents/skills/cursor/api-resource-granularity/skill.yaml +40 -0
  1988. package/dist/agents/skills/cursor/api-resource-modeling/SKILL.md +155 -0
  1989. package/dist/agents/skills/cursor/api-resource-modeling/skill.yaml +40 -0
  1990. package/dist/agents/skills/cursor/api-rest-maturity-model/SKILL.md +215 -0
  1991. package/dist/agents/skills/cursor/api-rest-maturity-model/skill.yaml +39 -0
  1992. package/dist/agents/skills/cursor/api-retry-guidance/SKILL.md +168 -0
  1993. package/dist/agents/skills/cursor/api-retry-guidance/skill.yaml +41 -0
  1994. package/dist/agents/skills/cursor/api-sdk-ergonomics/SKILL.md +194 -0
  1995. package/dist/agents/skills/cursor/api-sdk-ergonomics/skill.yaml +43 -0
  1996. package/dist/agents/skills/cursor/api-status-codes/SKILL.md +196 -0
  1997. package/dist/agents/skills/cursor/api-status-codes/skill.yaml +46 -0
  1998. package/dist/agents/skills/cursor/api-validation-errors/SKILL.md +174 -0
  1999. package/dist/agents/skills/cursor/api-validation-errors/skill.yaml +40 -0
  2000. package/dist/agents/skills/cursor/api-versioning-header/SKILL.md +177 -0
  2001. package/dist/agents/skills/cursor/api-versioning-header/skill.yaml +37 -0
  2002. package/dist/agents/skills/cursor/api-versioning-url/SKILL.md +128 -0
  2003. package/dist/agents/skills/cursor/api-versioning-url/skill.yaml +39 -0
  2004. package/dist/agents/skills/cursor/api-webhook-design/SKILL.md +165 -0
  2005. package/dist/agents/skills/cursor/api-webhook-design/skill.yaml +41 -0
  2006. package/dist/agents/skills/cursor/api-webhook-security/SKILL.md +176 -0
  2007. package/dist/agents/skills/cursor/api-webhook-security/skill.yaml +41 -0
  2008. package/dist/agents/skills/cursor/astro-component-pattern/skill.yaml +1 -0
  2009. package/dist/agents/skills/cursor/astro-content-collections/skill.yaml +1 -0
  2010. package/dist/agents/skills/cursor/astro-deployment-config/skill.yaml +1 -0
  2011. package/dist/agents/skills/cursor/astro-image-optimization/skill.yaml +1 -0
  2012. package/dist/agents/skills/cursor/astro-integration-pattern/skill.yaml +1 -0
  2013. package/dist/agents/skills/cursor/astro-islands-architecture/skill.yaml +1 -0
  2014. package/dist/agents/skills/cursor/astro-multi-framework/skill.yaml +1 -0
  2015. package/dist/agents/skills/cursor/astro-routing-pattern/skill.yaml +1 -0
  2016. package/dist/agents/skills/cursor/astro-server-endpoints/skill.yaml +1 -0
  2017. package/dist/agents/skills/cursor/astro-ssr-hybrid/skill.yaml +1 -0
  2018. package/dist/agents/skills/cursor/astro-view-transitions/skill.yaml +1 -0
  2019. package/dist/agents/skills/cursor/check-mechanical-constraints/skill.yaml +1 -0
  2020. package/dist/agents/skills/cursor/cleanup-dead-code/skill.yaml +1 -0
  2021. package/dist/agents/skills/cursor/css-animation-pattern/skill.yaml +1 -0
  2022. package/dist/agents/skills/cursor/css-component-variants/skill.yaml +1 -0
  2023. package/dist/agents/skills/cursor/css-css-modules/skill.yaml +1 -0
  2024. package/dist/agents/skills/cursor/css-custom-components/skill.yaml +1 -0
  2025. package/dist/agents/skills/cursor/css-dark-mode/skill.yaml +1 -0
  2026. package/dist/agents/skills/cursor/css-design-tokens/skill.yaml +1 -0
  2027. package/dist/agents/skills/cursor/css-headless-ui/skill.yaml +1 -0
  2028. package/dist/agents/skills/cursor/css-layout-patterns/skill.yaml +1 -0
  2029. package/dist/agents/skills/cursor/css-performance-patterns/skill.yaml +6 -0
  2030. package/dist/agents/skills/cursor/css-responsive-design/skill.yaml +1 -0
  2031. package/dist/agents/skills/cursor/css-tailwind-merge/skill.yaml +1 -0
  2032. package/dist/agents/skills/cursor/css-tailwind-pattern/skill.yaml +1 -0
  2033. package/dist/agents/skills/cursor/db-acid-in-practice/SKILL.md +215 -0
  2034. package/dist/agents/skills/cursor/db-acid-in-practice/skill.yaml +38 -0
  2035. package/dist/agents/skills/cursor/db-acid-properties/SKILL.md +190 -0
  2036. package/dist/agents/skills/cursor/db-acid-properties/skill.yaml +38 -0
  2037. package/dist/agents/skills/cursor/db-adjacency-list/SKILL.md +199 -0
  2038. package/dist/agents/skills/cursor/db-adjacency-list/skill.yaml +40 -0
  2039. package/dist/agents/skills/cursor/db-audit-trail/SKILL.md +244 -0
  2040. package/dist/agents/skills/cursor/db-audit-trail/skill.yaml +41 -0
  2041. package/dist/agents/skills/cursor/db-btree-index/SKILL.md +182 -0
  2042. package/dist/agents/skills/cursor/db-btree-index/skill.yaml +44 -0
  2043. package/dist/agents/skills/cursor/db-cap-theorem/SKILL.md +156 -0
  2044. package/dist/agents/skills/cursor/db-cap-theorem/skill.yaml +38 -0
  2045. package/dist/agents/skills/cursor/db-closure-table/SKILL.md +197 -0
  2046. package/dist/agents/skills/cursor/db-closure-table/skill.yaml +38 -0
  2047. package/dist/agents/skills/cursor/db-composite-index/SKILL.md +199 -0
  2048. package/dist/agents/skills/cursor/db-composite-index/skill.yaml +41 -0
  2049. package/dist/agents/skills/cursor/db-connection-pooling/SKILL.md +196 -0
  2050. package/dist/agents/skills/cursor/db-connection-pooling/skill.yaml +39 -0
  2051. package/dist/agents/skills/cursor/db-connection-sizing/SKILL.md +236 -0
  2052. package/dist/agents/skills/cursor/db-connection-sizing/skill.yaml +38 -0
  2053. package/dist/agents/skills/cursor/db-covering-index/SKILL.md +203 -0
  2054. package/dist/agents/skills/cursor/db-covering-index/skill.yaml +40 -0
  2055. package/dist/agents/skills/cursor/db-deadlock-prevention/SKILL.md +204 -0
  2056. package/dist/agents/skills/cursor/db-deadlock-prevention/skill.yaml +41 -0
  2057. package/dist/agents/skills/cursor/db-denormalization/SKILL.md +176 -0
  2058. package/dist/agents/skills/cursor/db-denormalization/skill.yaml +38 -0
  2059. package/dist/agents/skills/cursor/db-document-in-relational/SKILL.md +225 -0
  2060. package/dist/agents/skills/cursor/db-document-in-relational/skill.yaml +42 -0
  2061. package/dist/agents/skills/cursor/db-entity-attribute-value/SKILL.md +186 -0
  2062. package/dist/agents/skills/cursor/db-entity-attribute-value/skill.yaml +39 -0
  2063. package/dist/agents/skills/cursor/db-eventual-consistency/SKILL.md +226 -0
  2064. package/dist/agents/skills/cursor/db-eventual-consistency/skill.yaml +38 -0
  2065. package/dist/agents/skills/cursor/db-expand-contract/SKILL.md +199 -0
  2066. package/dist/agents/skills/cursor/db-expand-contract/skill.yaml +40 -0
  2067. package/dist/agents/skills/cursor/db-explain-reading/SKILL.md +213 -0
  2068. package/dist/agents/skills/cursor/db-explain-reading/skill.yaml +44 -0
  2069. package/dist/agents/skills/cursor/db-expression-index/SKILL.md +211 -0
  2070. package/dist/agents/skills/cursor/db-expression-index/skill.yaml +40 -0
  2071. package/dist/agents/skills/cursor/db-first-normal-form/SKILL.md +190 -0
  2072. package/dist/agents/skills/cursor/db-first-normal-form/skill.yaml +38 -0
  2073. package/dist/agents/skills/cursor/db-graph-in-relational/SKILL.md +212 -0
  2074. package/dist/agents/skills/cursor/db-graph-in-relational/skill.yaml +41 -0
  2075. package/dist/agents/skills/cursor/db-hash-index/SKILL.md +176 -0
  2076. package/dist/agents/skills/cursor/db-hash-index/skill.yaml +37 -0
  2077. package/dist/agents/skills/cursor/db-hierarchical-data/SKILL.md +194 -0
  2078. package/dist/agents/skills/cursor/db-hierarchical-data/skill.yaml +41 -0
  2079. package/dist/agents/skills/cursor/db-horizontal-sharding/SKILL.md +228 -0
  2080. package/dist/agents/skills/cursor/db-horizontal-sharding/skill.yaml +40 -0
  2081. package/dist/agents/skills/cursor/db-isolation-levels/SKILL.md +158 -0
  2082. package/dist/agents/skills/cursor/db-isolation-levels/skill.yaml +43 -0
  2083. package/dist/agents/skills/cursor/db-isolation-selection/SKILL.md +160 -0
  2084. package/dist/agents/skills/cursor/db-isolation-selection/skill.yaml +41 -0
  2085. package/dist/agents/skills/cursor/db-migration-rollback/SKILL.md +223 -0
  2086. package/dist/agents/skills/cursor/db-migration-rollback/skill.yaml +40 -0
  2087. package/dist/agents/skills/cursor/db-mvcc/SKILL.md +191 -0
  2088. package/dist/agents/skills/cursor/db-mvcc/skill.yaml +45 -0
  2089. package/dist/agents/skills/cursor/db-nested-sets/SKILL.md +171 -0
  2090. package/dist/agents/skills/cursor/db-nested-sets/skill.yaml +38 -0
  2091. package/dist/agents/skills/cursor/db-optimistic-locking/SKILL.md +151 -0
  2092. package/dist/agents/skills/cursor/db-optimistic-locking/skill.yaml +44 -0
  2093. package/dist/agents/skills/cursor/db-partial-index/SKILL.md +196 -0
  2094. package/dist/agents/skills/cursor/db-partial-index/skill.yaml +39 -0
  2095. package/dist/agents/skills/cursor/db-pessimistic-locking/SKILL.md +158 -0
  2096. package/dist/agents/skills/cursor/db-pessimistic-locking/skill.yaml +44 -0
  2097. package/dist/agents/skills/cursor/db-polymorphic-associations/SKILL.md +187 -0
  2098. package/dist/agents/skills/cursor/db-polymorphic-associations/skill.yaml +42 -0
  2099. package/dist/agents/skills/cursor/db-query-rewriting/SKILL.md +249 -0
  2100. package/dist/agents/skills/cursor/db-query-rewriting/skill.yaml +43 -0
  2101. package/dist/agents/skills/cursor/db-query-statistics/SKILL.md +210 -0
  2102. package/dist/agents/skills/cursor/db-query-statistics/skill.yaml +41 -0
  2103. package/dist/agents/skills/cursor/db-read-phenomena/SKILL.md +205 -0
  2104. package/dist/agents/skills/cursor/db-read-phenomena/skill.yaml +42 -0
  2105. package/dist/agents/skills/cursor/db-scan-types/SKILL.md +248 -0
  2106. package/dist/agents/skills/cursor/db-scan-types/skill.yaml +41 -0
  2107. package/dist/agents/skills/cursor/db-second-normal-form/SKILL.md +183 -0
  2108. package/dist/agents/skills/cursor/db-second-normal-form/skill.yaml +38 -0
  2109. package/dist/agents/skills/cursor/db-table-partitioning/SKILL.md +229 -0
  2110. package/dist/agents/skills/cursor/db-table-partitioning/skill.yaml +39 -0
  2111. package/dist/agents/skills/cursor/db-temporal-data/SKILL.md +194 -0
  2112. package/dist/agents/skills/cursor/db-temporal-data/skill.yaml +41 -0
  2113. package/dist/agents/skills/cursor/db-third-normal-form/SKILL.md +210 -0
  2114. package/dist/agents/skills/cursor/db-third-normal-form/skill.yaml +38 -0
  2115. package/dist/agents/skills/cursor/db-time-series/SKILL.md +196 -0
  2116. package/dist/agents/skills/cursor/db-time-series/skill.yaml +41 -0
  2117. package/dist/agents/skills/cursor/db-vertical-partitioning/SKILL.md +249 -0
  2118. package/dist/agents/skills/cursor/db-vertical-partitioning/skill.yaml +40 -0
  2119. package/dist/agents/skills/cursor/db-zero-downtime-migration/SKILL.md +199 -0
  2120. package/dist/agents/skills/cursor/db-zero-downtime-migration/skill.yaml +42 -0
  2121. package/dist/agents/skills/cursor/design-affordances/skill.yaml +1 -0
  2122. package/dist/agents/skills/cursor/design-alignment/skill.yaml +1 -0
  2123. package/dist/agents/skills/cursor/design-apple-hig/skill.yaml +1 -0
  2124. package/dist/agents/skills/cursor/design-atomic-design/skill.yaml +1 -0
  2125. package/dist/agents/skills/cursor/design-brand-consistency/skill.yaml +1 -0
  2126. package/dist/agents/skills/cursor/design-color-accessibility/skill.yaml +1 -0
  2127. package/dist/agents/skills/cursor/design-color-harmony/skill.yaml +1 -0
  2128. package/dist/agents/skills/cursor/design-color-psychology/skill.yaml +1 -0
  2129. package/dist/agents/skills/cursor/design-component-anatomy/skill.yaml +1 -0
  2130. package/dist/agents/skills/cursor/design-consistency/skill.yaml +1 -0
  2131. package/dist/agents/skills/cursor/design-content-density/skill.yaml +1 -0
  2132. package/dist/agents/skills/cursor/design-contrast-ratio/skill.yaml +1 -0
  2133. package/dist/agents/skills/cursor/design-dark-mode-color/skill.yaml +1 -0
  2134. package/dist/agents/skills/cursor/design-data-viz-design/skill.yaml +1 -0
  2135. package/dist/agents/skills/cursor/design-design-audit/skill.yaml +1 -0
  2136. package/dist/agents/skills/cursor/design-design-critique/skill.yaml +1 -0
  2137. package/dist/agents/skills/cursor/design-design-documentation/skill.yaml +1 -0
  2138. package/dist/agents/skills/cursor/design-design-governance/skill.yaml +1 -0
  2139. package/dist/agents/skills/cursor/design-elevation-shadow/skill.yaml +1 -0
  2140. package/dist/agents/skills/cursor/design-empty-error-states/skill.yaml +3 -0
  2141. package/dist/agents/skills/cursor/design-feedback-patterns/skill.yaml +5 -0
  2142. package/dist/agents/skills/cursor/design-fluent-design/skill.yaml +1 -0
  2143. package/dist/agents/skills/cursor/design-font-pairing/skill.yaml +1 -0
  2144. package/dist/agents/skills/cursor/design-form-ux/skill.yaml +2 -0
  2145. package/dist/agents/skills/cursor/design-gestalt-closure-continuity/skill.yaml +1 -0
  2146. package/dist/agents/skills/cursor/design-gestalt-common-fate/skill.yaml +1 -0
  2147. package/dist/agents/skills/cursor/design-gestalt-figure-ground/skill.yaml +1 -0
  2148. package/dist/agents/skills/cursor/design-gestalt-proximity/skill.yaml +1 -0
  2149. package/dist/agents/skills/cursor/design-gestalt-similarity/skill.yaml +1 -0
  2150. package/dist/agents/skills/cursor/design-grid-systems/skill.yaml +1 -0
  2151. package/dist/agents/skills/cursor/design-i18n-design/skill.yaml +2 -0
  2152. package/dist/agents/skills/cursor/design-iconography/skill.yaml +1 -0
  2153. package/dist/agents/skills/cursor/design-illustration-style/skill.yaml +1 -0
  2154. package/dist/agents/skills/cursor/design-imagery-photography/skill.yaml +1 -0
  2155. package/dist/agents/skills/cursor/design-information-architecture/skill.yaml +3 -0
  2156. package/dist/agents/skills/cursor/design-loading-patterns/skill.yaml +2 -0
  2157. package/dist/agents/skills/cursor/design-material-design-3/skill.yaml +1 -0
  2158. package/dist/agents/skills/cursor/design-micro-interactions/skill.yaml +1 -0
  2159. package/dist/agents/skills/cursor/design-motion-principles/skill.yaml +1 -0
  2160. package/dist/agents/skills/cursor/design-naming-conventions/skill.yaml +1 -0
  2161. package/dist/agents/skills/cursor/design-navigation-ux/skill.yaml +2 -0
  2162. package/dist/agents/skills/cursor/design-palette-construction/skill.yaml +1 -0
  2163. package/dist/agents/skills/cursor/design-parallax-scroll/skill.yaml +1 -0
  2164. package/dist/agents/skills/cursor/design-readability/skill.yaml +3 -0
  2165. package/dist/agents/skills/cursor/design-responsive-strategy/skill.yaml +1 -0
  2166. package/dist/agents/skills/cursor/design-responsive-type/skill.yaml +1 -0
  2167. package/dist/agents/skills/cursor/design-state-design/skill.yaml +1 -0
  2168. package/dist/agents/skills/cursor/design-token-architecture/skill.yaml +1 -0
  2169. package/dist/agents/skills/cursor/design-transitions-timing/skill.yaml +1 -0
  2170. package/dist/agents/skills/cursor/design-type-scale/skill.yaml +1 -0
  2171. package/dist/agents/skills/cursor/design-typographic-hierarchy/skill.yaml +1 -0
  2172. package/dist/agents/skills/cursor/design-typography-fundamentals/skill.yaml +1 -0
  2173. package/dist/agents/skills/cursor/design-visual-hierarchy/skill.yaml +1 -0
  2174. package/dist/agents/skills/cursor/design-web-fonts/skill.yaml +1 -0
  2175. package/dist/agents/skills/cursor/design-whitespace/skill.yaml +1 -0
  2176. package/dist/agents/skills/cursor/detect-doc-drift/skill.yaml +1 -0
  2177. package/dist/agents/skills/cursor/drizzle-filtering-pattern/skill.yaml +1 -0
  2178. package/dist/agents/skills/cursor/drizzle-migrations/skill.yaml +3 -0
  2179. package/dist/agents/skills/cursor/drizzle-performance-patterns/skill.yaml +8 -0
  2180. package/dist/agents/skills/cursor/drizzle-query-builder/skill.yaml +1 -0
  2181. package/dist/agents/skills/cursor/drizzle-raw-sql/skill.yaml +1 -0
  2182. package/dist/agents/skills/cursor/drizzle-relations-pattern/skill.yaml +1 -0
  2183. package/dist/agents/skills/cursor/drizzle-schema-definition/skill.yaml +4 -0
  2184. package/dist/agents/skills/cursor/drizzle-transactions/skill.yaml +4 -0
  2185. package/dist/agents/skills/cursor/drizzle-with-nextjs/skill.yaml +1 -0
  2186. package/dist/agents/skills/cursor/enforce-architecture/skill.yaml +1 -0
  2187. package/dist/agents/skills/cursor/events-event-schema/skill.yaml +1 -0
  2188. package/dist/agents/skills/cursor/events-event-storming/skill.yaml +1 -0
  2189. package/dist/agents/skills/cursor/events-idempotency/SKILL.md +1 -0
  2190. package/dist/agents/skills/cursor/events-idempotency/skill.yaml +2 -0
  2191. package/dist/agents/skills/cursor/events-kafka-patterns/skill.yaml +1 -0
  2192. package/dist/agents/skills/cursor/events-message-queue/skill.yaml +1 -0
  2193. package/dist/agents/skills/cursor/events-outbox-pattern/skill.yaml +1 -0
  2194. package/dist/agents/skills/cursor/events-pubsub-pattern/skill.yaml +1 -0
  2195. package/dist/agents/skills/cursor/events-redis-pubsub/skill.yaml +1 -0
  2196. package/dist/agents/skills/cursor/events-saga-choreography/skill.yaml +1 -0
  2197. package/dist/agents/skills/cursor/events-sse-pattern/skill.yaml +1 -0
  2198. package/dist/agents/skills/cursor/events-webhooks-pattern/SKILL.md +1 -0
  2199. package/dist/agents/skills/cursor/events-webhooks-pattern/skill.yaml +3 -0
  2200. package/dist/agents/skills/cursor/events-websocket-pattern/skill.yaml +1 -0
  2201. package/dist/agents/skills/cursor/gof-abstract-factory/skill.yaml +1 -0
  2202. package/dist/agents/skills/cursor/gof-adapter-pattern/skill.yaml +1 -0
  2203. package/dist/agents/skills/cursor/gof-bridge-pattern/skill.yaml +1 -0
  2204. package/dist/agents/skills/cursor/gof-builder-pattern/skill.yaml +1 -0
  2205. package/dist/agents/skills/cursor/gof-chain-of-responsibility/skill.yaml +1 -0
  2206. package/dist/agents/skills/cursor/gof-command-pattern/skill.yaml +1 -0
  2207. package/dist/agents/skills/cursor/gof-composite-pattern/skill.yaml +1 -0
  2208. package/dist/agents/skills/cursor/gof-decorator-pattern/skill.yaml +1 -0
  2209. package/dist/agents/skills/cursor/gof-facade-pattern/skill.yaml +1 -0
  2210. package/dist/agents/skills/cursor/gof-factory-method/skill.yaml +1 -0
  2211. package/dist/agents/skills/cursor/gof-flyweight-pattern/skill.yaml +1 -0
  2212. package/dist/agents/skills/cursor/gof-iterator-pattern/skill.yaml +1 -0
  2213. package/dist/agents/skills/cursor/gof-mediator-pattern/skill.yaml +1 -0
  2214. package/dist/agents/skills/cursor/gof-memento-pattern/skill.yaml +1 -0
  2215. package/dist/agents/skills/cursor/gof-null-object/skill.yaml +1 -0
  2216. package/dist/agents/skills/cursor/gof-observer-pattern/skill.yaml +1 -0
  2217. package/dist/agents/skills/cursor/gof-prototype-pattern/skill.yaml +1 -0
  2218. package/dist/agents/skills/cursor/gof-proxy-pattern/skill.yaml +1 -0
  2219. package/dist/agents/skills/cursor/gof-singleton/skill.yaml +1 -0
  2220. package/dist/agents/skills/cursor/gof-state-pattern/skill.yaml +1 -0
  2221. package/dist/agents/skills/cursor/gof-strategy-pattern/skill.yaml +1 -0
  2222. package/dist/agents/skills/cursor/gof-template-method/skill.yaml +1 -0
  2223. package/dist/agents/skills/cursor/gof-visitor-pattern/skill.yaml +1 -0
  2224. package/dist/agents/skills/cursor/graphql-apollo-server/skill.yaml +1 -0
  2225. package/dist/agents/skills/cursor/graphql-auth-patterns/SKILL.md +1 -0
  2226. package/dist/agents/skills/cursor/graphql-auth-patterns/skill.yaml +3 -0
  2227. package/dist/agents/skills/cursor/graphql-client-patterns/skill.yaml +1 -0
  2228. package/dist/agents/skills/cursor/graphql-codegen-pattern/skill.yaml +1 -0
  2229. package/dist/agents/skills/cursor/graphql-dataloader-pattern/skill.yaml +1 -0
  2230. package/dist/agents/skills/cursor/graphql-error-handling/SKILL.md +1 -0
  2231. package/dist/agents/skills/cursor/graphql-error-handling/skill.yaml +3 -0
  2232. package/dist/agents/skills/cursor/graphql-federation-pattern/skill.yaml +1 -0
  2233. package/dist/agents/skills/cursor/graphql-pagination-patterns/SKILL.md +1 -0
  2234. package/dist/agents/skills/cursor/graphql-pagination-patterns/skill.yaml +4 -0
  2235. package/dist/agents/skills/cursor/graphql-performance-patterns/skill.yaml +6 -0
  2236. package/dist/agents/skills/cursor/graphql-resolver-pattern/skill.yaml +1 -0
  2237. package/dist/agents/skills/cursor/graphql-schema-design/SKILL.md +1 -0
  2238. package/dist/agents/skills/cursor/graphql-schema-design/skill.yaml +3 -0
  2239. package/dist/agents/skills/cursor/graphql-subscriptions/skill.yaml +1 -0
  2240. package/dist/agents/skills/cursor/harness-accessibility/skill.yaml +1 -0
  2241. package/dist/agents/skills/cursor/harness-api-design/skill.yaml +1 -0
  2242. package/dist/agents/skills/cursor/harness-architecture-advisor/skill.yaml +1 -0
  2243. package/dist/agents/skills/cursor/harness-auth/skill.yaml +1 -0
  2244. package/dist/agents/skills/cursor/harness-autopilot/SKILL.md +171 -822
  2245. package/dist/agents/skills/cursor/harness-autopilot/skill.yaml +1 -0
  2246. package/dist/agents/skills/cursor/harness-brainstorming/SKILL.md +145 -195
  2247. package/dist/agents/skills/cursor/harness-brainstorming/skill.yaml +4 -0
  2248. package/dist/agents/skills/cursor/harness-caching/skill.yaml +1 -0
  2249. package/dist/agents/skills/cursor/harness-chaos/skill.yaml +1 -0
  2250. package/dist/agents/skills/cursor/harness-code-review/SKILL.md +267 -436
  2251. package/dist/agents/skills/cursor/harness-code-review/skill.yaml +7 -0
  2252. package/dist/agents/skills/cursor/harness-codebase-cleanup/skill.yaml +1 -0
  2253. package/dist/agents/skills/cursor/harness-compliance/skill.yaml +1 -0
  2254. package/dist/agents/skills/cursor/harness-containerization/skill.yaml +1 -0
  2255. package/dist/agents/skills/cursor/harness-data-pipeline/skill.yaml +1 -0
  2256. package/dist/agents/skills/cursor/harness-data-validation/skill.yaml +1 -0
  2257. package/dist/agents/skills/cursor/harness-database/skill.yaml +1 -0
  2258. package/dist/agents/skills/cursor/harness-debugging/skill.yaml +1 -0
  2259. package/dist/agents/skills/cursor/harness-dependency-health/skill.yaml +1 -0
  2260. package/dist/agents/skills/cursor/harness-deployment/skill.yaml +1 -0
  2261. package/dist/agents/skills/cursor/harness-design/skill.yaml +1 -0
  2262. package/dist/agents/skills/cursor/harness-design-mobile/skill.yaml +1 -0
  2263. package/dist/agents/skills/cursor/harness-design-system/skill.yaml +1 -0
  2264. package/dist/agents/skills/cursor/harness-design-web/skill.yaml +1 -0
  2265. package/dist/agents/skills/cursor/harness-diagnostics/skill.yaml +1 -0
  2266. package/dist/agents/skills/cursor/harness-docs-pipeline/skill.yaml +1 -0
  2267. package/dist/agents/skills/cursor/harness-dx/skill.yaml +1 -0
  2268. package/dist/agents/skills/cursor/harness-e2e/skill.yaml +1 -0
  2269. package/dist/agents/skills/cursor/harness-event-driven/skill.yaml +1 -0
  2270. package/dist/agents/skills/cursor/harness-execution/SKILL.md +180 -271
  2271. package/dist/agents/skills/cursor/harness-execution/skill.yaml +13 -0
  2272. package/dist/agents/skills/cursor/harness-feature-flags/skill.yaml +1 -0
  2273. package/dist/agents/skills/cursor/harness-git-workflow/skill.yaml +1 -0
  2274. package/dist/agents/skills/cursor/harness-hotspot-detector/skill.yaml +1 -0
  2275. package/dist/agents/skills/cursor/harness-i18n/skill.yaml +1 -0
  2276. package/dist/agents/skills/cursor/harness-i18n-process/skill.yaml +1 -0
  2277. package/dist/agents/skills/cursor/harness-i18n-workflow/skill.yaml +1 -0
  2278. package/dist/agents/skills/cursor/harness-impact-analysis/skill.yaml +1 -0
  2279. package/dist/agents/skills/cursor/harness-incident-response/skill.yaml +1 -0
  2280. package/dist/agents/skills/cursor/harness-infrastructure-as-code/skill.yaml +1 -0
  2281. package/dist/agents/skills/cursor/harness-integration-test/skill.yaml +1 -0
  2282. package/dist/agents/skills/cursor/harness-integrity/skill.yaml +1 -0
  2283. package/dist/agents/skills/cursor/harness-knowledge-mapper/skill.yaml +1 -0
  2284. package/dist/agents/skills/cursor/harness-load-testing/skill.yaml +1 -0
  2285. package/dist/agents/skills/cursor/harness-ml-ops/skill.yaml +1 -0
  2286. package/dist/agents/skills/cursor/harness-mobile-patterns/skill.yaml +1 -0
  2287. package/dist/agents/skills/cursor/harness-mutation-test/skill.yaml +1 -0
  2288. package/dist/agents/skills/cursor/harness-observability/skill.yaml +1 -0
  2289. package/dist/agents/skills/cursor/harness-onboarding/skill.yaml +1 -0
  2290. package/dist/agents/skills/cursor/harness-parallel-agents/skill.yaml +1 -0
  2291. package/dist/agents/skills/cursor/harness-perf/skill.yaml +1 -0
  2292. package/dist/agents/skills/cursor/harness-perf-tdd/skill.yaml +1 -0
  2293. package/dist/agents/skills/cursor/harness-planning/SKILL.md +142 -322
  2294. package/dist/agents/skills/cursor/harness-planning/skill.yaml +7 -0
  2295. package/dist/agents/skills/cursor/harness-pre-commit-review/skill.yaml +1 -0
  2296. package/dist/agents/skills/cursor/harness-product-spec/skill.yaml +1 -0
  2297. package/dist/agents/skills/cursor/harness-property-test/skill.yaml +1 -0
  2298. package/dist/agents/skills/cursor/harness-refactoring/skill.yaml +1 -0
  2299. package/dist/agents/skills/cursor/harness-release-readiness/skill.yaml +1 -0
  2300. package/dist/agents/skills/cursor/harness-resilience/skill.yaml +1 -0
  2301. package/dist/agents/skills/cursor/harness-roadmap/skill.yaml +1 -0
  2302. package/dist/agents/skills/cursor/harness-roadmap-pilot/skill.yaml +1 -0
  2303. package/dist/agents/skills/cursor/harness-router/SKILL.md +69 -123
  2304. package/dist/agents/skills/cursor/harness-router/skill.yaml +1 -0
  2305. package/dist/agents/skills/cursor/harness-secrets/SKILL.md +3 -3
  2306. package/dist/agents/skills/cursor/harness-secrets/skill.yaml +1 -0
  2307. package/dist/agents/skills/cursor/harness-security-review/skill.yaml +6 -0
  2308. package/dist/agents/skills/cursor/harness-security-scan/skill.yaml +7 -0
  2309. package/dist/agents/skills/cursor/harness-skill-authoring/skill.yaml +1 -0
  2310. package/dist/agents/skills/cursor/harness-soundness-review/SKILL.md +483 -667
  2311. package/dist/agents/skills/cursor/harness-soundness-review/skill.yaml +1 -0
  2312. package/dist/agents/skills/cursor/harness-sql-review/skill.yaml +1 -0
  2313. package/dist/agents/skills/cursor/harness-state-management/skill.yaml +1 -0
  2314. package/dist/agents/skills/cursor/harness-supply-chain-audit/skill.yaml +1 -0
  2315. package/dist/agents/skills/cursor/harness-tdd/skill.yaml +1 -0
  2316. package/dist/agents/skills/cursor/harness-test-advisor/skill.yaml +1 -0
  2317. package/dist/agents/skills/cursor/harness-test-data/skill.yaml +1 -0
  2318. package/dist/agents/skills/cursor/harness-ux-copy/skill.yaml +13 -0
  2319. package/dist/agents/skills/cursor/harness-verification/SKILL.md +135 -221
  2320. package/dist/agents/skills/cursor/harness-verification/skill.yaml +4 -0
  2321. package/dist/agents/skills/cursor/harness-verify/skill.yaml +1 -0
  2322. package/dist/agents/skills/cursor/harness-visual-regression/skill.yaml +1 -0
  2323. package/dist/agents/skills/cursor/initialize-harness-project/skill.yaml +1 -0
  2324. package/dist/agents/skills/cursor/js-abstract-factory-pattern/skill.yaml +1 -0
  2325. package/dist/agents/skills/cursor/js-adapter-pattern/skill.yaml +1 -0
  2326. package/dist/agents/skills/cursor/js-bridge-pattern/skill.yaml +1 -0
  2327. package/dist/agents/skills/cursor/js-chain-of-responsibility-pattern/skill.yaml +1 -0
  2328. package/dist/agents/skills/cursor/js-command-pattern/skill.yaml +1 -0
  2329. package/dist/agents/skills/cursor/js-composite-pattern/skill.yaml +1 -0
  2330. package/dist/agents/skills/cursor/js-constructor-pattern/skill.yaml +1 -0
  2331. package/dist/agents/skills/cursor/js-decorator-pattern/skill.yaml +1 -0
  2332. package/dist/agents/skills/cursor/js-dynamic-import/skill.yaml +1 -0
  2333. package/dist/agents/skills/cursor/js-facade-pattern/skill.yaml +1 -0
  2334. package/dist/agents/skills/cursor/js-factory-pattern/skill.yaml +1 -0
  2335. package/dist/agents/skills/cursor/js-flyweight-pattern/skill.yaml +1 -0
  2336. package/dist/agents/skills/cursor/js-iterator-pattern/skill.yaml +1 -0
  2337. package/dist/agents/skills/cursor/js-mediator-middleware-pattern/skill.yaml +1 -0
  2338. package/dist/agents/skills/cursor/js-mixin-pattern/skill.yaml +1 -0
  2339. package/dist/agents/skills/cursor/js-module-pattern/skill.yaml +1 -0
  2340. package/dist/agents/skills/cursor/js-observer-pattern/skill.yaml +1 -0
  2341. package/dist/agents/skills/cursor/js-prototype-pattern/skill.yaml +1 -0
  2342. package/dist/agents/skills/cursor/js-provider-pattern/skill.yaml +1 -0
  2343. package/dist/agents/skills/cursor/js-proxy-pattern/skill.yaml +1 -0
  2344. package/dist/agents/skills/cursor/js-revealing-module-pattern/skill.yaml +1 -0
  2345. package/dist/agents/skills/cursor/js-singleton-pattern/skill.yaml +1 -0
  2346. package/dist/agents/skills/cursor/js-state-pattern/skill.yaml +1 -0
  2347. package/dist/agents/skills/cursor/js-static-import/skill.yaml +1 -0
  2348. package/dist/agents/skills/cursor/js-strategy-pattern/skill.yaml +1 -0
  2349. package/dist/agents/skills/cursor/js-template-method-pattern/skill.yaml +1 -0
  2350. package/dist/agents/skills/cursor/js-visitor-pattern/skill.yaml +1 -0
  2351. package/dist/agents/skills/cursor/microservices-api-gateway/skill.yaml +1 -0
  2352. package/dist/agents/skills/cursor/microservices-bulkhead-pattern/skill.yaml +1 -0
  2353. package/dist/agents/skills/cursor/microservices-circuit-breaker/skill.yaml +1 -0
  2354. package/dist/agents/skills/cursor/microservices-config-server/SKILL.md +1 -1
  2355. package/dist/agents/skills/cursor/microservices-config-server/skill.yaml +1 -0
  2356. package/dist/agents/skills/cursor/microservices-cqrs-pattern/skill.yaml +3 -0
  2357. package/dist/agents/skills/cursor/microservices-decomposition/skill.yaml +1 -0
  2358. package/dist/agents/skills/cursor/microservices-distributed-tracing/skill.yaml +1 -0
  2359. package/dist/agents/skills/cursor/microservices-event-sourcing/skill.yaml +3 -0
  2360. package/dist/agents/skills/cursor/microservices-health-check/skill.yaml +1 -0
  2361. package/dist/agents/skills/cursor/microservices-outbox-pattern/skill.yaml +1 -0
  2362. package/dist/agents/skills/cursor/microservices-saga-pattern/skill.yaml +1 -0
  2363. package/dist/agents/skills/cursor/microservices-service-discovery/skill.yaml +1 -0
  2364. package/dist/agents/skills/cursor/microservices-sidecar-pattern/skill.yaml +1 -0
  2365. package/dist/agents/skills/cursor/microservices-strangler-fig/skill.yaml +1 -0
  2366. package/dist/agents/skills/cursor/mobile-animation-patterns/skill.yaml +1 -0
  2367. package/dist/agents/skills/cursor/mobile-deployment-patterns/skill.yaml +1 -0
  2368. package/dist/agents/skills/cursor/mobile-expo-setup/skill.yaml +1 -0
  2369. package/dist/agents/skills/cursor/mobile-flatlist-patterns/skill.yaml +1 -0
  2370. package/dist/agents/skills/cursor/mobile-gesture-handling/skill.yaml +1 -0
  2371. package/dist/agents/skills/cursor/mobile-native-modules/skill.yaml +1 -0
  2372. package/dist/agents/skills/cursor/mobile-navigation-pattern/skill.yaml +1 -0
  2373. package/dist/agents/skills/cursor/mobile-network-patterns/skill.yaml +1 -0
  2374. package/dist/agents/skills/cursor/mobile-performance-patterns/skill.yaml +6 -0
  2375. package/dist/agents/skills/cursor/mobile-push-notifications/skill.yaml +1 -0
  2376. package/dist/agents/skills/cursor/mobile-storage-patterns/skill.yaml +1 -0
  2377. package/dist/agents/skills/cursor/mobile-testing-patterns/skill.yaml +1 -0
  2378. package/dist/agents/skills/cursor/nestjs-config-module/skill.yaml +1 -0
  2379. package/dist/agents/skills/cursor/nestjs-controller-pattern/skill.yaml +1 -0
  2380. package/dist/agents/skills/cursor/nestjs-dependency-injection/skill.yaml +1 -0
  2381. package/dist/agents/skills/cursor/nestjs-dto-validation/skill.yaml +1 -0
  2382. package/dist/agents/skills/cursor/nestjs-event-driven/skill.yaml +1 -0
  2383. package/dist/agents/skills/cursor/nestjs-exception-filters/skill.yaml +1 -0
  2384. package/dist/agents/skills/cursor/nestjs-graphql-integration/skill.yaml +1 -0
  2385. package/dist/agents/skills/cursor/nestjs-guards-pattern/skill.yaml +1 -0
  2386. package/dist/agents/skills/cursor/nestjs-interceptors-pattern/skill.yaml +1 -0
  2387. package/dist/agents/skills/cursor/nestjs-microservices/skill.yaml +1 -0
  2388. package/dist/agents/skills/cursor/nestjs-middleware-pattern/skill.yaml +1 -0
  2389. package/dist/agents/skills/cursor/nestjs-module-pattern/skill.yaml +1 -0
  2390. package/dist/agents/skills/cursor/nestjs-pipes-pattern/skill.yaml +1 -0
  2391. package/dist/agents/skills/cursor/nestjs-service-pattern/skill.yaml +1 -0
  2392. package/dist/agents/skills/cursor/nestjs-swagger-integration/skill.yaml +1 -0
  2393. package/dist/agents/skills/cursor/nestjs-testing-patterns/skill.yaml +1 -0
  2394. package/dist/agents/skills/cursor/next-app-router/skill.yaml +1 -0
  2395. package/dist/agents/skills/cursor/next-auth-patterns/skill.yaml +1 -0
  2396. package/dist/agents/skills/cursor/next-caching-strategies/skill.yaml +1 -0
  2397. package/dist/agents/skills/cursor/next-data-fetching/skill.yaml +1 -0
  2398. package/dist/agents/skills/cursor/next-deployment-optimization/skill.yaml +1 -0
  2399. package/dist/agents/skills/cursor/next-environment-config/skill.yaml +1 -0
  2400. package/dist/agents/skills/cursor/next-error-boundaries/skill.yaml +1 -0
  2401. package/dist/agents/skills/cursor/next-image-optimization/skill.yaml +1 -0
  2402. package/dist/agents/skills/cursor/next-metadata-api/skill.yaml +1 -0
  2403. package/dist/agents/skills/cursor/next-middleware-pattern/skill.yaml +1 -0
  2404. package/dist/agents/skills/cursor/next-monorepo-setup/skill.yaml +1 -0
  2405. package/dist/agents/skills/cursor/next-parallel-intercepting-routes/skill.yaml +1 -0
  2406. package/dist/agents/skills/cursor/next-route-handlers/skill.yaml +1 -0
  2407. package/dist/agents/skills/cursor/next-server-actions/skill.yaml +1 -0
  2408. package/dist/agents/skills/cursor/next-server-components/skill.yaml +1 -0
  2409. package/dist/agents/skills/cursor/next-static-generation/skill.yaml +1 -0
  2410. package/dist/agents/skills/cursor/next-streaming-suspense/skill.yaml +1 -0
  2411. package/dist/agents/skills/cursor/next-testing-patterns/skill.yaml +1 -0
  2412. package/dist/agents/skills/cursor/node-buffer-encoding/skill.yaml +1 -0
  2413. package/dist/agents/skills/cursor/node-child-process/skill.yaml +1 -0
  2414. package/dist/agents/skills/cursor/node-crypto-patterns/skill.yaml +1 -0
  2415. package/dist/agents/skills/cursor/node-environment-config/skill.yaml +1 -0
  2416. package/dist/agents/skills/cursor/node-error-handling/skill.yaml +1 -0
  2417. package/dist/agents/skills/cursor/node-esm-patterns/skill.yaml +1 -0
  2418. package/dist/agents/skills/cursor/node-event-emitter/skill.yaml +1 -0
  2419. package/dist/agents/skills/cursor/node-express-patterns/skill.yaml +1 -0
  2420. package/dist/agents/skills/cursor/node-fastify-patterns/skill.yaml +1 -0
  2421. package/dist/agents/skills/cursor/node-http-server/skill.yaml +1 -0
  2422. package/dist/agents/skills/cursor/node-path-fs-patterns/skill.yaml +1 -0
  2423. package/dist/agents/skills/cursor/node-performance-profiling/skill.yaml +6 -0
  2424. package/dist/agents/skills/cursor/node-streams-pattern/skill.yaml +1 -0
  2425. package/dist/agents/skills/cursor/node-testing-patterns/skill.yaml +1 -0
  2426. package/dist/agents/skills/cursor/node-worker-threads/skill.yaml +1 -0
  2427. package/dist/agents/skills/cursor/nuxt-auto-imports/skill.yaml +1 -0
  2428. package/dist/agents/skills/cursor/nuxt-composables-pattern/skill.yaml +1 -0
  2429. package/dist/agents/skills/cursor/nuxt-deployment-config/skill.yaml +1 -0
  2430. package/dist/agents/skills/cursor/nuxt-layouts-pages/skill.yaml +1 -0
  2431. package/dist/agents/skills/cursor/nuxt-middleware-pattern/skill.yaml +1 -0
  2432. package/dist/agents/skills/cursor/nuxt-modules-pattern/skill.yaml +1 -0
  2433. package/dist/agents/skills/cursor/nuxt-plugins-pattern/skill.yaml +1 -0
  2434. package/dist/agents/skills/cursor/nuxt-seo-metadata/skill.yaml +1 -0
  2435. package/dist/agents/skills/cursor/nuxt-server-routes/skill.yaml +1 -0
  2436. package/dist/agents/skills/cursor/nuxt-state-management/skill.yaml +1 -0
  2437. package/dist/agents/skills/cursor/nuxt-testing-patterns/skill.yaml +1 -0
  2438. package/dist/agents/skills/cursor/otel-context-propagation/skill.yaml +1 -0
  2439. package/dist/agents/skills/cursor/otel-custom-instrumentation/skill.yaml +1 -0
  2440. package/dist/agents/skills/cursor/otel-error-tracking/skill.yaml +1 -0
  2441. package/dist/agents/skills/cursor/otel-exporter-config/skill.yaml +1 -0
  2442. package/dist/agents/skills/cursor/otel-logging-pattern/skill.yaml +1 -0
  2443. package/dist/agents/skills/cursor/otel-metrics-pattern/skill.yaml +1 -0
  2444. package/dist/agents/skills/cursor/otel-nestjs-integration/skill.yaml +1 -0
  2445. package/dist/agents/skills/cursor/otel-nextjs-integration/skill.yaml +1 -0
  2446. package/dist/agents/skills/cursor/otel-performance-insights/skill.yaml +5 -0
  2447. package/dist/agents/skills/cursor/otel-sampling-strategies/skill.yaml +1 -0
  2448. package/dist/agents/skills/cursor/otel-sdk-setup/skill.yaml +1 -0
  2449. package/dist/agents/skills/cursor/otel-tracing-pattern/skill.yaml +1 -0
  2450. package/dist/agents/skills/cursor/owasp-auth-patterns/SKILL.md +1 -0
  2451. package/dist/agents/skills/cursor/owasp-auth-patterns/skill.yaml +8 -0
  2452. package/dist/agents/skills/cursor/owasp-cryptography/skill.yaml +6 -0
  2453. package/dist/agents/skills/cursor/owasp-csrf-protection/skill.yaml +3 -0
  2454. package/dist/agents/skills/cursor/owasp-dependency-security/skill.yaml +4 -0
  2455. package/dist/agents/skills/cursor/owasp-file-upload-security/skill.yaml +3 -0
  2456. package/dist/agents/skills/cursor/owasp-idor-prevention/skill.yaml +4 -0
  2457. package/dist/agents/skills/cursor/owasp-injection-prevention/skill.yaml +4 -0
  2458. package/dist/agents/skills/cursor/owasp-logging-monitoring/skill.yaml +5 -0
  2459. package/dist/agents/skills/cursor/owasp-rate-limiting/SKILL.md +1 -0
  2460. package/dist/agents/skills/cursor/owasp-rate-limiting/skill.yaml +5 -0
  2461. package/dist/agents/skills/cursor/owasp-secrets-management/SKILL.md +2 -1
  2462. package/dist/agents/skills/cursor/owasp-secrets-management/skill.yaml +5 -0
  2463. package/dist/agents/skills/cursor/owasp-security-headers/skill.yaml +4 -0
  2464. package/dist/agents/skills/cursor/owasp-xss-prevention/skill.yaml +3 -0
  2465. package/dist/agents/skills/cursor/perf-browser-cache/SKILL.md +151 -0
  2466. package/dist/agents/skills/cursor/perf-browser-cache/skill.yaml +39 -0
  2467. package/dist/agents/skills/cursor/perf-bundle-analysis/SKILL.md +217 -0
  2468. package/dist/agents/skills/cursor/perf-bundle-analysis/skill.yaml +37 -0
  2469. package/dist/agents/skills/cursor/perf-cache-invalidation/SKILL.md +228 -0
  2470. package/dist/agents/skills/cursor/perf-cache-invalidation/skill.yaml +38 -0
  2471. package/dist/agents/skills/cursor/perf-cdn-cache-control/SKILL.md +198 -0
  2472. package/dist/agents/skills/cursor/perf-cdn-cache-control/skill.yaml +40 -0
  2473. package/dist/agents/skills/cursor/perf-cdn-strategies/SKILL.md +161 -0
  2474. package/dist/agents/skills/cursor/perf-cdn-strategies/skill.yaml +40 -0
  2475. package/dist/agents/skills/cursor/perf-client-side-rendering/SKILL.md +245 -0
  2476. package/dist/agents/skills/cursor/perf-client-side-rendering/skill.yaml +40 -0
  2477. package/dist/agents/skills/cursor/perf-code-splitting/SKILL.md +185 -0
  2478. package/dist/agents/skills/cursor/perf-code-splitting/skill.yaml +39 -0
  2479. package/dist/agents/skills/cursor/perf-compression/SKILL.md +163 -0
  2480. package/dist/agents/skills/cursor/perf-compression/skill.yaml +38 -0
  2481. package/dist/agents/skills/cursor/perf-connection-costs/SKILL.md +165 -0
  2482. package/dist/agents/skills/cursor/perf-connection-costs/skill.yaml +40 -0
  2483. package/dist/agents/skills/cursor/perf-connection-pooling/SKILL.md +250 -0
  2484. package/dist/agents/skills/cursor/perf-connection-pooling/skill.yaml +38 -0
  2485. package/dist/agents/skills/cursor/perf-critical-rendering-path/SKILL.md +167 -0
  2486. package/dist/agents/skills/cursor/perf-critical-rendering-path/skill.yaml +39 -0
  2487. package/dist/agents/skills/cursor/perf-cumulative-layout-shift/SKILL.md +180 -0
  2488. package/dist/agents/skills/cursor/perf-cumulative-layout-shift/skill.yaml +40 -0
  2489. package/dist/agents/skills/cursor/perf-dom-parsing/SKILL.md +153 -0
  2490. package/dist/agents/skills/cursor/perf-dom-parsing/skill.yaml +36 -0
  2491. package/dist/agents/skills/cursor/perf-edge-rendering/SKILL.md +222 -0
  2492. package/dist/agents/skills/cursor/perf-edge-rendering/skill.yaml +39 -0
  2493. package/dist/agents/skills/cursor/perf-event-loop/SKILL.md +203 -0
  2494. package/dist/agents/skills/cursor/perf-event-loop/skill.yaml +38 -0
  2495. package/dist/agents/skills/cursor/perf-font-loading/SKILL.md +222 -0
  2496. package/dist/agents/skills/cursor/perf-font-loading/skill.yaml +39 -0
  2497. package/dist/agents/skills/cursor/perf-garbage-collection/SKILL.md +192 -0
  2498. package/dist/agents/skills/cursor/perf-garbage-collection/skill.yaml +40 -0
  2499. package/dist/agents/skills/cursor/perf-heap-profiling/SKILL.md +160 -0
  2500. package/dist/agents/skills/cursor/perf-heap-profiling/skill.yaml +38 -0
  2501. package/dist/agents/skills/cursor/perf-http2-multiplexing/SKILL.md +163 -0
  2502. package/dist/agents/skills/cursor/perf-http2-multiplexing/skill.yaml +38 -0
  2503. package/dist/agents/skills/cursor/perf-http3-quic/SKILL.md +165 -0
  2504. package/dist/agents/skills/cursor/perf-http3-quic/skill.yaml +37 -0
  2505. package/dist/agents/skills/cursor/perf-image-formats/SKILL.md +183 -0
  2506. package/dist/agents/skills/cursor/perf-image-formats/skill.yaml +39 -0
  2507. package/dist/agents/skills/cursor/perf-index-strategies/SKILL.md +210 -0
  2508. package/dist/agents/skills/cursor/perf-index-strategies/skill.yaml +40 -0
  2509. package/dist/agents/skills/cursor/perf-interaction-to-next-paint/SKILL.md +170 -0
  2510. package/dist/agents/skills/cursor/perf-interaction-to-next-paint/skill.yaml +40 -0
  2511. package/dist/agents/skills/cursor/perf-largest-contentful-paint/SKILL.md +162 -0
  2512. package/dist/agents/skills/cursor/perf-largest-contentful-paint/skill.yaml +41 -0
  2513. package/dist/agents/skills/cursor/perf-layout-reflow/SKILL.md +187 -0
  2514. package/dist/agents/skills/cursor/perf-layout-reflow/skill.yaml +38 -0
  2515. package/dist/agents/skills/cursor/perf-lazy-loading/SKILL.md +217 -0
  2516. package/dist/agents/skills/cursor/perf-lazy-loading/skill.yaml +38 -0
  2517. package/dist/agents/skills/cursor/perf-lazy-loading-media/SKILL.md +233 -0
  2518. package/dist/agents/skills/cursor/perf-lazy-loading-media/skill.yaml +38 -0
  2519. package/dist/agents/skills/cursor/perf-long-tasks/SKILL.md +194 -0
  2520. package/dist/agents/skills/cursor/perf-long-tasks/skill.yaml +38 -0
  2521. package/dist/agents/skills/cursor/perf-memory-leaks/SKILL.md +218 -0
  2522. package/dist/agents/skills/cursor/perf-memory-leaks/skill.yaml +38 -0
  2523. package/dist/agents/skills/cursor/perf-module-federation/SKILL.md +242 -0
  2524. package/dist/agents/skills/cursor/perf-module-federation/skill.yaml +38 -0
  2525. package/dist/agents/skills/cursor/perf-n-plus-one/SKILL.md +237 -0
  2526. package/dist/agents/skills/cursor/perf-n-plus-one/skill.yaml +40 -0
  2527. package/dist/agents/skills/cursor/perf-paint-compositing/SKILL.md +181 -0
  2528. package/dist/agents/skills/cursor/perf-paint-compositing/skill.yaml +40 -0
  2529. package/dist/agents/skills/cursor/perf-performance-api/SKILL.md +249 -0
  2530. package/dist/agents/skills/cursor/perf-performance-api/skill.yaml +41 -0
  2531. package/dist/agents/skills/cursor/perf-profiling-methodology/SKILL.md +181 -0
  2532. package/dist/agents/skills/cursor/perf-profiling-methodology/skill.yaml +44 -0
  2533. package/dist/agents/skills/cursor/perf-query-optimization/SKILL.md +203 -0
  2534. package/dist/agents/skills/cursor/perf-query-optimization/skill.yaml +39 -0
  2535. package/dist/agents/skills/cursor/perf-resource-hints/SKILL.md +167 -0
  2536. package/dist/agents/skills/cursor/perf-resource-hints/skill.yaml +40 -0
  2537. package/dist/agents/skills/cursor/perf-responsive-images/SKILL.md +225 -0
  2538. package/dist/agents/skills/cursor/perf-responsive-images/skill.yaml +38 -0
  2539. package/dist/agents/skills/cursor/perf-server-side-caching/SKILL.md +194 -0
  2540. package/dist/agents/skills/cursor/perf-server-side-caching/skill.yaml +40 -0
  2541. package/dist/agents/skills/cursor/perf-server-side-rendering/SKILL.md +239 -0
  2542. package/dist/agents/skills/cursor/perf-server-side-rendering/skill.yaml +39 -0
  2543. package/dist/agents/skills/cursor/perf-service-worker-caching/SKILL.md +247 -0
  2544. package/dist/agents/skills/cursor/perf-service-worker-caching/skill.yaml +40 -0
  2545. package/dist/agents/skills/cursor/perf-static-generation/SKILL.md +241 -0
  2546. package/dist/agents/skills/cursor/perf-static-generation/skill.yaml +39 -0
  2547. package/dist/agents/skills/cursor/perf-streaming-rendering/SKILL.md +242 -0
  2548. package/dist/agents/skills/cursor/perf-streaming-rendering/skill.yaml +37 -0
  2549. package/dist/agents/skills/cursor/perf-style-calculation/SKILL.md +166 -0
  2550. package/dist/agents/skills/cursor/perf-style-calculation/skill.yaml +36 -0
  2551. package/dist/agents/skills/cursor/perf-svg-optimization/SKILL.md +249 -0
  2552. package/dist/agents/skills/cursor/perf-svg-optimization/skill.yaml +37 -0
  2553. package/dist/agents/skills/cursor/perf-tree-shaking/SKILL.md +225 -0
  2554. package/dist/agents/skills/cursor/perf-tree-shaking/skill.yaml +38 -0
  2555. package/dist/agents/skills/cursor/perf-web-workers/SKILL.md +237 -0
  2556. package/dist/agents/skills/cursor/perf-web-workers/skill.yaml +40 -0
  2557. package/dist/agents/skills/cursor/prisma-client-queries/skill.yaml +1 -0
  2558. package/dist/agents/skills/cursor/prisma-filtering-sorting/skill.yaml +1 -0
  2559. package/dist/agents/skills/cursor/prisma-migrations/skill.yaml +3 -0
  2560. package/dist/agents/skills/cursor/prisma-performance-patterns/skill.yaml +8 -0
  2561. package/dist/agents/skills/cursor/prisma-raw-queries/skill.yaml +1 -0
  2562. package/dist/agents/skills/cursor/prisma-relations-pattern/skill.yaml +1 -0
  2563. package/dist/agents/skills/cursor/prisma-schema-design/skill.yaml +4 -0
  2564. package/dist/agents/skills/cursor/prisma-seeding-pattern/skill.yaml +1 -0
  2565. package/dist/agents/skills/cursor/prisma-soft-delete/skill.yaml +1 -0
  2566. package/dist/agents/skills/cursor/prisma-transactions/skill.yaml +4 -0
  2567. package/dist/agents/skills/cursor/prisma-type-generation/skill.yaml +1 -0
  2568. package/dist/agents/skills/cursor/react-2026/skill.yaml +1 -0
  2569. package/dist/agents/skills/cursor/react-client-rendering/skill.yaml +1 -0
  2570. package/dist/agents/skills/cursor/react-compound-pattern/skill.yaml +1 -0
  2571. package/dist/agents/skills/cursor/react-concurrent-ui/skill.yaml +1 -0
  2572. package/dist/agents/skills/cursor/react-container-presentational/skill.yaml +1 -0
  2573. package/dist/agents/skills/cursor/react-context-pattern/skill.yaml +1 -0
  2574. package/dist/agents/skills/cursor/react-dynamic-import/skill.yaml +1 -0
  2575. package/dist/agents/skills/cursor/react-hoc-pattern/skill.yaml +1 -0
  2576. package/dist/agents/skills/cursor/react-hooks-pattern/skill.yaml +1 -0
  2577. package/dist/agents/skills/cursor/react-islands-pattern/skill.yaml +1 -0
  2578. package/dist/agents/skills/cursor/react-memoization-pattern/skill.yaml +1 -0
  2579. package/dist/agents/skills/cursor/react-progressive-hydration/skill.yaml +1 -0
  2580. package/dist/agents/skills/cursor/react-provider-pattern/skill.yaml +1 -0
  2581. package/dist/agents/skills/cursor/react-render-props-pattern/skill.yaml +1 -0
  2582. package/dist/agents/skills/cursor/react-server-components/skill.yaml +1 -0
  2583. package/dist/agents/skills/cursor/react-server-rendering/skill.yaml +1 -0
  2584. package/dist/agents/skills/cursor/react-state-management-pattern/skill.yaml +1 -0
  2585. package/dist/agents/skills/cursor/react-static-import/skill.yaml +1 -0
  2586. package/dist/agents/skills/cursor/react-suspense-pattern/skill.yaml +1 -0
  2587. package/dist/agents/skills/cursor/redux-entity-adapter/skill.yaml +1 -0
  2588. package/dist/agents/skills/cursor/redux-listener-middleware/skill.yaml +1 -0
  2589. package/dist/agents/skills/cursor/redux-persistence-pattern/skill.yaml +1 -0
  2590. package/dist/agents/skills/cursor/redux-rtk-optimistic/skill.yaml +1 -0
  2591. package/dist/agents/skills/cursor/redux-rtk-query-endpoints/skill.yaml +1 -0
  2592. package/dist/agents/skills/cursor/redux-rtk-query-setup/skill.yaml +1 -0
  2593. package/dist/agents/skills/cursor/redux-selectors-pattern/skill.yaml +1 -0
  2594. package/dist/agents/skills/cursor/redux-slice-pattern/skill.yaml +1 -0
  2595. package/dist/agents/skills/cursor/redux-store-setup/skill.yaml +1 -0
  2596. package/dist/agents/skills/cursor/redux-testing-patterns/skill.yaml +1 -0
  2597. package/dist/agents/skills/cursor/redux-thunk-pattern/skill.yaml +1 -0
  2598. package/dist/agents/skills/cursor/redux-typescript-patterns/skill.yaml +1 -0
  2599. package/dist/agents/skills/cursor/resilience-bulkhead-pattern/skill.yaml +1 -0
  2600. package/dist/agents/skills/cursor/resilience-chaos-testing/skill.yaml +1 -0
  2601. package/dist/agents/skills/cursor/resilience-circuit-breaker/skill.yaml +1 -0
  2602. package/dist/agents/skills/cursor/resilience-dead-letter/skill.yaml +1 -0
  2603. package/dist/agents/skills/cursor/resilience-fallback-pattern/skill.yaml +1 -0
  2604. package/dist/agents/skills/cursor/resilience-health-checks/skill.yaml +1 -0
  2605. package/dist/agents/skills/cursor/resilience-idempotency/skill.yaml +1 -0
  2606. package/dist/agents/skills/cursor/resilience-rate-limiting/skill.yaml +1 -0
  2607. package/dist/agents/skills/cursor/resilience-retry-pattern/skill.yaml +1 -0
  2608. package/dist/agents/skills/cursor/resilience-timeout-pattern/skill.yaml +1 -0
  2609. package/dist/agents/skills/cursor/security-abac-design/SKILL.md +154 -0
  2610. package/dist/agents/skills/cursor/security-abac-design/skill.yaml +41 -0
  2611. package/dist/agents/skills/cursor/security-asymmetric-encryption/SKILL.md +201 -0
  2612. package/dist/agents/skills/cursor/security-asymmetric-encryption/skill.yaml +42 -0
  2613. package/dist/agents/skills/cursor/security-attack-trees/SKILL.md +150 -0
  2614. package/dist/agents/skills/cursor/security-attack-trees/skill.yaml +37 -0
  2615. package/dist/agents/skills/cursor/security-audit-log-design/SKILL.md +227 -0
  2616. package/dist/agents/skills/cursor/security-audit-log-design/skill.yaml +39 -0
  2617. package/dist/agents/skills/cursor/security-authentication-flows/SKILL.md +168 -0
  2618. package/dist/agents/skills/cursor/security-authentication-flows/skill.yaml +42 -0
  2619. package/dist/agents/skills/cursor/security-capability-based-security/SKILL.md +158 -0
  2620. package/dist/agents/skills/cursor/security-capability-based-security/skill.yaml +40 -0
  2621. package/dist/agents/skills/cursor/security-certificate-management/SKILL.md +153 -0
  2622. package/dist/agents/skills/cursor/security-certificate-management/skill.yaml +42 -0
  2623. package/dist/agents/skills/cursor/security-ci-security-testing/SKILL.md +159 -0
  2624. package/dist/agents/skills/cursor/security-ci-security-testing/skill.yaml +43 -0
  2625. package/dist/agents/skills/cursor/security-code-signing/SKILL.md +155 -0
  2626. package/dist/agents/skills/cursor/security-code-signing/skill.yaml +40 -0
  2627. package/dist/agents/skills/cursor/security-compliance-logging/SKILL.md +183 -0
  2628. package/dist/agents/skills/cursor/security-compliance-logging/skill.yaml +38 -0
  2629. package/dist/agents/skills/cursor/security-credential-storage/SKILL.md +222 -0
  2630. package/dist/agents/skills/cursor/security-credential-storage/skill.yaml +41 -0
  2631. package/dist/agents/skills/cursor/security-cryptographic-randomness/SKILL.md +154 -0
  2632. package/dist/agents/skills/cursor/security-cryptographic-randomness/skill.yaml +41 -0
  2633. package/dist/agents/skills/cursor/security-dependency-auditing/SKILL.md +156 -0
  2634. package/dist/agents/skills/cursor/security-dependency-auditing/skill.yaml +39 -0
  2635. package/dist/agents/skills/cursor/security-deserialization-attacks/SKILL.md +180 -0
  2636. package/dist/agents/skills/cursor/security-deserialization-attacks/skill.yaml +38 -0
  2637. package/dist/agents/skills/cursor/security-environment-variable-risks/SKILL.md +153 -0
  2638. package/dist/agents/skills/cursor/security-environment-variable-risks/skill.yaml +37 -0
  2639. package/dist/agents/skills/cursor/security-forensics-fundamentals/SKILL.md +198 -0
  2640. package/dist/agents/skills/cursor/security-forensics-fundamentals/skill.yaml +40 -0
  2641. package/dist/agents/skills/cursor/security-hashing-fundamentals/SKILL.md +212 -0
  2642. package/dist/agents/skills/cursor/security-hashing-fundamentals/skill.yaml +40 -0
  2643. package/dist/agents/skills/cursor/security-hmac-signatures/SKILL.md +165 -0
  2644. package/dist/agents/skills/cursor/security-hmac-signatures/skill.yaml +40 -0
  2645. package/dist/agents/skills/cursor/security-hsts-preloading/SKILL.md +154 -0
  2646. package/dist/agents/skills/cursor/security-hsts-preloading/skill.yaml +38 -0
  2647. package/dist/agents/skills/cursor/security-identity-verification/SKILL.md +157 -0
  2648. package/dist/agents/skills/cursor/security-identity-verification/skill.yaml +39 -0
  2649. package/dist/agents/skills/cursor/security-incident-containment/SKILL.md +190 -0
  2650. package/dist/agents/skills/cursor/security-incident-containment/skill.yaml +40 -0
  2651. package/dist/agents/skills/cursor/security-injection-families/SKILL.md +235 -0
  2652. package/dist/agents/skills/cursor/security-injection-families/skill.yaml +41 -0
  2653. package/dist/agents/skills/cursor/security-log-correlation/SKILL.md +178 -0
  2654. package/dist/agents/skills/cursor/security-log-correlation/skill.yaml +39 -0
  2655. package/dist/agents/skills/cursor/security-memory-safety/SKILL.md +234 -0
  2656. package/dist/agents/skills/cursor/security-memory-safety/skill.yaml +39 -0
  2657. package/dist/agents/skills/cursor/security-mfa-design/SKILL.md +150 -0
  2658. package/dist/agents/skills/cursor/security-mfa-design/skill.yaml +41 -0
  2659. package/dist/agents/skills/cursor/security-microsegmentation/SKILL.md +154 -0
  2660. package/dist/agents/skills/cursor/security-microsegmentation/skill.yaml +40 -0
  2661. package/dist/agents/skills/cursor/security-mtls-design/SKILL.md +158 -0
  2662. package/dist/agents/skills/cursor/security-mtls-design/skill.yaml +39 -0
  2663. package/dist/agents/skills/cursor/security-penetration-testing/SKILL.md +166 -0
  2664. package/dist/agents/skills/cursor/security-penetration-testing/skill.yaml +40 -0
  2665. package/dist/agents/skills/cursor/security-post-incident-review/SKILL.md +205 -0
  2666. package/dist/agents/skills/cursor/security-post-incident-review/skill.yaml +39 -0
  2667. package/dist/agents/skills/cursor/security-race-conditions/SKILL.md +186 -0
  2668. package/dist/agents/skills/cursor/security-race-conditions/skill.yaml +39 -0
  2669. package/dist/agents/skills/cursor/security-rbac-design/SKILL.md +209 -0
  2670. package/dist/agents/skills/cursor/security-rbac-design/skill.yaml +40 -0
  2671. package/dist/agents/skills/cursor/security-rebac-design/SKILL.md +154 -0
  2672. package/dist/agents/skills/cursor/security-rebac-design/skill.yaml +39 -0
  2673. package/dist/agents/skills/cursor/security-sbom-provenance/SKILL.md +157 -0
  2674. package/dist/agents/skills/cursor/security-sbom-provenance/skill.yaml +39 -0
  2675. package/dist/agents/skills/cursor/security-secrets-lifecycle/SKILL.md +190 -0
  2676. package/dist/agents/skills/cursor/security-secrets-lifecycle/skill.yaml +39 -0
  2677. package/dist/agents/skills/cursor/security-security-champions/SKILL.md +165 -0
  2678. package/dist/agents/skills/cursor/security-security-champions/skill.yaml +37 -0
  2679. package/dist/agents/skills/cursor/security-session-management/SKILL.md +196 -0
  2680. package/dist/agents/skills/cursor/security-session-management/skill.yaml +41 -0
  2681. package/dist/agents/skills/cursor/security-shift-left-design/SKILL.md +153 -0
  2682. package/dist/agents/skills/cursor/security-shift-left-design/skill.yaml +38 -0
  2683. package/dist/agents/skills/cursor/security-symmetric-encryption/SKILL.md +176 -0
  2684. package/dist/agents/skills/cursor/security-symmetric-encryption/skill.yaml +41 -0
  2685. package/dist/agents/skills/cursor/security-threat-modeling-process/SKILL.md +150 -0
  2686. package/dist/agents/skills/cursor/security-threat-modeling-process/skill.yaml +38 -0
  2687. package/dist/agents/skills/cursor/security-threat-modeling-stride/SKILL.md +150 -0
  2688. package/dist/agents/skills/cursor/security-threat-modeling-stride/skill.yaml +40 -0
  2689. package/dist/agents/skills/cursor/security-tls-fundamentals/SKILL.md +186 -0
  2690. package/dist/agents/skills/cursor/security-tls-fundamentals/skill.yaml +40 -0
  2691. package/dist/agents/skills/cursor/security-trust-boundaries/SKILL.md +152 -0
  2692. package/dist/agents/skills/cursor/security-trust-boundaries/skill.yaml +39 -0
  2693. package/dist/agents/skills/cursor/security-vault-patterns/SKILL.md +155 -0
  2694. package/dist/agents/skills/cursor/security-vault-patterns/skill.yaml +39 -0
  2695. package/dist/agents/skills/cursor/security-vulnerability-disclosure/SKILL.md +207 -0
  2696. package/dist/agents/skills/cursor/security-vulnerability-disclosure/skill.yaml +39 -0
  2697. package/dist/agents/skills/cursor/security-zero-trust-principles/SKILL.md +229 -0
  2698. package/dist/agents/skills/cursor/security-zero-trust-principles/skill.yaml +40 -0
  2699. package/dist/agents/skills/cursor/state-context-pattern/skill.yaml +1 -0
  2700. package/dist/agents/skills/cursor/state-jotai-atoms/skill.yaml +1 -0
  2701. package/dist/agents/skills/cursor/state-selection-patterns/skill.yaml +1 -0
  2702. package/dist/agents/skills/cursor/state-server-client-sync/skill.yaml +1 -0
  2703. package/dist/agents/skills/cursor/state-zustand-devtools/skill.yaml +1 -0
  2704. package/dist/agents/skills/cursor/state-zustand-immer/skill.yaml +1 -0
  2705. package/dist/agents/skills/cursor/state-zustand-persist/skill.yaml +1 -0
  2706. package/dist/agents/skills/cursor/state-zustand-react/skill.yaml +1 -0
  2707. package/dist/agents/skills/cursor/state-zustand-slices/skill.yaml +1 -0
  2708. package/dist/agents/skills/cursor/state-zustand-store/skill.yaml +1 -0
  2709. package/dist/agents/skills/cursor/svelte-adapter-config/skill.yaml +1 -0
  2710. package/dist/agents/skills/cursor/svelte-component-composition/skill.yaml +1 -0
  2711. package/dist/agents/skills/cursor/svelte-error-pages/skill.yaml +1 -0
  2712. package/dist/agents/skills/cursor/svelte-form-actions/skill.yaml +1 -0
  2713. package/dist/agents/skills/cursor/svelte-load-functions/skill.yaml +1 -0
  2714. package/dist/agents/skills/cursor/svelte-performance-patterns/skill.yaml +6 -0
  2715. package/dist/agents/skills/cursor/svelte-routing-pattern/skill.yaml +1 -0
  2716. package/dist/agents/skills/cursor/svelte-runes-pattern/skill.yaml +1 -0
  2717. package/dist/agents/skills/cursor/svelte-server-hooks/skill.yaml +1 -0
  2718. package/dist/agents/skills/cursor/svelte-state-management/skill.yaml +1 -0
  2719. package/dist/agents/skills/cursor/svelte-stores-pattern/skill.yaml +1 -0
  2720. package/dist/agents/skills/cursor/svelte-testing-patterns/skill.yaml +1 -0
  2721. package/dist/agents/skills/cursor/svelte-transitions-animations/skill.yaml +1 -0
  2722. package/dist/agents/skills/cursor/tanstack-cache-management/skill.yaml +1 -0
  2723. package/dist/agents/skills/cursor/tanstack-dependent-queries/skill.yaml +1 -0
  2724. package/dist/agents/skills/cursor/tanstack-devtools/skill.yaml +1 -0
  2725. package/dist/agents/skills/cursor/tanstack-infinite-queries/skill.yaml +1 -0
  2726. package/dist/agents/skills/cursor/tanstack-mutation-patterns/skill.yaml +1 -0
  2727. package/dist/agents/skills/cursor/tanstack-optimistic-updates/skill.yaml +1 -0
  2728. package/dist/agents/skills/cursor/tanstack-prefetching/skill.yaml +1 -0
  2729. package/dist/agents/skills/cursor/tanstack-query-invalidation/skill.yaml +1 -0
  2730. package/dist/agents/skills/cursor/tanstack-query-keys/skill.yaml +1 -0
  2731. package/dist/agents/skills/cursor/tanstack-suspense-mode/skill.yaml +1 -0
  2732. package/dist/agents/skills/cursor/test-accessibility-testing/skill.yaml +1 -0
  2733. package/dist/agents/skills/cursor/test-component-react/skill.yaml +1 -0
  2734. package/dist/agents/skills/cursor/test-component-svelte/skill.yaml +1 -0
  2735. package/dist/agents/skills/cursor/test-contract-testing/skill.yaml +1 -0
  2736. package/dist/agents/skills/cursor/test-coverage-patterns/skill.yaml +1 -0
  2737. package/dist/agents/skills/cursor/test-e2e-strategy/skill.yaml +1 -0
  2738. package/dist/agents/skills/cursor/test-factory-patterns/skill.yaml +1 -0
  2739. package/dist/agents/skills/cursor/test-integration-patterns/skill.yaml +1 -0
  2740. package/dist/agents/skills/cursor/test-mock-patterns/skill.yaml +1 -0
  2741. package/dist/agents/skills/cursor/test-msw-pattern/skill.yaml +1 -0
  2742. package/dist/agents/skills/cursor/test-performance-testing/skill.yaml +5 -0
  2743. package/dist/agents/skills/cursor/test-playwright-patterns/skill.yaml +1 -0
  2744. package/dist/agents/skills/cursor/test-playwright-setup/skill.yaml +1 -0
  2745. package/dist/agents/skills/cursor/test-property-based/skill.yaml +1 -0
  2746. package/dist/agents/skills/cursor/test-snapshot-patterns/skill.yaml +1 -0
  2747. package/dist/agents/skills/cursor/test-tdd-workflow/skill.yaml +1 -0
  2748. package/dist/agents/skills/cursor/test-unit-patterns/skill.yaml +1 -0
  2749. package/dist/agents/skills/cursor/test-vitest-config/skill.yaml +1 -0
  2750. package/dist/agents/skills/cursor/trpc-context-pattern/skill.yaml +1 -0
  2751. package/dist/agents/skills/cursor/trpc-error-handling/SKILL.md +1 -0
  2752. package/dist/agents/skills/cursor/trpc-error-handling/skill.yaml +3 -0
  2753. package/dist/agents/skills/cursor/trpc-input-validation/SKILL.md +1 -0
  2754. package/dist/agents/skills/cursor/trpc-input-validation/skill.yaml +2 -0
  2755. package/dist/agents/skills/cursor/trpc-middleware-pattern/skill.yaml +1 -0
  2756. package/dist/agents/skills/cursor/trpc-nextjs-integration/skill.yaml +1 -0
  2757. package/dist/agents/skills/cursor/trpc-react-query-integration/skill.yaml +1 -0
  2758. package/dist/agents/skills/cursor/trpc-router-composition/SKILL.md +1 -0
  2759. package/dist/agents/skills/cursor/trpc-router-composition/skill.yaml +3 -0
  2760. package/dist/agents/skills/cursor/trpc-subscription-pattern/skill.yaml +1 -0
  2761. package/dist/agents/skills/cursor/ts-async-patterns/skill.yaml +1 -0
  2762. package/dist/agents/skills/cursor/ts-branded-types/skill.yaml +1 -0
  2763. package/dist/agents/skills/cursor/ts-class-patterns/skill.yaml +1 -0
  2764. package/dist/agents/skills/cursor/ts-conditional-types/skill.yaml +1 -0
  2765. package/dist/agents/skills/cursor/ts-config-patterns/skill.yaml +1 -0
  2766. package/dist/agents/skills/cursor/ts-declaration-merging/skill.yaml +1 -0
  2767. package/dist/agents/skills/cursor/ts-decorator-patterns/skill.yaml +1 -0
  2768. package/dist/agents/skills/cursor/ts-discriminated-unions/skill.yaml +1 -0
  2769. package/dist/agents/skills/cursor/ts-error-handling-types/skill.yaml +1 -0
  2770. package/dist/agents/skills/cursor/ts-generics-pattern/skill.yaml +1 -0
  2771. package/dist/agents/skills/cursor/ts-mapped-types/skill.yaml +1 -0
  2772. package/dist/agents/skills/cursor/ts-module-patterns/skill.yaml +1 -0
  2773. package/dist/agents/skills/cursor/ts-performance-patterns/skill.yaml +5 -0
  2774. package/dist/agents/skills/cursor/ts-satisfies-operator/skill.yaml +1 -0
  2775. package/dist/agents/skills/cursor/ts-strict-mode/skill.yaml +1 -0
  2776. package/dist/agents/skills/cursor/ts-template-literal-types/skill.yaml +1 -0
  2777. package/dist/agents/skills/cursor/ts-testing-types/skill.yaml +1 -0
  2778. package/dist/agents/skills/cursor/ts-type-guards/skill.yaml +1 -0
  2779. package/dist/agents/skills/cursor/ts-utility-types/skill.yaml +1 -0
  2780. package/dist/agents/skills/cursor/ts-zod-integration/skill.yaml +1 -0
  2781. package/dist/agents/skills/cursor/ux-active-voice/SKILL.md +150 -0
  2782. package/dist/agents/skills/cursor/ux-active-voice/skill.yaml +32 -0
  2783. package/dist/agents/skills/cursor/ux-button-cta-copy/SKILL.md +159 -0
  2784. package/dist/agents/skills/cursor/ux-button-cta-copy/skill.yaml +34 -0
  2785. package/dist/agents/skills/cursor/ux-confirmation-dialogs/SKILL.md +156 -0
  2786. package/dist/agents/skills/cursor/ux-confirmation-dialogs/skill.yaml +33 -0
  2787. package/dist/agents/skills/cursor/ux-content-hierarchy/SKILL.md +150 -0
  2788. package/dist/agents/skills/cursor/ux-content-hierarchy/skill.yaml +33 -0
  2789. package/dist/agents/skills/cursor/ux-data-table-copy/SKILL.md +154 -0
  2790. package/dist/agents/skills/cursor/ux-data-table-copy/skill.yaml +34 -0
  2791. package/dist/agents/skills/cursor/ux-destructive-action-copy/SKILL.md +152 -0
  2792. package/dist/agents/skills/cursor/ux-destructive-action-copy/skill.yaml +34 -0
  2793. package/dist/agents/skills/cursor/ux-empty-states/SKILL.md +155 -0
  2794. package/dist/agents/skills/cursor/ux-empty-states/skill.yaml +36 -0
  2795. package/dist/agents/skills/cursor/ux-error-messages/SKILL.md +159 -0
  2796. package/dist/agents/skills/cursor/ux-error-messages/skill.yaml +35 -0
  2797. package/dist/agents/skills/cursor/ux-error-severity/SKILL.md +155 -0
  2798. package/dist/agents/skills/cursor/ux-error-severity/skill.yaml +35 -0
  2799. package/dist/agents/skills/cursor/ux-form-labels/SKILL.md +159 -0
  2800. package/dist/agents/skills/cursor/ux-form-labels/skill.yaml +36 -0
  2801. package/dist/agents/skills/cursor/ux-inclusive-language/SKILL.md +161 -0
  2802. package/dist/agents/skills/cursor/ux-inclusive-language/skill.yaml +33 -0
  2803. package/dist/agents/skills/cursor/ux-internationalization-writing/SKILL.md +196 -0
  2804. package/dist/agents/skills/cursor/ux-internationalization-writing/skill.yaml +35 -0
  2805. package/dist/agents/skills/cursor/ux-loading-states/SKILL.md +162 -0
  2806. package/dist/agents/skills/cursor/ux-loading-states/skill.yaml +33 -0
  2807. package/dist/agents/skills/cursor/ux-microcopy-principles/SKILL.md +152 -0
  2808. package/dist/agents/skills/cursor/ux-microcopy-principles/skill.yaml +37 -0
  2809. package/dist/agents/skills/cursor/ux-navigation-labels/SKILL.md +163 -0
  2810. package/dist/agents/skills/cursor/ux-navigation-labels/skill.yaml +35 -0
  2811. package/dist/agents/skills/cursor/ux-notification-copy/SKILL.md +150 -0
  2812. package/dist/agents/skills/cursor/ux-notification-copy/skill.yaml +35 -0
  2813. package/dist/agents/skills/cursor/ux-onboarding-copy/SKILL.md +156 -0
  2814. package/dist/agents/skills/cursor/ux-onboarding-copy/skill.yaml +35 -0
  2815. package/dist/agents/skills/cursor/ux-permission-access-copy/SKILL.md +150 -0
  2816. package/dist/agents/skills/cursor/ux-permission-access-copy/skill.yaml +34 -0
  2817. package/dist/agents/skills/cursor/ux-plain-language/SKILL.md +157 -0
  2818. package/dist/agents/skills/cursor/ux-plain-language/skill.yaml +34 -0
  2819. package/dist/agents/skills/cursor/ux-search-copy/SKILL.md +154 -0
  2820. package/dist/agents/skills/cursor/ux-search-copy/skill.yaml +33 -0
  2821. package/dist/agents/skills/cursor/ux-settings-preferences/SKILL.md +152 -0
  2822. package/dist/agents/skills/cursor/ux-settings-preferences/skill.yaml +33 -0
  2823. package/dist/agents/skills/cursor/ux-success-feedback/SKILL.md +163 -0
  2824. package/dist/agents/skills/cursor/ux-success-feedback/skill.yaml +33 -0
  2825. package/dist/agents/skills/cursor/ux-tooltip-contextual-help/SKILL.md +163 -0
  2826. package/dist/agents/skills/cursor/ux-tooltip-contextual-help/skill.yaml +33 -0
  2827. package/dist/agents/skills/cursor/ux-voice-tone/SKILL.md +150 -0
  2828. package/dist/agents/skills/cursor/ux-voice-tone/skill.yaml +33 -0
  2829. package/dist/agents/skills/cursor/ux-writing-for-scanning/SKILL.md +150 -0
  2830. package/dist/agents/skills/cursor/ux-writing-for-scanning/skill.yaml +35 -0
  2831. package/dist/agents/skills/cursor/validate-context-engineering/skill.yaml +1 -0
  2832. package/dist/agents/skills/cursor/vue-async-components/skill.yaml +1 -0
  2833. package/dist/agents/skills/cursor/vue-component-events/skill.yaml +1 -0
  2834. package/dist/agents/skills/cursor/vue-composables-pattern/skill.yaml +1 -0
  2835. package/dist/agents/skills/cursor/vue-directive-pattern/skill.yaml +1 -0
  2836. package/dist/agents/skills/cursor/vue-pinia-pattern/skill.yaml +1 -0
  2837. package/dist/agents/skills/cursor/vue-provide-inject/skill.yaml +1 -0
  2838. package/dist/agents/skills/cursor/vue-reactive-refs/skill.yaml +1 -0
  2839. package/dist/agents/skills/cursor/vue-renderless-components/skill.yaml +1 -0
  2840. package/dist/agents/skills/cursor/vue-slots-pattern/skill.yaml +1 -0
  2841. package/dist/agents/skills/cursor/vue-teleport-pattern/skill.yaml +1 -0
  2842. package/dist/agents/skills/cursor/vue-watchers-pattern/skill.yaml +1 -0
  2843. package/dist/agents/skills/cursor/xstate-actor-pattern/skill.yaml +1 -0
  2844. package/dist/agents/skills/cursor/xstate-guards-actions/skill.yaml +1 -0
  2845. package/dist/agents/skills/cursor/xstate-history-states/skill.yaml +1 -0
  2846. package/dist/agents/skills/cursor/xstate-invoke-pattern/skill.yaml +1 -0
  2847. package/dist/agents/skills/cursor/xstate-machine-definition/skill.yaml +1 -0
  2848. package/dist/agents/skills/cursor/xstate-parallel-states/skill.yaml +1 -0
  2849. package/dist/agents/skills/cursor/xstate-react-integration/skill.yaml +1 -0
  2850. package/dist/agents/skills/cursor/xstate-testing-patterns/skill.yaml +1 -0
  2851. package/dist/agents/skills/cursor/xstate-typegen/skill.yaml +1 -0
  2852. package/dist/agents/skills/cursor/xstate-visualization/skill.yaml +1 -0
  2853. package/dist/agents/skills/cursor/zod-array-validation/skill.yaml +1 -0
  2854. package/dist/agents/skills/cursor/zod-async-validation/skill.yaml +1 -0
  2855. package/dist/agents/skills/cursor/zod-error-handling/skill.yaml +1 -0
  2856. package/dist/agents/skills/cursor/zod-infer-types/skill.yaml +1 -0
  2857. package/dist/agents/skills/cursor/zod-nextjs-integration/skill.yaml +1 -0
  2858. package/dist/agents/skills/cursor/zod-object-patterns/skill.yaml +1 -0
  2859. package/dist/agents/skills/cursor/zod-schema-definition/skill.yaml +1 -0
  2860. package/dist/agents/skills/cursor/zod-string-validation/skill.yaml +1 -0
  2861. package/dist/agents/skills/cursor/zod-transform-refine/skill.yaml +1 -0
  2862. package/dist/agents/skills/cursor/zod-union-discriminated/skill.yaml +1 -0
  2863. package/dist/agents/skills/gemini-cli/a11y-aria-patterns/skill.yaml +1 -0
  2864. package/dist/agents/skills/gemini-cli/a11y-color-contrast/skill.yaml +1 -0
  2865. package/dist/agents/skills/gemini-cli/a11y-form-patterns/skill.yaml +2 -0
  2866. package/dist/agents/skills/gemini-cli/a11y-image-text-alt/skill.yaml +1 -0
  2867. package/dist/agents/skills/gemini-cli/a11y-keyboard-navigation/skill.yaml +1 -0
  2868. package/dist/agents/skills/gemini-cli/a11y-modal-patterns/skill.yaml +1 -0
  2869. package/dist/agents/skills/gemini-cli/a11y-motion-animation/skill.yaml +1 -0
  2870. package/dist/agents/skills/gemini-cli/a11y-screen-reader-testing/skill.yaml +1 -0
  2871. package/dist/agents/skills/gemini-cli/a11y-semantic-html/skill.yaml +1 -0
  2872. package/dist/agents/skills/gemini-cli/a11y-testing-automation/skill.yaml +1 -0
  2873. package/dist/agents/skills/gemini-cli/add-harness-component/skill.yaml +1 -0
  2874. package/dist/agents/skills/gemini-cli/align-documentation/skill.yaml +1 -0
  2875. package/dist/agents/skills/gemini-cli/angular-component-pattern/skill.yaml +1 -0
  2876. package/dist/agents/skills/gemini-cli/angular-directive-pattern/skill.yaml +1 -0
  2877. package/dist/agents/skills/gemini-cli/angular-http-interceptors/skill.yaml +1 -0
  2878. package/dist/agents/skills/gemini-cli/angular-lazy-loading/skill.yaml +1 -0
  2879. package/dist/agents/skills/gemini-cli/angular-performance-patterns/skill.yaml +6 -0
  2880. package/dist/agents/skills/gemini-cli/angular-pipe-pattern/skill.yaml +1 -0
  2881. package/dist/agents/skills/gemini-cli/angular-reactive-forms/skill.yaml +1 -0
  2882. package/dist/agents/skills/gemini-cli/angular-routing-guards/skill.yaml +1 -0
  2883. package/dist/agents/skills/gemini-cli/angular-rxjs-patterns/skill.yaml +1 -0
  2884. package/dist/agents/skills/gemini-cli/angular-schematics/skill.yaml +1 -0
  2885. package/dist/agents/skills/gemini-cli/angular-service-di/skill.yaml +1 -0
  2886. package/dist/agents/skills/gemini-cli/angular-signals-pattern/skill.yaml +1 -0
  2887. package/dist/agents/skills/gemini-cli/angular-standalone-components/skill.yaml +1 -0
  2888. package/dist/agents/skills/gemini-cli/angular-state-management/skill.yaml +1 -0
  2889. package/dist/agents/skills/gemini-cli/angular-testing-patterns/skill.yaml +1 -0
  2890. package/dist/agents/skills/gemini-cli/api-api-keys/SKILL.md +135 -0
  2891. package/dist/agents/skills/gemini-cli/api-api-keys/skill.yaml +41 -0
  2892. package/dist/agents/skills/gemini-cli/api-authentication-patterns/SKILL.md +117 -0
  2893. package/dist/agents/skills/gemini-cli/api-authentication-patterns/skill.yaml +44 -0
  2894. package/dist/agents/skills/gemini-cli/api-backward-compatibility/SKILL.md +170 -0
  2895. package/dist/agents/skills/gemini-cli/api-backward-compatibility/skill.yaml +39 -0
  2896. package/dist/agents/skills/gemini-cli/api-bulk-operations/SKILL.md +198 -0
  2897. package/dist/agents/skills/gemini-cli/api-bulk-operations/skill.yaml +39 -0
  2898. package/dist/agents/skills/gemini-cli/api-conditional-requests/SKILL.md +233 -0
  2899. package/dist/agents/skills/gemini-cli/api-conditional-requests/skill.yaml +41 -0
  2900. package/dist/agents/skills/gemini-cli/api-content-negotiation/SKILL.md +194 -0
  2901. package/dist/agents/skills/gemini-cli/api-content-negotiation/skill.yaml +39 -0
  2902. package/dist/agents/skills/gemini-cli/api-contract-testing/SKILL.md +222 -0
  2903. package/dist/agents/skills/gemini-cli/api-contract-testing/skill.yaml +42 -0
  2904. package/dist/agents/skills/gemini-cli/api-deprecation-strategy/SKILL.md +156 -0
  2905. package/dist/agents/skills/gemini-cli/api-deprecation-strategy/skill.yaml +39 -0
  2906. package/dist/agents/skills/gemini-cli/api-error-contracts/SKILL.md +149 -0
  2907. package/dist/agents/skills/gemini-cli/api-error-contracts/skill.yaml +40 -0
  2908. package/dist/agents/skills/gemini-cli/api-field-selection/SKILL.md +193 -0
  2909. package/dist/agents/skills/gemini-cli/api-field-selection/skill.yaml +39 -0
  2910. package/dist/agents/skills/gemini-cli/api-filtering-sorting/SKILL.md +170 -0
  2911. package/dist/agents/skills/gemini-cli/api-filtering-sorting/skill.yaml +40 -0
  2912. package/dist/agents/skills/gemini-cli/api-hateoas/SKILL.md +212 -0
  2913. package/dist/agents/skills/gemini-cli/api-hateoas/skill.yaml +40 -0
  2914. package/dist/agents/skills/gemini-cli/api-http-caching/SKILL.md +188 -0
  2915. package/dist/agents/skills/gemini-cli/api-http-caching/skill.yaml +43 -0
  2916. package/dist/agents/skills/gemini-cli/api-http-methods/SKILL.md +185 -0
  2917. package/dist/agents/skills/gemini-cli/api-http-methods/skill.yaml +43 -0
  2918. package/dist/agents/skills/gemini-cli/api-idempotency-keys/SKILL.md +176 -0
  2919. package/dist/agents/skills/gemini-cli/api-idempotency-keys/skill.yaml +40 -0
  2920. package/dist/agents/skills/gemini-cli/api-long-running-operations/SKILL.md +209 -0
  2921. package/dist/agents/skills/gemini-cli/api-long-running-operations/skill.yaml +40 -0
  2922. package/dist/agents/skills/gemini-cli/api-nested-vs-flat/SKILL.md +173 -0
  2923. package/dist/agents/skills/gemini-cli/api-nested-vs-flat/skill.yaml +39 -0
  2924. package/dist/agents/skills/gemini-cli/api-oauth2-flows/SKILL.md +150 -0
  2925. package/dist/agents/skills/gemini-cli/api-oauth2-flows/skill.yaml +42 -0
  2926. package/dist/agents/skills/gemini-cli/api-openapi-design/SKILL.md +260 -0
  2927. package/dist/agents/skills/gemini-cli/api-openapi-design/skill.yaml +44 -0
  2928. package/dist/agents/skills/gemini-cli/api-pagination-cursor/SKILL.md +159 -0
  2929. package/dist/agents/skills/gemini-cli/api-pagination-cursor/skill.yaml +40 -0
  2930. package/dist/agents/skills/gemini-cli/api-pagination-keyset/SKILL.md +167 -0
  2931. package/dist/agents/skills/gemini-cli/api-pagination-keyset/skill.yaml +39 -0
  2932. package/dist/agents/skills/gemini-cli/api-pagination-offset/SKILL.md +135 -0
  2933. package/dist/agents/skills/gemini-cli/api-pagination-offset/skill.yaml +39 -0
  2934. package/dist/agents/skills/gemini-cli/api-problem-details-rfc/SKILL.md +164 -0
  2935. package/dist/agents/skills/gemini-cli/api-problem-details-rfc/skill.yaml +38 -0
  2936. package/dist/agents/skills/gemini-cli/api-rate-limit-headers/SKILL.md +144 -0
  2937. package/dist/agents/skills/gemini-cli/api-rate-limit-headers/skill.yaml +39 -0
  2938. package/dist/agents/skills/gemini-cli/api-rate-limiting/SKILL.md +131 -0
  2939. package/dist/agents/skills/gemini-cli/api-rate-limiting/skill.yaml +41 -0
  2940. package/dist/agents/skills/gemini-cli/api-resource-granularity/SKILL.md +165 -0
  2941. package/dist/agents/skills/gemini-cli/api-resource-granularity/skill.yaml +40 -0
  2942. package/dist/agents/skills/gemini-cli/api-resource-modeling/SKILL.md +155 -0
  2943. package/dist/agents/skills/gemini-cli/api-resource-modeling/skill.yaml +40 -0
  2944. package/dist/agents/skills/gemini-cli/api-rest-maturity-model/SKILL.md +215 -0
  2945. package/dist/agents/skills/gemini-cli/api-rest-maturity-model/skill.yaml +39 -0
  2946. package/dist/agents/skills/gemini-cli/api-retry-guidance/SKILL.md +168 -0
  2947. package/dist/agents/skills/gemini-cli/api-retry-guidance/skill.yaml +41 -0
  2948. package/dist/agents/skills/gemini-cli/api-sdk-ergonomics/SKILL.md +194 -0
  2949. package/dist/agents/skills/gemini-cli/api-sdk-ergonomics/skill.yaml +43 -0
  2950. package/dist/agents/skills/gemini-cli/api-status-codes/SKILL.md +196 -0
  2951. package/dist/agents/skills/gemini-cli/api-status-codes/skill.yaml +46 -0
  2952. package/dist/agents/skills/gemini-cli/api-validation-errors/SKILL.md +174 -0
  2953. package/dist/agents/skills/gemini-cli/api-validation-errors/skill.yaml +40 -0
  2954. package/dist/agents/skills/gemini-cli/api-versioning-header/SKILL.md +177 -0
  2955. package/dist/agents/skills/gemini-cli/api-versioning-header/skill.yaml +37 -0
  2956. package/dist/agents/skills/gemini-cli/api-versioning-url/SKILL.md +128 -0
  2957. package/dist/agents/skills/gemini-cli/api-versioning-url/skill.yaml +39 -0
  2958. package/dist/agents/skills/gemini-cli/api-webhook-design/SKILL.md +165 -0
  2959. package/dist/agents/skills/gemini-cli/api-webhook-design/skill.yaml +41 -0
  2960. package/dist/agents/skills/gemini-cli/api-webhook-security/SKILL.md +176 -0
  2961. package/dist/agents/skills/gemini-cli/api-webhook-security/skill.yaml +41 -0
  2962. package/dist/agents/skills/gemini-cli/astro-component-pattern/skill.yaml +1 -0
  2963. package/dist/agents/skills/gemini-cli/astro-content-collections/skill.yaml +1 -0
  2964. package/dist/agents/skills/gemini-cli/astro-deployment-config/skill.yaml +1 -0
  2965. package/dist/agents/skills/gemini-cli/astro-image-optimization/skill.yaml +1 -0
  2966. package/dist/agents/skills/gemini-cli/astro-integration-pattern/skill.yaml +1 -0
  2967. package/dist/agents/skills/gemini-cli/astro-islands-architecture/skill.yaml +1 -0
  2968. package/dist/agents/skills/gemini-cli/astro-multi-framework/skill.yaml +1 -0
  2969. package/dist/agents/skills/gemini-cli/astro-routing-pattern/skill.yaml +1 -0
  2970. package/dist/agents/skills/gemini-cli/astro-server-endpoints/skill.yaml +1 -0
  2971. package/dist/agents/skills/gemini-cli/astro-ssr-hybrid/skill.yaml +1 -0
  2972. package/dist/agents/skills/gemini-cli/astro-view-transitions/skill.yaml +1 -0
  2973. package/dist/agents/skills/gemini-cli/check-mechanical-constraints/skill.yaml +1 -0
  2974. package/dist/agents/skills/gemini-cli/cleanup-dead-code/skill.yaml +1 -0
  2975. package/dist/agents/skills/gemini-cli/css-animation-pattern/skill.yaml +1 -0
  2976. package/dist/agents/skills/gemini-cli/css-component-variants/skill.yaml +1 -0
  2977. package/dist/agents/skills/gemini-cli/css-css-modules/skill.yaml +1 -0
  2978. package/dist/agents/skills/gemini-cli/css-custom-components/skill.yaml +1 -0
  2979. package/dist/agents/skills/gemini-cli/css-dark-mode/skill.yaml +1 -0
  2980. package/dist/agents/skills/gemini-cli/css-design-tokens/skill.yaml +1 -0
  2981. package/dist/agents/skills/gemini-cli/css-headless-ui/skill.yaml +1 -0
  2982. package/dist/agents/skills/gemini-cli/css-layout-patterns/skill.yaml +1 -0
  2983. package/dist/agents/skills/gemini-cli/css-performance-patterns/skill.yaml +6 -0
  2984. package/dist/agents/skills/gemini-cli/css-responsive-design/skill.yaml +1 -0
  2985. package/dist/agents/skills/gemini-cli/css-tailwind-merge/skill.yaml +1 -0
  2986. package/dist/agents/skills/gemini-cli/css-tailwind-pattern/skill.yaml +1 -0
  2987. package/dist/agents/skills/gemini-cli/db-acid-in-practice/SKILL.md +215 -0
  2988. package/dist/agents/skills/gemini-cli/db-acid-in-practice/skill.yaml +38 -0
  2989. package/dist/agents/skills/gemini-cli/db-acid-properties/SKILL.md +190 -0
  2990. package/dist/agents/skills/gemini-cli/db-acid-properties/skill.yaml +38 -0
  2991. package/dist/agents/skills/gemini-cli/db-adjacency-list/SKILL.md +199 -0
  2992. package/dist/agents/skills/gemini-cli/db-adjacency-list/skill.yaml +40 -0
  2993. package/dist/agents/skills/gemini-cli/db-audit-trail/SKILL.md +244 -0
  2994. package/dist/agents/skills/gemini-cli/db-audit-trail/skill.yaml +41 -0
  2995. package/dist/agents/skills/gemini-cli/db-btree-index/SKILL.md +182 -0
  2996. package/dist/agents/skills/gemini-cli/db-btree-index/skill.yaml +44 -0
  2997. package/dist/agents/skills/gemini-cli/db-cap-theorem/SKILL.md +156 -0
  2998. package/dist/agents/skills/gemini-cli/db-cap-theorem/skill.yaml +38 -0
  2999. package/dist/agents/skills/gemini-cli/db-closure-table/SKILL.md +197 -0
  3000. package/dist/agents/skills/gemini-cli/db-closure-table/skill.yaml +38 -0
  3001. package/dist/agents/skills/gemini-cli/db-composite-index/SKILL.md +199 -0
  3002. package/dist/agents/skills/gemini-cli/db-composite-index/skill.yaml +41 -0
  3003. package/dist/agents/skills/gemini-cli/db-connection-pooling/SKILL.md +196 -0
  3004. package/dist/agents/skills/gemini-cli/db-connection-pooling/skill.yaml +39 -0
  3005. package/dist/agents/skills/gemini-cli/db-connection-sizing/SKILL.md +236 -0
  3006. package/dist/agents/skills/gemini-cli/db-connection-sizing/skill.yaml +38 -0
  3007. package/dist/agents/skills/gemini-cli/db-covering-index/SKILL.md +203 -0
  3008. package/dist/agents/skills/gemini-cli/db-covering-index/skill.yaml +40 -0
  3009. package/dist/agents/skills/gemini-cli/db-deadlock-prevention/SKILL.md +204 -0
  3010. package/dist/agents/skills/gemini-cli/db-deadlock-prevention/skill.yaml +41 -0
  3011. package/dist/agents/skills/gemini-cli/db-denormalization/SKILL.md +176 -0
  3012. package/dist/agents/skills/gemini-cli/db-denormalization/skill.yaml +38 -0
  3013. package/dist/agents/skills/gemini-cli/db-document-in-relational/SKILL.md +225 -0
  3014. package/dist/agents/skills/gemini-cli/db-document-in-relational/skill.yaml +42 -0
  3015. package/dist/agents/skills/gemini-cli/db-entity-attribute-value/SKILL.md +186 -0
  3016. package/dist/agents/skills/gemini-cli/db-entity-attribute-value/skill.yaml +39 -0
  3017. package/dist/agents/skills/gemini-cli/db-eventual-consistency/SKILL.md +226 -0
  3018. package/dist/agents/skills/gemini-cli/db-eventual-consistency/skill.yaml +38 -0
  3019. package/dist/agents/skills/gemini-cli/db-expand-contract/SKILL.md +199 -0
  3020. package/dist/agents/skills/gemini-cli/db-expand-contract/skill.yaml +40 -0
  3021. package/dist/agents/skills/gemini-cli/db-explain-reading/SKILL.md +213 -0
  3022. package/dist/agents/skills/gemini-cli/db-explain-reading/skill.yaml +44 -0
  3023. package/dist/agents/skills/gemini-cli/db-expression-index/SKILL.md +211 -0
  3024. package/dist/agents/skills/gemini-cli/db-expression-index/skill.yaml +40 -0
  3025. package/dist/agents/skills/gemini-cli/db-first-normal-form/SKILL.md +190 -0
  3026. package/dist/agents/skills/gemini-cli/db-first-normal-form/skill.yaml +38 -0
  3027. package/dist/agents/skills/gemini-cli/db-graph-in-relational/SKILL.md +212 -0
  3028. package/dist/agents/skills/gemini-cli/db-graph-in-relational/skill.yaml +41 -0
  3029. package/dist/agents/skills/gemini-cli/db-hash-index/SKILL.md +176 -0
  3030. package/dist/agents/skills/gemini-cli/db-hash-index/skill.yaml +37 -0
  3031. package/dist/agents/skills/gemini-cli/db-hierarchical-data/SKILL.md +194 -0
  3032. package/dist/agents/skills/gemini-cli/db-hierarchical-data/skill.yaml +41 -0
  3033. package/dist/agents/skills/gemini-cli/db-horizontal-sharding/SKILL.md +228 -0
  3034. package/dist/agents/skills/gemini-cli/db-horizontal-sharding/skill.yaml +40 -0
  3035. package/dist/agents/skills/gemini-cli/db-isolation-levels/SKILL.md +158 -0
  3036. package/dist/agents/skills/gemini-cli/db-isolation-levels/skill.yaml +43 -0
  3037. package/dist/agents/skills/gemini-cli/db-isolation-selection/SKILL.md +160 -0
  3038. package/dist/agents/skills/gemini-cli/db-isolation-selection/skill.yaml +41 -0
  3039. package/dist/agents/skills/gemini-cli/db-migration-rollback/SKILL.md +223 -0
  3040. package/dist/agents/skills/gemini-cli/db-migration-rollback/skill.yaml +40 -0
  3041. package/dist/agents/skills/gemini-cli/db-mvcc/SKILL.md +191 -0
  3042. package/dist/agents/skills/gemini-cli/db-mvcc/skill.yaml +45 -0
  3043. package/dist/agents/skills/gemini-cli/db-nested-sets/SKILL.md +171 -0
  3044. package/dist/agents/skills/gemini-cli/db-nested-sets/skill.yaml +38 -0
  3045. package/dist/agents/skills/gemini-cli/db-optimistic-locking/SKILL.md +151 -0
  3046. package/dist/agents/skills/gemini-cli/db-optimistic-locking/skill.yaml +44 -0
  3047. package/dist/agents/skills/gemini-cli/db-partial-index/SKILL.md +196 -0
  3048. package/dist/agents/skills/gemini-cli/db-partial-index/skill.yaml +39 -0
  3049. package/dist/agents/skills/gemini-cli/db-pessimistic-locking/SKILL.md +158 -0
  3050. package/dist/agents/skills/gemini-cli/db-pessimistic-locking/skill.yaml +44 -0
  3051. package/dist/agents/skills/gemini-cli/db-polymorphic-associations/SKILL.md +187 -0
  3052. package/dist/agents/skills/gemini-cli/db-polymorphic-associations/skill.yaml +42 -0
  3053. package/dist/agents/skills/gemini-cli/db-query-rewriting/SKILL.md +249 -0
  3054. package/dist/agents/skills/gemini-cli/db-query-rewriting/skill.yaml +43 -0
  3055. package/dist/agents/skills/gemini-cli/db-query-statistics/SKILL.md +210 -0
  3056. package/dist/agents/skills/gemini-cli/db-query-statistics/skill.yaml +41 -0
  3057. package/dist/agents/skills/gemini-cli/db-read-phenomena/SKILL.md +205 -0
  3058. package/dist/agents/skills/gemini-cli/db-read-phenomena/skill.yaml +42 -0
  3059. package/dist/agents/skills/gemini-cli/db-scan-types/SKILL.md +248 -0
  3060. package/dist/agents/skills/gemini-cli/db-scan-types/skill.yaml +41 -0
  3061. package/dist/agents/skills/gemini-cli/db-second-normal-form/SKILL.md +183 -0
  3062. package/dist/agents/skills/gemini-cli/db-second-normal-form/skill.yaml +38 -0
  3063. package/dist/agents/skills/gemini-cli/db-table-partitioning/SKILL.md +229 -0
  3064. package/dist/agents/skills/gemini-cli/db-table-partitioning/skill.yaml +39 -0
  3065. package/dist/agents/skills/gemini-cli/db-temporal-data/SKILL.md +194 -0
  3066. package/dist/agents/skills/gemini-cli/db-temporal-data/skill.yaml +41 -0
  3067. package/dist/agents/skills/gemini-cli/db-third-normal-form/SKILL.md +210 -0
  3068. package/dist/agents/skills/gemini-cli/db-third-normal-form/skill.yaml +38 -0
  3069. package/dist/agents/skills/gemini-cli/db-time-series/SKILL.md +196 -0
  3070. package/dist/agents/skills/gemini-cli/db-time-series/skill.yaml +41 -0
  3071. package/dist/agents/skills/gemini-cli/db-vertical-partitioning/SKILL.md +249 -0
  3072. package/dist/agents/skills/gemini-cli/db-vertical-partitioning/skill.yaml +40 -0
  3073. package/dist/agents/skills/gemini-cli/db-zero-downtime-migration/SKILL.md +199 -0
  3074. package/dist/agents/skills/gemini-cli/db-zero-downtime-migration/skill.yaml +42 -0
  3075. package/dist/agents/skills/gemini-cli/design-affordances/skill.yaml +1 -0
  3076. package/dist/agents/skills/gemini-cli/design-alignment/skill.yaml +1 -0
  3077. package/dist/agents/skills/gemini-cli/design-apple-hig/skill.yaml +1 -0
  3078. package/dist/agents/skills/gemini-cli/design-atomic-design/skill.yaml +1 -0
  3079. package/dist/agents/skills/gemini-cli/design-brand-consistency/skill.yaml +1 -0
  3080. package/dist/agents/skills/gemini-cli/design-color-accessibility/skill.yaml +1 -0
  3081. package/dist/agents/skills/gemini-cli/design-color-harmony/skill.yaml +1 -0
  3082. package/dist/agents/skills/gemini-cli/design-color-psychology/skill.yaml +1 -0
  3083. package/dist/agents/skills/gemini-cli/design-component-anatomy/skill.yaml +1 -0
  3084. package/dist/agents/skills/gemini-cli/design-consistency/skill.yaml +1 -0
  3085. package/dist/agents/skills/gemini-cli/design-content-density/skill.yaml +1 -0
  3086. package/dist/agents/skills/gemini-cli/design-contrast-ratio/skill.yaml +1 -0
  3087. package/dist/agents/skills/gemini-cli/design-dark-mode-color/skill.yaml +1 -0
  3088. package/dist/agents/skills/gemini-cli/design-data-viz-design/skill.yaml +1 -0
  3089. package/dist/agents/skills/gemini-cli/design-design-audit/skill.yaml +1 -0
  3090. package/dist/agents/skills/gemini-cli/design-design-critique/skill.yaml +1 -0
  3091. package/dist/agents/skills/gemini-cli/design-design-documentation/skill.yaml +1 -0
  3092. package/dist/agents/skills/gemini-cli/design-design-governance/skill.yaml +1 -0
  3093. package/dist/agents/skills/gemini-cli/design-elevation-shadow/skill.yaml +1 -0
  3094. package/dist/agents/skills/gemini-cli/design-empty-error-states/skill.yaml +3 -0
  3095. package/dist/agents/skills/gemini-cli/design-feedback-patterns/skill.yaml +5 -0
  3096. package/dist/agents/skills/gemini-cli/design-fluent-design/skill.yaml +1 -0
  3097. package/dist/agents/skills/gemini-cli/design-font-pairing/skill.yaml +1 -0
  3098. package/dist/agents/skills/gemini-cli/design-form-ux/skill.yaml +2 -0
  3099. package/dist/agents/skills/gemini-cli/design-gestalt-closure-continuity/skill.yaml +1 -0
  3100. package/dist/agents/skills/gemini-cli/design-gestalt-common-fate/skill.yaml +1 -0
  3101. package/dist/agents/skills/gemini-cli/design-gestalt-figure-ground/skill.yaml +1 -0
  3102. package/dist/agents/skills/gemini-cli/design-gestalt-proximity/skill.yaml +1 -0
  3103. package/dist/agents/skills/gemini-cli/design-gestalt-similarity/skill.yaml +1 -0
  3104. package/dist/agents/skills/gemini-cli/design-grid-systems/skill.yaml +1 -0
  3105. package/dist/agents/skills/gemini-cli/design-i18n-design/skill.yaml +2 -0
  3106. package/dist/agents/skills/gemini-cli/design-iconography/skill.yaml +1 -0
  3107. package/dist/agents/skills/gemini-cli/design-illustration-style/skill.yaml +1 -0
  3108. package/dist/agents/skills/gemini-cli/design-imagery-photography/skill.yaml +1 -0
  3109. package/dist/agents/skills/gemini-cli/design-information-architecture/skill.yaml +3 -0
  3110. package/dist/agents/skills/gemini-cli/design-loading-patterns/skill.yaml +2 -0
  3111. package/dist/agents/skills/gemini-cli/design-material-design-3/skill.yaml +1 -0
  3112. package/dist/agents/skills/gemini-cli/design-micro-interactions/skill.yaml +1 -0
  3113. package/dist/agents/skills/gemini-cli/design-motion-principles/skill.yaml +1 -0
  3114. package/dist/agents/skills/gemini-cli/design-naming-conventions/skill.yaml +1 -0
  3115. package/dist/agents/skills/gemini-cli/design-navigation-ux/skill.yaml +2 -0
  3116. package/dist/agents/skills/gemini-cli/design-palette-construction/skill.yaml +1 -0
  3117. package/dist/agents/skills/gemini-cli/design-parallax-scroll/skill.yaml +1 -0
  3118. package/dist/agents/skills/gemini-cli/design-readability/skill.yaml +3 -0
  3119. package/dist/agents/skills/gemini-cli/design-responsive-strategy/skill.yaml +1 -0
  3120. package/dist/agents/skills/gemini-cli/design-responsive-type/skill.yaml +1 -0
  3121. package/dist/agents/skills/gemini-cli/design-state-design/skill.yaml +1 -0
  3122. package/dist/agents/skills/gemini-cli/design-token-architecture/skill.yaml +1 -0
  3123. package/dist/agents/skills/gemini-cli/design-transitions-timing/skill.yaml +1 -0
  3124. package/dist/agents/skills/gemini-cli/design-type-scale/skill.yaml +1 -0
  3125. package/dist/agents/skills/gemini-cli/design-typographic-hierarchy/skill.yaml +1 -0
  3126. package/dist/agents/skills/gemini-cli/design-typography-fundamentals/skill.yaml +1 -0
  3127. package/dist/agents/skills/gemini-cli/design-visual-hierarchy/skill.yaml +1 -0
  3128. package/dist/agents/skills/gemini-cli/design-web-fonts/skill.yaml +1 -0
  3129. package/dist/agents/skills/gemini-cli/design-whitespace/skill.yaml +1 -0
  3130. package/dist/agents/skills/gemini-cli/detect-doc-drift/skill.yaml +1 -0
  3131. package/dist/agents/skills/gemini-cli/drizzle-filtering-pattern/skill.yaml +1 -0
  3132. package/dist/agents/skills/gemini-cli/drizzle-migrations/skill.yaml +3 -0
  3133. package/dist/agents/skills/gemini-cli/drizzle-performance-patterns/skill.yaml +8 -0
  3134. package/dist/agents/skills/gemini-cli/drizzle-query-builder/skill.yaml +1 -0
  3135. package/dist/agents/skills/gemini-cli/drizzle-raw-sql/skill.yaml +1 -0
  3136. package/dist/agents/skills/gemini-cli/drizzle-relations-pattern/skill.yaml +1 -0
  3137. package/dist/agents/skills/gemini-cli/drizzle-schema-definition/skill.yaml +4 -0
  3138. package/dist/agents/skills/gemini-cli/drizzle-transactions/skill.yaml +4 -0
  3139. package/dist/agents/skills/gemini-cli/drizzle-with-nextjs/skill.yaml +1 -0
  3140. package/dist/agents/skills/gemini-cli/enforce-architecture/skill.yaml +1 -0
  3141. package/dist/agents/skills/gemini-cli/events-event-schema/skill.yaml +1 -0
  3142. package/dist/agents/skills/gemini-cli/events-event-storming/skill.yaml +1 -0
  3143. package/dist/agents/skills/gemini-cli/events-idempotency/SKILL.md +1 -0
  3144. package/dist/agents/skills/gemini-cli/events-idempotency/skill.yaml +2 -0
  3145. package/dist/agents/skills/gemini-cli/events-kafka-patterns/skill.yaml +1 -0
  3146. package/dist/agents/skills/gemini-cli/events-message-queue/skill.yaml +1 -0
  3147. package/dist/agents/skills/gemini-cli/events-outbox-pattern/skill.yaml +1 -0
  3148. package/dist/agents/skills/gemini-cli/events-pubsub-pattern/skill.yaml +1 -0
  3149. package/dist/agents/skills/gemini-cli/events-redis-pubsub/skill.yaml +1 -0
  3150. package/dist/agents/skills/gemini-cli/events-saga-choreography/skill.yaml +1 -0
  3151. package/dist/agents/skills/gemini-cli/events-sse-pattern/skill.yaml +1 -0
  3152. package/dist/agents/skills/gemini-cli/events-webhooks-pattern/SKILL.md +1 -0
  3153. package/dist/agents/skills/gemini-cli/events-webhooks-pattern/skill.yaml +3 -0
  3154. package/dist/agents/skills/gemini-cli/events-websocket-pattern/skill.yaml +1 -0
  3155. package/dist/agents/skills/gemini-cli/gof-abstract-factory/skill.yaml +1 -0
  3156. package/dist/agents/skills/gemini-cli/gof-adapter-pattern/skill.yaml +1 -0
  3157. package/dist/agents/skills/gemini-cli/gof-bridge-pattern/skill.yaml +1 -0
  3158. package/dist/agents/skills/gemini-cli/gof-builder-pattern/skill.yaml +1 -0
  3159. package/dist/agents/skills/gemini-cli/gof-chain-of-responsibility/skill.yaml +1 -0
  3160. package/dist/agents/skills/gemini-cli/gof-command-pattern/skill.yaml +1 -0
  3161. package/dist/agents/skills/gemini-cli/gof-composite-pattern/skill.yaml +1 -0
  3162. package/dist/agents/skills/gemini-cli/gof-decorator-pattern/skill.yaml +1 -0
  3163. package/dist/agents/skills/gemini-cli/gof-facade-pattern/skill.yaml +1 -0
  3164. package/dist/agents/skills/gemini-cli/gof-factory-method/skill.yaml +1 -0
  3165. package/dist/agents/skills/gemini-cli/gof-flyweight-pattern/skill.yaml +1 -0
  3166. package/dist/agents/skills/gemini-cli/gof-iterator-pattern/skill.yaml +1 -0
  3167. package/dist/agents/skills/gemini-cli/gof-mediator-pattern/skill.yaml +1 -0
  3168. package/dist/agents/skills/gemini-cli/gof-memento-pattern/skill.yaml +1 -0
  3169. package/dist/agents/skills/gemini-cli/gof-null-object/skill.yaml +1 -0
  3170. package/dist/agents/skills/gemini-cli/gof-observer-pattern/skill.yaml +1 -0
  3171. package/dist/agents/skills/gemini-cli/gof-prototype-pattern/skill.yaml +1 -0
  3172. package/dist/agents/skills/gemini-cli/gof-proxy-pattern/skill.yaml +1 -0
  3173. package/dist/agents/skills/gemini-cli/gof-singleton/skill.yaml +1 -0
  3174. package/dist/agents/skills/gemini-cli/gof-state-pattern/skill.yaml +1 -0
  3175. package/dist/agents/skills/gemini-cli/gof-strategy-pattern/skill.yaml +1 -0
  3176. package/dist/agents/skills/gemini-cli/gof-template-method/skill.yaml +1 -0
  3177. package/dist/agents/skills/gemini-cli/gof-visitor-pattern/skill.yaml +1 -0
  3178. package/dist/agents/skills/gemini-cli/graphql-apollo-server/skill.yaml +1 -0
  3179. package/dist/agents/skills/gemini-cli/graphql-auth-patterns/SKILL.md +1 -0
  3180. package/dist/agents/skills/gemini-cli/graphql-auth-patterns/skill.yaml +3 -0
  3181. package/dist/agents/skills/gemini-cli/graphql-client-patterns/skill.yaml +1 -0
  3182. package/dist/agents/skills/gemini-cli/graphql-codegen-pattern/skill.yaml +1 -0
  3183. package/dist/agents/skills/gemini-cli/graphql-dataloader-pattern/skill.yaml +1 -0
  3184. package/dist/agents/skills/gemini-cli/graphql-error-handling/SKILL.md +1 -0
  3185. package/dist/agents/skills/gemini-cli/graphql-error-handling/skill.yaml +3 -0
  3186. package/dist/agents/skills/gemini-cli/graphql-federation-pattern/skill.yaml +1 -0
  3187. package/dist/agents/skills/gemini-cli/graphql-pagination-patterns/SKILL.md +1 -0
  3188. package/dist/agents/skills/gemini-cli/graphql-pagination-patterns/skill.yaml +4 -0
  3189. package/dist/agents/skills/gemini-cli/graphql-performance-patterns/skill.yaml +6 -0
  3190. package/dist/agents/skills/gemini-cli/graphql-resolver-pattern/skill.yaml +1 -0
  3191. package/dist/agents/skills/gemini-cli/graphql-schema-design/SKILL.md +1 -0
  3192. package/dist/agents/skills/gemini-cli/graphql-schema-design/skill.yaml +3 -0
  3193. package/dist/agents/skills/gemini-cli/graphql-subscriptions/skill.yaml +1 -0
  3194. package/dist/agents/skills/gemini-cli/harness-accessibility/skill.yaml +1 -0
  3195. package/dist/agents/skills/gemini-cli/harness-api-design/skill.yaml +1 -0
  3196. package/dist/agents/skills/gemini-cli/harness-architecture-advisor/skill.yaml +1 -0
  3197. package/dist/agents/skills/gemini-cli/harness-auth/skill.yaml +1 -0
  3198. package/dist/agents/skills/gemini-cli/harness-autopilot/SKILL.md +171 -822
  3199. package/dist/agents/skills/gemini-cli/harness-autopilot/skill.yaml +1 -0
  3200. package/dist/agents/skills/gemini-cli/harness-brainstorming/SKILL.md +145 -195
  3201. package/dist/agents/skills/gemini-cli/harness-brainstorming/skill.yaml +4 -0
  3202. package/dist/agents/skills/gemini-cli/harness-caching/skill.yaml +1 -0
  3203. package/dist/agents/skills/gemini-cli/harness-chaos/skill.yaml +1 -0
  3204. package/dist/agents/skills/gemini-cli/harness-code-review/SKILL.md +267 -436
  3205. package/dist/agents/skills/gemini-cli/harness-code-review/skill.yaml +7 -0
  3206. package/dist/agents/skills/gemini-cli/harness-codebase-cleanup/skill.yaml +1 -0
  3207. package/dist/agents/skills/gemini-cli/harness-compliance/skill.yaml +1 -0
  3208. package/dist/agents/skills/gemini-cli/harness-containerization/skill.yaml +1 -0
  3209. package/dist/agents/skills/gemini-cli/harness-data-pipeline/skill.yaml +1 -0
  3210. package/dist/agents/skills/gemini-cli/harness-data-validation/skill.yaml +1 -0
  3211. package/dist/agents/skills/gemini-cli/harness-database/skill.yaml +1 -0
  3212. package/dist/agents/skills/gemini-cli/harness-debugging/skill.yaml +1 -0
  3213. package/dist/agents/skills/gemini-cli/harness-dependency-health/skill.yaml +1 -0
  3214. package/dist/agents/skills/gemini-cli/harness-deployment/skill.yaml +1 -0
  3215. package/dist/agents/skills/gemini-cli/harness-design/skill.yaml +1 -0
  3216. package/dist/agents/skills/gemini-cli/harness-design-mobile/skill.yaml +1 -0
  3217. package/dist/agents/skills/gemini-cli/harness-design-system/skill.yaml +1 -0
  3218. package/dist/agents/skills/gemini-cli/harness-design-web/skill.yaml +1 -0
  3219. package/dist/agents/skills/gemini-cli/harness-diagnostics/skill.yaml +1 -0
  3220. package/dist/agents/skills/gemini-cli/harness-docs-pipeline/skill.yaml +1 -0
  3221. package/dist/agents/skills/gemini-cli/harness-dx/skill.yaml +1 -0
  3222. package/dist/agents/skills/gemini-cli/harness-e2e/skill.yaml +1 -0
  3223. package/dist/agents/skills/gemini-cli/harness-event-driven/skill.yaml +1 -0
  3224. package/dist/agents/skills/gemini-cli/harness-execution/SKILL.md +180 -271
  3225. package/dist/agents/skills/gemini-cli/harness-execution/skill.yaml +13 -0
  3226. package/dist/agents/skills/gemini-cli/harness-feature-flags/skill.yaml +1 -0
  3227. package/dist/agents/skills/gemini-cli/harness-git-workflow/skill.yaml +1 -0
  3228. package/dist/agents/skills/gemini-cli/harness-hotspot-detector/skill.yaml +1 -0
  3229. package/dist/agents/skills/gemini-cli/harness-i18n/skill.yaml +1 -0
  3230. package/dist/agents/skills/gemini-cli/harness-i18n-process/skill.yaml +1 -0
  3231. package/dist/agents/skills/gemini-cli/harness-i18n-workflow/skill.yaml +1 -0
  3232. package/dist/agents/skills/gemini-cli/harness-impact-analysis/skill.yaml +1 -0
  3233. package/dist/agents/skills/gemini-cli/harness-incident-response/skill.yaml +1 -0
  3234. package/dist/agents/skills/gemini-cli/harness-infrastructure-as-code/skill.yaml +1 -0
  3235. package/dist/agents/skills/gemini-cli/harness-integration-test/skill.yaml +1 -0
  3236. package/dist/agents/skills/gemini-cli/harness-integrity/skill.yaml +1 -0
  3237. package/dist/agents/skills/gemini-cli/harness-knowledge-mapper/skill.yaml +1 -0
  3238. package/dist/agents/skills/gemini-cli/harness-load-testing/skill.yaml +1 -0
  3239. package/dist/agents/skills/gemini-cli/harness-ml-ops/skill.yaml +1 -0
  3240. package/dist/agents/skills/gemini-cli/harness-mobile-patterns/skill.yaml +1 -0
  3241. package/dist/agents/skills/gemini-cli/harness-mutation-test/skill.yaml +1 -0
  3242. package/dist/agents/skills/gemini-cli/harness-observability/skill.yaml +1 -0
  3243. package/dist/agents/skills/gemini-cli/harness-onboarding/skill.yaml +1 -0
  3244. package/dist/agents/skills/gemini-cli/harness-parallel-agents/skill.yaml +1 -0
  3245. package/dist/agents/skills/gemini-cli/harness-perf/skill.yaml +1 -0
  3246. package/dist/agents/skills/gemini-cli/harness-perf-tdd/skill.yaml +1 -0
  3247. package/dist/agents/skills/gemini-cli/harness-planning/SKILL.md +142 -322
  3248. package/dist/agents/skills/gemini-cli/harness-planning/skill.yaml +7 -0
  3249. package/dist/agents/skills/gemini-cli/harness-pre-commit-review/skill.yaml +1 -0
  3250. package/dist/agents/skills/gemini-cli/harness-product-spec/skill.yaml +1 -0
  3251. package/dist/agents/skills/gemini-cli/harness-property-test/skill.yaml +1 -0
  3252. package/dist/agents/skills/gemini-cli/harness-refactoring/skill.yaml +1 -0
  3253. package/dist/agents/skills/gemini-cli/harness-release-readiness/skill.yaml +1 -0
  3254. package/dist/agents/skills/gemini-cli/harness-resilience/skill.yaml +1 -0
  3255. package/dist/agents/skills/gemini-cli/harness-roadmap/skill.yaml +1 -0
  3256. package/dist/agents/skills/gemini-cli/harness-roadmap-pilot/skill.yaml +1 -0
  3257. package/dist/agents/skills/gemini-cli/harness-router/SKILL.md +69 -123
  3258. package/dist/agents/skills/gemini-cli/harness-router/skill.yaml +1 -0
  3259. package/dist/agents/skills/gemini-cli/harness-secrets/SKILL.md +3 -3
  3260. package/dist/agents/skills/gemini-cli/harness-secrets/skill.yaml +1 -0
  3261. package/dist/agents/skills/gemini-cli/harness-security-review/skill.yaml +6 -0
  3262. package/dist/agents/skills/gemini-cli/harness-security-scan/skill.yaml +7 -0
  3263. package/dist/agents/skills/gemini-cli/harness-skill-authoring/skill.yaml +1 -0
  3264. package/dist/agents/skills/gemini-cli/harness-soundness-review/SKILL.md +483 -667
  3265. package/dist/agents/skills/gemini-cli/harness-soundness-review/skill.yaml +1 -0
  3266. package/dist/agents/skills/gemini-cli/harness-sql-review/skill.yaml +1 -0
  3267. package/dist/agents/skills/gemini-cli/harness-state-management/skill.yaml +1 -0
  3268. package/dist/agents/skills/gemini-cli/harness-supply-chain-audit/skill.yaml +1 -0
  3269. package/dist/agents/skills/gemini-cli/harness-tdd/skill.yaml +1 -0
  3270. package/dist/agents/skills/gemini-cli/harness-test-advisor/skill.yaml +1 -0
  3271. package/dist/agents/skills/gemini-cli/harness-test-data/skill.yaml +1 -0
  3272. package/dist/agents/skills/gemini-cli/harness-ux-copy/skill.yaml +13 -0
  3273. package/dist/agents/skills/gemini-cli/harness-verification/SKILL.md +135 -221
  3274. package/dist/agents/skills/gemini-cli/harness-verification/skill.yaml +4 -0
  3275. package/dist/agents/skills/gemini-cli/harness-verify/skill.yaml +1 -0
  3276. package/dist/agents/skills/gemini-cli/harness-visual-regression/skill.yaml +1 -0
  3277. package/dist/agents/skills/gemini-cli/initialize-harness-project/skill.yaml +1 -0
  3278. package/dist/agents/skills/gemini-cli/js-abstract-factory-pattern/skill.yaml +1 -0
  3279. package/dist/agents/skills/gemini-cli/js-adapter-pattern/skill.yaml +1 -0
  3280. package/dist/agents/skills/gemini-cli/js-bridge-pattern/skill.yaml +1 -0
  3281. package/dist/agents/skills/gemini-cli/js-chain-of-responsibility-pattern/skill.yaml +1 -0
  3282. package/dist/agents/skills/gemini-cli/js-command-pattern/skill.yaml +1 -0
  3283. package/dist/agents/skills/gemini-cli/js-composite-pattern/skill.yaml +1 -0
  3284. package/dist/agents/skills/gemini-cli/js-constructor-pattern/skill.yaml +1 -0
  3285. package/dist/agents/skills/gemini-cli/js-decorator-pattern/skill.yaml +1 -0
  3286. package/dist/agents/skills/gemini-cli/js-dynamic-import/skill.yaml +1 -0
  3287. package/dist/agents/skills/gemini-cli/js-facade-pattern/skill.yaml +1 -0
  3288. package/dist/agents/skills/gemini-cli/js-factory-pattern/skill.yaml +1 -0
  3289. package/dist/agents/skills/gemini-cli/js-flyweight-pattern/skill.yaml +1 -0
  3290. package/dist/agents/skills/gemini-cli/js-iterator-pattern/skill.yaml +1 -0
  3291. package/dist/agents/skills/gemini-cli/js-mediator-middleware-pattern/skill.yaml +1 -0
  3292. package/dist/agents/skills/gemini-cli/js-mixin-pattern/skill.yaml +1 -0
  3293. package/dist/agents/skills/gemini-cli/js-module-pattern/skill.yaml +1 -0
  3294. package/dist/agents/skills/gemini-cli/js-observer-pattern/skill.yaml +1 -0
  3295. package/dist/agents/skills/gemini-cli/js-prototype-pattern/skill.yaml +1 -0
  3296. package/dist/agents/skills/gemini-cli/js-provider-pattern/skill.yaml +1 -0
  3297. package/dist/agents/skills/gemini-cli/js-proxy-pattern/skill.yaml +1 -0
  3298. package/dist/agents/skills/gemini-cli/js-revealing-module-pattern/skill.yaml +1 -0
  3299. package/dist/agents/skills/gemini-cli/js-singleton-pattern/skill.yaml +1 -0
  3300. package/dist/agents/skills/gemini-cli/js-state-pattern/skill.yaml +1 -0
  3301. package/dist/agents/skills/gemini-cli/js-static-import/skill.yaml +1 -0
  3302. package/dist/agents/skills/gemini-cli/js-strategy-pattern/skill.yaml +1 -0
  3303. package/dist/agents/skills/gemini-cli/js-template-method-pattern/skill.yaml +1 -0
  3304. package/dist/agents/skills/gemini-cli/js-visitor-pattern/skill.yaml +1 -0
  3305. package/dist/agents/skills/gemini-cli/microservices-api-gateway/skill.yaml +1 -0
  3306. package/dist/agents/skills/gemini-cli/microservices-bulkhead-pattern/skill.yaml +1 -0
  3307. package/dist/agents/skills/gemini-cli/microservices-circuit-breaker/skill.yaml +1 -0
  3308. package/dist/agents/skills/gemini-cli/microservices-config-server/SKILL.md +1 -1
  3309. package/dist/agents/skills/gemini-cli/microservices-config-server/skill.yaml +1 -0
  3310. package/dist/agents/skills/gemini-cli/microservices-cqrs-pattern/skill.yaml +3 -0
  3311. package/dist/agents/skills/gemini-cli/microservices-decomposition/skill.yaml +1 -0
  3312. package/dist/agents/skills/gemini-cli/microservices-distributed-tracing/skill.yaml +1 -0
  3313. package/dist/agents/skills/gemini-cli/microservices-event-sourcing/skill.yaml +3 -0
  3314. package/dist/agents/skills/gemini-cli/microservices-health-check/skill.yaml +1 -0
  3315. package/dist/agents/skills/gemini-cli/microservices-outbox-pattern/skill.yaml +1 -0
  3316. package/dist/agents/skills/gemini-cli/microservices-saga-pattern/skill.yaml +1 -0
  3317. package/dist/agents/skills/gemini-cli/microservices-service-discovery/skill.yaml +1 -0
  3318. package/dist/agents/skills/gemini-cli/microservices-sidecar-pattern/skill.yaml +1 -0
  3319. package/dist/agents/skills/gemini-cli/microservices-strangler-fig/skill.yaml +1 -0
  3320. package/dist/agents/skills/gemini-cli/mobile-animation-patterns/skill.yaml +1 -0
  3321. package/dist/agents/skills/gemini-cli/mobile-deployment-patterns/skill.yaml +1 -0
  3322. package/dist/agents/skills/gemini-cli/mobile-expo-setup/skill.yaml +1 -0
  3323. package/dist/agents/skills/gemini-cli/mobile-flatlist-patterns/skill.yaml +1 -0
  3324. package/dist/agents/skills/gemini-cli/mobile-gesture-handling/skill.yaml +1 -0
  3325. package/dist/agents/skills/gemini-cli/mobile-native-modules/skill.yaml +1 -0
  3326. package/dist/agents/skills/gemini-cli/mobile-navigation-pattern/skill.yaml +1 -0
  3327. package/dist/agents/skills/gemini-cli/mobile-network-patterns/skill.yaml +1 -0
  3328. package/dist/agents/skills/gemini-cli/mobile-performance-patterns/skill.yaml +6 -0
  3329. package/dist/agents/skills/gemini-cli/mobile-push-notifications/skill.yaml +1 -0
  3330. package/dist/agents/skills/gemini-cli/mobile-storage-patterns/skill.yaml +1 -0
  3331. package/dist/agents/skills/gemini-cli/mobile-testing-patterns/skill.yaml +1 -0
  3332. package/dist/agents/skills/gemini-cli/nestjs-config-module/skill.yaml +1 -0
  3333. package/dist/agents/skills/gemini-cli/nestjs-controller-pattern/skill.yaml +1 -0
  3334. package/dist/agents/skills/gemini-cli/nestjs-dependency-injection/skill.yaml +1 -0
  3335. package/dist/agents/skills/gemini-cli/nestjs-dto-validation/skill.yaml +1 -0
  3336. package/dist/agents/skills/gemini-cli/nestjs-event-driven/skill.yaml +1 -0
  3337. package/dist/agents/skills/gemini-cli/nestjs-exception-filters/skill.yaml +1 -0
  3338. package/dist/agents/skills/gemini-cli/nestjs-graphql-integration/skill.yaml +1 -0
  3339. package/dist/agents/skills/gemini-cli/nestjs-guards-pattern/skill.yaml +1 -0
  3340. package/dist/agents/skills/gemini-cli/nestjs-interceptors-pattern/skill.yaml +1 -0
  3341. package/dist/agents/skills/gemini-cli/nestjs-microservices/skill.yaml +1 -0
  3342. package/dist/agents/skills/gemini-cli/nestjs-middleware-pattern/skill.yaml +1 -0
  3343. package/dist/agents/skills/gemini-cli/nestjs-module-pattern/skill.yaml +1 -0
  3344. package/dist/agents/skills/gemini-cli/nestjs-pipes-pattern/skill.yaml +1 -0
  3345. package/dist/agents/skills/gemini-cli/nestjs-service-pattern/skill.yaml +1 -0
  3346. package/dist/agents/skills/gemini-cli/nestjs-swagger-integration/skill.yaml +1 -0
  3347. package/dist/agents/skills/gemini-cli/nestjs-testing-patterns/skill.yaml +1 -0
  3348. package/dist/agents/skills/gemini-cli/next-app-router/skill.yaml +1 -0
  3349. package/dist/agents/skills/gemini-cli/next-auth-patterns/skill.yaml +1 -0
  3350. package/dist/agents/skills/gemini-cli/next-caching-strategies/skill.yaml +1 -0
  3351. package/dist/agents/skills/gemini-cli/next-data-fetching/skill.yaml +1 -0
  3352. package/dist/agents/skills/gemini-cli/next-deployment-optimization/skill.yaml +1 -0
  3353. package/dist/agents/skills/gemini-cli/next-environment-config/skill.yaml +1 -0
  3354. package/dist/agents/skills/gemini-cli/next-error-boundaries/skill.yaml +1 -0
  3355. package/dist/agents/skills/gemini-cli/next-image-optimization/skill.yaml +1 -0
  3356. package/dist/agents/skills/gemini-cli/next-metadata-api/skill.yaml +1 -0
  3357. package/dist/agents/skills/gemini-cli/next-middleware-pattern/skill.yaml +1 -0
  3358. package/dist/agents/skills/gemini-cli/next-monorepo-setup/skill.yaml +1 -0
  3359. package/dist/agents/skills/gemini-cli/next-parallel-intercepting-routes/skill.yaml +1 -0
  3360. package/dist/agents/skills/gemini-cli/next-route-handlers/skill.yaml +1 -0
  3361. package/dist/agents/skills/gemini-cli/next-server-actions/skill.yaml +1 -0
  3362. package/dist/agents/skills/gemini-cli/next-server-components/skill.yaml +1 -0
  3363. package/dist/agents/skills/gemini-cli/next-static-generation/skill.yaml +1 -0
  3364. package/dist/agents/skills/gemini-cli/next-streaming-suspense/skill.yaml +1 -0
  3365. package/dist/agents/skills/gemini-cli/next-testing-patterns/skill.yaml +1 -0
  3366. package/dist/agents/skills/gemini-cli/node-buffer-encoding/skill.yaml +1 -0
  3367. package/dist/agents/skills/gemini-cli/node-child-process/skill.yaml +1 -0
  3368. package/dist/agents/skills/gemini-cli/node-crypto-patterns/skill.yaml +1 -0
  3369. package/dist/agents/skills/gemini-cli/node-environment-config/skill.yaml +1 -0
  3370. package/dist/agents/skills/gemini-cli/node-error-handling/skill.yaml +1 -0
  3371. package/dist/agents/skills/gemini-cli/node-esm-patterns/skill.yaml +1 -0
  3372. package/dist/agents/skills/gemini-cli/node-event-emitter/skill.yaml +1 -0
  3373. package/dist/agents/skills/gemini-cli/node-express-patterns/skill.yaml +1 -0
  3374. package/dist/agents/skills/gemini-cli/node-fastify-patterns/skill.yaml +1 -0
  3375. package/dist/agents/skills/gemini-cli/node-http-server/skill.yaml +1 -0
  3376. package/dist/agents/skills/gemini-cli/node-path-fs-patterns/skill.yaml +1 -0
  3377. package/dist/agents/skills/gemini-cli/node-performance-profiling/skill.yaml +6 -0
  3378. package/dist/agents/skills/gemini-cli/node-streams-pattern/skill.yaml +1 -0
  3379. package/dist/agents/skills/gemini-cli/node-testing-patterns/skill.yaml +1 -0
  3380. package/dist/agents/skills/gemini-cli/node-worker-threads/skill.yaml +1 -0
  3381. package/dist/agents/skills/gemini-cli/nuxt-auto-imports/skill.yaml +1 -0
  3382. package/dist/agents/skills/gemini-cli/nuxt-composables-pattern/skill.yaml +1 -0
  3383. package/dist/agents/skills/gemini-cli/nuxt-deployment-config/skill.yaml +1 -0
  3384. package/dist/agents/skills/gemini-cli/nuxt-layouts-pages/skill.yaml +1 -0
  3385. package/dist/agents/skills/gemini-cli/nuxt-middleware-pattern/skill.yaml +1 -0
  3386. package/dist/agents/skills/gemini-cli/nuxt-modules-pattern/skill.yaml +1 -0
  3387. package/dist/agents/skills/gemini-cli/nuxt-plugins-pattern/skill.yaml +1 -0
  3388. package/dist/agents/skills/gemini-cli/nuxt-seo-metadata/skill.yaml +1 -0
  3389. package/dist/agents/skills/gemini-cli/nuxt-server-routes/skill.yaml +1 -0
  3390. package/dist/agents/skills/gemini-cli/nuxt-state-management/skill.yaml +1 -0
  3391. package/dist/agents/skills/gemini-cli/nuxt-testing-patterns/skill.yaml +1 -0
  3392. package/dist/agents/skills/gemini-cli/otel-context-propagation/skill.yaml +1 -0
  3393. package/dist/agents/skills/gemini-cli/otel-custom-instrumentation/skill.yaml +1 -0
  3394. package/dist/agents/skills/gemini-cli/otel-error-tracking/skill.yaml +1 -0
  3395. package/dist/agents/skills/gemini-cli/otel-exporter-config/skill.yaml +1 -0
  3396. package/dist/agents/skills/gemini-cli/otel-logging-pattern/skill.yaml +1 -0
  3397. package/dist/agents/skills/gemini-cli/otel-metrics-pattern/skill.yaml +1 -0
  3398. package/dist/agents/skills/gemini-cli/otel-nestjs-integration/skill.yaml +1 -0
  3399. package/dist/agents/skills/gemini-cli/otel-nextjs-integration/skill.yaml +1 -0
  3400. package/dist/agents/skills/gemini-cli/otel-performance-insights/skill.yaml +5 -0
  3401. package/dist/agents/skills/gemini-cli/otel-sampling-strategies/skill.yaml +1 -0
  3402. package/dist/agents/skills/gemini-cli/otel-sdk-setup/skill.yaml +1 -0
  3403. package/dist/agents/skills/gemini-cli/otel-tracing-pattern/skill.yaml +1 -0
  3404. package/dist/agents/skills/gemini-cli/owasp-auth-patterns/SKILL.md +1 -0
  3405. package/dist/agents/skills/gemini-cli/owasp-auth-patterns/skill.yaml +8 -0
  3406. package/dist/agents/skills/gemini-cli/owasp-cryptography/skill.yaml +6 -0
  3407. package/dist/agents/skills/gemini-cli/owasp-csrf-protection/skill.yaml +3 -0
  3408. package/dist/agents/skills/gemini-cli/owasp-dependency-security/skill.yaml +4 -0
  3409. package/dist/agents/skills/gemini-cli/owasp-file-upload-security/skill.yaml +3 -0
  3410. package/dist/agents/skills/gemini-cli/owasp-idor-prevention/skill.yaml +4 -0
  3411. package/dist/agents/skills/gemini-cli/owasp-injection-prevention/skill.yaml +4 -0
  3412. package/dist/agents/skills/gemini-cli/owasp-logging-monitoring/skill.yaml +5 -0
  3413. package/dist/agents/skills/gemini-cli/owasp-rate-limiting/SKILL.md +1 -0
  3414. package/dist/agents/skills/gemini-cli/owasp-rate-limiting/skill.yaml +5 -0
  3415. package/dist/agents/skills/gemini-cli/owasp-secrets-management/SKILL.md +2 -1
  3416. package/dist/agents/skills/gemini-cli/owasp-secrets-management/skill.yaml +5 -0
  3417. package/dist/agents/skills/gemini-cli/owasp-security-headers/skill.yaml +4 -0
  3418. package/dist/agents/skills/gemini-cli/owasp-xss-prevention/skill.yaml +3 -0
  3419. package/dist/agents/skills/gemini-cli/perf-browser-cache/SKILL.md +151 -0
  3420. package/dist/agents/skills/gemini-cli/perf-browser-cache/skill.yaml +39 -0
  3421. package/dist/agents/skills/gemini-cli/perf-bundle-analysis/SKILL.md +217 -0
  3422. package/dist/agents/skills/gemini-cli/perf-bundle-analysis/skill.yaml +37 -0
  3423. package/dist/agents/skills/gemini-cli/perf-cache-invalidation/SKILL.md +228 -0
  3424. package/dist/agents/skills/gemini-cli/perf-cache-invalidation/skill.yaml +38 -0
  3425. package/dist/agents/skills/gemini-cli/perf-cdn-cache-control/SKILL.md +198 -0
  3426. package/dist/agents/skills/gemini-cli/perf-cdn-cache-control/skill.yaml +40 -0
  3427. package/dist/agents/skills/gemini-cli/perf-cdn-strategies/SKILL.md +161 -0
  3428. package/dist/agents/skills/gemini-cli/perf-cdn-strategies/skill.yaml +40 -0
  3429. package/dist/agents/skills/gemini-cli/perf-client-side-rendering/SKILL.md +245 -0
  3430. package/dist/agents/skills/gemini-cli/perf-client-side-rendering/skill.yaml +40 -0
  3431. package/dist/agents/skills/gemini-cli/perf-code-splitting/SKILL.md +185 -0
  3432. package/dist/agents/skills/gemini-cli/perf-code-splitting/skill.yaml +39 -0
  3433. package/dist/agents/skills/gemini-cli/perf-compression/SKILL.md +163 -0
  3434. package/dist/agents/skills/gemini-cli/perf-compression/skill.yaml +38 -0
  3435. package/dist/agents/skills/gemini-cli/perf-connection-costs/SKILL.md +165 -0
  3436. package/dist/agents/skills/gemini-cli/perf-connection-costs/skill.yaml +40 -0
  3437. package/dist/agents/skills/gemini-cli/perf-connection-pooling/SKILL.md +250 -0
  3438. package/dist/agents/skills/gemini-cli/perf-connection-pooling/skill.yaml +38 -0
  3439. package/dist/agents/skills/gemini-cli/perf-critical-rendering-path/SKILL.md +167 -0
  3440. package/dist/agents/skills/gemini-cli/perf-critical-rendering-path/skill.yaml +39 -0
  3441. package/dist/agents/skills/gemini-cli/perf-cumulative-layout-shift/SKILL.md +180 -0
  3442. package/dist/agents/skills/gemini-cli/perf-cumulative-layout-shift/skill.yaml +40 -0
  3443. package/dist/agents/skills/gemini-cli/perf-dom-parsing/SKILL.md +153 -0
  3444. package/dist/agents/skills/gemini-cli/perf-dom-parsing/skill.yaml +36 -0
  3445. package/dist/agents/skills/gemini-cli/perf-edge-rendering/SKILL.md +222 -0
  3446. package/dist/agents/skills/gemini-cli/perf-edge-rendering/skill.yaml +39 -0
  3447. package/dist/agents/skills/gemini-cli/perf-event-loop/SKILL.md +203 -0
  3448. package/dist/agents/skills/gemini-cli/perf-event-loop/skill.yaml +38 -0
  3449. package/dist/agents/skills/gemini-cli/perf-font-loading/SKILL.md +222 -0
  3450. package/dist/agents/skills/gemini-cli/perf-font-loading/skill.yaml +39 -0
  3451. package/dist/agents/skills/gemini-cli/perf-garbage-collection/SKILL.md +192 -0
  3452. package/dist/agents/skills/gemini-cli/perf-garbage-collection/skill.yaml +40 -0
  3453. package/dist/agents/skills/gemini-cli/perf-heap-profiling/SKILL.md +160 -0
  3454. package/dist/agents/skills/gemini-cli/perf-heap-profiling/skill.yaml +38 -0
  3455. package/dist/agents/skills/gemini-cli/perf-http2-multiplexing/SKILL.md +163 -0
  3456. package/dist/agents/skills/gemini-cli/perf-http2-multiplexing/skill.yaml +38 -0
  3457. package/dist/agents/skills/gemini-cli/perf-http3-quic/SKILL.md +165 -0
  3458. package/dist/agents/skills/gemini-cli/perf-http3-quic/skill.yaml +37 -0
  3459. package/dist/agents/skills/gemini-cli/perf-image-formats/SKILL.md +183 -0
  3460. package/dist/agents/skills/gemini-cli/perf-image-formats/skill.yaml +39 -0
  3461. package/dist/agents/skills/gemini-cli/perf-index-strategies/SKILL.md +210 -0
  3462. package/dist/agents/skills/gemini-cli/perf-index-strategies/skill.yaml +40 -0
  3463. package/dist/agents/skills/gemini-cli/perf-interaction-to-next-paint/SKILL.md +170 -0
  3464. package/dist/agents/skills/gemini-cli/perf-interaction-to-next-paint/skill.yaml +40 -0
  3465. package/dist/agents/skills/gemini-cli/perf-largest-contentful-paint/SKILL.md +162 -0
  3466. package/dist/agents/skills/gemini-cli/perf-largest-contentful-paint/skill.yaml +41 -0
  3467. package/dist/agents/skills/gemini-cli/perf-layout-reflow/SKILL.md +187 -0
  3468. package/dist/agents/skills/gemini-cli/perf-layout-reflow/skill.yaml +38 -0
  3469. package/dist/agents/skills/gemini-cli/perf-lazy-loading/SKILL.md +217 -0
  3470. package/dist/agents/skills/gemini-cli/perf-lazy-loading/skill.yaml +38 -0
  3471. package/dist/agents/skills/gemini-cli/perf-lazy-loading-media/SKILL.md +233 -0
  3472. package/dist/agents/skills/gemini-cli/perf-lazy-loading-media/skill.yaml +38 -0
  3473. package/dist/agents/skills/gemini-cli/perf-long-tasks/SKILL.md +194 -0
  3474. package/dist/agents/skills/gemini-cli/perf-long-tasks/skill.yaml +38 -0
  3475. package/dist/agents/skills/gemini-cli/perf-memory-leaks/SKILL.md +218 -0
  3476. package/dist/agents/skills/gemini-cli/perf-memory-leaks/skill.yaml +38 -0
  3477. package/dist/agents/skills/gemini-cli/perf-module-federation/SKILL.md +242 -0
  3478. package/dist/agents/skills/gemini-cli/perf-module-federation/skill.yaml +38 -0
  3479. package/dist/agents/skills/gemini-cli/perf-n-plus-one/SKILL.md +237 -0
  3480. package/dist/agents/skills/gemini-cli/perf-n-plus-one/skill.yaml +40 -0
  3481. package/dist/agents/skills/gemini-cli/perf-paint-compositing/SKILL.md +181 -0
  3482. package/dist/agents/skills/gemini-cli/perf-paint-compositing/skill.yaml +40 -0
  3483. package/dist/agents/skills/gemini-cli/perf-performance-api/SKILL.md +249 -0
  3484. package/dist/agents/skills/gemini-cli/perf-performance-api/skill.yaml +41 -0
  3485. package/dist/agents/skills/gemini-cli/perf-profiling-methodology/SKILL.md +181 -0
  3486. package/dist/agents/skills/gemini-cli/perf-profiling-methodology/skill.yaml +44 -0
  3487. package/dist/agents/skills/gemini-cli/perf-query-optimization/SKILL.md +203 -0
  3488. package/dist/agents/skills/gemini-cli/perf-query-optimization/skill.yaml +39 -0
  3489. package/dist/agents/skills/gemini-cli/perf-resource-hints/SKILL.md +167 -0
  3490. package/dist/agents/skills/gemini-cli/perf-resource-hints/skill.yaml +40 -0
  3491. package/dist/agents/skills/gemini-cli/perf-responsive-images/SKILL.md +225 -0
  3492. package/dist/agents/skills/gemini-cli/perf-responsive-images/skill.yaml +38 -0
  3493. package/dist/agents/skills/gemini-cli/perf-server-side-caching/SKILL.md +194 -0
  3494. package/dist/agents/skills/gemini-cli/perf-server-side-caching/skill.yaml +40 -0
  3495. package/dist/agents/skills/gemini-cli/perf-server-side-rendering/SKILL.md +239 -0
  3496. package/dist/agents/skills/gemini-cli/perf-server-side-rendering/skill.yaml +39 -0
  3497. package/dist/agents/skills/gemini-cli/perf-service-worker-caching/SKILL.md +247 -0
  3498. package/dist/agents/skills/gemini-cli/perf-service-worker-caching/skill.yaml +40 -0
  3499. package/dist/agents/skills/gemini-cli/perf-static-generation/SKILL.md +241 -0
  3500. package/dist/agents/skills/gemini-cli/perf-static-generation/skill.yaml +39 -0
  3501. package/dist/agents/skills/gemini-cli/perf-streaming-rendering/SKILL.md +242 -0
  3502. package/dist/agents/skills/gemini-cli/perf-streaming-rendering/skill.yaml +37 -0
  3503. package/dist/agents/skills/gemini-cli/perf-style-calculation/SKILL.md +166 -0
  3504. package/dist/agents/skills/gemini-cli/perf-style-calculation/skill.yaml +36 -0
  3505. package/dist/agents/skills/gemini-cli/perf-svg-optimization/SKILL.md +249 -0
  3506. package/dist/agents/skills/gemini-cli/perf-svg-optimization/skill.yaml +37 -0
  3507. package/dist/agents/skills/gemini-cli/perf-tree-shaking/SKILL.md +225 -0
  3508. package/dist/agents/skills/gemini-cli/perf-tree-shaking/skill.yaml +38 -0
  3509. package/dist/agents/skills/gemini-cli/perf-web-workers/SKILL.md +237 -0
  3510. package/dist/agents/skills/gemini-cli/perf-web-workers/skill.yaml +40 -0
  3511. package/dist/agents/skills/gemini-cli/prisma-client-queries/skill.yaml +1 -0
  3512. package/dist/agents/skills/gemini-cli/prisma-filtering-sorting/skill.yaml +1 -0
  3513. package/dist/agents/skills/gemini-cli/prisma-migrations/skill.yaml +3 -0
  3514. package/dist/agents/skills/gemini-cli/prisma-performance-patterns/skill.yaml +8 -0
  3515. package/dist/agents/skills/gemini-cli/prisma-raw-queries/skill.yaml +1 -0
  3516. package/dist/agents/skills/gemini-cli/prisma-relations-pattern/skill.yaml +1 -0
  3517. package/dist/agents/skills/gemini-cli/prisma-schema-design/skill.yaml +4 -0
  3518. package/dist/agents/skills/gemini-cli/prisma-seeding-pattern/skill.yaml +1 -0
  3519. package/dist/agents/skills/gemini-cli/prisma-soft-delete/skill.yaml +1 -0
  3520. package/dist/agents/skills/gemini-cli/prisma-transactions/skill.yaml +4 -0
  3521. package/dist/agents/skills/gemini-cli/prisma-type-generation/skill.yaml +1 -0
  3522. package/dist/agents/skills/gemini-cli/react-2026/skill.yaml +1 -0
  3523. package/dist/agents/skills/gemini-cli/react-client-rendering/skill.yaml +1 -0
  3524. package/dist/agents/skills/gemini-cli/react-compound-pattern/skill.yaml +1 -0
  3525. package/dist/agents/skills/gemini-cli/react-concurrent-ui/skill.yaml +1 -0
  3526. package/dist/agents/skills/gemini-cli/react-container-presentational/skill.yaml +1 -0
  3527. package/dist/agents/skills/gemini-cli/react-context-pattern/skill.yaml +1 -0
  3528. package/dist/agents/skills/gemini-cli/react-dynamic-import/skill.yaml +1 -0
  3529. package/dist/agents/skills/gemini-cli/react-hoc-pattern/skill.yaml +1 -0
  3530. package/dist/agents/skills/gemini-cli/react-hooks-pattern/skill.yaml +1 -0
  3531. package/dist/agents/skills/gemini-cli/react-islands-pattern/skill.yaml +1 -0
  3532. package/dist/agents/skills/gemini-cli/react-memoization-pattern/skill.yaml +1 -0
  3533. package/dist/agents/skills/gemini-cli/react-progressive-hydration/skill.yaml +1 -0
  3534. package/dist/agents/skills/gemini-cli/react-provider-pattern/skill.yaml +1 -0
  3535. package/dist/agents/skills/gemini-cli/react-render-props-pattern/skill.yaml +1 -0
  3536. package/dist/agents/skills/gemini-cli/react-server-components/skill.yaml +1 -0
  3537. package/dist/agents/skills/gemini-cli/react-server-rendering/skill.yaml +1 -0
  3538. package/dist/agents/skills/gemini-cli/react-state-management-pattern/skill.yaml +1 -0
  3539. package/dist/agents/skills/gemini-cli/react-static-import/skill.yaml +1 -0
  3540. package/dist/agents/skills/gemini-cli/react-suspense-pattern/skill.yaml +1 -0
  3541. package/dist/agents/skills/gemini-cli/redux-entity-adapter/skill.yaml +1 -0
  3542. package/dist/agents/skills/gemini-cli/redux-listener-middleware/skill.yaml +1 -0
  3543. package/dist/agents/skills/gemini-cli/redux-persistence-pattern/skill.yaml +1 -0
  3544. package/dist/agents/skills/gemini-cli/redux-rtk-optimistic/skill.yaml +1 -0
  3545. package/dist/agents/skills/gemini-cli/redux-rtk-query-endpoints/skill.yaml +1 -0
  3546. package/dist/agents/skills/gemini-cli/redux-rtk-query-setup/skill.yaml +1 -0
  3547. package/dist/agents/skills/gemini-cli/redux-selectors-pattern/skill.yaml +1 -0
  3548. package/dist/agents/skills/gemini-cli/redux-slice-pattern/skill.yaml +1 -0
  3549. package/dist/agents/skills/gemini-cli/redux-store-setup/skill.yaml +1 -0
  3550. package/dist/agents/skills/gemini-cli/redux-testing-patterns/skill.yaml +1 -0
  3551. package/dist/agents/skills/gemini-cli/redux-thunk-pattern/skill.yaml +1 -0
  3552. package/dist/agents/skills/gemini-cli/redux-typescript-patterns/skill.yaml +1 -0
  3553. package/dist/agents/skills/gemini-cli/resilience-bulkhead-pattern/skill.yaml +1 -0
  3554. package/dist/agents/skills/gemini-cli/resilience-chaos-testing/skill.yaml +1 -0
  3555. package/dist/agents/skills/gemini-cli/resilience-circuit-breaker/skill.yaml +1 -0
  3556. package/dist/agents/skills/gemini-cli/resilience-dead-letter/skill.yaml +1 -0
  3557. package/dist/agents/skills/gemini-cli/resilience-fallback-pattern/skill.yaml +1 -0
  3558. package/dist/agents/skills/gemini-cli/resilience-health-checks/skill.yaml +1 -0
  3559. package/dist/agents/skills/gemini-cli/resilience-idempotency/skill.yaml +1 -0
  3560. package/dist/agents/skills/gemini-cli/resilience-rate-limiting/skill.yaml +1 -0
  3561. package/dist/agents/skills/gemini-cli/resilience-retry-pattern/skill.yaml +1 -0
  3562. package/dist/agents/skills/gemini-cli/resilience-timeout-pattern/skill.yaml +1 -0
  3563. package/dist/agents/skills/gemini-cli/security-abac-design/SKILL.md +154 -0
  3564. package/dist/agents/skills/gemini-cli/security-abac-design/skill.yaml +41 -0
  3565. package/dist/agents/skills/gemini-cli/security-asymmetric-encryption/SKILL.md +201 -0
  3566. package/dist/agents/skills/gemini-cli/security-asymmetric-encryption/skill.yaml +42 -0
  3567. package/dist/agents/skills/gemini-cli/security-attack-trees/SKILL.md +150 -0
  3568. package/dist/agents/skills/gemini-cli/security-attack-trees/skill.yaml +37 -0
  3569. package/dist/agents/skills/gemini-cli/security-audit-log-design/SKILL.md +227 -0
  3570. package/dist/agents/skills/gemini-cli/security-audit-log-design/skill.yaml +39 -0
  3571. package/dist/agents/skills/gemini-cli/security-authentication-flows/SKILL.md +168 -0
  3572. package/dist/agents/skills/gemini-cli/security-authentication-flows/skill.yaml +42 -0
  3573. package/dist/agents/skills/gemini-cli/security-capability-based-security/SKILL.md +158 -0
  3574. package/dist/agents/skills/gemini-cli/security-capability-based-security/skill.yaml +40 -0
  3575. package/dist/agents/skills/gemini-cli/security-certificate-management/SKILL.md +153 -0
  3576. package/dist/agents/skills/gemini-cli/security-certificate-management/skill.yaml +42 -0
  3577. package/dist/agents/skills/gemini-cli/security-ci-security-testing/SKILL.md +159 -0
  3578. package/dist/agents/skills/gemini-cli/security-ci-security-testing/skill.yaml +43 -0
  3579. package/dist/agents/skills/gemini-cli/security-code-signing/SKILL.md +155 -0
  3580. package/dist/agents/skills/gemini-cli/security-code-signing/skill.yaml +40 -0
  3581. package/dist/agents/skills/gemini-cli/security-compliance-logging/SKILL.md +183 -0
  3582. package/dist/agents/skills/gemini-cli/security-compliance-logging/skill.yaml +38 -0
  3583. package/dist/agents/skills/gemini-cli/security-credential-storage/SKILL.md +222 -0
  3584. package/dist/agents/skills/gemini-cli/security-credential-storage/skill.yaml +41 -0
  3585. package/dist/agents/skills/gemini-cli/security-cryptographic-randomness/SKILL.md +154 -0
  3586. package/dist/agents/skills/gemini-cli/security-cryptographic-randomness/skill.yaml +41 -0
  3587. package/dist/agents/skills/gemini-cli/security-dependency-auditing/SKILL.md +156 -0
  3588. package/dist/agents/skills/gemini-cli/security-dependency-auditing/skill.yaml +39 -0
  3589. package/dist/agents/skills/gemini-cli/security-deserialization-attacks/SKILL.md +180 -0
  3590. package/dist/agents/skills/gemini-cli/security-deserialization-attacks/skill.yaml +38 -0
  3591. package/dist/agents/skills/gemini-cli/security-environment-variable-risks/SKILL.md +153 -0
  3592. package/dist/agents/skills/gemini-cli/security-environment-variable-risks/skill.yaml +37 -0
  3593. package/dist/agents/skills/gemini-cli/security-forensics-fundamentals/SKILL.md +198 -0
  3594. package/dist/agents/skills/gemini-cli/security-forensics-fundamentals/skill.yaml +40 -0
  3595. package/dist/agents/skills/gemini-cli/security-hashing-fundamentals/SKILL.md +212 -0
  3596. package/dist/agents/skills/gemini-cli/security-hashing-fundamentals/skill.yaml +40 -0
  3597. package/dist/agents/skills/gemini-cli/security-hmac-signatures/SKILL.md +165 -0
  3598. package/dist/agents/skills/gemini-cli/security-hmac-signatures/skill.yaml +40 -0
  3599. package/dist/agents/skills/gemini-cli/security-hsts-preloading/SKILL.md +154 -0
  3600. package/dist/agents/skills/gemini-cli/security-hsts-preloading/skill.yaml +38 -0
  3601. package/dist/agents/skills/gemini-cli/security-identity-verification/SKILL.md +157 -0
  3602. package/dist/agents/skills/gemini-cli/security-identity-verification/skill.yaml +39 -0
  3603. package/dist/agents/skills/gemini-cli/security-incident-containment/SKILL.md +190 -0
  3604. package/dist/agents/skills/gemini-cli/security-incident-containment/skill.yaml +40 -0
  3605. package/dist/agents/skills/gemini-cli/security-injection-families/SKILL.md +235 -0
  3606. package/dist/agents/skills/gemini-cli/security-injection-families/skill.yaml +41 -0
  3607. package/dist/agents/skills/gemini-cli/security-log-correlation/SKILL.md +178 -0
  3608. package/dist/agents/skills/gemini-cli/security-log-correlation/skill.yaml +39 -0
  3609. package/dist/agents/skills/gemini-cli/security-memory-safety/SKILL.md +234 -0
  3610. package/dist/agents/skills/gemini-cli/security-memory-safety/skill.yaml +39 -0
  3611. package/dist/agents/skills/gemini-cli/security-mfa-design/SKILL.md +150 -0
  3612. package/dist/agents/skills/gemini-cli/security-mfa-design/skill.yaml +41 -0
  3613. package/dist/agents/skills/gemini-cli/security-microsegmentation/SKILL.md +154 -0
  3614. package/dist/agents/skills/gemini-cli/security-microsegmentation/skill.yaml +40 -0
  3615. package/dist/agents/skills/gemini-cli/security-mtls-design/SKILL.md +158 -0
  3616. package/dist/agents/skills/gemini-cli/security-mtls-design/skill.yaml +39 -0
  3617. package/dist/agents/skills/gemini-cli/security-penetration-testing/SKILL.md +166 -0
  3618. package/dist/agents/skills/gemini-cli/security-penetration-testing/skill.yaml +40 -0
  3619. package/dist/agents/skills/gemini-cli/security-post-incident-review/SKILL.md +205 -0
  3620. package/dist/agents/skills/gemini-cli/security-post-incident-review/skill.yaml +39 -0
  3621. package/dist/agents/skills/gemini-cli/security-race-conditions/SKILL.md +186 -0
  3622. package/dist/agents/skills/gemini-cli/security-race-conditions/skill.yaml +39 -0
  3623. package/dist/agents/skills/gemini-cli/security-rbac-design/SKILL.md +209 -0
  3624. package/dist/agents/skills/gemini-cli/security-rbac-design/skill.yaml +40 -0
  3625. package/dist/agents/skills/gemini-cli/security-rebac-design/SKILL.md +154 -0
  3626. package/dist/agents/skills/gemini-cli/security-rebac-design/skill.yaml +39 -0
  3627. package/dist/agents/skills/gemini-cli/security-sbom-provenance/SKILL.md +157 -0
  3628. package/dist/agents/skills/gemini-cli/security-sbom-provenance/skill.yaml +39 -0
  3629. package/dist/agents/skills/gemini-cli/security-secrets-lifecycle/SKILL.md +190 -0
  3630. package/dist/agents/skills/gemini-cli/security-secrets-lifecycle/skill.yaml +39 -0
  3631. package/dist/agents/skills/gemini-cli/security-security-champions/SKILL.md +165 -0
  3632. package/dist/agents/skills/gemini-cli/security-security-champions/skill.yaml +37 -0
  3633. package/dist/agents/skills/gemini-cli/security-session-management/SKILL.md +196 -0
  3634. package/dist/agents/skills/gemini-cli/security-session-management/skill.yaml +41 -0
  3635. package/dist/agents/skills/gemini-cli/security-shift-left-design/SKILL.md +153 -0
  3636. package/dist/agents/skills/gemini-cli/security-shift-left-design/skill.yaml +38 -0
  3637. package/dist/agents/skills/gemini-cli/security-symmetric-encryption/SKILL.md +176 -0
  3638. package/dist/agents/skills/gemini-cli/security-symmetric-encryption/skill.yaml +41 -0
  3639. package/dist/agents/skills/gemini-cli/security-threat-modeling-process/SKILL.md +150 -0
  3640. package/dist/agents/skills/gemini-cli/security-threat-modeling-process/skill.yaml +38 -0
  3641. package/dist/agents/skills/gemini-cli/security-threat-modeling-stride/SKILL.md +150 -0
  3642. package/dist/agents/skills/gemini-cli/security-threat-modeling-stride/skill.yaml +40 -0
  3643. package/dist/agents/skills/gemini-cli/security-tls-fundamentals/SKILL.md +186 -0
  3644. package/dist/agents/skills/gemini-cli/security-tls-fundamentals/skill.yaml +40 -0
  3645. package/dist/agents/skills/gemini-cli/security-trust-boundaries/SKILL.md +152 -0
  3646. package/dist/agents/skills/gemini-cli/security-trust-boundaries/skill.yaml +39 -0
  3647. package/dist/agents/skills/gemini-cli/security-vault-patterns/SKILL.md +155 -0
  3648. package/dist/agents/skills/gemini-cli/security-vault-patterns/skill.yaml +39 -0
  3649. package/dist/agents/skills/gemini-cli/security-vulnerability-disclosure/SKILL.md +207 -0
  3650. package/dist/agents/skills/gemini-cli/security-vulnerability-disclosure/skill.yaml +39 -0
  3651. package/dist/agents/skills/gemini-cli/security-zero-trust-principles/SKILL.md +229 -0
  3652. package/dist/agents/skills/gemini-cli/security-zero-trust-principles/skill.yaml +40 -0
  3653. package/dist/agents/skills/gemini-cli/state-context-pattern/skill.yaml +1 -0
  3654. package/dist/agents/skills/gemini-cli/state-jotai-atoms/skill.yaml +1 -0
  3655. package/dist/agents/skills/gemini-cli/state-selection-patterns/skill.yaml +1 -0
  3656. package/dist/agents/skills/gemini-cli/state-server-client-sync/skill.yaml +1 -0
  3657. package/dist/agents/skills/gemini-cli/state-zustand-devtools/skill.yaml +1 -0
  3658. package/dist/agents/skills/gemini-cli/state-zustand-immer/skill.yaml +1 -0
  3659. package/dist/agents/skills/gemini-cli/state-zustand-persist/skill.yaml +1 -0
  3660. package/dist/agents/skills/gemini-cli/state-zustand-react/skill.yaml +1 -0
  3661. package/dist/agents/skills/gemini-cli/state-zustand-slices/skill.yaml +1 -0
  3662. package/dist/agents/skills/gemini-cli/state-zustand-store/skill.yaml +1 -0
  3663. package/dist/agents/skills/gemini-cli/svelte-adapter-config/skill.yaml +1 -0
  3664. package/dist/agents/skills/gemini-cli/svelte-component-composition/skill.yaml +1 -0
  3665. package/dist/agents/skills/gemini-cli/svelte-error-pages/skill.yaml +1 -0
  3666. package/dist/agents/skills/gemini-cli/svelte-form-actions/skill.yaml +1 -0
  3667. package/dist/agents/skills/gemini-cli/svelte-load-functions/skill.yaml +1 -0
  3668. package/dist/agents/skills/gemini-cli/svelte-performance-patterns/skill.yaml +6 -0
  3669. package/dist/agents/skills/gemini-cli/svelte-routing-pattern/skill.yaml +1 -0
  3670. package/dist/agents/skills/gemini-cli/svelte-runes-pattern/skill.yaml +1 -0
  3671. package/dist/agents/skills/gemini-cli/svelte-server-hooks/skill.yaml +1 -0
  3672. package/dist/agents/skills/gemini-cli/svelte-state-management/skill.yaml +1 -0
  3673. package/dist/agents/skills/gemini-cli/svelte-stores-pattern/skill.yaml +1 -0
  3674. package/dist/agents/skills/gemini-cli/svelte-testing-patterns/skill.yaml +1 -0
  3675. package/dist/agents/skills/gemini-cli/svelte-transitions-animations/skill.yaml +1 -0
  3676. package/dist/agents/skills/gemini-cli/tanstack-cache-management/skill.yaml +1 -0
  3677. package/dist/agents/skills/gemini-cli/tanstack-dependent-queries/skill.yaml +1 -0
  3678. package/dist/agents/skills/gemini-cli/tanstack-devtools/skill.yaml +1 -0
  3679. package/dist/agents/skills/gemini-cli/tanstack-infinite-queries/skill.yaml +1 -0
  3680. package/dist/agents/skills/gemini-cli/tanstack-mutation-patterns/skill.yaml +1 -0
  3681. package/dist/agents/skills/gemini-cli/tanstack-optimistic-updates/skill.yaml +1 -0
  3682. package/dist/agents/skills/gemini-cli/tanstack-prefetching/skill.yaml +1 -0
  3683. package/dist/agents/skills/gemini-cli/tanstack-query-invalidation/skill.yaml +1 -0
  3684. package/dist/agents/skills/gemini-cli/tanstack-query-keys/skill.yaml +1 -0
  3685. package/dist/agents/skills/gemini-cli/tanstack-suspense-mode/skill.yaml +1 -0
  3686. package/dist/agents/skills/gemini-cli/test-accessibility-testing/skill.yaml +1 -0
  3687. package/dist/agents/skills/gemini-cli/test-component-react/skill.yaml +1 -0
  3688. package/dist/agents/skills/gemini-cli/test-component-svelte/skill.yaml +1 -0
  3689. package/dist/agents/skills/gemini-cli/test-contract-testing/skill.yaml +1 -0
  3690. package/dist/agents/skills/gemini-cli/test-coverage-patterns/skill.yaml +1 -0
  3691. package/dist/agents/skills/gemini-cli/test-e2e-strategy/skill.yaml +1 -0
  3692. package/dist/agents/skills/gemini-cli/test-factory-patterns/skill.yaml +1 -0
  3693. package/dist/agents/skills/gemini-cli/test-integration-patterns/skill.yaml +1 -0
  3694. package/dist/agents/skills/gemini-cli/test-mock-patterns/skill.yaml +1 -0
  3695. package/dist/agents/skills/gemini-cli/test-msw-pattern/skill.yaml +1 -0
  3696. package/dist/agents/skills/gemini-cli/test-performance-testing/skill.yaml +5 -0
  3697. package/dist/agents/skills/gemini-cli/test-playwright-patterns/skill.yaml +1 -0
  3698. package/dist/agents/skills/gemini-cli/test-playwright-setup/skill.yaml +1 -0
  3699. package/dist/agents/skills/gemini-cli/test-property-based/skill.yaml +1 -0
  3700. package/dist/agents/skills/gemini-cli/test-snapshot-patterns/skill.yaml +1 -0
  3701. package/dist/agents/skills/gemini-cli/test-tdd-workflow/skill.yaml +1 -0
  3702. package/dist/agents/skills/gemini-cli/test-unit-patterns/skill.yaml +1 -0
  3703. package/dist/agents/skills/gemini-cli/test-vitest-config/skill.yaml +1 -0
  3704. package/dist/agents/skills/gemini-cli/trpc-context-pattern/skill.yaml +1 -0
  3705. package/dist/agents/skills/gemini-cli/trpc-error-handling/SKILL.md +1 -0
  3706. package/dist/agents/skills/gemini-cli/trpc-error-handling/skill.yaml +3 -0
  3707. package/dist/agents/skills/gemini-cli/trpc-input-validation/SKILL.md +1 -0
  3708. package/dist/agents/skills/gemini-cli/trpc-input-validation/skill.yaml +2 -0
  3709. package/dist/agents/skills/gemini-cli/trpc-middleware-pattern/skill.yaml +1 -0
  3710. package/dist/agents/skills/gemini-cli/trpc-nextjs-integration/skill.yaml +1 -0
  3711. package/dist/agents/skills/gemini-cli/trpc-react-query-integration/skill.yaml +1 -0
  3712. package/dist/agents/skills/gemini-cli/trpc-router-composition/SKILL.md +1 -0
  3713. package/dist/agents/skills/gemini-cli/trpc-router-composition/skill.yaml +3 -0
  3714. package/dist/agents/skills/gemini-cli/trpc-subscription-pattern/skill.yaml +1 -0
  3715. package/dist/agents/skills/gemini-cli/ts-async-patterns/skill.yaml +1 -0
  3716. package/dist/agents/skills/gemini-cli/ts-branded-types/skill.yaml +1 -0
  3717. package/dist/agents/skills/gemini-cli/ts-class-patterns/skill.yaml +1 -0
  3718. package/dist/agents/skills/gemini-cli/ts-conditional-types/skill.yaml +1 -0
  3719. package/dist/agents/skills/gemini-cli/ts-config-patterns/skill.yaml +1 -0
  3720. package/dist/agents/skills/gemini-cli/ts-declaration-merging/skill.yaml +1 -0
  3721. package/dist/agents/skills/gemini-cli/ts-decorator-patterns/skill.yaml +1 -0
  3722. package/dist/agents/skills/gemini-cli/ts-discriminated-unions/skill.yaml +1 -0
  3723. package/dist/agents/skills/gemini-cli/ts-error-handling-types/skill.yaml +1 -0
  3724. package/dist/agents/skills/gemini-cli/ts-generics-pattern/skill.yaml +1 -0
  3725. package/dist/agents/skills/gemini-cli/ts-mapped-types/skill.yaml +1 -0
  3726. package/dist/agents/skills/gemini-cli/ts-module-patterns/skill.yaml +1 -0
  3727. package/dist/agents/skills/gemini-cli/ts-performance-patterns/skill.yaml +5 -0
  3728. package/dist/agents/skills/gemini-cli/ts-satisfies-operator/skill.yaml +1 -0
  3729. package/dist/agents/skills/gemini-cli/ts-strict-mode/skill.yaml +1 -0
  3730. package/dist/agents/skills/gemini-cli/ts-template-literal-types/skill.yaml +1 -0
  3731. package/dist/agents/skills/gemini-cli/ts-testing-types/skill.yaml +1 -0
  3732. package/dist/agents/skills/gemini-cli/ts-type-guards/skill.yaml +1 -0
  3733. package/dist/agents/skills/gemini-cli/ts-utility-types/skill.yaml +1 -0
  3734. package/dist/agents/skills/gemini-cli/ts-zod-integration/skill.yaml +1 -0
  3735. package/dist/agents/skills/gemini-cli/ux-active-voice/SKILL.md +150 -0
  3736. package/dist/agents/skills/gemini-cli/ux-active-voice/skill.yaml +32 -0
  3737. package/dist/agents/skills/gemini-cli/ux-button-cta-copy/SKILL.md +159 -0
  3738. package/dist/agents/skills/gemini-cli/ux-button-cta-copy/skill.yaml +34 -0
  3739. package/dist/agents/skills/gemini-cli/ux-confirmation-dialogs/SKILL.md +156 -0
  3740. package/dist/agents/skills/gemini-cli/ux-confirmation-dialogs/skill.yaml +33 -0
  3741. package/dist/agents/skills/gemini-cli/ux-content-hierarchy/SKILL.md +150 -0
  3742. package/dist/agents/skills/gemini-cli/ux-content-hierarchy/skill.yaml +33 -0
  3743. package/dist/agents/skills/gemini-cli/ux-data-table-copy/SKILL.md +154 -0
  3744. package/dist/agents/skills/gemini-cli/ux-data-table-copy/skill.yaml +34 -0
  3745. package/dist/agents/skills/gemini-cli/ux-destructive-action-copy/SKILL.md +152 -0
  3746. package/dist/agents/skills/gemini-cli/ux-destructive-action-copy/skill.yaml +34 -0
  3747. package/dist/agents/skills/gemini-cli/ux-empty-states/SKILL.md +155 -0
  3748. package/dist/agents/skills/gemini-cli/ux-empty-states/skill.yaml +36 -0
  3749. package/dist/agents/skills/gemini-cli/ux-error-messages/SKILL.md +159 -0
  3750. package/dist/agents/skills/gemini-cli/ux-error-messages/skill.yaml +35 -0
  3751. package/dist/agents/skills/gemini-cli/ux-error-severity/SKILL.md +155 -0
  3752. package/dist/agents/skills/gemini-cli/ux-error-severity/skill.yaml +35 -0
  3753. package/dist/agents/skills/gemini-cli/ux-form-labels/SKILL.md +159 -0
  3754. package/dist/agents/skills/gemini-cli/ux-form-labels/skill.yaml +36 -0
  3755. package/dist/agents/skills/gemini-cli/ux-inclusive-language/SKILL.md +161 -0
  3756. package/dist/agents/skills/gemini-cli/ux-inclusive-language/skill.yaml +33 -0
  3757. package/dist/agents/skills/gemini-cli/ux-internationalization-writing/SKILL.md +196 -0
  3758. package/dist/agents/skills/gemini-cli/ux-internationalization-writing/skill.yaml +35 -0
  3759. package/dist/agents/skills/gemini-cli/ux-loading-states/SKILL.md +162 -0
  3760. package/dist/agents/skills/gemini-cli/ux-loading-states/skill.yaml +33 -0
  3761. package/dist/agents/skills/gemini-cli/ux-microcopy-principles/SKILL.md +152 -0
  3762. package/dist/agents/skills/gemini-cli/ux-microcopy-principles/skill.yaml +37 -0
  3763. package/dist/agents/skills/gemini-cli/ux-navigation-labels/SKILL.md +163 -0
  3764. package/dist/agents/skills/gemini-cli/ux-navigation-labels/skill.yaml +35 -0
  3765. package/dist/agents/skills/gemini-cli/ux-notification-copy/SKILL.md +150 -0
  3766. package/dist/agents/skills/gemini-cli/ux-notification-copy/skill.yaml +35 -0
  3767. package/dist/agents/skills/gemini-cli/ux-onboarding-copy/SKILL.md +156 -0
  3768. package/dist/agents/skills/gemini-cli/ux-onboarding-copy/skill.yaml +35 -0
  3769. package/dist/agents/skills/gemini-cli/ux-permission-access-copy/SKILL.md +150 -0
  3770. package/dist/agents/skills/gemini-cli/ux-permission-access-copy/skill.yaml +34 -0
  3771. package/dist/agents/skills/gemini-cli/ux-plain-language/SKILL.md +157 -0
  3772. package/dist/agents/skills/gemini-cli/ux-plain-language/skill.yaml +34 -0
  3773. package/dist/agents/skills/gemini-cli/ux-search-copy/SKILL.md +154 -0
  3774. package/dist/agents/skills/gemini-cli/ux-search-copy/skill.yaml +33 -0
  3775. package/dist/agents/skills/gemini-cli/ux-settings-preferences/SKILL.md +152 -0
  3776. package/dist/agents/skills/gemini-cli/ux-settings-preferences/skill.yaml +33 -0
  3777. package/dist/agents/skills/gemini-cli/ux-success-feedback/SKILL.md +163 -0
  3778. package/dist/agents/skills/gemini-cli/ux-success-feedback/skill.yaml +33 -0
  3779. package/dist/agents/skills/gemini-cli/ux-tooltip-contextual-help/SKILL.md +163 -0
  3780. package/dist/agents/skills/gemini-cli/ux-tooltip-contextual-help/skill.yaml +33 -0
  3781. package/dist/agents/skills/gemini-cli/ux-voice-tone/SKILL.md +150 -0
  3782. package/dist/agents/skills/gemini-cli/ux-voice-tone/skill.yaml +33 -0
  3783. package/dist/agents/skills/gemini-cli/ux-writing-for-scanning/SKILL.md +150 -0
  3784. package/dist/agents/skills/gemini-cli/ux-writing-for-scanning/skill.yaml +35 -0
  3785. package/dist/agents/skills/gemini-cli/validate-context-engineering/skill.yaml +1 -0
  3786. package/dist/agents/skills/gemini-cli/vue-async-components/skill.yaml +1 -0
  3787. package/dist/agents/skills/gemini-cli/vue-component-events/skill.yaml +1 -0
  3788. package/dist/agents/skills/gemini-cli/vue-composables-pattern/skill.yaml +1 -0
  3789. package/dist/agents/skills/gemini-cli/vue-directive-pattern/skill.yaml +1 -0
  3790. package/dist/agents/skills/gemini-cli/vue-pinia-pattern/skill.yaml +1 -0
  3791. package/dist/agents/skills/gemini-cli/vue-provide-inject/skill.yaml +1 -0
  3792. package/dist/agents/skills/gemini-cli/vue-reactive-refs/skill.yaml +1 -0
  3793. package/dist/agents/skills/gemini-cli/vue-renderless-components/skill.yaml +1 -0
  3794. package/dist/agents/skills/gemini-cli/vue-slots-pattern/skill.yaml +1 -0
  3795. package/dist/agents/skills/gemini-cli/vue-teleport-pattern/skill.yaml +1 -0
  3796. package/dist/agents/skills/gemini-cli/vue-watchers-pattern/skill.yaml +1 -0
  3797. package/dist/agents/skills/gemini-cli/xstate-actor-pattern/skill.yaml +1 -0
  3798. package/dist/agents/skills/gemini-cli/xstate-guards-actions/skill.yaml +1 -0
  3799. package/dist/agents/skills/gemini-cli/xstate-history-states/skill.yaml +1 -0
  3800. package/dist/agents/skills/gemini-cli/xstate-invoke-pattern/skill.yaml +1 -0
  3801. package/dist/agents/skills/gemini-cli/xstate-machine-definition/skill.yaml +1 -0
  3802. package/dist/agents/skills/gemini-cli/xstate-parallel-states/skill.yaml +1 -0
  3803. package/dist/agents/skills/gemini-cli/xstate-react-integration/skill.yaml +1 -0
  3804. package/dist/agents/skills/gemini-cli/xstate-testing-patterns/skill.yaml +1 -0
  3805. package/dist/agents/skills/gemini-cli/xstate-typegen/skill.yaml +1 -0
  3806. package/dist/agents/skills/gemini-cli/xstate-visualization/skill.yaml +1 -0
  3807. package/dist/agents/skills/gemini-cli/zod-array-validation/skill.yaml +1 -0
  3808. package/dist/agents/skills/gemini-cli/zod-async-validation/skill.yaml +1 -0
  3809. package/dist/agents/skills/gemini-cli/zod-error-handling/skill.yaml +1 -0
  3810. package/dist/agents/skills/gemini-cli/zod-infer-types/skill.yaml +1 -0
  3811. package/dist/agents/skills/gemini-cli/zod-nextjs-integration/skill.yaml +1 -0
  3812. package/dist/agents/skills/gemini-cli/zod-object-patterns/skill.yaml +1 -0
  3813. package/dist/agents/skills/gemini-cli/zod-schema-definition/skill.yaml +1 -0
  3814. package/dist/agents/skills/gemini-cli/zod-string-validation/skill.yaml +1 -0
  3815. package/dist/agents/skills/gemini-cli/zod-transform-refine/skill.yaml +1 -0
  3816. package/dist/agents/skills/gemini-cli/zod-union-discriminated/skill.yaml +1 -0
  3817. package/dist/{agents-md-RP63BO56.js → agents-md-MMVRF77L.js} +2 -2
  3818. package/dist/{architecture-MCCHZWOK.js → architecture-JAEDPYQZ.js} +3 -3
  3819. package/dist/{assess-project-7HE2Z5PW.js → assess-project-7JZCVM7D.js} +1 -1
  3820. package/dist/bin/harness-mcp.js +15 -15
  3821. package/dist/bin/harness.js +20 -20
  3822. package/dist/{check-phase-gate-JXIRVHTR.js → check-phase-gate-YQHAH4LL.js} +4 -4
  3823. package/dist/{chunk-FVF66DVL.js → chunk-2DAMN7ED.js} +6 -6
  3824. package/dist/{chunk-ZOIGL5PP.js → chunk-AVVJ5EUU.js} +11 -1
  3825. package/dist/{chunk-UKMWY5OJ.js → chunk-BWWNQPPO.js} +9 -9
  3826. package/dist/{chunk-EKYIKFOO.js → chunk-C5FTJ3EU.js} +1 -1
  3827. package/dist/{chunk-DSB6O257.js → chunk-GISMXMVL.js} +3 -0
  3828. package/dist/{chunk-3POJUEEZ.js → chunk-HVFCCARH.js} +1 -1
  3829. package/dist/{chunk-44DNUOBH.js → chunk-JGMCHJ6B.js} +4 -4
  3830. package/dist/{chunk-OWH5XSMD.js → chunk-JT732X6S.js} +2 -2
  3831. package/dist/{chunk-BH6GUAUS.js → chunk-LY3YVKXL.js} +498 -106
  3832. package/dist/{chunk-HP74FPUJ.js → chunk-MS6KDQW7.js} +7 -7
  3833. package/dist/{chunk-ANXOO2HR.js → chunk-NU3BPEDR.js} +3 -3
  3834. package/dist/{chunk-MY5DBCJZ.js → chunk-OZIHPMA7.js} +105 -3
  3835. package/dist/{chunk-WPFFEDTO.js → chunk-PCWYYFBP.js} +497 -41
  3836. package/dist/{chunk-7QYO5UWW.js → chunk-TDLOFNNQ.js} +1 -1
  3837. package/dist/{chunk-R7LB3VJR.js → chunk-TUJAHI22.js} +8 -8
  3838. package/dist/{chunk-LASBAGC6.js → chunk-UQEUYRBP.js} +1 -1
  3839. package/dist/{chunk-LRX6J7IA.js → chunk-W2OZK3KC.js} +1 -1
  3840. package/dist/{chunk-ICPZNX6O.js → chunk-XNEMDKV5.js} +1 -1
  3841. package/dist/{chunk-46PEKT5G.js → chunk-ZKVLBOYA.js} +1164 -676
  3842. package/dist/{chunk-BKHS7RPB.js → chunk-ZOVATVQC.js} +1 -0
  3843. package/dist/{ci-workflow-YE7B375K.js → ci-workflow-HDH4LCOF.js} +2 -2
  3844. package/dist/{create-skill-LTLAAJPC.js → create-skill-QCXINA5Q.js} +2 -2
  3845. package/dist/{dist-M6FBUXZD.js → dist-QW5G3GX3.js} +7 -1
  3846. package/dist/{dist-27IJJDWG.js → dist-TZQUURSP.js} +40 -2
  3847. package/dist/{docs-YAYNHDC3.js → docs-6SPJYTRR.js} +4 -4
  3848. package/dist/{engine-TS24YHIT.js → engine-CSITRE3J.js} +2 -2
  3849. package/dist/{entropy-RSH5D63W.js → entropy-FZP643BK.js} +3 -3
  3850. package/dist/{feedback-VGGBOI54.js → feedback-RSPUJCJJ.js} +1 -1
  3851. package/dist/{generate-agent-definitions-PBITSP7C.js → generate-agent-definitions-OLYWXTYH.js} +2 -2
  3852. package/dist/{graph-loader-OLSOE537.js → graph-loader-M6FXJAKK.js} +1 -1
  3853. package/dist/index.d.ts +30 -0
  3854. package/dist/index.js +20 -20
  3855. package/dist/{loader-HBQNUGAM.js → loader-P2P7CV2A.js} +2 -2
  3856. package/dist/{mcp-HZ6CRAZR.js → mcp-JZG22CYT.js} +15 -15
  3857. package/dist/{performance-MMIMMNFQ.js → performance-VVWOIJTE.js} +4 -4
  3858. package/dist/{review-pipeline-UAPVKI6W.js → review-pipeline-XSRO7HYZ.js} +1 -1
  3859. package/dist/{runner-YYCVNAVF.js → runner-TY7DJGQV.js} +1 -1
  3860. package/dist/{runtime-NQNTDQV5.js → runtime-VMOIIP6B.js} +2 -2
  3861. package/dist/{security-IP5IJTB7.js → security-4AQ46P3H.js} +1 -1
  3862. package/dist/{skill-executor-CS25H7FF.js → skill-executor-GA7BDX3F.js} +2 -2
  3863. package/dist/{validate-QLHCVBKE.js → validate-T7UTXLEQ.js} +3 -3
  3864. package/dist/{validate-cross-check-WQWFMPXJ.js → validate-cross-check-M4NP2UF5.js} +2 -2
  3865. package/package.json +5 -4
@@ -13,10 +13,10 @@ import {
13
13
  } from "./chunk-I4QR3HNH.js";
14
14
  import {
15
15
  runPersona
16
- } from "./chunk-DSB6O257.js";
16
+ } from "./chunk-GISMXMVL.js";
17
17
  import {
18
18
  executeSkill
19
- } from "./chunk-LASBAGC6.js";
19
+ } from "./chunk-UQEUYRBP.js";
20
20
  import {
21
21
  ALLOWED_PERSONA_COMMANDS
22
22
  } from "./chunk-TEFCFC4H.js";
@@ -25,7 +25,7 @@ import {
25
25
  OutputMode,
26
26
  createCheckPhaseGateCommand,
27
27
  findFiles
28
- } from "./chunk-LRX6J7IA.js";
28
+ } from "./chunk-W2OZK3KC.js";
29
29
  import {
30
30
  createGenerateAgentDefinitionsCommand,
31
31
  generateAgentDefinitions
@@ -44,6 +44,7 @@ import {
44
44
  appendFrameworkAgents,
45
45
  captureHealthSnapshot,
46
46
  createGenerateSlashCommandsCommand,
47
+ ensureHarnessGitignore,
47
48
  generateSlashCommands,
48
49
  handleGetImpact,
49
50
  handleOrphanDeletion,
@@ -52,11 +53,11 @@ import {
52
53
  loadOrRebuildIndex,
53
54
  persistToolingConfig,
54
55
  recommend
55
- } from "./chunk-BH6GUAUS.js";
56
+ } from "./chunk-LY3YVKXL.js";
56
57
  import {
57
58
  findConfigFile,
58
59
  resolveConfig
59
- } from "./chunk-ZOIGL5PP.js";
60
+ } from "./chunk-AVVJ5EUU.js";
60
61
  import {
61
62
  VALID_PLATFORMS
62
63
  } from "./chunk-3ISINLYT.js";
@@ -70,7 +71,7 @@ import {
70
71
  } from "./chunk-6B6UN6SG.js";
71
72
  import {
72
73
  loadGraphStore
73
- } from "./chunk-7QYO5UWW.js";
74
+ } from "./chunk-TDLOFNNQ.js";
74
75
  import {
75
76
  CLI_VERSION
76
77
  } from "./chunk-BM3PWGXQ.js";
@@ -108,6 +109,7 @@ import {
108
109
  diff,
109
110
  extractBundle,
110
111
  generateSuggestions,
112
+ getOrCreateInstallId,
111
113
  listStreams,
112
114
  listTaintedSessions,
113
115
  loadState,
@@ -118,10 +120,12 @@ import {
118
120
  parseManifest,
119
121
  parseSecurityConfig,
120
122
  pruneLearnings,
123
+ readIdentity,
121
124
  readLockfile,
122
125
  removeContributions,
123
126
  removeProvenance,
124
127
  requestPeerReview,
128
+ resolveConsent,
125
129
  resolveStreamPath,
126
130
  runAll,
127
131
  runCIChecks,
@@ -133,20 +137,20 @@ import {
133
137
  validateKnowledgeMap,
134
138
  writeConfig,
135
139
  writeLockfile
136
- } from "./chunk-WPFFEDTO.js";
140
+ } from "./chunk-PCWYYFBP.js";
137
141
  import {
138
142
  Err,
139
143
  Ok
140
144
  } from "./chunk-5LMZA5LZ.js";
141
145
  import {
142
146
  createCreateSkillCommand
143
- } from "./chunk-ICPZNX6O.js";
147
+ } from "./chunk-XNEMDKV5.js";
144
148
  import {
145
149
  logger
146
150
  } from "./chunk-EBJQ6N4M.js";
147
151
  import {
148
152
  SkillMetadataSchema
149
- } from "./chunk-BKHS7RPB.js";
153
+ } from "./chunk-ZOVATVQC.js";
150
154
  import {
151
155
  CLIError,
152
156
  ExitCode,
@@ -154,7 +158,7 @@ import {
154
158
  } from "./chunk-3WGJMBKH.js";
155
159
 
156
160
  // src/index.ts
157
- import { Command as Command75 } from "commander";
161
+ import { Command as Command80 } from "commander";
158
162
 
159
163
  // src/commands/add.ts
160
164
  import { Command } from "commander";
@@ -244,7 +248,7 @@ function addDoc(name, cwd, configResult, created) {
244
248
  return Ok(void 0);
245
249
  }
246
250
  async function addSkill(name, cwd, created) {
247
- const { generateSkillFiles: generateSkillFiles2 } = await import("./create-skill-LTLAAJPC.js");
251
+ const { generateSkillFiles: generateSkillFiles2 } = await import("./create-skill-QCXINA5Q.js");
248
252
  generateSkillFiles2({
249
253
  name,
250
254
  description: `${name} skill`,
@@ -324,11 +328,164 @@ function createAddCommand() {
324
328
  return command;
325
329
  }
326
330
 
331
+ // src/commands/adoption.ts
332
+ import { Command as Command2 } from "commander";
333
+ function formatDuration(ms) {
334
+ if (ms < 1e3) return `${ms}ms`;
335
+ if (ms < 6e4) return `${(ms / 1e3).toFixed(1)}s`;
336
+ return `${(ms / 6e4).toFixed(1)}m`;
337
+ }
338
+ function formatRate(rate) {
339
+ return `${(rate * 100).toFixed(0)}%`;
340
+ }
341
+ function padRight(str, len) {
342
+ return str.length >= len ? str : str + " ".repeat(len - str.length);
343
+ }
344
+ function registerSkillsCommand(adoption) {
345
+ adoption.command("skills").description("Show top skills by invocation count").option("--limit <n>", "Number of skills to show (default: 20)", "20").action(async (opts, cmd) => {
346
+ const globalOpts = cmd.optsWithGlobals();
347
+ const limit = Math.max(parseInt(opts.limit, 10) || 20, 1);
348
+ const cwd = process.cwd();
349
+ const { readAdoptionRecords, aggregateBySkill } = await import("./dist-TZQUURSP.js");
350
+ const records = readAdoptionRecords(cwd);
351
+ if (records.length === 0) {
352
+ if (globalOpts.json) {
353
+ console.log(JSON.stringify([]));
354
+ } else {
355
+ logger.info("No adoption data found. Skills will be tracked after your next session.");
356
+ }
357
+ return;
358
+ }
359
+ const summaries = aggregateBySkill(records).slice(0, limit);
360
+ if (globalOpts.json) {
361
+ console.log(JSON.stringify(summaries, null, 2));
362
+ return;
363
+ }
364
+ const header = "Skill | Invocations | Success | Avg Duration | Last Used";
365
+ const divider = "-----------------------------------|-------------|---------|--------------|----------";
366
+ console.log(header);
367
+ console.log(divider);
368
+ for (const s of summaries) {
369
+ const name = padRight(s.skill, 35);
370
+ const count = padRight(String(s.invocations), 11);
371
+ const rate = padRight(formatRate(s.successRate), 7);
372
+ const dur = padRight(formatDuration(s.avgDuration), 12);
373
+ const last = s.lastUsed.slice(0, 10);
374
+ console.log(`${name} | ${count} | ${rate} | ${dur} | ${last}`);
375
+ }
376
+ console.log(`
377
+ Total: ${records.length} invocations across ${summaries.length} skill(s)`);
378
+ });
379
+ }
380
+ function registerRecentCommand(adoption) {
381
+ adoption.command("recent").description("Show recent skill invocations").option("--limit <n>", "Number of invocations to show (default: 20)", "20").action(async (opts, cmd) => {
382
+ const globalOpts = cmd.optsWithGlobals();
383
+ const limit = Math.max(parseInt(opts.limit, 10) || 20, 1);
384
+ const cwd = process.cwd();
385
+ const { readAdoptionRecords } = await import("./dist-TZQUURSP.js");
386
+ const records = readAdoptionRecords(cwd);
387
+ if (records.length === 0) {
388
+ if (globalOpts.json) {
389
+ console.log(JSON.stringify([]));
390
+ } else {
391
+ logger.info("No adoption data found. Skills will be tracked after your next session.");
392
+ }
393
+ return;
394
+ }
395
+ const sorted = [...records].sort(
396
+ (a, b) => new Date(b.startedAt).getTime() - new Date(a.startedAt).getTime()
397
+ );
398
+ const limited = sorted.slice(0, limit);
399
+ if (globalOpts.json) {
400
+ console.log(JSON.stringify(limited, null, 2));
401
+ return;
402
+ }
403
+ const header = "Date | Skill | Outcome | Duration";
404
+ const divider = "-----------|------------------------------------|-----------|---------";
405
+ console.log(header);
406
+ console.log(divider);
407
+ for (const r of limited) {
408
+ const date = r.startedAt.slice(0, 10);
409
+ const skill = padRight(r.skill, 35);
410
+ const outcome = padRight(r.outcome, 9);
411
+ const dur = formatDuration(r.duration);
412
+ console.log(`${date} | ${skill}| ${outcome} | ${dur}`);
413
+ }
414
+ console.log(`
415
+ Showing ${limited.length} of ${records.length} invocations`);
416
+ });
417
+ }
418
+ function registerSkillCommand(adoption) {
419
+ adoption.command("skill <name>").description("Show detail for a specific skill").action(async (name, _opts, cmd) => {
420
+ const globalOpts = cmd.optsWithGlobals();
421
+ const cwd = process.cwd();
422
+ const { readAdoptionRecords, aggregateBySkill } = await import("./dist-TZQUURSP.js");
423
+ const records = readAdoptionRecords(cwd);
424
+ const skillRecords = records.filter((r) => r.skill === name);
425
+ if (skillRecords.length === 0) {
426
+ if (globalOpts.json) {
427
+ console.log(JSON.stringify(null));
428
+ } else {
429
+ logger.info(`No adoption data found for skill "${name}".`);
430
+ }
431
+ return;
432
+ }
433
+ const summaries = aggregateBySkill(skillRecords);
434
+ const summary = summaries[0];
435
+ const phaseMap = /* @__PURE__ */ new Map();
436
+ for (const r of skillRecords) {
437
+ for (const phase of r.phasesReached) {
438
+ phaseMap.set(phase, (phaseMap.get(phase) ?? 0) + 1);
439
+ }
440
+ }
441
+ const phaseRates = Array.from(phaseMap.entries()).map(([phase, count]) => ({ phase, count, rate: count / skillRecords.length })).sort((a, b) => b.count - a.count);
442
+ if (globalOpts.json) {
443
+ console.log(
444
+ JSON.stringify({ summary, phaseRates, totalRecords: skillRecords.length }, null, 2)
445
+ );
446
+ return;
447
+ }
448
+ console.log(`Skill: ${name}`);
449
+ console.log(`Invocations: ${summary.invocations}`);
450
+ console.log(`Success rate: ${formatRate(summary.successRate)}`);
451
+ console.log(`Avg duration: ${formatDuration(summary.avgDuration)}`);
452
+ console.log(`Last used: ${summary.lastUsed.slice(0, 10)}`);
453
+ if (summary.tier != null) {
454
+ console.log(`Tier: ${summary.tier}`);
455
+ }
456
+ if (phaseRates.length > 0) {
457
+ console.log("\nPhase completion rates:");
458
+ for (const p of phaseRates) {
459
+ console.log(
460
+ ` ${padRight(p.phase, 20)} ${formatRate(p.rate)} (${p.count}/${skillRecords.length})`
461
+ );
462
+ }
463
+ }
464
+ const outcomes = { completed: 0, failed: 0, abandoned: 0 };
465
+ for (const r of skillRecords) {
466
+ if (r.outcome in outcomes) {
467
+ outcomes[r.outcome]++;
468
+ }
469
+ }
470
+ console.log("\nOutcome breakdown:");
471
+ console.log(` Completed: ${outcomes.completed}`);
472
+ console.log(` Failed: ${outcomes.failed}`);
473
+ console.log(` Abandoned: ${outcomes.abandoned}`);
474
+ });
475
+ }
476
+ function createAdoptionCommand() {
477
+ const adoption = new Command2("adoption").description("View skill adoption telemetry").option("--json", "Output in JSON format");
478
+ registerSkillsCommand(adoption);
479
+ registerRecentCommand(adoption);
480
+ registerSkillCommand(adoption);
481
+ return adoption;
482
+ }
483
+
327
484
  // src/commands/agent/index.ts
328
- import { Command as Command4 } from "commander";
485
+ import { Command as Command5 } from "commander";
329
486
 
330
487
  // src/commands/agent/run.ts
331
- import { Command as Command2 } from "commander";
488
+ import { Command as Command3 } from "commander";
332
489
  import * as path2 from "path";
333
490
  import * as childProcess from "child_process";
334
491
  async function runAgentTask(task, options) {
@@ -425,7 +582,7 @@ async function runPersonaMode(opts, quiet) {
425
582
  process.exit(report.status === "fail" ? ExitCode.ERROR : ExitCode.SUCCESS);
426
583
  }
427
584
  function createRunCommand() {
428
- return new Command2("run").description("Run an agent task").argument("[task]", "Task to run (review, doc-review, test-review)").option("--timeout <ms>", "Timeout in milliseconds", "300000").option("--persona <name>", "Run a persona by name").option("--trigger <context>", "Trigger context (auto, on_pr, on_commit, manual)", "auto").action(async (task, opts, cmd) => {
585
+ return new Command3("run").description("Run an agent task").argument("[task]", "Task to run (review, doc-review, test-review)").option("--timeout <ms>", "Timeout in milliseconds", "300000").option("--persona <name>", "Run a persona by name").option("--trigger <context>", "Trigger context (auto, on_pr, on_commit, manual)", "auto").action(async (task, opts, cmd) => {
429
586
  const globalOpts = cmd.optsWithGlobals();
430
587
  if (opts.persona) {
431
588
  await runPersonaMode(opts, globalOpts.quiet);
@@ -449,7 +606,7 @@ function createRunCommand() {
449
606
  }
450
607
 
451
608
  // src/commands/agent/review.ts
452
- import { Command as Command3 } from "commander";
609
+ import { Command as Command4 } from "commander";
453
610
  import { execSync } from "child_process";
454
611
  async function runAgentReview(options) {
455
612
  const configResult = resolveConfig(options.configPath);
@@ -543,7 +700,7 @@ function printReviewResult(result, mode) {
543
700
  }
544
701
  }
545
702
  function createReviewCommand() {
546
- return new Command3("review").description("Run unified code review pipeline on current changes").option("--comment", "Post inline comments to GitHub PR").option("--ci", "Enable eligibility gate, non-interactive output").option("--deep", "Add threat modeling pass to security agent").option("--no-mechanical", "Skip mechanical checks").action(async (opts, cmd) => {
703
+ return new Command4("review").description("Run unified code review pipeline on current changes").option("--comment", "Post inline comments to GitHub PR").option("--ci", "Enable eligibility gate, non-interactive output").option("--deep", "Add threat modeling pass to security agent").option("--no-mechanical", "Skip mechanical checks").action(async (opts, cmd) => {
547
704
  const globalOpts = cmd.optsWithGlobals();
548
705
  const mode = resolveReviewMode(globalOpts);
549
706
  const result = await runAgentReview({
@@ -571,17 +728,17 @@ function createReviewCommand() {
571
728
 
572
729
  // src/commands/agent/index.ts
573
730
  function createAgentCommand() {
574
- const command = new Command4("agent").description("Agent orchestration commands");
731
+ const command = new Command5("agent").description("Agent orchestration commands");
575
732
  command.addCommand(createRunCommand());
576
733
  command.addCommand(createReviewCommand());
577
734
  return command;
578
735
  }
579
736
 
580
737
  // src/commands/blueprint.ts
581
- import { Command as Command5 } from "commander";
738
+ import { Command as Command6 } from "commander";
582
739
  import * as path3 from "path";
583
740
  function createBlueprintCommand() {
584
- return new Command5("blueprint").description("Generate a self-contained, interactive blueprint of the codebase").argument("[path]", "Path to the project root", ".").option("-o, --output <dir>", "Output directory", "docs/blueprint").action(async (projectPath, options) => {
741
+ return new Command6("blueprint").description("Generate a self-contained, interactive blueprint of the codebase").argument("[path]", "Path to the project root", ".").option("-o, --output <dir>", "Output directory", "docs/blueprint").action(async (projectPath, options) => {
585
742
  try {
586
743
  const rootDir = path3.resolve(projectPath);
587
744
  const outputDir = path3.resolve(options.output);
@@ -602,7 +759,7 @@ function createBlueprintCommand() {
602
759
  }
603
760
 
604
761
  // src/commands/check-arch.ts
605
- import { Command as Command6 } from "commander";
762
+ import { Command as Command7 } from "commander";
606
763
  import { execSync as execSync2 } from "child_process";
607
764
  function getCommitHash(cwd) {
608
765
  try {
@@ -732,7 +889,7 @@ function printArchResult(value, mode, formatter) {
732
889
  if (output) console.log(output);
733
890
  }
734
891
  function createCheckArchCommand() {
735
- const command = new Command6("check-arch").description("Check architecture assertions against baseline and thresholds").option("--update-baseline", "Capture current state as new baseline").option("--module <path>", "Check a single module").action(async (opts, cmd) => {
892
+ const command = new Command7("check-arch").description("Check architecture assertions against baseline and thresholds").option("--update-baseline", "Capture current state as new baseline").option("--module <path>", "Check a single module").action(async (opts, cmd) => {
736
893
  const globalOpts = cmd.optsWithGlobals();
737
894
  const mode = resolveOutputMode(globalOpts);
738
895
  const formatter = new OutputFormatter(mode);
@@ -762,7 +919,7 @@ function createCheckArchCommand() {
762
919
  }
763
920
 
764
921
  // src/commands/check-deps.ts
765
- import { Command as Command7 } from "commander";
922
+ import { Command as Command8 } from "commander";
766
923
  import * as path4 from "path";
767
924
  async function runCheckDeps(options) {
768
925
  const cwd = options.cwd ?? process.cwd();
@@ -854,14 +1011,14 @@ async function runCheckDepsAction(globalOpts) {
854
1011
  process.exit(result.value.valid ? ExitCode.SUCCESS : ExitCode.VALIDATION_FAILED);
855
1012
  }
856
1013
  function createCheckDepsCommand() {
857
- const command = new Command7("check-deps").description("Validate dependency layers and detect circular dependencies").action(async (_opts, cmd) => {
1014
+ const command = new Command8("check-deps").description("Validate dependency layers and detect circular dependencies").action(async (_opts, cmd) => {
858
1015
  await runCheckDepsAction(cmd.optsWithGlobals());
859
1016
  });
860
1017
  return command;
861
1018
  }
862
1019
 
863
1020
  // src/commands/check-docs.ts
864
- import { Command as Command8 } from "commander";
1021
+ import { Command as Command9 } from "commander";
865
1022
  import * as path5 from "path";
866
1023
 
867
1024
  // src/utils/output.ts
@@ -949,7 +1106,7 @@ function printCheckDocsResult(value, mode, formatter) {
949
1106
  }
950
1107
  }
951
1108
  function createCheckDocsCommand() {
952
- const command = new Command8("check-docs").description("Check documentation coverage").option("--min-coverage <percent>", "Minimum coverage percentage", "80").action(async (opts, cmd) => {
1109
+ const command = new Command9("check-docs").description("Check documentation coverage").option("--min-coverage <percent>", "Minimum coverage percentage", "80").action(async (opts, cmd) => {
953
1110
  const globalOpts = cmd.optsWithGlobals();
954
1111
  const mode = resolveOutputMode2(globalOpts);
955
1112
  const formatter = new OutputFormatter(mode);
@@ -979,7 +1136,7 @@ function createCheckDocsCommand() {
979
1136
  }
980
1137
 
981
1138
  // src/commands/check-perf.ts
982
- import { Command as Command9 } from "commander";
1139
+ import { Command as Command10 } from "commander";
983
1140
  import * as path6 from "path";
984
1141
  async function runCheckPerf(cwd, options) {
985
1142
  const runAll2 = !options.structural && !options.size && !options.coupling;
@@ -1096,14 +1253,14 @@ async function runCheckPerfAction(opts, globalOpts) {
1096
1253
  process.exit(result.value.valid ? ExitCode.SUCCESS : ExitCode.VALIDATION_FAILED);
1097
1254
  }
1098
1255
  function createCheckPerfCommand() {
1099
- const command = new Command9("check-perf").description("Run performance checks: structural complexity, coupling, and size budgets").option("--structural", "Run structural complexity checks only").option("--coupling", "Run coupling metric checks only").option("--size", "Run size budget checks only").action(async (opts, cmd) => {
1256
+ const command = new Command10("check-perf").description("Run performance checks: structural complexity, coupling, and size budgets").option("--structural", "Run structural complexity checks only").option("--coupling", "Run coupling metric checks only").option("--size", "Run size budget checks only").action(async (opts, cmd) => {
1100
1257
  await runCheckPerfAction(opts, cmd.optsWithGlobals());
1101
1258
  });
1102
1259
  return command;
1103
1260
  }
1104
1261
 
1105
1262
  // src/commands/check-security.ts
1106
- import { Command as Command10 } from "commander";
1263
+ import { Command as Command11 } from "commander";
1107
1264
  import * as path7 from "path";
1108
1265
  import { execSync as execSync3 } from "child_process";
1109
1266
  var SEVERITY_RANK = {
@@ -1126,10 +1283,10 @@ async function runCheckSecurity(cwd, options) {
1126
1283
  const projectRoot = path7.resolve(cwd);
1127
1284
  let configData = {};
1128
1285
  try {
1129
- const fs34 = await import("fs");
1286
+ const fs36 = await import("fs");
1130
1287
  const configPath = path7.join(projectRoot, "harness.config.json");
1131
- if (fs34.existsSync(configPath)) {
1132
- const raw = fs34.readFileSync(configPath, "utf-8");
1288
+ if (fs36.existsSync(configPath)) {
1289
+ const raw = fs36.readFileSync(configPath, "utf-8");
1133
1290
  const parsed = JSON.parse(raw);
1134
1291
  configData = parsed.security ?? {};
1135
1292
  }
@@ -1198,7 +1355,7 @@ async function runCheckSecurityAction(opts, globalOpts) {
1198
1355
  process.exit(result.value.valid ? ExitCode.SUCCESS : ExitCode.VALIDATION_FAILED);
1199
1356
  }
1200
1357
  function createCheckSecurityCommand() {
1201
- const command = new Command10("check-security").description("Run lightweight security scan: secrets, injection, XSS, weak crypto").option("--severity <level>", "Minimum severity threshold", "warning").hook("preAction", (thisCommand) => {
1358
+ const command = new Command11("check-security").description("Run lightweight security scan: secrets, injection, XSS, weak crypto").option("--severity <level>", "Minimum severity threshold", "warning").hook("preAction", (thisCommand) => {
1202
1359
  const severity = thisCommand.opts().severity;
1203
1360
  if (!["error", "warning", "info"].includes(severity)) {
1204
1361
  logger.error(`Invalid severity: "${severity}". Must be one of: error, warning, info`);
@@ -1211,10 +1368,10 @@ function createCheckSecurityCommand() {
1211
1368
  }
1212
1369
 
1213
1370
  // src/commands/ci/index.ts
1214
- import { Command as Command13 } from "commander";
1371
+ import { Command as Command14 } from "commander";
1215
1372
 
1216
1373
  // src/commands/ci/check.ts
1217
- import { Command as Command11 } from "commander";
1374
+ import { Command as Command12 } from "commander";
1218
1375
  var VALID_CHECKS = [
1219
1376
  "validate",
1220
1377
  "deps",
@@ -1304,13 +1461,13 @@ async function runCheckAction(opts, globalOpts) {
1304
1461
  process.exit(report.exitCode);
1305
1462
  }
1306
1463
  function createCheckCommand() {
1307
- return new Command11("check").description("Run all harness checks for CI (validate, deps, docs, entropy, phase-gate, arch)").option("--skip <checks>", "Comma-separated checks to skip (e.g., entropy,docs)").option("--fail-on <severity>", "Fail on severity level: error (default) or warning", "error").action(async (opts, cmd) => {
1464
+ return new Command12("check").description("Run all harness checks for CI (validate, deps, docs, entropy, phase-gate, arch)").option("--skip <checks>", "Comma-separated checks to skip (e.g., entropy,docs)").option("--fail-on <severity>", "Fail on severity level: error (default) or warning", "error").action(async (opts, cmd) => {
1308
1465
  await runCheckAction(opts, cmd.optsWithGlobals());
1309
1466
  });
1310
1467
  }
1311
1468
 
1312
1469
  // src/commands/ci/init.ts
1313
- import { Command as Command12 } from "commander";
1470
+ import { Command as Command13 } from "commander";
1314
1471
  import * as fs2 from "fs";
1315
1472
  import * as path8 from "path";
1316
1473
  var ALL_CHECKS = [
@@ -1447,86 +1604,19 @@ async function runInitAction(opts, globalOpts) {
1447
1604
  }
1448
1605
  }
1449
1606
  function createInitCommand() {
1450
- return new Command12("init").description("Generate CI configuration for harness checks").option("--platform <platform>", "CI platform: github, gitlab, or generic").option("--checks <list>", "Comma-separated list of checks to include").action(async (opts, cmd) => {
1607
+ return new Command13("init").description("Generate CI configuration for harness checks").option("--platform <platform>", "CI platform: github, gitlab, or generic").option("--checks <list>", "Comma-separated list of checks to include").action(async (opts, cmd) => {
1451
1608
  await runInitAction(opts, cmd.optsWithGlobals());
1452
1609
  });
1453
1610
  }
1454
1611
 
1455
1612
  // src/commands/ci/index.ts
1456
1613
  function createCICommand() {
1457
- const command = new Command13("ci").description("CI/CD integration commands");
1614
+ const command = new Command14("ci").description("CI/CD integration commands");
1458
1615
  command.addCommand(createCheckCommand());
1459
1616
  command.addCommand(createInitCommand());
1460
1617
  return command;
1461
1618
  }
1462
1619
 
1463
- // src/commands/dashboard.ts
1464
- import { Command as Command14 } from "commander";
1465
- import { spawn } from "child_process";
1466
- import { existsSync as existsSync3 } from "fs";
1467
- import { dirname as dirname2, join as join5, resolve as resolve8 } from "path";
1468
- import { fileURLToPath } from "url";
1469
- var __filename = fileURLToPath(import.meta.url);
1470
- var __dirname = dirname2(__filename);
1471
- var DEFAULT_CLIENT_PORT = 3700;
1472
- var DEFAULT_API_PORT = 3701;
1473
- function openBrowser(url) {
1474
- const cmd = process.platform === "darwin" ? "open" : process.platform === "win32" ? "start" : "xdg-open";
1475
- spawn(cmd, [url], { detached: true, stdio: "ignore" }).unref();
1476
- }
1477
- function resolveServerScript() {
1478
- const built = [
1479
- join5(__dirname, "..", "..", "..", "dashboard", "dist", "server", "serve.js"),
1480
- join5(__dirname, "..", "..", "..", "..", "packages", "dashboard", "dist", "server", "serve.js")
1481
- ].find((p) => existsSync3(p));
1482
- if (built) return { script: built, dev: false };
1483
- const dev = [
1484
- join5(__dirname, "..", "..", "..", "dashboard", "src", "server", "serve.ts"),
1485
- join5(__dirname, "..", "..", "..", "..", "packages", "dashboard", "src", "server", "serve.ts")
1486
- ].find((p) => existsSync3(p));
1487
- return dev ? { script: dev, dev: true } : null;
1488
- }
1489
- function spawnDashboardServer(server, env) {
1490
- const child = server.dev ? spawn("tsx", [server.script], { env, stdio: "inherit" }) : spawn("node", [server.script], { env, stdio: "inherit" });
1491
- child.on("error", (e) => {
1492
- console.error(`Failed to start dashboard: ${e.message}`);
1493
- process.exit(1);
1494
- });
1495
- child.on("exit", (code) => {
1496
- if (code !== 0 && code !== null) {
1497
- console.error(`Dashboard server exited with code ${code}`);
1498
- process.exit(code);
1499
- }
1500
- });
1501
- return child;
1502
- }
1503
- function runDashboard(opts) {
1504
- const clientPort = Number(opts.port ?? DEFAULT_CLIENT_PORT);
1505
- const apiPort = Number(opts.apiPort ?? DEFAULT_API_PORT);
1506
- const projectPath = resolve8(opts.cwd ?? process.cwd());
1507
- const url = `http://localhost:${clientPort}`;
1508
- const server = resolveServerScript();
1509
- if (!server) {
1510
- console.error("Could not locate the dashboard server. Run `pnpm build` in packages/dashboard.");
1511
- process.exit(1);
1512
- }
1513
- const env = {
1514
- ...process.env,
1515
- DASHBOARD_API_PORT: String(apiPort),
1516
- DASHBOARD_CLIENT_PORT: String(clientPort),
1517
- HARNESS_PROJECT_PATH: projectPath
1518
- };
1519
- spawnDashboardServer(server, env);
1520
- console.log(`Dashboard API starting on http://localhost:${apiPort}`);
1521
- console.log(`Open ${url} (pass --no-open to suppress)`);
1522
- if (opts.noOpen !== true) {
1523
- setTimeout(() => openBrowser(url), 1500);
1524
- }
1525
- }
1526
- function createDashboardCommand() {
1527
- return new Command14("dashboard").description("Start the Harness local web dashboard").option("--port <port>", "Client dev server port", String(DEFAULT_CLIENT_PORT)).option("--api-port <port>", "API server port", String(DEFAULT_API_PORT)).option("--no-open", "Do not automatically open browser").option("--cwd <path>", "Project directory (defaults to cwd)").action((opts) => runDashboard(opts));
1528
- }
1529
-
1530
1620
  // src/commands/cleanup.ts
1531
1621
  import { Command as Command15 } from "commander";
1532
1622
  import * as path9 from "path";
@@ -1646,11 +1736,197 @@ function createCleanupCommand() {
1646
1736
  return command;
1647
1737
  }
1648
1738
 
1649
- // src/commands/doctor.ts
1739
+ // src/commands/cleanup-sessions.ts
1650
1740
  import { Command as Command16 } from "commander";
1651
- import * as fs4 from "fs";
1741
+ import * as fs3 from "fs";
1742
+ import * as path10 from "path";
1743
+ var STALE_TTL_MS = 24 * 60 * 60 * 1e3;
1744
+ function getMostRecentMtime(dirPath) {
1745
+ let latest = 0;
1746
+ try {
1747
+ const entries = fs3.readdirSync(dirPath, { withFileTypes: true });
1748
+ for (const entry of entries) {
1749
+ const fullPath = path10.join(dirPath, entry.name);
1750
+ const stat = fs3.statSync(fullPath);
1751
+ if (stat.mtimeMs > latest) latest = stat.mtimeMs;
1752
+ }
1753
+ const dirStat = fs3.statSync(dirPath);
1754
+ if (dirStat.mtimeMs > latest) latest = dirStat.mtimeMs;
1755
+ } catch {
1756
+ }
1757
+ return latest;
1758
+ }
1759
+ async function runCleanupSessions(options) {
1760
+ const cwd = options.cwd ?? process.cwd();
1761
+ const dryRun = options.dryRun ?? false;
1762
+ const sessionsDir = path10.join(cwd, ".harness", "sessions");
1763
+ const result = { removed: [], kept: [] };
1764
+ if (!fs3.existsSync(sessionsDir)) {
1765
+ return Ok(result);
1766
+ }
1767
+ let entries;
1768
+ try {
1769
+ entries = fs3.readdirSync(sessionsDir, { withFileTypes: true });
1770
+ } catch (err) {
1771
+ return Err(
1772
+ new CLIError(
1773
+ `Failed to read sessions directory: ${err instanceof Error ? err.message : String(err)}`,
1774
+ ExitCode.ERROR
1775
+ )
1776
+ );
1777
+ }
1778
+ const now = Date.now();
1779
+ for (const entry of entries) {
1780
+ if (!entry.isDirectory()) continue;
1781
+ const sessionPath = path10.join(sessionsDir, entry.name);
1782
+ const mostRecent = getMostRecentMtime(sessionPath);
1783
+ const ageMs = now - mostRecent;
1784
+ if (ageMs > STALE_TTL_MS) {
1785
+ result.removed.push(entry.name);
1786
+ if (!dryRun) {
1787
+ try {
1788
+ fs3.rmSync(sessionPath, { recursive: true, force: true });
1789
+ } catch (err) {
1790
+ return Err(
1791
+ new CLIError(
1792
+ `Failed to remove session ${entry.name}: ${err instanceof Error ? err.message : String(err)}`,
1793
+ ExitCode.ERROR
1794
+ )
1795
+ );
1796
+ }
1797
+ }
1798
+ } else {
1799
+ result.kept.push(entry.name);
1800
+ }
1801
+ }
1802
+ return Ok(result);
1803
+ }
1804
+ function printResult(result, dryRun, asJson) {
1805
+ const { removed, kept } = result;
1806
+ if (asJson) {
1807
+ console.log(JSON.stringify({ removed, kept, dryRun }, null, 2));
1808
+ return;
1809
+ }
1810
+ if (removed.length === 0 && kept.length === 0) {
1811
+ console.log("No sessions found.");
1812
+ return;
1813
+ }
1814
+ if (removed.length > 0) {
1815
+ const label = dryRun ? "Stale (would remove)" : "Removed";
1816
+ console.log(`
1817
+ ${label} (${removed.length}):`);
1818
+ for (const s of removed) console.log(` - ${s}`);
1819
+ }
1820
+ if (kept.length > 0) {
1821
+ console.log(`
1822
+ Kept (${kept.length}):`);
1823
+ for (const s of kept) console.log(` - ${s}`);
1824
+ }
1825
+ if (!dryRun && removed.length > 0) {
1826
+ console.log(`
1827
+ Cleaned up ${removed.length} stale session(s).`);
1828
+ }
1829
+ }
1830
+ function createCleanupSessionsCommand() {
1831
+ const command = new Command16("cleanup-sessions").description("Remove stale session directories from .harness/sessions/ (no write in 24h)").option("--dry-run", "List stale sessions without deleting them", false).option("--path <path>", "Project root path", ".").action(async (opts, cmd) => {
1832
+ const globalOpts = cmd.optsWithGlobals();
1833
+ const cwd = path10.resolve(opts.path);
1834
+ const result = await runCleanupSessions({ cwd, dryRun: opts.dryRun });
1835
+ if (!result.ok) {
1836
+ logger.error(result.error.message);
1837
+ process.exit(result.error.exitCode);
1838
+ return;
1839
+ }
1840
+ printResult(result.value, opts.dryRun, globalOpts.json);
1841
+ process.exit(ExitCode.SUCCESS);
1842
+ });
1843
+ return command;
1844
+ }
1845
+
1846
+ // src/commands/dashboard.ts
1847
+ import { Command as Command17 } from "commander";
1848
+ import { spawn } from "child_process";
1849
+ import { existsSync as existsSync4 } from "fs";
1850
+ import { createRequire } from "module";
1851
+ import { dirname as dirname2, join as join7, resolve as resolve10 } from "path";
1852
+ import { setTimeout } from "timers";
1853
+ import { fileURLToPath } from "url";
1854
+ var __filename = fileURLToPath(import.meta.url);
1855
+ var __dirname = dirname2(__filename);
1856
+ var require2 = createRequire(import.meta.url);
1857
+ var DEFAULT_CLIENT_PORT = 3700;
1858
+ var DEFAULT_API_PORT = 3701;
1859
+ function openBrowser(url) {
1860
+ const cmd = process.platform === "darwin" ? "open" : process.platform === "win32" ? "start" : "xdg-open";
1861
+ spawn(cmd, [url], { detached: true, stdio: "ignore" }).unref();
1862
+ }
1863
+ function resolveServerScript() {
1864
+ try {
1865
+ const pkgPath = require2.resolve("@harness-engineering/dashboard/package.json");
1866
+ const pkgDir = dirname2(pkgPath);
1867
+ const built2 = join7(pkgDir, "dist", "server", "serve.js");
1868
+ if (existsSync4(built2)) return { script: built2, dev: false };
1869
+ const dev2 = join7(pkgDir, "src", "server", "serve.ts");
1870
+ if (existsSync4(dev2)) return { script: dev2, dev: true };
1871
+ } catch {
1872
+ }
1873
+ const built = [
1874
+ join7(__dirname, "..", "..", "..", "dashboard", "dist", "server", "serve.js"),
1875
+ join7(__dirname, "..", "..", "..", "..", "packages", "dashboard", "dist", "server", "serve.js")
1876
+ ].find((p) => existsSync4(p));
1877
+ if (built) return { script: built, dev: false };
1878
+ const dev = [
1879
+ join7(__dirname, "..", "..", "..", "dashboard", "src", "server", "serve.ts"),
1880
+ join7(__dirname, "..", "..", "..", "..", "packages", "dashboard", "src", "server", "serve.ts")
1881
+ ].find((p) => existsSync4(p));
1882
+ return dev ? { script: dev, dev: true } : null;
1883
+ }
1884
+ function spawnDashboardServer(server, env) {
1885
+ const child = server.dev ? spawn("tsx", [server.script], { env, stdio: "inherit" }) : spawn("node", [server.script], { env, stdio: "inherit" });
1886
+ child.on("error", (e) => {
1887
+ console.error(`Failed to start dashboard: ${e.message}`);
1888
+ process.exit(1);
1889
+ });
1890
+ child.on("exit", (code) => {
1891
+ if (code !== 0 && code !== null) {
1892
+ console.error(`Dashboard server exited with code ${code}`);
1893
+ process.exit(code);
1894
+ }
1895
+ });
1896
+ return child;
1897
+ }
1898
+ function runDashboard(opts) {
1899
+ const clientPort = Number(opts.port ?? DEFAULT_CLIENT_PORT);
1900
+ const apiPort = Number(opts.apiPort ?? DEFAULT_API_PORT);
1901
+ const projectPath = resolve10(opts.cwd ?? process.cwd());
1902
+ const url = `http://localhost:${clientPort}`;
1903
+ const server = resolveServerScript();
1904
+ if (!server) {
1905
+ console.error("Could not locate the dashboard server. Run `pnpm build` in packages/dashboard.");
1906
+ process.exit(1);
1907
+ }
1908
+ const env = {
1909
+ ...process.env,
1910
+ DASHBOARD_API_PORT: String(apiPort),
1911
+ DASHBOARD_CLIENT_PORT: String(clientPort),
1912
+ HARNESS_PROJECT_PATH: projectPath
1913
+ };
1914
+ spawnDashboardServer(server, env);
1915
+ console.log(`Dashboard API starting on http://localhost:${apiPort}`);
1916
+ console.log(`Open ${url} (pass --no-open to suppress)`);
1917
+ if (opts.noOpen !== true) {
1918
+ setTimeout(() => openBrowser(url), 1500);
1919
+ }
1920
+ }
1921
+ function createDashboardCommand() {
1922
+ return new Command17("dashboard").description("Start the Harness local web dashboard").option("--port <port>", "Client dev server port", String(DEFAULT_CLIENT_PORT)).option("--api-port <port>", "API server port", String(DEFAULT_API_PORT)).option("--no-open", "Do not automatically open browser").option("--cwd <path>", "Project directory (defaults to cwd)").action((opts) => runDashboard(opts));
1923
+ }
1924
+
1925
+ // src/commands/doctor.ts
1926
+ import { Command as Command18 } from "commander";
1927
+ import * as fs5 from "fs";
1652
1928
  import * as os from "os";
1653
- import * as path11 from "path";
1929
+ import * as path12 from "path";
1654
1930
  import chalk from "chalk";
1655
1931
 
1656
1932
  // src/utils/node-version.ts
@@ -1733,24 +2009,24 @@ var INTEGRATION_REGISTRY = [
1733
2009
  ];
1734
2010
 
1735
2011
  // src/integrations/config.ts
1736
- import * as fs3 from "fs";
1737
- import * as path10 from "path";
2012
+ import * as fs4 from "fs";
2013
+ import * as path11 from "path";
1738
2014
  function readJsonSafe(filePath) {
1739
- if (!fs3.existsSync(filePath)) return null;
2015
+ if (!fs4.existsSync(filePath)) return null;
1740
2016
  try {
1741
- return JSON.parse(fs3.readFileSync(filePath, "utf-8"));
2017
+ return JSON.parse(fs4.readFileSync(filePath, "utf-8"));
1742
2018
  } catch {
1743
2019
  return null;
1744
2020
  }
1745
2021
  }
1746
2022
  function writeJson(filePath, data) {
1747
- const dir = path10.dirname(filePath);
1748
- if (!fs3.existsSync(dir)) {
1749
- fs3.mkdirSync(dir, { recursive: true });
2023
+ const dir = path11.dirname(filePath);
2024
+ if (!fs4.existsSync(dir)) {
2025
+ fs4.mkdirSync(dir, { recursive: true });
1750
2026
  }
1751
2027
  const tmp = filePath + ".tmp";
1752
- fs3.writeFileSync(tmp, JSON.stringify(data, null, 2) + "\n");
1753
- fs3.renameSync(tmp, filePath);
2028
+ fs4.writeFileSync(tmp, JSON.stringify(data, null, 2) + "\n");
2029
+ fs4.renameSync(tmp, filePath);
1754
2030
  }
1755
2031
  function readMcpConfig(filePath) {
1756
2032
  const config = readJsonSafe(filePath);
@@ -1764,7 +2040,7 @@ function writeMcpEntry(filePath, name, entry) {
1764
2040
  writeJson(filePath, config);
1765
2041
  }
1766
2042
  function removeMcpEntry(filePath, name) {
1767
- if (!fs3.existsSync(filePath)) return;
2043
+ if (!fs4.existsSync(filePath)) return;
1768
2044
  const config = readMcpConfig(filePath);
1769
2045
  delete config.mcpServers[name];
1770
2046
  writeJson(filePath, config);
@@ -1803,7 +2079,7 @@ function checkNodeVersion2() {
1803
2079
  }
1804
2080
  function countCommandFiles(dir, ext) {
1805
2081
  try {
1806
- return fs4.readdirSync(dir).filter((f) => f.endsWith(ext)).length;
2082
+ return fs5.readdirSync(dir).filter((f) => f.endsWith(ext)).length;
1807
2083
  } catch {
1808
2084
  return 0;
1809
2085
  }
@@ -1812,13 +2088,13 @@ function checkSlashCommands() {
1812
2088
  const platforms = [
1813
2089
  {
1814
2090
  name: "Claude Code",
1815
- dir: path11.join(os.homedir(), ".claude", "commands", "harness"),
2091
+ dir: path12.join(os.homedir(), ".claude", "commands", "harness"),
1816
2092
  ext: ".md",
1817
2093
  client: "claude-code"
1818
2094
  },
1819
2095
  {
1820
2096
  name: "Gemini CLI",
1821
- dir: path11.join(os.homedir(), ".gemini", "commands", "harness"),
2097
+ dir: path12.join(os.homedir(), ".gemini", "commands", "harness"),
1822
2098
  ext: ".toml",
1823
2099
  client: "gemini-cli"
1824
2100
  }
@@ -1842,7 +2118,7 @@ function checkSlashCommands() {
1842
2118
  }
1843
2119
  function checkMcpConfig(cwd) {
1844
2120
  const results = [];
1845
- const claudeConfig = readMcpConfig(path11.join(cwd, ".mcp.json"));
2121
+ const claudeConfig = readMcpConfig(path12.join(cwd, ".mcp.json"));
1846
2122
  if (claudeConfig.mcpServers?.["harness"]) {
1847
2123
  results.push({
1848
2124
  name: "mcp-claude",
@@ -1857,9 +2133,9 @@ function checkMcpConfig(cwd) {
1857
2133
  fix: "Run: harness setup-mcp --client claude"
1858
2134
  });
1859
2135
  }
1860
- const geminiDir = path11.join(cwd, ".gemini");
1861
- if (fs4.existsSync(geminiDir)) {
1862
- const geminiConfig = readMcpConfig(path11.join(geminiDir, "settings.json"));
2136
+ const geminiDir = path12.join(cwd, ".gemini");
2137
+ if (fs5.existsSync(geminiDir)) {
2138
+ const geminiConfig = readMcpConfig(path12.join(geminiDir, "settings.json"));
1863
2139
  if (geminiConfig.mcpServers?.["harness"]) {
1864
2140
  results.push({
1865
2141
  name: "mcp-gemini",
@@ -1878,12 +2154,12 @@ function checkMcpConfig(cwd) {
1878
2154
  return results;
1879
2155
  }
1880
2156
  function loadMcpPresence(cwd) {
1881
- const mcpPath = path11.join(cwd, ".mcp.json");
1882
- const geminiDir = path11.join(cwd, ".gemini");
1883
- const hasGemini = fs4.existsSync(geminiDir);
2157
+ const mcpPath = path12.join(cwd, ".mcp.json");
2158
+ const geminiDir = path12.join(cwd, ".gemini");
2159
+ const hasGemini = fs5.existsSync(geminiDir);
1884
2160
  return {
1885
2161
  mcpConfig: readMcpConfig(mcpPath),
1886
- geminiConfig: hasGemini ? readMcpConfig(path11.join(geminiDir, "settings.json")) : null,
2162
+ geminiConfig: hasGemini ? readMcpConfig(path12.join(geminiDir, "settings.json")) : null,
1887
2163
  hasGemini
1888
2164
  };
1889
2165
  }
@@ -1915,7 +2191,7 @@ function checkTier0Presence(def, presence) {
1915
2191
  function checkIntegrations(cwd) {
1916
2192
  const results = [];
1917
2193
  const presence = loadMcpPresence(cwd);
1918
- const configPath = path11.join(cwd, "harness.config.json");
2194
+ const configPath = path12.join(cwd, "harness.config.json");
1919
2195
  const integrationsConfig = readIntegrationsConfig(configPath);
1920
2196
  for (const def of INTEGRATION_REGISTRY.filter((d) => d.tier === 0)) {
1921
2197
  results.push(checkTier0Presence(def, presence));
@@ -1965,7 +2241,7 @@ function formatCheck(check) {
1965
2241
  return line;
1966
2242
  }
1967
2243
  function createDoctorCommand() {
1968
- return new Command16("doctor").description("Check environment health: Node version, slash commands, MCP configuration").action((_opts, cmd) => {
2244
+ return new Command18("doctor").description("Check environment health: Node version, slash commands, MCP configuration").action((_opts, cmd) => {
1969
2245
  const globalOpts = cmd.optsWithGlobals();
1970
2246
  const cwd = process.cwd();
1971
2247
  const useJson = globalOpts.json;
@@ -1990,8 +2266,8 @@ function createDoctorCommand() {
1990
2266
  }
1991
2267
 
1992
2268
  // src/commands/fix-drift.ts
1993
- import { Command as Command17 } from "commander";
1994
- import * as path12 from "path";
2269
+ import { Command as Command19 } from "commander";
2270
+ import * as path13 from "path";
1995
2271
  async function runFixDrift(options) {
1996
2272
  const cwd = options.cwd ?? process.cwd();
1997
2273
  const dryRun = options.dryRun !== false;
@@ -2000,11 +2276,11 @@ async function runFixDrift(options) {
2000
2276
  return Err(configResult.error);
2001
2277
  }
2002
2278
  const config = configResult.value;
2003
- const rootDir = path12.resolve(cwd, config.rootDir);
2004
- const docsDir = path12.resolve(cwd, config.docsDir);
2279
+ const rootDir = path13.resolve(cwd, config.rootDir);
2280
+ const docsDir = path13.resolve(cwd, config.docsDir);
2005
2281
  const entropyConfig = {
2006
2282
  rootDir,
2007
- entryPoints: [path12.join(rootDir, "src/index.ts")],
2283
+ entryPoints: [path13.join(rootDir, "src/index.ts")],
2008
2284
  docPaths: [docsDir],
2009
2285
  analyze: {
2010
2286
  drift: true,
@@ -2123,7 +2399,7 @@ function printFixDriftResult(value, mode, formatter) {
2123
2399
  }
2124
2400
  }
2125
2401
  function createFixDriftCommand() {
2126
- const command = new Command17("fix-drift").description("Auto-fix entropy issues (doc drift, dead code)").option("--no-dry-run", "Actually apply fixes (default is dry-run mode)").action(async (opts, cmd) => {
2402
+ const command = new Command19("fix-drift").description("Auto-fix entropy issues (doc drift, dead code)").option("--no-dry-run", "Actually apply fixes (default is dry-run mode)").action(async (opts, cmd) => {
2127
2403
  const globalOpts = cmd.optsWithGlobals();
2128
2404
  const mode = resolveOutputMode2(globalOpts);
2129
2405
  const formatter = new OutputFormatter(mode);
@@ -2153,7 +2429,7 @@ function createFixDriftCommand() {
2153
2429
  }
2154
2430
 
2155
2431
  // src/commands/generate.ts
2156
- import { Command as Command18 } from "commander";
2432
+ import { Command as Command20 } from "commander";
2157
2433
  function validatePlatforms(platforms) {
2158
2434
  for (const p of platforms) {
2159
2435
  if (!VALID_PLATFORMS.includes(p)) {
@@ -2213,27 +2489,27 @@ async function runGenerateAction(opts, globalOpts) {
2213
2489
  }
2214
2490
  }
2215
2491
  function createGenerateCommand() {
2216
- return new Command18("generate").description("Generate all platform integrations (slash commands + agent definitions)").option("--platforms <list>", "Target platforms (comma-separated)", "claude-code,gemini-cli").option("--global", "Write to global directories", false).option("--include-global", "Include built-in global skills", false).option("--output <dir>", "Custom output directory").option("--dry-run", "Show what would change without writing", false).option("--yes", "Skip deletion confirmation prompts", false).action(async (opts, cmd) => {
2492
+ return new Command20("generate").description("Generate all platform integrations (slash commands + agent definitions)").option("--platforms <list>", "Target platforms (comma-separated)", "claude-code,gemini-cli").option("--global", "Write to global directories", false).option("--include-global", "Include built-in global skills", false).option("--output <dir>", "Custom output directory").option("--dry-run", "Show what would change without writing", false).option("--yes", "Skip deletion confirmation prompts", false).action(async (opts, cmd) => {
2217
2493
  await runGenerateAction(opts, cmd.optsWithGlobals());
2218
2494
  });
2219
2495
  }
2220
2496
 
2221
2497
  // src/commands/graph/index.ts
2222
- import { Command as Command22 } from "commander";
2498
+ import { Command as Command24 } from "commander";
2223
2499
 
2224
2500
  // src/commands/graph/status.ts
2225
- import * as path13 from "path";
2501
+ import * as path14 from "path";
2226
2502
  async function runGraphStatus(projectPath) {
2227
- const { GraphStore } = await import("./dist-M6FBUXZD.js");
2228
- const graphDir = path13.join(projectPath, ".harness", "graph");
2503
+ const { GraphStore } = await import("./dist-QW5G3GX3.js");
2504
+ const graphDir = path14.join(projectPath, ".harness", "graph");
2229
2505
  const store = new GraphStore();
2230
2506
  const loaded = await store.load(graphDir);
2231
2507
  if (!loaded) return { status: "no_graph", message: "No graph found. Run `harness scan` first." };
2232
- const fs34 = await import("fs/promises");
2233
- const metaPath = path13.join(graphDir, "metadata.json");
2508
+ const fs36 = await import("fs/promises");
2509
+ const metaPath = path14.join(graphDir, "metadata.json");
2234
2510
  let lastScan = "unknown";
2235
2511
  try {
2236
- const meta = JSON.parse(await fs34.readFile(metaPath, "utf-8"));
2512
+ const meta = JSON.parse(await fs36.readFile(metaPath, "utf-8"));
2237
2513
  lastScan = meta.lastScanTimestamp;
2238
2514
  } catch {
2239
2515
  }
@@ -2244,8 +2520,8 @@ async function runGraphStatus(projectPath) {
2244
2520
  }
2245
2521
  let connectorSyncStatus = {};
2246
2522
  try {
2247
- const syncMetaPath = path13.join(graphDir, "sync-metadata.json");
2248
- const syncMeta = JSON.parse(await fs34.readFile(syncMetaPath, "utf-8"));
2523
+ const syncMetaPath = path14.join(graphDir, "sync-metadata.json");
2524
+ const syncMeta = JSON.parse(await fs36.readFile(syncMetaPath, "utf-8"));
2249
2525
  for (const [name, data] of Object.entries(syncMeta.connectors ?? {})) {
2250
2526
  connectorSyncStatus[name] = data.lastSyncTimestamp;
2251
2527
  }
@@ -2262,10 +2538,10 @@ async function runGraphStatus(projectPath) {
2262
2538
  }
2263
2539
 
2264
2540
  // src/commands/graph/export.ts
2265
- import * as path14 from "path";
2541
+ import * as path15 from "path";
2266
2542
  async function runGraphExport(projectPath, format) {
2267
- const { GraphStore } = await import("./dist-M6FBUXZD.js");
2268
- const graphDir = path14.join(projectPath, ".harness", "graph");
2543
+ const { GraphStore } = await import("./dist-QW5G3GX3.js");
2544
+ const graphDir = path15.join(projectPath, ".harness", "graph");
2269
2545
  const store = new GraphStore();
2270
2546
  const loaded = await store.load(graphDir);
2271
2547
  if (!loaded) throw new Error("No graph found. Run `harness scan` first.");
@@ -2294,13 +2570,13 @@ async function runGraphExport(projectPath, format) {
2294
2570
  }
2295
2571
 
2296
2572
  // src/commands/graph/index.ts
2297
- import * as path18 from "path";
2573
+ import * as path19 from "path";
2298
2574
 
2299
2575
  // src/commands/graph/scan.ts
2300
- import { Command as Command19 } from "commander";
2301
- import * as path15 from "path";
2576
+ import { Command as Command21 } from "commander";
2577
+ import * as path16 from "path";
2302
2578
  async function runScan(projectPath) {
2303
- const { GraphStore, CodeIngestor, TopologicalLinker, KnowledgeIngestor, GitIngestor } = await import("./dist-M6FBUXZD.js");
2579
+ const { GraphStore, CodeIngestor, TopologicalLinker, KnowledgeIngestor, GitIngestor } = await import("./dist-QW5G3GX3.js");
2304
2580
  const store = new GraphStore();
2305
2581
  const start = Date.now();
2306
2582
  await new CodeIngestor(store).ingest(projectPath);
@@ -2311,13 +2587,13 @@ async function runScan(projectPath) {
2311
2587
  await new GitIngestor(store).ingest(projectPath);
2312
2588
  } catch {
2313
2589
  }
2314
- const graphDir = path15.join(projectPath, ".harness", "graph");
2590
+ const graphDir = path16.join(projectPath, ".harness", "graph");
2315
2591
  await store.save(graphDir);
2316
2592
  return { nodeCount: store.nodeCount, edgeCount: store.edgeCount, durationMs: Date.now() - start };
2317
2593
  }
2318
2594
  function createScanCommand() {
2319
- return new Command19("scan").description("Scan project and build knowledge graph").argument("[path]", "Project root path", ".").action(async (inputPath, _opts, cmd) => {
2320
- const projectPath = path15.resolve(inputPath);
2595
+ return new Command21("scan").description("Scan project and build knowledge graph").argument("[path]", "Project root path", ".").action(async (inputPath, _opts, cmd) => {
2596
+ const projectPath = path16.resolve(inputPath);
2321
2597
  const globalOpts = cmd.optsWithGlobals();
2322
2598
  try {
2323
2599
  const result = await runScan(projectPath);
@@ -2336,12 +2612,12 @@ function createScanCommand() {
2336
2612
  }
2337
2613
 
2338
2614
  // src/commands/graph/query.ts
2339
- import { Command as Command20 } from "commander";
2340
- import * as path16 from "path";
2615
+ import { Command as Command22 } from "commander";
2616
+ import * as path17 from "path";
2341
2617
  async function runQuery(projectPath, rootNodeId, opts) {
2342
- const { GraphStore, ContextQL } = await import("./dist-M6FBUXZD.js");
2618
+ const { GraphStore, ContextQL } = await import("./dist-QW5G3GX3.js");
2343
2619
  const store = new GraphStore();
2344
- const graphDir = path16.join(projectPath, ".harness", "graph");
2620
+ const graphDir = path17.join(projectPath, ".harness", "graph");
2345
2621
  const loaded = await store.load(graphDir);
2346
2622
  if (!loaded) throw new Error("No graph found. Run `harness scan` first.");
2347
2623
  const params = {
@@ -2363,7 +2639,7 @@ function printQueryResult(result) {
2363
2639
  }
2364
2640
  }
2365
2641
  async function runQueryAction(rootNodeId, opts, globalOpts) {
2366
- const projectPath = path16.resolve(globalOpts.config ? path16.dirname(globalOpts.config) : ".");
2642
+ const projectPath = path17.resolve(globalOpts.config ? path17.dirname(globalOpts.config) : ".");
2367
2643
  try {
2368
2644
  const result = await runQuery(projectPath, rootNodeId, {
2369
2645
  depth: parseInt(opts.depth),
@@ -2382,23 +2658,21 @@ async function runQueryAction(rootNodeId, opts, globalOpts) {
2382
2658
  }
2383
2659
  }
2384
2660
  function createQueryCommand() {
2385
- return new Command20("query").description("Query the knowledge graph").argument("<rootNodeId>", "Starting node ID").option("--depth <n>", "Max traversal depth", "3").option("--types <types>", "Comma-separated node types to include").option("--edges <edges>", "Comma-separated edge types to include").option("--bidirectional", "Traverse both directions").action(async (rootNodeId, opts, cmd) => {
2661
+ return new Command22("query").description("Query the knowledge graph").argument("<rootNodeId>", "Starting node ID").option("--depth <n>", "Max traversal depth", "3").option("--types <types>", "Comma-separated node types to include").option("--edges <edges>", "Comma-separated edge types to include").option("--bidirectional", "Traverse both directions").action(async (rootNodeId, opts, cmd) => {
2386
2662
  await runQueryAction(rootNodeId, opts, cmd.optsWithGlobals());
2387
2663
  });
2388
2664
  }
2389
2665
 
2390
2666
  // src/commands/graph/ingest.ts
2391
- import { Command as Command21 } from "commander";
2392
- import * as path17 from "path";
2667
+ import { Command as Command23 } from "commander";
2668
+ import * as path18 from "path";
2393
2669
  async function loadConnectorConfig(projectPath, source) {
2394
2670
  try {
2395
- const fs34 = await import("fs/promises");
2396
- const configPath = path17.join(projectPath, "harness.config.json");
2397
- const config = JSON.parse(await fs34.readFile(configPath, "utf-8"));
2398
- const connector = config.graph?.connectors?.find(
2399
- (c) => c.source === source
2400
- );
2401
- return connector?.config ?? {};
2671
+ const fs36 = await import("fs/promises");
2672
+ const configPath = path18.join(projectPath, "harness.config.json");
2673
+ const config = JSON.parse(await fs36.readFile(configPath, "utf-8"));
2674
+ const connector = config.graph?.connectors?.[source];
2675
+ return connector ?? {};
2402
2676
  } catch {
2403
2677
  return {};
2404
2678
  }
@@ -2432,9 +2706,11 @@ async function runIngest(projectPath, source, opts) {
2432
2706
  GitIngestor,
2433
2707
  SyncManager,
2434
2708
  JiraConnector,
2435
- SlackConnector
2436
- } = await import("./dist-M6FBUXZD.js");
2437
- const graphDir = path17.join(projectPath, ".harness", "graph");
2709
+ SlackConnector,
2710
+ CIConnector,
2711
+ ConfluenceConnector
2712
+ } = await import("./dist-QW5G3GX3.js");
2713
+ const graphDir = path18.join(projectPath, ".harness", "graph");
2438
2714
  const store = new GraphStore();
2439
2715
  await store.load(graphDir);
2440
2716
  if (opts?.all) {
@@ -2446,7 +2722,9 @@ async function runIngest(projectPath, source, opts) {
2446
2722
  const syncManager = new SyncManager(store, graphDir);
2447
2723
  const connectorMap = {
2448
2724
  jira: () => new JiraConnector(),
2449
- slack: () => new SlackConnector()
2725
+ slack: () => new SlackConnector(),
2726
+ ci: () => new CIConnector(),
2727
+ confluence: () => new ConfluenceConnector()
2450
2728
  };
2451
2729
  for (const [name, factory] of Object.entries(connectorMap)) {
2452
2730
  const config = await loadConnectorConfig(projectPath, name);
@@ -2470,9 +2748,11 @@ async function runIngest(projectPath, source, opts) {
2470
2748
  result = await new GitIngestor(store).ingest(projectPath);
2471
2749
  break;
2472
2750
  default: {
2473
- const knownConnectors = ["jira", "slack"];
2751
+ const knownConnectors = ["jira", "slack", "ci", "confluence"];
2474
2752
  if (!knownConnectors.includes(source)) {
2475
- throw new Error(`Unknown source: ${source}. Available: code, knowledge, git, jira, slack`);
2753
+ throw new Error(
2754
+ `Unknown source: ${source}. Available: code, knowledge, git, jira, slack, ci, confluence`
2755
+ );
2476
2756
  }
2477
2757
  if (!SyncManager) {
2478
2758
  throw new Error(
@@ -2482,7 +2762,9 @@ async function runIngest(projectPath, source, opts) {
2482
2762
  const syncManager = new SyncManager(store, graphDir);
2483
2763
  const extConnectorMap = {
2484
2764
  jira: () => new JiraConnector(),
2485
- slack: () => new SlackConnector()
2765
+ slack: () => new SlackConnector(),
2766
+ ci: () => new CIConnector(),
2767
+ confluence: () => new ConfluenceConnector()
2486
2768
  };
2487
2769
  const factory = extConnectorMap[source];
2488
2770
  const config = await loadConnectorConfig(projectPath, source);
@@ -2495,13 +2777,16 @@ async function runIngest(projectPath, source, opts) {
2495
2777
  return result;
2496
2778
  }
2497
2779
  function createIngestCommand() {
2498
- return new Command21("ingest").description("Ingest data into the knowledge graph").option("--source <name>", "Source to ingest (code, knowledge, git, jira, slack)").option("--all", "Run all sources (code, knowledge, git, and configured connectors)").option("--full", "Force full re-ingestion").action(async (opts, cmd) => {
2780
+ return new Command23("ingest").description("Ingest data into the knowledge graph").option(
2781
+ "--source <name>",
2782
+ "Source to ingest (code, knowledge, git, jira, slack, ci, confluence)"
2783
+ ).option("--all", "Run all sources (code, knowledge, git, and configured connectors)").option("--full", "Force full re-ingestion").action(async (opts, cmd) => {
2499
2784
  if (!opts.source && !opts.all) {
2500
2785
  console.error("Error: --source or --all is required");
2501
2786
  process.exit(1);
2502
2787
  }
2503
2788
  const globalOpts = cmd.optsWithGlobals();
2504
- const projectPath = path17.resolve(globalOpts.config ? path17.dirname(globalOpts.config) : ".");
2789
+ const projectPath = path18.resolve(globalOpts.config ? path18.dirname(globalOpts.config) : ".");
2505
2790
  try {
2506
2791
  const result = await runIngest(projectPath, opts.source ?? "", {
2507
2792
  full: opts.full,
@@ -2524,7 +2809,7 @@ function createIngestCommand() {
2524
2809
 
2525
2810
  // src/commands/graph/index.ts
2526
2811
  function resolveProjectPath(globalOpts) {
2527
- return path18.resolve(globalOpts.config ? path18.dirname(globalOpts.config) : ".");
2812
+ return path19.resolve(globalOpts.config ? path19.dirname(globalOpts.config) : ".");
2528
2813
  }
2529
2814
  function printGraphStatus(result) {
2530
2815
  if (result.status === "no_graph") {
@@ -2568,19 +2853,19 @@ async function runExportAction(opts, cmd) {
2568
2853
  }
2569
2854
  }
2570
2855
  function createGraphCommand() {
2571
- const graph = new Command22("graph").description("Knowledge graph management");
2856
+ const graph = new Command24("graph").description("Knowledge graph management");
2572
2857
  graph.command("status").description("Show graph statistics").action(runStatusAction);
2573
2858
  graph.command("export").description("Export graph").requiredOption("--format <format>", "Output format (json, mermaid)").action(runExportAction);
2574
2859
  return graph;
2575
2860
  }
2576
2861
 
2577
2862
  // src/commands/hooks/index.ts
2578
- import { Command as Command27 } from "commander";
2863
+ import { Command as Command29 } from "commander";
2579
2864
 
2580
2865
  // src/commands/hooks/init.ts
2581
- import { Command as Command23 } from "commander";
2582
- import * as fs5 from "fs";
2583
- import * as path19 from "path";
2866
+ import { Command as Command25 } from "commander";
2867
+ import * as fs6 from "fs";
2868
+ import * as path20 from "path";
2584
2869
  import { fileURLToPath as fileURLToPath2 } from "url";
2585
2870
 
2586
2871
  // src/hooks/profiles.ts
@@ -2589,6 +2874,8 @@ var HOOK_SCRIPTS = [
2589
2874
  { name: "protect-config", event: "PreToolUse", matcher: "Write|Edit", minProfile: "standard" },
2590
2875
  { name: "quality-gate", event: "PostToolUse", matcher: "Edit|Write", minProfile: "standard" },
2591
2876
  { name: "pre-compact-state", event: "PreCompact", matcher: "*", minProfile: "standard" },
2877
+ { name: "adoption-tracker", event: "Stop", matcher: "*", minProfile: "standard" },
2878
+ { name: "telemetry-reporter", event: "Stop", matcher: "*", minProfile: "standard" },
2592
2879
  { name: "cost-tracker", event: "Stop", matcher: "*", minProfile: "strict" },
2593
2880
  { name: "sentinel-pre", event: "PreToolUse", matcher: "*", minProfile: "strict" },
2594
2881
  { name: "sentinel-post", event: "PostToolUse", matcher: "*", minProfile: "strict" }
@@ -2608,11 +2895,11 @@ var PROFILES = {
2608
2895
 
2609
2896
  // src/commands/hooks/init.ts
2610
2897
  var __filename2 = fileURLToPath2(import.meta.url);
2611
- var __dirname2 = path19.dirname(__filename2);
2898
+ var __dirname2 = path20.dirname(__filename2);
2612
2899
  var VALID_PROFILES = ["minimal", "standard", "strict"];
2613
2900
  function resolveHookSourceDir() {
2614
- const candidate = path19.resolve(__dirname2, "..", "..", "hooks");
2615
- if (fs5.existsSync(candidate)) {
2901
+ const candidate = path20.resolve(__dirname2, "..", "..", "hooks");
2902
+ if (fs6.existsSync(candidate)) {
2616
2903
  return candidate;
2617
2904
  }
2618
2905
  throw new Error(`Cannot locate hook scripts directory. Expected at: ${candidate}`);
@@ -2640,12 +2927,12 @@ function mergeSettings(existing, hooksConfig) {
2640
2927
  }
2641
2928
  function initHooks(options) {
2642
2929
  const { profile, projectDir } = options;
2643
- const hooksDestDir = path19.join(projectDir, ".harness", "hooks");
2644
- fs5.mkdirSync(hooksDestDir, { recursive: true });
2645
- if (fs5.existsSync(hooksDestDir)) {
2646
- for (const entry of fs5.readdirSync(hooksDestDir)) {
2930
+ const hooksDestDir = path20.join(projectDir, ".harness", "hooks");
2931
+ fs6.mkdirSync(hooksDestDir, { recursive: true });
2932
+ if (fs6.existsSync(hooksDestDir)) {
2933
+ for (const entry of fs6.readdirSync(hooksDestDir)) {
2647
2934
  if (entry.endsWith(".js")) {
2648
- fs5.unlinkSync(path19.join(hooksDestDir, entry));
2935
+ fs6.unlinkSync(path20.join(hooksDestDir, entry));
2649
2936
  }
2650
2937
  }
2651
2938
  }
@@ -2654,22 +2941,22 @@ function initHooks(options) {
2654
2941
  const activeNames = PROFILES[profile];
2655
2942
  const activeScripts = HOOK_SCRIPTS.filter((h) => activeNames.includes(h.name));
2656
2943
  for (const script of activeScripts) {
2657
- const srcFile = path19.join(sourceDir, `${script.name}.js`);
2658
- const destFile = path19.join(hooksDestDir, `${script.name}.js`);
2659
- if (fs5.existsSync(srcFile)) {
2660
- fs5.copyFileSync(srcFile, destFile);
2944
+ const srcFile = path20.join(sourceDir, `${script.name}.js`);
2945
+ const destFile = path20.join(hooksDestDir, `${script.name}.js`);
2946
+ if (fs6.existsSync(srcFile)) {
2947
+ fs6.copyFileSync(srcFile, destFile);
2661
2948
  copiedScripts.push(script.name);
2662
2949
  }
2663
2950
  }
2664
- const profilePath = path19.join(hooksDestDir, "profile.json");
2665
- fs5.writeFileSync(profilePath, JSON.stringify({ profile }, null, 2) + "\n");
2666
- const claudeDir = path19.join(projectDir, ".claude");
2667
- fs5.mkdirSync(claudeDir, { recursive: true });
2668
- const settingsPath = path19.join(claudeDir, "settings.json");
2951
+ const profilePath = path20.join(hooksDestDir, "profile.json");
2952
+ fs6.writeFileSync(profilePath, JSON.stringify({ profile }, null, 2) + "\n");
2953
+ const claudeDir = path20.join(projectDir, ".claude");
2954
+ fs6.mkdirSync(claudeDir, { recursive: true });
2955
+ const settingsPath = path20.join(claudeDir, "settings.json");
2669
2956
  let existing = {};
2670
- if (fs5.existsSync(settingsPath)) {
2957
+ if (fs6.existsSync(settingsPath)) {
2671
2958
  try {
2672
- existing = JSON.parse(fs5.readFileSync(settingsPath, "utf-8"));
2959
+ existing = JSON.parse(fs6.readFileSync(settingsPath, "utf-8"));
2673
2960
  } catch (e) {
2674
2961
  throw new Error(
2675
2962
  `Malformed .claude/settings.json \u2014 fix the JSON syntax before running hooks init. Parse error: ${e instanceof Error ? e.message : String(e)}`,
@@ -2679,11 +2966,11 @@ function initHooks(options) {
2679
2966
  }
2680
2967
  const hooksConfig = buildSettingsHooks(profile);
2681
2968
  const merged = mergeSettings(existing, hooksConfig);
2682
- fs5.writeFileSync(settingsPath, JSON.stringify(merged, null, 2) + "\n");
2969
+ fs6.writeFileSync(settingsPath, JSON.stringify(merged, null, 2) + "\n");
2683
2970
  return { copiedScripts, settingsPath, profilePath };
2684
2971
  }
2685
2972
  function createInitCommand2() {
2686
- return new Command23("init").description("Install Claude Code hook configurations into the current project").option("--profile <profile>", "Hook profile: minimal, standard, or strict", "standard").action(async (opts, cmd) => {
2973
+ return new Command25("init").description("Install Claude Code hook configurations into the current project").option("--profile <profile>", "Hook profile: minimal, standard, or strict", "standard").action(async (opts, cmd) => {
2687
2974
  const globalOpts = cmd.optsWithGlobals();
2688
2975
  const profile = opts.profile;
2689
2976
  if (!VALID_PROFILES.includes(profile)) {
@@ -2707,7 +2994,7 @@ function createInitCommand2() {
2707
2994
  `Installed ${result.copiedScripts.length} hook scripts to .harness/hooks/`
2708
2995
  );
2709
2996
  logger.info(`Profile: ${profile}`);
2710
- logger.info(`Settings: ${path19.relative(projectDir, result.settingsPath)}`);
2997
+ logger.info(`Settings: ${path20.relative(projectDir, result.settingsPath)}`);
2711
2998
  logger.dim("Run 'harness hooks list' to see installed hooks");
2712
2999
  }
2713
3000
  } catch (err) {
@@ -2719,19 +3006,19 @@ function createInitCommand2() {
2719
3006
  }
2720
3007
 
2721
3008
  // src/commands/hooks/list.ts
2722
- import { Command as Command24 } from "commander";
2723
- import * as fs6 from "fs";
2724
- import * as path20 from "path";
3009
+ import { Command as Command26 } from "commander";
3010
+ import * as fs7 from "fs";
3011
+ import * as path21 from "path";
2725
3012
  function listHooks(projectDir) {
2726
- const hooksDir = path20.join(projectDir, ".harness", "hooks");
2727
- const profilePath = path20.join(hooksDir, "profile.json");
2728
- if (!fs6.existsSync(profilePath)) {
3013
+ const hooksDir = path21.join(projectDir, ".harness", "hooks");
3014
+ const profilePath = path21.join(hooksDir, "profile.json");
3015
+ if (!fs7.existsSync(profilePath)) {
2729
3016
  return { installed: false, profile: null, hooks: [] };
2730
3017
  }
2731
3018
  let profile = "standard";
2732
3019
  let warning;
2733
3020
  try {
2734
- const data = JSON.parse(fs6.readFileSync(profilePath, "utf-8"));
3021
+ const data = JSON.parse(fs7.readFileSync(profilePath, "utf-8"));
2735
3022
  if (data.profile && ["minimal", "standard", "strict"].includes(data.profile)) {
2736
3023
  profile = data.profile;
2737
3024
  }
@@ -2743,7 +3030,7 @@ function listHooks(projectDir) {
2743
3030
  name: h.name,
2744
3031
  event: h.event,
2745
3032
  matcher: h.matcher,
2746
- scriptPath: path20.join(".harness", "hooks", `${h.name}.js`)
3033
+ scriptPath: path21.join(".harness", "hooks", `${h.name}.js`)
2747
3034
  }));
2748
3035
  const result = { installed: true, profile, hooks };
2749
3036
  if (warning) {
@@ -2752,7 +3039,7 @@ function listHooks(projectDir) {
2752
3039
  return result;
2753
3040
  }
2754
3041
  function createListCommand() {
2755
- return new Command24("list").description("Show installed hooks and active profile").action(async (_opts, cmd) => {
3042
+ return new Command26("list").description("Show installed hooks and active profile").action(async (_opts, cmd) => {
2756
3043
  const globalOpts = cmd.optsWithGlobals();
2757
3044
  const projectDir = process.cwd();
2758
3045
  const result = listHooks(projectDir);
@@ -2773,28 +3060,28 @@ function createListCommand() {
2773
3060
  }
2774
3061
 
2775
3062
  // src/commands/hooks/remove.ts
2776
- import { Command as Command25 } from "commander";
2777
- import * as fs7 from "fs";
2778
- import * as path21 from "path";
3063
+ import { Command as Command27 } from "commander";
3064
+ import * as fs8 from "fs";
3065
+ import * as path22 from "path";
2779
3066
  function removeHooks(projectDir) {
2780
- const hooksDir = path21.join(projectDir, ".harness", "hooks");
2781
- const settingsPath = path21.join(projectDir, ".claude", "settings.json");
3067
+ const hooksDir = path22.join(projectDir, ".harness", "hooks");
3068
+ const settingsPath = path22.join(projectDir, ".claude", "settings.json");
2782
3069
  let removed = false;
2783
3070
  let settingsCleaned = false;
2784
- if (fs7.existsSync(hooksDir)) {
2785
- fs7.rmSync(hooksDir, { recursive: true, force: true });
3071
+ if (fs8.existsSync(hooksDir)) {
3072
+ fs8.rmSync(hooksDir, { recursive: true, force: true });
2786
3073
  removed = true;
2787
3074
  }
2788
- if (fs7.existsSync(settingsPath)) {
3075
+ if (fs8.existsSync(settingsPath)) {
2789
3076
  try {
2790
- const settings = JSON.parse(fs7.readFileSync(settingsPath, "utf-8"));
3077
+ const settings = JSON.parse(fs8.readFileSync(settingsPath, "utf-8"));
2791
3078
  if (settings.hooks !== void 0) {
2792
3079
  delete settings.hooks;
2793
3080
  settingsCleaned = true;
2794
3081
  if (Object.keys(settings).length === 0) {
2795
- fs7.unlinkSync(settingsPath);
3082
+ fs8.unlinkSync(settingsPath);
2796
3083
  } else {
2797
- fs7.writeFileSync(settingsPath, JSON.stringify(settings, null, 2) + "\n");
3084
+ fs8.writeFileSync(settingsPath, JSON.stringify(settings, null, 2) + "\n");
2798
3085
  }
2799
3086
  }
2800
3087
  } catch {
@@ -2803,7 +3090,7 @@ function removeHooks(projectDir) {
2803
3090
  return { removed, hooksDir, settingsCleaned };
2804
3091
  }
2805
3092
  function createRemoveCommand() {
2806
- return new Command25("remove").description("Remove harness-managed hooks from the current project").action(async (_opts, cmd) => {
3093
+ return new Command27("remove").description("Remove harness-managed hooks from the current project").action(async (_opts, cmd) => {
2807
3094
  const globalOpts = cmd.optsWithGlobals();
2808
3095
  const projectDir = process.cwd();
2809
3096
  const result = removeHooks(projectDir);
@@ -2825,21 +3112,21 @@ function createRemoveCommand() {
2825
3112
  }
2826
3113
 
2827
3114
  // src/commands/hooks/add.ts
2828
- import { Command as Command26 } from "commander";
2829
- import * as fs8 from "fs";
2830
- import * as path22 from "path";
3115
+ import { Command as Command28 } from "commander";
3116
+ import * as fs9 from "fs";
3117
+ import * as path23 from "path";
2831
3118
  import { fileURLToPath as fileURLToPath3 } from "url";
2832
- var __dirname3 = path22.dirname(fileURLToPath3(import.meta.url));
3119
+ var __dirname3 = path23.dirname(fileURLToPath3(import.meta.url));
2833
3120
  var ALIASES = {
2834
3121
  sentinel: ["sentinel-pre", "sentinel-post"]
2835
3122
  };
2836
3123
  function hookSourceDir() {
2837
- const d = path22.resolve(__dirname3, "..", "..", "hooks");
2838
- if (fs8.existsSync(d)) return d;
3124
+ const d = path23.resolve(__dirname3, "..", "..", "hooks");
3125
+ if (fs9.existsSync(d)) return d;
2839
3126
  throw new Error(`Hook scripts not found: ${d}`);
2840
3127
  }
2841
3128
  function readJson(p) {
2842
- return fs8.existsSync(p) ? JSON.parse(fs8.readFileSync(p, "utf-8")) : {};
3129
+ return fs9.existsSync(p) ? JSON.parse(fs9.readFileSync(p, "utf-8")) : {};
2843
3130
  }
2844
3131
  function registerHook(s, ev, matcher, name) {
2845
3132
  if (!s.hooks[ev]) s.hooks[ev] = [];
@@ -2852,11 +3139,11 @@ function addHooks(hookName, projectDir) {
2852
3139
  const names = ALIASES[hookName] ?? [hookName];
2853
3140
  const result = { added: [], alreadyInstalled: [], notFound: [] };
2854
3141
  const srcDir = hookSourceDir();
2855
- const destDir = path22.join(projectDir, ".harness", "hooks");
2856
- fs8.mkdirSync(destDir, { recursive: true });
2857
- const claudeDir = path22.join(projectDir, ".claude");
2858
- fs8.mkdirSync(claudeDir, { recursive: true });
2859
- const settingsPath = path22.join(claudeDir, "settings.json");
3142
+ const destDir = path23.join(projectDir, ".harness", "hooks");
3143
+ fs9.mkdirSync(destDir, { recursive: true });
3144
+ const claudeDir = path23.join(projectDir, ".claude");
3145
+ fs9.mkdirSync(claudeDir, { recursive: true });
3146
+ const settingsPath = path23.join(claudeDir, "settings.json");
2860
3147
  const settings = readJson(settingsPath);
2861
3148
  if (!settings.hooks) settings.hooks = {};
2862
3149
  for (const name of names) {
@@ -2865,24 +3152,24 @@ function addHooks(hookName, projectDir) {
2865
3152
  result.notFound.push(name);
2866
3153
  continue;
2867
3154
  }
2868
- const src = path22.join(srcDir, `${name}.js`);
2869
- const dest = path22.join(destDir, `${name}.js`);
2870
- if (fs8.existsSync(dest)) {
3155
+ const src = path23.join(srcDir, `${name}.js`);
3156
+ const dest = path23.join(destDir, `${name}.js`);
3157
+ if (fs9.existsSync(dest)) {
2871
3158
  result.alreadyInstalled.push(name);
2872
- } else if (!fs8.existsSync(src)) {
3159
+ } else if (!fs9.existsSync(src)) {
2873
3160
  result.notFound.push(name);
2874
3161
  continue;
2875
3162
  } else {
2876
- fs8.copyFileSync(src, dest);
3163
+ fs9.copyFileSync(src, dest);
2877
3164
  result.added.push(name);
2878
3165
  }
2879
3166
  registerHook(settings, def.event, def.matcher, name);
2880
3167
  }
2881
- fs8.writeFileSync(settingsPath, JSON.stringify(settings, null, 2) + "\n");
3168
+ fs9.writeFileSync(settingsPath, JSON.stringify(settings, null, 2) + "\n");
2882
3169
  return result;
2883
3170
  }
2884
3171
  function createAddCommand2() {
2885
- return new Command26("add").argument("<hook-name>", "Hook name or alias (e.g., sentinel)").description("Add a hook without changing the profile").action(async (hookName, _opts, cmd) => {
3172
+ return new Command28("add").argument("<hook-name>", "Hook name or alias (e.g., sentinel)").description("Add a hook without changing the profile").action(async (hookName, _opts, cmd) => {
2886
3173
  const projectDir = process.cwd();
2887
3174
  try {
2888
3175
  const res = addHooks(hookName, projectDir);
@@ -2907,7 +3194,7 @@ function createAddCommand2() {
2907
3194
 
2908
3195
  // src/commands/hooks/index.ts
2909
3196
  function createHooksCommand() {
2910
- const command = new Command27("hooks").description("Manage Claude Code hook configurations");
3197
+ const command = new Command29("hooks").description("Manage Claude Code hook configurations");
2911
3198
  command.addCommand(createInitCommand2());
2912
3199
  command.addCommand(createListCommand());
2913
3200
  command.addCommand(createRemoveCommand());
@@ -2916,10 +3203,10 @@ function createHooksCommand() {
2916
3203
  }
2917
3204
 
2918
3205
  // src/commands/impact-preview.ts
2919
- import { Command as Command28 } from "commander";
3206
+ import { Command as Command30 } from "commander";
2920
3207
  import { execSync as execSync4 } from "child_process";
2921
- import * as path23 from "path";
2922
- import * as fs9 from "fs";
3208
+ import * as path24 from "path";
3209
+ import * as fs10 from "fs";
2923
3210
  function getStagedFiles(cwd) {
2924
3211
  try {
2925
3212
  const output = execSync4("git diff --cached --name-only", {
@@ -2933,7 +3220,7 @@ function getStagedFiles(cwd) {
2933
3220
  }
2934
3221
  function graphExists(projectPath) {
2935
3222
  try {
2936
- return fs9.existsSync(path23.join(projectPath, ".harness", "graph", "graph.json"));
3223
+ return fs10.existsSync(path24.join(projectPath, ".harness", "graph", "graph.json"));
2937
3224
  } catch {
2938
3225
  return false;
2939
3226
  }
@@ -2942,7 +3229,7 @@ function extractNodeName(id) {
2942
3229
  const parts = id.split(":");
2943
3230
  if (parts.length > 1) {
2944
3231
  const fullPath = parts.slice(1).join(":");
2945
- return path23.basename(fullPath);
3232
+ return path24.basename(fullPath);
2946
3233
  }
2947
3234
  return id;
2948
3235
  }
@@ -3097,7 +3384,7 @@ function formatImpactOutput(stagedFiles, acc, options) {
3097
3384
  return options.detailed ? formatDetailed(stagedFiles.length, merged, acc.aggregateCounts) : formatCompact(stagedFiles.length, merged, acc.aggregateCounts);
3098
3385
  }
3099
3386
  async function runImpactPreview(options) {
3100
- const projectPath = path23.resolve(options.path ?? process.cwd());
3387
+ const projectPath = path24.resolve(options.path ?? process.cwd());
3101
3388
  const stagedFiles = getStagedFiles(projectPath);
3102
3389
  if (stagedFiles.length === 0) return "Impact Preview: no staged changes";
3103
3390
  if (!graphExists(projectPath)) {
@@ -3115,7 +3402,7 @@ async function runImpactPreview(options) {
3115
3402
  return formatImpactOutput(stagedFiles, acc, options);
3116
3403
  }
3117
3404
  function createImpactPreviewCommand() {
3118
- const command = new Command28("impact-preview").description("Show blast radius of staged changes using the knowledge graph").option("--detailed", "Show all affected files instead of top items").option("--per-file", "Show impact per staged file instead of aggregate").option("--path <dir>", "Project root (default: cwd)").action(async (opts) => {
3405
+ const command = new Command30("impact-preview").description("Show blast radius of staged changes using the knowledge graph").option("--detailed", "Show all affected files instead of top items").option("--per-file", "Show impact per staged file instead of aggregate").option("--path <dir>", "Project root (default: cwd)").action(async (opts) => {
3119
3406
  const output = await runImpactPreview({
3120
3407
  detailed: opts.detailed,
3121
3408
  perFile: opts.perFile,
@@ -3128,28 +3415,28 @@ function createImpactPreviewCommand() {
3128
3415
  }
3129
3416
 
3130
3417
  // src/commands/init.ts
3131
- import { Command as Command30 } from "commander";
3418
+ import { Command as Command32 } from "commander";
3132
3419
  import chalk3 from "chalk";
3133
- import * as fs12 from "fs";
3134
- import * as path26 from "path";
3420
+ import * as fs13 from "fs";
3421
+ import * as path27 from "path";
3135
3422
 
3136
3423
  // src/commands/setup-mcp.ts
3137
- import { Command as Command29 } from "commander";
3138
- import * as fs11 from "fs";
3139
- import * as path25 from "path";
3424
+ import { Command as Command31 } from "commander";
3425
+ import * as fs12 from "fs";
3426
+ import * as path26 from "path";
3140
3427
  import * as os2 from "os";
3141
3428
  import chalk2 from "chalk";
3142
3429
  import * as clack from "@clack/prompts";
3143
3430
 
3144
3431
  // src/integrations/toml.ts
3145
- import * as fs10 from "fs";
3146
- import * as path24 from "path";
3432
+ import * as fs11 from "fs";
3433
+ import * as path25 from "path";
3147
3434
  function writeTomlMcpEntry(filePath, name, entry) {
3148
- const dir = path24.dirname(filePath);
3149
- if (!fs10.existsSync(dir)) {
3150
- fs10.mkdirSync(dir, { recursive: true });
3435
+ const dir = path25.dirname(filePath);
3436
+ if (!fs11.existsSync(dir)) {
3437
+ fs11.mkdirSync(dir, { recursive: true });
3151
3438
  }
3152
- const existing = fs10.existsSync(filePath) ? fs10.readFileSync(filePath, "utf-8") : "";
3439
+ const existing = fs11.existsSync(filePath) ? fs11.readFileSync(filePath, "utf-8") : "";
3153
3440
  const blockHeader = `[mcp_servers.${name}]`;
3154
3441
  const newBlock = serializeTomlMcpBlock(name, entry);
3155
3442
  let updated;
@@ -3160,8 +3447,8 @@ function writeTomlMcpEntry(filePath, name, entry) {
3160
3447
  updated = existing + separator + newBlock;
3161
3448
  }
3162
3449
  const tmp = filePath + ".tmp";
3163
- fs10.writeFileSync(tmp, updated);
3164
- fs10.renameSync(tmp, filePath);
3450
+ fs11.writeFileSync(tmp, updated);
3451
+ fs11.renameSync(tmp, filePath);
3165
3452
  }
3166
3453
  function serializeTomlMcpBlock(name, entry) {
3167
3454
  const lines = [`[mcp_servers.${name}]`];
@@ -3288,7 +3575,8 @@ var ALL_MCP_TOOLS = [
3288
3575
  "predict_failures",
3289
3576
  "recommend_skills",
3290
3577
  "compute_blast_radius",
3291
- "dispatch_skills"
3578
+ "dispatch_skills",
3579
+ "compact"
3292
3580
  ];
3293
3581
  async function runCursorToolPicker() {
3294
3582
  try {
@@ -3316,20 +3604,20 @@ function writeCursorMcpEntryWithTools(configPath, tools) {
3316
3604
  });
3317
3605
  }
3318
3606
  function readJsonFile(filePath) {
3319
- if (!fs11.existsSync(filePath)) return null;
3607
+ if (!fs12.existsSync(filePath)) return null;
3320
3608
  try {
3321
- return JSON.parse(fs11.readFileSync(filePath, "utf-8"));
3609
+ return JSON.parse(fs12.readFileSync(filePath, "utf-8"));
3322
3610
  } catch {
3323
- fs11.copyFileSync(filePath, filePath + ".bak");
3611
+ fs12.copyFileSync(filePath, filePath + ".bak");
3324
3612
  return null;
3325
3613
  }
3326
3614
  }
3327
3615
  function writeJsonFile(filePath, data) {
3328
- const dir = path25.dirname(filePath);
3329
- if (!fs11.existsSync(dir)) {
3330
- fs11.mkdirSync(dir, { recursive: true });
3616
+ const dir = path26.dirname(filePath);
3617
+ if (!fs12.existsSync(dir)) {
3618
+ fs12.mkdirSync(dir, { recursive: true });
3331
3619
  }
3332
- fs11.writeFileSync(filePath, JSON.stringify(data, null, 2) + "\n");
3620
+ fs12.writeFileSync(filePath, JSON.stringify(data, null, 2) + "\n");
3333
3621
  }
3334
3622
  function configureMcpServer(configPath) {
3335
3623
  const config = readJsonFile(configPath) ?? {};
@@ -3344,7 +3632,7 @@ function configureMcpServer(configPath) {
3344
3632
  return true;
3345
3633
  }
3346
3634
  function addGeminiTrustedFolder(cwd) {
3347
- const trustedPath = path25.join(os2.homedir(), ".gemini", "trustedFolders.json");
3635
+ const trustedPath = path26.join(os2.homedir(), ".gemini", "trustedFolders.json");
3348
3636
  const folders = readJsonFile(trustedPath) ?? {};
3349
3637
  if (folders[cwd] === "TRUST_FOLDER") {
3350
3638
  return false;
@@ -3358,7 +3646,7 @@ function setupMcp(cwd, client) {
3358
3646
  const skipped = [];
3359
3647
  let trustedFolder = false;
3360
3648
  if (client === "all" || client === "claude") {
3361
- const configPath = path25.join(cwd, ".mcp.json");
3649
+ const configPath = path26.join(cwd, ".mcp.json");
3362
3650
  if (configureMcpServer(configPath)) {
3363
3651
  configured.push("Claude Code");
3364
3652
  } else {
@@ -3366,7 +3654,7 @@ function setupMcp(cwd, client) {
3366
3654
  }
3367
3655
  }
3368
3656
  if (client === "all" || client === "gemini") {
3369
- const configPath = path25.join(cwd, ".gemini", "settings.json");
3657
+ const configPath = path26.join(cwd, ".gemini", "settings.json");
3370
3658
  if (configureMcpServer(configPath)) {
3371
3659
  configured.push("Gemini CLI");
3372
3660
  } else {
@@ -3375,10 +3663,10 @@ function setupMcp(cwd, client) {
3375
3663
  trustedFolder = addGeminiTrustedFolder(cwd);
3376
3664
  }
3377
3665
  if (client === "all" || client === "codex") {
3378
- const configPath = path25.join(cwd, ".codex", "config.toml");
3666
+ const configPath = path26.join(cwd, ".codex", "config.toml");
3379
3667
  const alreadyConfigured = (() => {
3380
- if (!fs11.existsSync(configPath)) return false;
3381
- const content = fs11.readFileSync(configPath, "utf-8");
3668
+ if (!fs12.existsSync(configPath)) return false;
3669
+ const content = fs12.readFileSync(configPath, "utf-8");
3382
3670
  return content.includes("[mcp_servers.harness]");
3383
3671
  })();
3384
3672
  if (alreadyConfigured) {
@@ -3393,7 +3681,7 @@ function setupMcp(cwd, client) {
3393
3681
  }
3394
3682
  }
3395
3683
  if (client === "all" || client === "cursor") {
3396
- const configPath = path25.join(cwd, ".cursor", "mcp.json");
3684
+ const configPath = path26.join(cwd, ".cursor", "mcp.json");
3397
3685
  const existing = readJsonFile(configPath);
3398
3686
  if (existing?.mcpServers?.["harness"]) {
3399
3687
  skipped.push("Cursor");
@@ -3407,7 +3695,7 @@ function setupMcp(cwd, client) {
3407
3695
  async function resolveCursorWithPicker(cwd, pick) {
3408
3696
  const configured = [];
3409
3697
  const skipped = [];
3410
- const cursorConfigPath = path25.join(cwd, ".cursor", "mcp.json");
3698
+ const cursorConfigPath = path26.join(cwd, ".cursor", "mcp.json");
3411
3699
  const existing = readJsonFile(cursorConfigPath);
3412
3700
  if (existing?.mcpServers?.["harness"] && !pick) {
3413
3701
  skipped.push("Cursor");
@@ -3451,7 +3739,7 @@ function printMcpResult(configured, skipped, trustedFolder) {
3451
3739
  console.log("");
3452
3740
  }
3453
3741
  function createSetupMcpCommand() {
3454
- return new Command29("setup-mcp").description("Configure MCP server for AI agent integration").option("--client <client>", "Client to configure (claude, gemini, codex, cursor, all)", "all").option("--pick", "Launch interactive tool picker (Cursor only)").option("--yes", "Bypass interactive picker and use curated 25-tool set (Cursor only)").action(async (opts, cmd) => {
3742
+ return new Command31("setup-mcp").description("Configure MCP server for AI agent integration").option("--client <client>", "Client to configure (claude, gemini, codex, cursor, all)", "all").option("--pick", "Launch interactive tool picker (Cursor only)").option("--yes", "Bypass interactive picker and use curated 25-tool set (Cursor only)").action(async (opts, cmd) => {
3455
3743
  const globalOpts = cmd.optsWithGlobals();
3456
3744
  const cwd = process.cwd();
3457
3745
  let configured;
@@ -3478,12 +3766,12 @@ function loadEngineAndTemplates(_options) {
3478
3766
  }
3479
3767
  function resolveInitDefaults(options) {
3480
3768
  const cwd = options.cwd ?? process.cwd();
3481
- return { cwd, name: options.name ?? path26.basename(cwd), force: options.force ?? false };
3769
+ return { cwd, name: options.name ?? path27.basename(cwd), force: options.force ?? false };
3482
3770
  }
3483
3771
  async function runInit(options) {
3484
3772
  const { cwd, name, force } = resolveInitDefaults(options);
3485
- const configPath = path26.join(cwd, "harness.config.json");
3486
- if (!force && fs12.existsSync(configPath)) {
3773
+ const configPath = path27.join(cwd, "harness.config.json");
3774
+ if (!force && fs13.existsSync(configPath)) {
3487
3775
  return Err(
3488
3776
  new CLIError("Project already initialized. Use --force to overwrite.", ExitCode.ERROR)
3489
3777
  );
@@ -3549,6 +3837,7 @@ function scaffoldProject(engine, ctx) {
3549
3837
  }
3550
3838
  persistToolingConfig(cwd, resolveResult.value, options.framework);
3551
3839
  appendFrameworkAgents(cwd, options.framework, language);
3840
+ ensureHarnessGitignore(cwd);
3552
3841
  return Ok({
3553
3842
  filesCreated: writeResult.value.written,
3554
3843
  skippedConfigs: writeResult.value.skippedConfigs
@@ -3590,7 +3879,7 @@ async function runInitAction2(opts) {
3590
3879
  process.exit(ExitCode.SUCCESS);
3591
3880
  }
3592
3881
  function createInitCommand3() {
3593
- const command = new Command30("init").description("Initialize a new harness-engineering project").option("-n, --name <name>", "Project name").option("-l, --level <level>", "Adoption level (basic, intermediate, advanced)", "basic").option("--framework <framework>", "Framework overlay (nextjs)").option("--language <language>", "Target language (typescript, python, go, rust, java)").option("-f, --force", "Overwrite existing files").option("-y, --yes", "Use defaults without prompting").action(async (opts, cmd) => {
3882
+ const command = new Command32("init").description("Initialize a new harness-engineering project").option("-n, --name <name>", "Project name").option("-l, --level <level>", "Adoption level (basic, intermediate, advanced)", "basic").option("--framework <framework>", "Framework overlay (nextjs)").option("--language <language>", "Target language (typescript, python, go, rust, java)").option("-f, --force", "Overwrite existing files").option("-y, --yes", "Use defaults without prompting").action(async (opts, cmd) => {
3594
3883
  const globalOpts = cmd.optsWithGlobals();
3595
3884
  await runInitAction2({
3596
3885
  name: opts.name,
@@ -3605,16 +3894,16 @@ function createInitCommand3() {
3605
3894
  }
3606
3895
 
3607
3896
  // src/commands/install.ts
3608
- import * as fs17 from "fs";
3897
+ import * as fs18 from "fs";
3609
3898
  import * as os5 from "os";
3610
- import * as path31 from "path";
3899
+ import * as path32 from "path";
3611
3900
  import { execFileSync as execFileSync3 } from "child_process";
3612
- import { Command as Command31 } from "commander";
3901
+ import { Command as Command33 } from "commander";
3613
3902
  import { parse as yamlParse } from "yaml";
3614
3903
 
3615
3904
  // src/registry/npm-client.ts
3616
- import * as fs13 from "fs";
3617
- import * as path27 from "path";
3905
+ import * as fs14 from "fs";
3906
+ import * as path28 from "path";
3618
3907
  import * as os3 from "os";
3619
3908
  var NPM_REGISTRY = "https://registry.npmjs.org";
3620
3909
  var FETCH_TIMEOUT_MS = 3e4;
@@ -3637,10 +3926,10 @@ function extractSkillName(packageName) {
3637
3926
  function readNpmrcToken(registryUrl) {
3638
3927
  const { hostname, pathname } = new URL(registryUrl);
3639
3928
  const registryPath = `//${hostname}${pathname.replace(/\/$/, "")}/:_authToken=`;
3640
- const candidates = [path27.join(process.cwd(), ".npmrc"), path27.join(os3.homedir(), ".npmrc")];
3929
+ const candidates = [path28.join(process.cwd(), ".npmrc"), path28.join(os3.homedir(), ".npmrc")];
3641
3930
  for (const npmrcPath of candidates) {
3642
3931
  try {
3643
- const content = fs13.readFileSync(npmrcPath, "utf-8");
3932
+ const content = fs14.readFileSync(npmrcPath, "utf-8");
3644
3933
  for (const line of content.split("\n")) {
3645
3934
  const trimmed = line.trim();
3646
3935
  if (trimmed.startsWith(registryPath)) {
@@ -3735,19 +4024,19 @@ async function searchNpmRegistry(query, registryUrl) {
3735
4024
  }
3736
4025
 
3737
4026
  // src/registry/tarball.ts
3738
- import * as fs14 from "fs";
3739
- import * as path28 from "path";
4027
+ import * as fs15 from "fs";
4028
+ import * as path29 from "path";
3740
4029
  import * as os4 from "os";
3741
4030
  import { execFileSync as execFileSync2 } from "child_process";
3742
4031
  function extractTarball(tarballBuffer) {
3743
- const tmpDir = fs14.mkdtempSync(path28.join(os4.tmpdir(), "harness-skill-install-"));
3744
- const tarballPath = path28.join(tmpDir, "package.tgz");
4032
+ const tmpDir = fs15.mkdtempSync(path29.join(os4.tmpdir(), "harness-skill-install-"));
4033
+ const tarballPath = path29.join(tmpDir, "package.tgz");
3745
4034
  try {
3746
- fs14.writeFileSync(tarballPath, tarballBuffer);
4035
+ fs15.writeFileSync(tarballPath, tarballBuffer);
3747
4036
  execFileSync2("tar", ["-xzf", tarballPath, "-C", tmpDir], {
3748
4037
  timeout: 3e4
3749
4038
  });
3750
- fs14.unlinkSync(tarballPath);
4039
+ fs15.unlinkSync(tarballPath);
3751
4040
  } catch (err) {
3752
4041
  cleanupTempDir(tmpDir);
3753
4042
  throw new Error(
@@ -3758,37 +4047,37 @@ function extractTarball(tarballBuffer) {
3758
4047
  return tmpDir;
3759
4048
  }
3760
4049
  function placeSkillContent(extractedPkgDir, communityBaseDir, skillName, platforms) {
3761
- const files = fs14.readdirSync(extractedPkgDir);
4050
+ const files = fs15.readdirSync(extractedPkgDir);
3762
4051
  for (const platform of platforms) {
3763
- const targetDir = path28.join(communityBaseDir, platform, skillName);
3764
- if (fs14.existsSync(targetDir)) {
3765
- fs14.rmSync(targetDir, { recursive: true, force: true });
4052
+ const targetDir = path29.join(communityBaseDir, platform, skillName);
4053
+ if (fs15.existsSync(targetDir)) {
4054
+ fs15.rmSync(targetDir, { recursive: true, force: true });
3766
4055
  }
3767
- fs14.mkdirSync(targetDir, { recursive: true });
4056
+ fs15.mkdirSync(targetDir, { recursive: true });
3768
4057
  for (const file of files) {
3769
4058
  if (file === "package.json" || file === "node_modules") continue;
3770
- const srcPath = path28.join(extractedPkgDir, file);
3771
- const destPath = path28.join(targetDir, file);
3772
- const stat = fs14.statSync(srcPath);
4059
+ const srcPath = path29.join(extractedPkgDir, file);
4060
+ const destPath = path29.join(targetDir, file);
4061
+ const stat = fs15.statSync(srcPath);
3773
4062
  if (stat.isDirectory()) {
3774
- fs14.cpSync(srcPath, destPath, { recursive: true });
4063
+ fs15.cpSync(srcPath, destPath, { recursive: true });
3775
4064
  } else {
3776
- fs14.copyFileSync(srcPath, destPath);
4065
+ fs15.copyFileSync(srcPath, destPath);
3777
4066
  }
3778
4067
  }
3779
4068
  }
3780
4069
  }
3781
4070
  function removeSkillContent(communityBaseDir, skillName, platforms) {
3782
4071
  for (const platform of platforms) {
3783
- const targetDir = path28.join(communityBaseDir, platform, skillName);
3784
- if (fs14.existsSync(targetDir)) {
3785
- fs14.rmSync(targetDir, { recursive: true, force: true });
4072
+ const targetDir = path29.join(communityBaseDir, platform, skillName);
4073
+ if (fs15.existsSync(targetDir)) {
4074
+ fs15.rmSync(targetDir, { recursive: true, force: true });
3786
4075
  }
3787
4076
  }
3788
4077
  }
3789
4078
  function cleanupTempDir(dirPath) {
3790
4079
  try {
3791
- fs14.rmSync(dirPath, { recursive: true, force: true });
4080
+ fs15.rmSync(dirPath, { recursive: true, force: true });
3792
4081
  } catch {
3793
4082
  }
3794
4083
  }
@@ -3830,8 +4119,8 @@ function findDependentsOf(lockfile, targetPackageName) {
3830
4119
  }
3831
4120
 
3832
4121
  // src/registry/lockfile.ts
3833
- import * as fs15 from "fs";
3834
- import * as path29 from "path";
4122
+ import * as fs16 from "fs";
4123
+ import * as path30 from "path";
3835
4124
  function createEmptyLockfile() {
3836
4125
  return { version: 1, skills: {} };
3837
4126
  }
@@ -3851,10 +4140,10 @@ function sortedStringify(obj) {
3851
4140
  );
3852
4141
  }
3853
4142
  function readLockfile2(filePath) {
3854
- if (!fs15.existsSync(filePath)) {
4143
+ if (!fs16.existsSync(filePath)) {
3855
4144
  return createEmptyLockfile();
3856
4145
  }
3857
- const raw = fs15.readFileSync(filePath, "utf-8");
4146
+ const raw = fs16.readFileSync(filePath, "utf-8");
3858
4147
  let parsed;
3859
4148
  try {
3860
4149
  parsed = JSON.parse(raw);
@@ -3871,9 +4160,9 @@ function readLockfile2(filePath) {
3871
4160
  return parsed;
3872
4161
  }
3873
4162
  function writeLockfile2(filePath, lockfile) {
3874
- const dir = path29.dirname(filePath);
3875
- fs15.mkdirSync(dir, { recursive: true });
3876
- fs15.writeFileSync(filePath, sortedStringify(lockfile) + "\n", "utf-8");
4163
+ const dir = path30.dirname(filePath);
4164
+ fs16.mkdirSync(dir, { recursive: true });
4165
+ fs16.writeFileSync(filePath, sortedStringify(lockfile) + "\n", "utf-8");
3877
4166
  }
3878
4167
  function updateLockfileEntry(lockfile, name, entry) {
3879
4168
  return {
@@ -3896,17 +4185,17 @@ function removeLockfileEntry(lockfile, name) {
3896
4185
  }
3897
4186
 
3898
4187
  // src/registry/bundled-skills.ts
3899
- import * as fs16 from "fs";
3900
- import * as path30 from "path";
4188
+ import * as fs17 from "fs";
4189
+ import * as path31 from "path";
3901
4190
  function getBundledSkillNames(bundledSkillsDir) {
3902
- if (!fs16.existsSync(bundledSkillsDir)) {
4191
+ if (!fs17.existsSync(bundledSkillsDir)) {
3903
4192
  return /* @__PURE__ */ new Set();
3904
4193
  }
3905
- const entries = fs16.readdirSync(bundledSkillsDir);
4194
+ const entries = fs17.readdirSync(bundledSkillsDir);
3906
4195
  const names = /* @__PURE__ */ new Set();
3907
4196
  for (const entry of entries) {
3908
4197
  try {
3909
- const stat = fs16.statSync(path30.join(bundledSkillsDir, String(entry)));
4198
+ const stat = fs17.statSync(path31.join(bundledSkillsDir, String(entry)));
3910
4199
  if (stat.isDirectory()) {
3911
4200
  names.add(String(entry));
3912
4201
  }
@@ -3933,12 +4222,12 @@ function validateSkillYaml(parsed) {
3933
4222
  function resolveCommunityBase(global) {
3934
4223
  if (global) {
3935
4224
  const communityBase2 = resolveGlobalCommunityBaseDir();
3936
- return { communityBase: communityBase2, lockfilePath: path31.join(communityBase2, "skills-lock.json") };
4225
+ return { communityBase: communityBase2, lockfilePath: path32.join(communityBase2, "skills-lock.json") };
3937
4226
  }
3938
4227
  const globalDir = resolveGlobalSkillsDir();
3939
- const skillsDir = path31.dirname(globalDir);
3940
- const communityBase = path31.join(skillsDir, "community");
3941
- return { communityBase, lockfilePath: path31.join(communityBase, "skills-lock.json") };
4228
+ const skillsDir = path32.dirname(globalDir);
4229
+ const communityBase = path32.join(skillsDir, "community");
4230
+ return { communityBase, lockfilePath: path32.join(communityBase, "skills-lock.json") };
3942
4231
  }
3943
4232
  function parseGitHubRef(from) {
3944
4233
  const ghPrefix = from.match(/^github:([^/]+)\/([^#]+?)(?:#(.+))?$/);
@@ -3954,7 +4243,7 @@ function parseGitHubRef(from) {
3954
4243
  return null;
3955
4244
  }
3956
4245
  function cloneGitHubRepo(owner, repo, ref) {
3957
- const tmpDir = fs17.mkdtempSync(path31.join(os5.tmpdir(), "harness-gh-install-"));
4246
+ const tmpDir = fs18.mkdtempSync(path32.join(os5.tmpdir(), "harness-gh-install-"));
3958
4247
  const url = `https://github.com/${owner}/${repo}.git`;
3959
4248
  try {
3960
4249
  const cloneArgs = ["clone", "--depth", "1"];
@@ -3975,43 +4264,43 @@ function discoverSkillDirs(rootDir) {
3975
4264
  const skillDirs = [];
3976
4265
  function scan(dir, depth) {
3977
4266
  if (depth > 3) return;
3978
- if (!fs17.existsSync(dir)) return;
3979
- if (fs17.existsSync(path31.join(dir, "skill.yaml"))) {
4267
+ if (!fs18.existsSync(dir)) return;
4268
+ if (fs18.existsSync(path32.join(dir, "skill.yaml"))) {
3980
4269
  skillDirs.push(dir);
3981
4270
  return;
3982
4271
  }
3983
- const entries = fs17.readdirSync(dir, { withFileTypes: true });
4272
+ const entries = fs18.readdirSync(dir, { withFileTypes: true });
3984
4273
  for (const entry of entries) {
3985
4274
  if (!entry.isDirectory()) continue;
3986
4275
  if (entry.name.startsWith(".") || entry.name === "node_modules") continue;
3987
- scan(path31.join(dir, entry.name), depth + 1);
4276
+ scan(path32.join(dir, entry.name), depth + 1);
3988
4277
  }
3989
4278
  }
3990
4279
  scan(rootDir, 0);
3991
4280
  return skillDirs;
3992
4281
  }
3993
4282
  function resolveLocalPkgDir(fromPath) {
3994
- const resolvedPath = path31.resolve(fromPath);
3995
- if (!fs17.existsSync(resolvedPath)) {
4283
+ const resolvedPath = path32.resolve(fromPath);
4284
+ if (!fs18.existsSync(resolvedPath)) {
3996
4285
  throw new Error(`--from path does not exist: ${resolvedPath}`);
3997
4286
  }
3998
- const stat = fs17.statSync(resolvedPath);
4287
+ const stat = fs18.statSync(resolvedPath);
3999
4288
  if (stat.isDirectory()) {
4000
4289
  return { pkgDir: resolvedPath, extractDir: null };
4001
4290
  }
4002
4291
  if (resolvedPath.endsWith(".tgz") || resolvedPath.endsWith(".tar.gz")) {
4003
- const tarballBuffer = fs17.readFileSync(resolvedPath);
4292
+ const tarballBuffer = fs18.readFileSync(resolvedPath);
4004
4293
  const extractDir = extractTarball(tarballBuffer);
4005
- return { pkgDir: path31.join(extractDir, "package"), extractDir };
4294
+ return { pkgDir: path32.join(extractDir, "package"), extractDir };
4006
4295
  }
4007
4296
  throw new Error(`--from path must be a directory or .tgz file. Got: ${resolvedPath}`);
4008
4297
  }
4009
4298
  function installSkillDir(pkgDir, resolvedPath, options) {
4010
- const skillYamlPath = path31.join(pkgDir, "skill.yaml");
4011
- if (!fs17.existsSync(skillYamlPath)) {
4299
+ const skillYamlPath = path32.join(pkgDir, "skill.yaml");
4300
+ if (!fs18.existsSync(skillYamlPath)) {
4012
4301
  throw new Error(`No skill.yaml found at ${skillYamlPath}`);
4013
4302
  }
4014
- const skillYaml = validateSkillYaml(yamlParse(fs17.readFileSync(skillYamlPath, "utf-8")));
4303
+ const skillYaml = validateSkillYaml(yamlParse(fs18.readFileSync(skillYamlPath, "utf-8")));
4015
4304
  const shortName = skillYaml.name;
4016
4305
  const { communityBase, lockfilePath } = resolveCommunityBase(options.global ?? false);
4017
4306
  if (!options.global) {
@@ -4039,7 +4328,7 @@ function installSkillDir(pkgDir, resolvedPath, options) {
4039
4328
  async function runLocalInstall(fromPath, options) {
4040
4329
  const { pkgDir, extractDir } = resolveLocalPkgDir(fromPath);
4041
4330
  try {
4042
- return installSkillDir(pkgDir, path31.resolve(fromPath), options);
4331
+ return installSkillDir(pkgDir, path32.resolve(fromPath), options);
4043
4332
  } finally {
4044
4333
  if (extractDir) cleanupTempDir(extractDir);
4045
4334
  }
@@ -4082,8 +4371,8 @@ async function runInstall(skillName, options) {
4082
4371
  version: installed.map((r) => r.version).join(", ")
4083
4372
  };
4084
4373
  }
4085
- const resolvedFrom = path31.resolve(options.from);
4086
- if (fs17.existsSync(resolvedFrom) && fs17.statSync(resolvedFrom).isDirectory() && !fs17.existsSync(path31.join(resolvedFrom, "skill.yaml"))) {
4374
+ const resolvedFrom = path32.resolve(options.from);
4375
+ if (fs18.existsSync(resolvedFrom) && fs18.statSync(resolvedFrom).isDirectory() && !fs18.existsSync(path32.join(resolvedFrom, "skill.yaml"))) {
4087
4376
  const results = await runBulkInstall(resolvedFrom, options);
4088
4377
  const installed = results.filter((r) => r.installed);
4089
4378
  return {
@@ -4124,12 +4413,12 @@ async function runInstall(skillName, options) {
4124
4413
  const extractDir = extractTarball(tarballBuffer);
4125
4414
  let skillYaml;
4126
4415
  try {
4127
- const extractedPkgDir = path31.join(extractDir, "package");
4128
- const skillYamlPath = path31.join(extractedPkgDir, "skill.yaml");
4129
- if (!fs17.existsSync(skillYamlPath)) {
4416
+ const extractedPkgDir = path32.join(extractDir, "package");
4417
+ const skillYamlPath = path32.join(extractedPkgDir, "skill.yaml");
4418
+ if (!fs18.existsSync(skillYamlPath)) {
4130
4419
  throw new Error(`contains invalid skill.yaml: file not found in package`);
4131
4420
  }
4132
- const rawYaml = fs17.readFileSync(skillYamlPath, "utf-8");
4421
+ const rawYaml = fs18.readFileSync(skillYamlPath, "utf-8");
4133
4422
  const parsed = yamlParse(rawYaml);
4134
4423
  skillYaml = validateSkillYaml(parsed);
4135
4424
  placeSkillContent(extractedPkgDir, communityBase, shortName, skillYaml.platforms);
@@ -4169,7 +4458,7 @@ async function runInstall(skillName, options) {
4169
4458
  return result;
4170
4459
  }
4171
4460
  function createInstallCommand() {
4172
- const cmd = new Command31("install");
4461
+ const cmd = new Command33("install");
4173
4462
  cmd.description("Install skills from npm registry, local directory, or GitHub repository").argument("<skill>", 'Skill name, @harness-skills/scoped package, or "." for bulk install').option("--version <range>", "Semver range or exact version to install").option("--force", "Force reinstall even if same version is already installed").option(
4174
4463
  "--from <source>",
4175
4464
  "Install from local path, directory, or GitHub (github:owner/repo, https://github.com/owner/repo)"
@@ -4187,6 +4476,12 @@ function createInstallCommand() {
4187
4476
  } else if (result.installed) {
4188
4477
  logger.success(`Installed ${result.name}@${result.version}`);
4189
4478
  }
4479
+ if (result.installed || result.upgraded) {
4480
+ const globalFlag = opts.global ? " --global --include-global" : "";
4481
+ logger.info(
4482
+ `Run \`harness generate-slash-commands${globalFlag}\` to register slash commands.`
4483
+ );
4484
+ }
4190
4485
  } catch (err) {
4191
4486
  logger.error(err instanceof Error ? err.message : String(err));
4192
4487
  process.exit(1);
@@ -4196,15 +4491,15 @@ function createInstallCommand() {
4196
4491
  }
4197
4492
 
4198
4493
  // src/commands/install-constraints.ts
4199
- import * as fs18 from "fs/promises";
4200
- import * as path32 from "path";
4201
- import { Command as Command32 } from "commander";
4494
+ import * as fs19 from "fs/promises";
4495
+ import * as path33 from "path";
4496
+ import { Command as Command34 } from "commander";
4202
4497
  import semver3 from "semver";
4203
4498
  async function runInstallConstraints(options) {
4204
4499
  const { source, configPath, lockfilePath } = options;
4205
4500
  let rawBundle;
4206
4501
  try {
4207
- rawBundle = await fs18.readFile(source, "utf-8");
4502
+ rawBundle = await fs19.readFile(source, "utf-8");
4208
4503
  } catch (err) {
4209
4504
  if (isNodeError(err) && err.code === "ENOENT") {
4210
4505
  return { ok: false, error: `Bundle file not found: ${source}` };
@@ -4247,7 +4542,7 @@ async function runInstallConstraints(options) {
4247
4542
  }
4248
4543
  let localConfig;
4249
4544
  try {
4250
- const raw = await fs18.readFile(configPath, "utf-8");
4545
+ const raw = await fs19.readFile(configPath, "utf-8");
4251
4546
  localConfig = JSON.parse(raw);
4252
4547
  } catch (err) {
4253
4548
  return {
@@ -4395,7 +4690,7 @@ function isNodeError(err) {
4395
4690
  return err instanceof Error && "code" in err;
4396
4691
  }
4397
4692
  function resolveConfigPath(opts) {
4398
- if (opts.config) return path32.resolve(opts.config);
4693
+ if (opts.config) return path33.resolve(opts.config);
4399
4694
  const found = findConfigFile();
4400
4695
  if (!found.ok) {
4401
4696
  logger.error(found.error.message);
@@ -4430,9 +4725,9 @@ function logInstallResult(val, opts) {
4430
4725
  }
4431
4726
  async function handleInstallConstraints(source, opts) {
4432
4727
  const configPath = resolveConfigPath(opts);
4433
- const projectRoot = path32.dirname(configPath);
4434
- const lockfilePath = path32.join(projectRoot, ".harness", "constraints.lock.json");
4435
- const resolvedSource = path32.resolve(source);
4728
+ const projectRoot = path33.dirname(configPath);
4729
+ const lockfilePath = path33.join(projectRoot, ".harness", "constraints.lock.json");
4730
+ const resolvedSource = path33.resolve(source);
4436
4731
  if (opts.forceLocal && opts.forcePackage) {
4437
4732
  logger.error("Cannot use both --force-local and --force-package.");
4438
4733
  process.exit(1);
@@ -4452,18 +4747,18 @@ async function handleInstallConstraints(source, opts) {
4452
4747
  logInstallResult(result.value, opts);
4453
4748
  }
4454
4749
  function createInstallConstraintsCommand() {
4455
- const cmd = new Command32("install-constraints");
4750
+ const cmd = new Command34("install-constraints");
4456
4751
  cmd.description("Install a constraints bundle into the local harness config").argument("<source>", "Path to a .harness-constraints.json bundle file").option("--force-local", "Resolve all conflicts by keeping local values").option("--force-package", "Resolve all conflicts by using package values").option("--dry-run", "Show what would change without writing files").option("-c, --config <path>", "Path to harness.config.json").action(handleInstallConstraints);
4457
4752
  return cmd;
4458
4753
  }
4459
4754
 
4460
4755
  // src/commands/integrations/index.ts
4461
- import { Command as Command37 } from "commander";
4756
+ import { Command as Command39 } from "commander";
4462
4757
 
4463
4758
  // src/commands/integrations/add.ts
4464
- import { Command as Command33 } from "commander";
4465
- import * as fs19 from "fs";
4466
- import * as path33 from "path";
4759
+ import { Command as Command35 } from "commander";
4760
+ import * as fs20 from "fs";
4761
+ import * as path34 from "path";
4467
4762
  import chalk4 from "chalk";
4468
4763
  function buildMcpEntry(def) {
4469
4764
  const entry = { command: def.mcpConfig.command };
@@ -4472,14 +4767,14 @@ function buildMcpEntry(def) {
4472
4767
  return entry;
4473
4768
  }
4474
4769
  function writeMcpEntries(cwd, defName, mcpEntry) {
4475
- writeMcpEntry(path33.join(cwd, ".mcp.json"), defName, mcpEntry);
4476
- const geminiDir = path33.join(cwd, ".gemini");
4477
- if (fs19.existsSync(geminiDir)) {
4478
- writeMcpEntry(path33.join(geminiDir, "settings.json"), defName, mcpEntry);
4770
+ writeMcpEntry(path34.join(cwd, ".mcp.json"), defName, mcpEntry);
4771
+ const geminiDir = path34.join(cwd, ".gemini");
4772
+ if (fs20.existsSync(geminiDir)) {
4773
+ writeMcpEntry(path34.join(geminiDir, "settings.json"), defName, mcpEntry);
4479
4774
  }
4480
4775
  }
4481
4776
  function updateIntegrationsConfig(cwd, defName) {
4482
- const configPath = path33.join(cwd, "harness.config.json");
4777
+ const configPath = path34.join(cwd, "harness.config.json");
4483
4778
  const integConfig = readIntegrationsConfig(configPath);
4484
4779
  if (!integConfig.enabled.includes(defName)) integConfig.enabled.push(defName);
4485
4780
  integConfig.dismissed = integConfig.dismissed.filter((d) => d !== defName);
@@ -4525,7 +4820,7 @@ function printAddSuccess(value) {
4525
4820
  }
4526
4821
  }
4527
4822
  function createAddIntegrationCommand() {
4528
- return new Command33("add").description("Enable an MCP integration").argument("<name>", "Integration name (e.g. perplexity, augment-code)").action(async (name, _opts, cmd) => {
4823
+ return new Command35("add").description("Enable an MCP integration").argument("<name>", "Integration name (e.g. perplexity, augment-code)").action(async (name, _opts, cmd) => {
4529
4824
  const globalOpts = cmd.optsWithGlobals();
4530
4825
  const result = addIntegration(process.cwd(), name);
4531
4826
  if (!result.ok) {
@@ -4539,8 +4834,8 @@ function createAddIntegrationCommand() {
4539
4834
  }
4540
4835
 
4541
4836
  // src/commands/integrations/list.ts
4542
- import { Command as Command34 } from "commander";
4543
- import * as path34 from "path";
4837
+ import { Command as Command36 } from "commander";
4838
+ import * as path35 from "path";
4544
4839
  import chalk5 from "chalk";
4545
4840
  function printTier0Integrations(tier0, mcpServers) {
4546
4841
  console.log(" Tier 0 (zero-config):");
@@ -4564,8 +4859,8 @@ function printTier1Integrations(tier1, mcpServers, dismissed) {
4564
4859
  }
4565
4860
  async function runListIntegrations(globalOpts) {
4566
4861
  const cwd = process.cwd();
4567
- const mcpConfig = readMcpConfig(path34.join(cwd, ".mcp.json"));
4568
- const integConfig = readIntegrationsConfig(path34.join(cwd, "harness.config.json"));
4862
+ const mcpConfig = readMcpConfig(path35.join(cwd, ".mcp.json"));
4863
+ const integConfig = readIntegrationsConfig(path35.join(cwd, "harness.config.json"));
4569
4864
  const mcpServers = mcpConfig.mcpServers ?? {};
4570
4865
  if (globalOpts.json) {
4571
4866
  const entries = INTEGRATION_REGISTRY.map((i) => ({
@@ -4596,13 +4891,13 @@ async function runListIntegrations(globalOpts) {
4596
4891
  process.exit(ExitCode.SUCCESS);
4597
4892
  }
4598
4893
  function createListIntegrationsCommand() {
4599
- return new Command34("list").description("Show all MCP integrations with status").action(async (_opts, cmd) => runListIntegrations(cmd.optsWithGlobals()));
4894
+ return new Command36("list").description("Show all MCP integrations with status").action(async (_opts, cmd) => runListIntegrations(cmd.optsWithGlobals()));
4600
4895
  }
4601
4896
 
4602
4897
  // src/commands/integrations/remove.ts
4603
- import { Command as Command35 } from "commander";
4604
- import * as fs20 from "fs";
4605
- import * as path35 from "path";
4898
+ import { Command as Command37 } from "commander";
4899
+ import * as fs21 from "fs";
4900
+ import * as path36 from "path";
4606
4901
  function removeIntegration(cwd, name) {
4607
4902
  const def = INTEGRATION_REGISTRY.find((i) => i.name === name);
4608
4903
  if (!def) {
@@ -4613,21 +4908,21 @@ function removeIntegration(cwd, name) {
4613
4908
  )
4614
4909
  );
4615
4910
  }
4616
- const mcpPath = path35.join(cwd, ".mcp.json");
4911
+ const mcpPath = path36.join(cwd, ".mcp.json");
4617
4912
  removeMcpEntry(mcpPath, def.name);
4618
- const geminiDir = path35.join(cwd, ".gemini");
4619
- if (fs20.existsSync(geminiDir)) {
4620
- const geminiPath = path35.join(geminiDir, "settings.json");
4913
+ const geminiDir = path36.join(cwd, ".gemini");
4914
+ if (fs21.existsSync(geminiDir)) {
4915
+ const geminiPath = path36.join(geminiDir, "settings.json");
4621
4916
  removeMcpEntry(geminiPath, def.name);
4622
4917
  }
4623
- const configPath = path35.join(cwd, "harness.config.json");
4918
+ const configPath = path36.join(cwd, "harness.config.json");
4624
4919
  const integConfig = readIntegrationsConfig(configPath);
4625
4920
  integConfig.enabled = integConfig.enabled.filter((e) => e !== def.name);
4626
4921
  writeIntegrationsConfig(configPath, integConfig);
4627
4922
  return Ok(def.displayName);
4628
4923
  }
4629
4924
  function createRemoveIntegrationCommand() {
4630
- return new Command35("remove").description("Remove an MCP integration").argument("<name>", "Integration name (e.g. perplexity, augment-code)").action(async (name, _opts, cmd) => {
4925
+ return new Command37("remove").description("Remove an MCP integration").argument("<name>", "Integration name (e.g. perplexity, augment-code)").action(async (name, _opts, cmd) => {
4631
4926
  const globalOpts = cmd.optsWithGlobals();
4632
4927
  const cwd = process.cwd();
4633
4928
  const result = removeIntegration(cwd, name);
@@ -4648,8 +4943,8 @@ function createRemoveIntegrationCommand() {
4648
4943
  }
4649
4944
 
4650
4945
  // src/commands/integrations/dismiss.ts
4651
- import { Command as Command36 } from "commander";
4652
- import * as path36 from "path";
4946
+ import { Command as Command38 } from "commander";
4947
+ import * as path37 from "path";
4653
4948
  function dismissIntegration(cwd, name) {
4654
4949
  const def = INTEGRATION_REGISTRY.find((i) => i.name === name);
4655
4950
  if (!def) {
@@ -4660,7 +4955,7 @@ function dismissIntegration(cwd, name) {
4660
4955
  )
4661
4956
  );
4662
4957
  }
4663
- const configPath = path36.join(cwd, "harness.config.json");
4958
+ const configPath = path37.join(cwd, "harness.config.json");
4664
4959
  const integConfig = readIntegrationsConfig(configPath);
4665
4960
  if (!integConfig.dismissed.includes(def.name)) {
4666
4961
  integConfig.dismissed.push(def.name);
@@ -4670,7 +4965,7 @@ function dismissIntegration(cwd, name) {
4670
4965
  return Ok(def.displayName);
4671
4966
  }
4672
4967
  function createDismissIntegrationCommand() {
4673
- return new Command36("dismiss").description("Suppress doctor recommendations for an integration").argument("<name>", "Integration name (e.g. perplexity, augment-code)").action(async (name, _opts, cmd) => {
4968
+ return new Command38("dismiss").description("Suppress doctor recommendations for an integration").argument("<name>", "Integration name (e.g. perplexity, augment-code)").action(async (name, _opts, cmd) => {
4674
4969
  const globalOpts = cmd.optsWithGlobals();
4675
4970
  const cwd = process.cwd();
4676
4971
  const result = dismissIntegration(cwd, name);
@@ -4694,7 +4989,7 @@ function createDismissIntegrationCommand() {
4694
4989
 
4695
4990
  // src/commands/integrations/index.ts
4696
4991
  function createIntegrationsCommand() {
4697
- const command = new Command37("integrations").description(
4992
+ const command = new Command39("integrations").description(
4698
4993
  "Manage MCP peer integrations (add, list, remove, dismiss)"
4699
4994
  );
4700
4995
  command.addCommand(createListIntegrationsCommand());
@@ -4705,13 +5000,13 @@ function createIntegrationsCommand() {
4705
5000
  }
4706
5001
 
4707
5002
  // src/commands/learnings/index.ts
4708
- import { Command as Command39 } from "commander";
5003
+ import { Command as Command41 } from "commander";
4709
5004
 
4710
5005
  // src/commands/learnings/prune.ts
4711
- import { Command as Command38 } from "commander";
4712
- import * as path37 from "path";
5006
+ import { Command as Command40 } from "commander";
5007
+ import * as path38 from "path";
4713
5008
  async function handlePrune(opts) {
4714
- const projectPath = path37.resolve(opts.path);
5009
+ const projectPath = path38.resolve(opts.path);
4715
5010
  const result = await pruneLearnings(projectPath, opts.stream);
4716
5011
  if (!result.ok) {
4717
5012
  logger.error(result.error.message);
@@ -4750,23 +5045,23 @@ function printPatternProposals(patterns) {
4750
5045
  );
4751
5046
  }
4752
5047
  function createPruneCommand() {
4753
- return new Command38("prune").description(
5048
+ return new Command40("prune").description(
4754
5049
  "Analyze global learnings for patterns, present improvement proposals, and archive old entries"
4755
5050
  ).option("--path <path>", "Project root path", ".").option("--stream <name>", "Target a specific stream").action(handlePrune);
4756
5051
  }
4757
5052
 
4758
5053
  // src/commands/learnings/index.ts
4759
5054
  function createLearningsCommand() {
4760
- const command = new Command39("learnings").description("Learnings management commands");
5055
+ const command = new Command41("learnings").description("Learnings management commands");
4761
5056
  command.addCommand(createPruneCommand());
4762
5057
  return command;
4763
5058
  }
4764
5059
 
4765
5060
  // src/commands/linter/index.ts
4766
- import { Command as Command42 } from "commander";
5061
+ import { Command as Command44 } from "commander";
4767
5062
 
4768
5063
  // src/commands/linter/generate.ts
4769
- import { Command as Command40 } from "commander";
5064
+ import { Command as Command42 } from "commander";
4770
5065
  function formatGenerateError(e) {
4771
5066
  switch (e.type) {
4772
5067
  case "parse":
@@ -4810,7 +5105,7 @@ function handleSuccess(result, useJson) {
4810
5105
  Generated ${result.rulesGenerated.length} rules to ${result.outputDir}`);
4811
5106
  }
4812
5107
  function createGenerateCommand2() {
4813
- return new Command40("generate").description("Generate ESLint rules from harness-linter.yml").option("-c, --config <path>", "Path to harness-linter.yml", "./harness-linter.yml").option("-o, --output <dir>", "Override output directory").option("--clean", "Remove existing files before generating").option("--dry-run", "Preview without writing files").option("--json", "Output as JSON").option("--verbose", "Show detailed output").action(async (options) => {
5108
+ return new Command42("generate").description("Generate ESLint rules from harness-linter.yml").option("-c, --config <path>", "Path to harness-linter.yml", "./harness-linter.yml").option("-o, --output <dir>", "Override output directory").option("--clean", "Remove existing files before generating").option("--dry-run", "Preview without writing files").option("--json", "Output as JSON").option("--verbose", "Show detailed output").action(async (options) => {
4814
5109
  try {
4815
5110
  if (options.verbose) logger.info(`Parsing config: ${options.config}`);
4816
5111
  const result = await generate({
@@ -4832,9 +5127,9 @@ function createGenerateCommand2() {
4832
5127
  }
4833
5128
 
4834
5129
  // src/commands/linter/validate.ts
4835
- import { Command as Command41 } from "commander";
5130
+ import { Command as Command43 } from "commander";
4836
5131
  function createValidateCommand() {
4837
- return new Command41("validate").description("Validate harness-linter.yml config").option("-c, --config <path>", "Path to harness-linter.yml", "./harness-linter.yml").option("--json", "Output as JSON").action(async (options) => {
5132
+ return new Command43("validate").description("Validate harness-linter.yml config").option("-c, --config <path>", "Path to harness-linter.yml", "./harness-linter.yml").option("--json", "Output as JSON").action(async (options) => {
4838
5133
  try {
4839
5134
  const result = await validate({ configPath: options.config });
4840
5135
  if (options.json) {
@@ -4853,7 +5148,7 @@ function createValidateCommand() {
4853
5148
 
4854
5149
  // src/commands/linter/index.ts
4855
5150
  function createLinterCommand() {
4856
- const linter = new Command42("linter").description(
5151
+ const linter = new Command44("linter").description(
4857
5152
  "Generate and validate ESLint rules from YAML config"
4858
5153
  );
4859
5154
  linter.addCommand(createGenerateCommand2());
@@ -4862,22 +5157,22 @@ function createLinterCommand() {
4862
5157
  }
4863
5158
 
4864
5159
  // src/commands/mcp.ts
4865
- import { Command as Command43 } from "commander";
5160
+ import { Command as Command45 } from "commander";
4866
5161
  function createMcpCommand() {
4867
- return new Command43("mcp").description("Start the MCP (Model Context Protocol) server on stdio").option("--tools <tools...>", "Only register the specified tools (used by Cursor integration)").action(async (opts) => {
4868
- const { startServer: startServer2 } = await import("./mcp-HZ6CRAZR.js");
5162
+ return new Command45("mcp").description("Start the MCP (Model Context Protocol) server on stdio").option("--tools <tools...>", "Only register the specified tools (used by Cursor integration)").action(async (opts) => {
5163
+ const { startServer: startServer2 } = await import("./mcp-JZG22CYT.js");
4869
5164
  await startServer2(opts.tools);
4870
5165
  });
4871
5166
  }
4872
5167
 
4873
5168
  // src/commands/orchestrator.ts
4874
- import { Command as Command44 } from "commander";
4875
- import * as path38 from "path";
5169
+ import { Command as Command46 } from "commander";
5170
+ import * as path39 from "path";
4876
5171
  import { Orchestrator, WorkflowLoader, launchTUI } from "@harness-engineering/orchestrator";
4877
5172
  function createOrchestratorCommand() {
4878
- const orchestrator = new Command44("orchestrator");
5173
+ const orchestrator = new Command46("orchestrator");
4879
5174
  orchestrator.command("run").description("Run the orchestrator daemon").option("-w, --workflow <path>", "Path to WORKFLOW.md", "WORKFLOW.md").action(async (opts) => {
4880
- const workflowPath = path38.resolve(process.cwd(), opts.workflow);
5175
+ const workflowPath = path39.resolve(process.cwd(), opts.workflow);
4881
5176
  const loader = new WorkflowLoader();
4882
5177
  const result = await loader.loadWorkflow(workflowPath);
4883
5178
  if (!result.ok) {
@@ -4901,13 +5196,13 @@ function createOrchestratorCommand() {
4901
5196
  }
4902
5197
 
4903
5198
  // src/commands/perf.ts
4904
- import { Command as Command45 } from "commander";
4905
- import * as path39 from "path";
5199
+ import { Command as Command47 } from "commander";
5200
+ import * as path40 from "path";
4906
5201
  function registerBenchCommand(perf) {
4907
5202
  perf.command("bench [glob]").description("Run benchmarks via vitest bench").action(async (glob, _opts, cmd) => {
4908
5203
  const globalOpts = cmd.optsWithGlobals();
4909
5204
  const cwd = process.cwd();
4910
- const { BenchmarkRunner } = await import("./dist-27IJJDWG.js");
5205
+ const { BenchmarkRunner } = await import("./dist-TZQUURSP.js");
4911
5206
  const runner = new BenchmarkRunner();
4912
5207
  const benchFiles = runner.discover(cwd, glob);
4913
5208
  if (benchFiles.length === 0) {
@@ -4971,7 +5266,7 @@ async function runBaselinesShow(globalOpts) {
4971
5266
  }
4972
5267
  async function runBaselinesUpdate(globalOpts) {
4973
5268
  const cwd = process.cwd();
4974
- const { BenchmarkRunner } = await import("./dist-27IJJDWG.js");
5269
+ const { BenchmarkRunner } = await import("./dist-TZQUURSP.js");
4975
5270
  const runner = new BenchmarkRunner();
4976
5271
  const manager = new BaselineManager(cwd);
4977
5272
  logger.info("Running benchmarks to update baselines...");
@@ -5012,9 +5307,9 @@ function registerReportCommand(perf) {
5012
5307
  perf.command("report").description("Full performance report with metrics, trends, and hotspots").action(async (_opts, cmd) => {
5013
5308
  const globalOpts = cmd.optsWithGlobals();
5014
5309
  const cwd = process.cwd();
5015
- const { EntropyAnalyzer: EntropyAnalyzer2 } = await import("./dist-27IJJDWG.js");
5310
+ const { EntropyAnalyzer: EntropyAnalyzer2 } = await import("./dist-TZQUURSP.js");
5016
5311
  const analyzer = new EntropyAnalyzer2({
5017
- rootDir: path39.resolve(cwd),
5312
+ rootDir: path40.resolve(cwd),
5018
5313
  analyze: { complexity: true, coupling: true }
5019
5314
  });
5020
5315
  const result = await analyzer.analyze();
@@ -5073,7 +5368,7 @@ function registerCriticalPathsCommand(perf) {
5073
5368
  });
5074
5369
  }
5075
5370
  function createPerfCommand() {
5076
- const perf = new Command45("perf").description("Performance benchmark and baseline management");
5371
+ const perf = new Command47("perf").description("Performance benchmark and baseline management");
5077
5372
  registerBenchCommand(perf);
5078
5373
  registerBaselinesCommands(perf);
5079
5374
  registerReportCommand(perf);
@@ -5082,10 +5377,10 @@ function createPerfCommand() {
5082
5377
  }
5083
5378
 
5084
5379
  // src/commands/persona/index.ts
5085
- import { Command as Command48 } from "commander";
5380
+ import { Command as Command50 } from "commander";
5086
5381
 
5087
5382
  // src/commands/persona/list.ts
5088
- import { Command as Command46 } from "commander";
5383
+ import { Command as Command48 } from "commander";
5089
5384
  function printPersonaList(personas) {
5090
5385
  if (personas.length === 0) {
5091
5386
  logger.info("No personas found.");
@@ -5099,7 +5394,7 @@ function printPersonaList(personas) {
5099
5394
  }
5100
5395
  }
5101
5396
  function createListCommand2() {
5102
- return new Command46("list").description("List available agent personas").action(async (_opts, cmd) => {
5397
+ return new Command48("list").description("List available agent personas").action(async (_opts, cmd) => {
5103
5398
  const globalOpts = cmd.optsWithGlobals();
5104
5399
  const personasDir = resolvePersonasDir();
5105
5400
  const result = listPersonas(personasDir);
@@ -5119,51 +5414,51 @@ function createListCommand2() {
5119
5414
  }
5120
5415
 
5121
5416
  // src/commands/persona/generate.ts
5122
- import { Command as Command47 } from "commander";
5123
- import * as fs21 from "fs";
5124
- import * as path40 from "path";
5417
+ import { Command as Command49 } from "commander";
5418
+ import * as fs22 from "fs";
5419
+ import * as path41 from "path";
5125
5420
  function generatePersonaArtifacts(persona, outputDir, only) {
5126
5421
  const slug = toKebabCase(persona.name);
5127
5422
  const generated = [];
5128
5423
  if (!only || only === "runtime") {
5129
5424
  const result = generateRuntime(persona);
5130
5425
  if (result.ok) {
5131
- const outPath = path40.join(outputDir, `${slug}.runtime.json`);
5132
- fs21.mkdirSync(path40.dirname(outPath), { recursive: true });
5133
- fs21.writeFileSync(outPath, result.value);
5426
+ const outPath = path41.join(outputDir, `${slug}.runtime.json`);
5427
+ fs22.mkdirSync(path41.dirname(outPath), { recursive: true });
5428
+ fs22.writeFileSync(outPath, result.value);
5134
5429
  generated.push(outPath);
5135
5430
  }
5136
5431
  }
5137
5432
  if (!only || only === "agents-md") {
5138
5433
  const result = generateAgentsMd(persona);
5139
5434
  if (result.ok) {
5140
- const outPath = path40.join(outputDir, `${slug}.agents.md`);
5141
- fs21.writeFileSync(outPath, result.value);
5435
+ const outPath = path41.join(outputDir, `${slug}.agents.md`);
5436
+ fs22.writeFileSync(outPath, result.value);
5142
5437
  generated.push(outPath);
5143
5438
  }
5144
5439
  }
5145
5440
  if (!only || only === "ci") {
5146
5441
  const result = generateCIWorkflow(persona, "github");
5147
5442
  if (result.ok) {
5148
- const outPath = path40.join(outputDir, ".github", "workflows", `${slug}.yml`);
5149
- fs21.mkdirSync(path40.dirname(outPath), { recursive: true });
5150
- fs21.writeFileSync(outPath, result.value);
5443
+ const outPath = path41.join(outputDir, ".github", "workflows", `${slug}.yml`);
5444
+ fs22.mkdirSync(path41.dirname(outPath), { recursive: true });
5445
+ fs22.writeFileSync(outPath, result.value);
5151
5446
  generated.push(outPath);
5152
5447
  }
5153
5448
  }
5154
5449
  return generated;
5155
5450
  }
5156
5451
  function createGenerateCommand3() {
5157
- return new Command47("generate").description("Generate artifacts from a persona config").argument("<name>", "Persona name (e.g., architecture-enforcer)").option("--output-dir <dir>", "Output directory", ".").option("--only <type>", "Generate only: ci, agents-md, runtime").action(async (name, opts, cmd) => {
5452
+ return new Command49("generate").description("Generate artifacts from a persona config").argument("<name>", "Persona name (e.g., architecture-enforcer)").option("--output-dir <dir>", "Output directory", ".").option("--only <type>", "Generate only: ci, agents-md, runtime").action(async (name, opts, cmd) => {
5158
5453
  const globalOpts = cmd.optsWithGlobals();
5159
- const personaResult = loadPersona(path40.join(resolvePersonasDir(), `${name}.yaml`));
5454
+ const personaResult = loadPersona(path41.join(resolvePersonasDir(), `${name}.yaml`));
5160
5455
  if (!personaResult.ok) {
5161
5456
  logger.error(personaResult.error.message);
5162
5457
  process.exit(ExitCode.ERROR);
5163
5458
  }
5164
5459
  const generated = generatePersonaArtifacts(
5165
5460
  personaResult.value,
5166
- path40.resolve(opts.outputDir),
5461
+ path41.resolve(opts.outputDir),
5167
5462
  opts.only
5168
5463
  );
5169
5464
  if (!globalOpts.quiet) {
@@ -5176,14 +5471,14 @@ function createGenerateCommand3() {
5176
5471
 
5177
5472
  // src/commands/persona/index.ts
5178
5473
  function createPersonaCommand() {
5179
- const command = new Command48("persona").description("Agent persona management commands");
5474
+ const command = new Command50("persona").description("Agent persona management commands");
5180
5475
  command.addCommand(createListCommand2());
5181
5476
  command.addCommand(createGenerateCommand3());
5182
5477
  return command;
5183
5478
  }
5184
5479
 
5185
5480
  // src/commands/predict.ts
5186
- import { Command as Command49 } from "commander";
5481
+ import { Command as Command51 } from "commander";
5187
5482
  import chalk6 from "chalk";
5188
5483
  var CATEGORY_ORDER = [
5189
5484
  "circular-deps",
@@ -5289,7 +5584,7 @@ function handlePredictError(err, mode) {
5289
5584
  process.exit(ExitCode.ERROR);
5290
5585
  }
5291
5586
  function createPredictCommand() {
5292
- const command = new Command49("predict").description("Predict which architectural constraints will break and when").option("--category <name>", "Filter to a single metric category").option("--no-roadmap", "Baseline only \u2014 skip roadmap spec impact").option("--horizon <weeks>", "Forecast horizon in weeks (default: 12)", "12").action(async (opts, cmd) => {
5587
+ const command = new Command51("predict").description("Predict which architectural constraints will break and when").option("--category <name>", "Filter to a single metric category").option("--no-roadmap", "Baseline only \u2014 skip roadmap spec impact").option("--horizon <weeks>", "Forecast horizon in weeks (default: 12)", "12").action(async (opts, cmd) => {
5293
5588
  const globalOpts = cmd.optsWithGlobals();
5294
5589
  const mode = globalOpts.json ? OutputMode.JSON : OutputMode.TEXT;
5295
5590
  try {
@@ -5312,7 +5607,7 @@ function createPredictCommand() {
5312
5607
  }
5313
5608
 
5314
5609
  // src/commands/recommend.ts
5315
- import { Command as Command50 } from "commander";
5610
+ import { Command as Command52 } from "commander";
5316
5611
  import chalk7 from "chalk";
5317
5612
  async function resolveSnapshot(cwd, noCache) {
5318
5613
  if (!noCache) {
@@ -5376,7 +5671,7 @@ function printRecommendations(result) {
5376
5671
  console.log("");
5377
5672
  }
5378
5673
  function createRecommendCommand() {
5379
- const command = new Command50("recommend").description("Recommend skills based on codebase health analysis").option("--no-cache", "Force fresh health snapshot").option("--top <n>", "Max recommendations (default 5)", "5").action(async (opts, cmd) => {
5674
+ const command = new Command52("recommend").description("Recommend skills based on codebase health analysis").option("--no-cache", "Force fresh health snapshot").option("--top <n>", "Max recommendations (default 5)", "5").action(async (opts, cmd) => {
5380
5675
  const globalOpts = cmd.optsWithGlobals();
5381
5676
  const mode = globalOpts.json ? OutputMode.JSON : OutputMode.TEXT;
5382
5677
  try {
@@ -5412,9 +5707,9 @@ function createRecommendCommand() {
5412
5707
  }
5413
5708
 
5414
5709
  // src/commands/scan-config.ts
5415
- import { Command as Command51 } from "commander";
5416
- import { existsSync as existsSync20, readFileSync as readFileSync11, writeFileSync as writeFileSync12 } from "fs";
5417
- import { join as join31, relative as relative2 } from "path";
5710
+ import { Command as Command53 } from "commander";
5711
+ import { existsSync as existsSync21, readFileSync as readFileSync11, writeFileSync as writeFileSync12 } from "fs";
5712
+ import { join as join32, relative as relative2 } from "path";
5418
5713
  var CONFIG_FILES = ["CLAUDE.md", "AGENTS.md", ".gemini/settings.json", "skill.yaml"];
5419
5714
  function stripHighSeverityPatterns(content, injectionFindings) {
5420
5715
  const highLines = /* @__PURE__ */ new Set();
@@ -5447,7 +5742,7 @@ function applyFix(filePath, targetDir, content, injectionFindings) {
5447
5742
  }
5448
5743
  }
5449
5744
  function scanSingleFile(filePath, targetDir, scanner, options) {
5450
- if (!existsSync20(filePath)) return null;
5745
+ if (!existsSync21(filePath)) return null;
5451
5746
  let content;
5452
5747
  try {
5453
5748
  content = readFileSync11(filePath, "utf8");
@@ -5471,7 +5766,7 @@ async function runScanConfig(targetDir, options) {
5471
5766
  const scanner = new SecurityScanner(parseSecurityConfig({}));
5472
5767
  const results = [];
5473
5768
  for (const configFile of CONFIG_FILES) {
5474
- const result = scanSingleFile(join31(targetDir, configFile), targetDir, scanner, options);
5769
+ const result = scanSingleFile(join32(targetDir, configFile), targetDir, scanner, options);
5475
5770
  if (result) results.push(result);
5476
5771
  }
5477
5772
  return { exitCode: computeScanExitCode(results), results };
@@ -5501,7 +5796,7 @@ function formatTextOutput(result) {
5501
5796
  }
5502
5797
  }
5503
5798
  function createScanConfigCommand() {
5504
- const command = new Command51("scan-config").description(
5799
+ const command = new Command53("scan-config").description(
5505
5800
  "Scan CLAUDE.md, AGENTS.md, .gemini/settings.json, and skill.yaml for prompt injection patterns"
5506
5801
  ).option("--path <dir>", "Target directory to scan (default: cwd)").option("--fix", "Strip high-severity patterns from files in-place").action(async (opts, cmd) => {
5507
5802
  const globalOpts = cmd.optsWithGlobals();
@@ -5518,24 +5813,24 @@ function createScanConfigCommand() {
5518
5813
  }
5519
5814
 
5520
5815
  // src/commands/setup.ts
5521
- import { Command as Command52 } from "commander";
5522
- import * as fs23 from "fs";
5816
+ import { Command as Command54 } from "commander";
5817
+ import * as fs24 from "fs";
5523
5818
  import * as os7 from "os";
5524
- import * as path42 from "path";
5819
+ import * as path43 from "path";
5525
5820
  import chalk8 from "chalk";
5526
5821
 
5527
5822
  // src/utils/first-run.ts
5528
- import * as fs22 from "fs";
5823
+ import * as fs23 from "fs";
5529
5824
  import * as os6 from "os";
5530
- import * as path41 from "path";
5531
- var HARNESS_DIR = path41.join(os6.homedir(), ".harness");
5532
- var MARKER_FILE = path41.join(HARNESS_DIR, ".setup-complete");
5825
+ import * as path42 from "path";
5826
+ var HARNESS_DIR = path42.join(os6.homedir(), ".harness");
5827
+ var MARKER_FILE = path42.join(HARNESS_DIR, ".setup-complete");
5533
5828
  function isFirstRun() {
5534
- return !fs22.existsSync(MARKER_FILE);
5829
+ return !fs23.existsSync(MARKER_FILE);
5535
5830
  }
5536
5831
  function markSetupComplete() {
5537
- fs22.mkdirSync(HARNESS_DIR, { recursive: true });
5538
- fs22.writeFileSync(MARKER_FILE, "", "utf-8");
5832
+ fs23.mkdirSync(HARNESS_DIR, { recursive: true });
5833
+ fs23.writeFileSync(MARKER_FILE, "", "utf-8");
5539
5834
  }
5540
5835
  function printFirstRunWelcome() {
5541
5836
  try {
@@ -5573,7 +5868,7 @@ function runSlashCommandGeneration() {
5573
5868
  }
5574
5869
  }
5575
5870
  function detectClient(dirName) {
5576
- return fs23.existsSync(path42.join(os7.homedir(), dirName));
5871
+ return fs24.existsSync(path43.join(os7.homedir(), dirName));
5577
5872
  }
5578
5873
  async function runMcpSetup(cwd) {
5579
5874
  const results = [];
@@ -5615,7 +5910,7 @@ function formatStep(result) {
5615
5910
  }
5616
5911
  function configureTier0Integrations(cwd) {
5617
5912
  try {
5618
- const mcpPath = path42.join(cwd, ".mcp.json");
5913
+ const mcpPath = path43.join(cwd, ".mcp.json");
5619
5914
  const config = readMcpConfig(mcpPath);
5620
5915
  const tier0 = INTEGRATION_REGISTRY.filter((i) => i.tier === 0);
5621
5916
  const added = [];
@@ -5624,9 +5919,9 @@ function configureTier0Integrations(cwd) {
5624
5919
  writeMcpEntry(mcpPath, integration.name, integration.mcpConfig);
5625
5920
  added.push(integration.displayName);
5626
5921
  }
5627
- const geminiDir = path42.join(cwd, ".gemini");
5628
- if (fs23.existsSync(geminiDir)) {
5629
- const geminiPath = path42.join(geminiDir, "settings.json");
5922
+ const geminiDir = path43.join(cwd, ".gemini");
5923
+ if (fs24.existsSync(geminiDir)) {
5924
+ const geminiPath = path43.join(geminiDir, "settings.json");
5630
5925
  const geminiConfig = readMcpConfig(geminiPath);
5631
5926
  for (const integration of tier0) {
5632
5927
  if (!geminiConfig.mcpServers[integration.name]) {
@@ -5666,7 +5961,7 @@ async function runSetup(cwd) {
5666
5961
  return { steps, success };
5667
5962
  }
5668
5963
  function createSetupCommand() {
5669
- return new Command52("setup").description("Configure harness environment: slash commands, MCP, and more").action(async () => {
5964
+ return new Command54("setup").description("Configure harness environment: slash commands, MCP, and more").action(async () => {
5670
5965
  const cwd = process.cwd();
5671
5966
  console.log("");
5672
5967
  console.log(` ${chalk8.bold("harness setup")}`);
@@ -5688,15 +5983,15 @@ function createSetupCommand() {
5688
5983
  }
5689
5984
 
5690
5985
  // src/commands/share.ts
5691
- import { Command as Command53 } from "commander";
5692
- import * as fs24 from "fs";
5693
- import * as path43 from "path";
5986
+ import { Command as Command55 } from "commander";
5987
+ import * as fs25 from "fs";
5988
+ import * as path44 from "path";
5694
5989
  import { parse as parseYaml } from "yaml";
5695
5990
  var MANIFEST_FILENAME = "constraints.yaml";
5696
5991
  async function runShareAction(projectPath, options) {
5697
- const rootDir = path43.resolve(projectPath);
5698
- const manifestPath = path43.join(rootDir, MANIFEST_FILENAME);
5699
- if (!fs24.existsSync(manifestPath)) {
5992
+ const rootDir = path44.resolve(projectPath);
5993
+ const manifestPath = path44.join(rootDir, MANIFEST_FILENAME);
5994
+ if (!fs25.existsSync(manifestPath)) {
5700
5995
  logger.error(
5701
5996
  `No ${MANIFEST_FILENAME} found at ${manifestPath}.
5702
5997
  Create a constraints.yaml in your project root to define what to share.`
@@ -5705,7 +6000,7 @@ Create a constraints.yaml in your project root to define what to share.`
5705
6000
  }
5706
6001
  let parsed;
5707
6002
  try {
5708
- const raw = fs24.readFileSync(manifestPath, "utf-8");
6003
+ const raw = fs25.readFileSync(manifestPath, "utf-8");
5709
6004
  parsed = parseYaml(raw);
5710
6005
  } catch (err) {
5711
6006
  logger.error(
@@ -5719,7 +6014,7 @@ Create a constraints.yaml in your project root to define what to share.`
5719
6014
  process.exit(1);
5720
6015
  }
5721
6016
  const manifest = manifestResult.value;
5722
- const configResult = resolveConfig(path43.join(rootDir, "harness.config.json"));
6017
+ const configResult = resolveConfig(path44.join(rootDir, "harness.config.json"));
5723
6018
  if (!configResult.ok) {
5724
6019
  logger.error(configResult.error.message);
5725
6020
  process.exit(1);
@@ -5737,8 +6032,8 @@ Create a constraints.yaml in your project root to define what to share.`
5737
6032
  );
5738
6033
  process.exit(1);
5739
6034
  }
5740
- const outputDir = path43.resolve(options.output);
5741
- const outputPath = path43.join(outputDir, `${manifest.name}.harness-constraints.json`);
6035
+ const outputDir = path44.resolve(options.output);
6036
+ const outputPath = path44.join(outputDir, `${manifest.name}.harness-constraints.json`);
5742
6037
  const writeResult = await writeConfig(outputPath, bundle);
5743
6038
  if (!writeResult.ok) {
5744
6039
  logger.error(`Failed to write bundle: ${writeResult.error.message}`);
@@ -5747,28 +6042,28 @@ Create a constraints.yaml in your project root to define what to share.`
5747
6042
  logger.success(`Bundle written to ${outputPath}`);
5748
6043
  }
5749
6044
  function createShareCommand() {
5750
- return new Command53("share").description("Extract and publish a constraints bundle from constraints.yaml").argument("[path]", "Path to the project root", ".").option("-o, --output <dir>", "Output directory for the bundle", ".").action(async (projectPath, options) => {
6045
+ return new Command55("share").description("Extract and publish a constraints bundle from constraints.yaml").argument("[path]", "Path to the project root", ".").option("-o, --output <dir>", "Output directory for the bundle", ".").action(async (projectPath, options) => {
5751
6046
  await runShareAction(projectPath, options);
5752
6047
  });
5753
6048
  }
5754
6049
 
5755
6050
  // src/commands/skill/index.ts
5756
- import { Command as Command61 } from "commander";
6051
+ import { Command as Command63 } from "commander";
5757
6052
 
5758
6053
  // src/commands/skill/list.ts
5759
- import { Command as Command54 } from "commander";
5760
- import * as fs25 from "fs";
5761
- import * as path44 from "path";
6054
+ import { Command as Command56 } from "commander";
6055
+ import * as fs26 from "fs";
6056
+ import * as path45 from "path";
5762
6057
  import { parse } from "yaml";
5763
6058
  function scanDirectory(dirPath, source) {
5764
- if (!fs25.existsSync(dirPath)) return [];
5765
- const entries = fs25.readdirSync(dirPath, { withFileTypes: true }).filter((d) => d.isDirectory()).map((d) => d.name);
6059
+ if (!fs26.existsSync(dirPath)) return [];
6060
+ const entries = fs26.readdirSync(dirPath, { withFileTypes: true }).filter((d) => d.isDirectory()).map((d) => d.name);
5766
6061
  const skills = [];
5767
6062
  for (const name of entries) {
5768
- const yamlPath = path44.join(dirPath, name, "skill.yaml");
5769
- if (!fs25.existsSync(yamlPath)) continue;
6063
+ const yamlPath = path45.join(dirPath, name, "skill.yaml");
6064
+ if (!fs26.existsSync(yamlPath)) continue;
5770
6065
  try {
5771
- const raw = fs25.readFileSync(yamlPath, "utf-8");
6066
+ const raw = fs26.readFileSync(yamlPath, "utf-8");
5772
6067
  const parsed = parse(raw);
5773
6068
  const result = SkillMetadataSchema.safeParse(parsed);
5774
6069
  if (result.success) {
@@ -5786,10 +6081,10 @@ function scanDirectory(dirPath, source) {
5786
6081
  }
5787
6082
  function collectCommunitySkills(seen, allSkills) {
5788
6083
  const globalDir = resolveGlobalSkillsDir();
5789
- const skillsDir = path44.dirname(globalDir);
5790
- const communityBase = path44.join(skillsDir, "community");
5791
- const communityPlatformDir = path44.join(communityBase, "claude-code");
5792
- const lockfilePath = path44.join(communityBase, "skills-lock.json");
6084
+ const skillsDir = path45.dirname(globalDir);
6085
+ const communityBase = path45.join(skillsDir, "community");
6086
+ const communityPlatformDir = path45.join(communityBase, "claude-code");
6087
+ const lockfilePath = path45.join(communityBase, "skills-lock.json");
5793
6088
  const lockfile = readLockfile2(lockfilePath);
5794
6089
  const communitySkills = scanDirectory(communityPlatformDir, "community");
5795
6090
  for (const skill of communitySkills) {
@@ -5859,7 +6154,7 @@ function printSkillsVerbose(skills) {
5859
6154
  for (const s of skills) printSkillEntry(s);
5860
6155
  }
5861
6156
  function createListCommand3() {
5862
- return new Command54("list").description("List available skills").option("--installed", "Show only community-installed skills").option("--local", "Show only project-local skills").option("--all", "Show all skills (default)").action(async (opts, cmd) => {
6157
+ return new Command56("list").description("List available skills").option("--installed", "Show only community-installed skills").option("--local", "Show only project-local skills").option("--all", "Show all skills (default)").action(async (opts, cmd) => {
5863
6158
  const globalOpts = cmd.optsWithGlobals();
5864
6159
  const skills = collectSkills({ filter: resolveFilter(opts) });
5865
6160
  if (globalOpts.json) {
@@ -5874,9 +6169,9 @@ function createListCommand3() {
5874
6169
  }
5875
6170
 
5876
6171
  // src/commands/skill/run.ts
5877
- import { Command as Command55 } from "commander";
5878
- import * as fs26 from "fs";
5879
- import * as path45 from "path";
6172
+ import { Command as Command57 } from "commander";
6173
+ import * as fs27 from "fs";
6174
+ import * as path46 from "path";
5880
6175
  import { parse as parse2 } from "yaml";
5881
6176
 
5882
6177
  // src/skill/complexity.ts
@@ -5972,10 +6267,10 @@ ${options.principles}`);
5972
6267
 
5973
6268
  // src/commands/skill/run.ts
5974
6269
  function loadSkillMetadata(skillDir) {
5975
- const yamlPath = path45.join(skillDir, "skill.yaml");
5976
- if (!fs26.existsSync(yamlPath)) return null;
6270
+ const yamlPath = path46.join(skillDir, "skill.yaml");
6271
+ if (!fs27.existsSync(yamlPath)) return null;
5977
6272
  try {
5978
- const result = SkillMetadataSchema.safeParse(parse2(fs26.readFileSync(yamlPath, "utf-8")));
6273
+ const result = SkillMetadataSchema.safeParse(parse2(fs27.readFileSync(yamlPath, "utf-8")));
5979
6274
  return result.success ? result.data : null;
5980
6275
  } catch {
5981
6276
  return null;
@@ -5987,22 +6282,22 @@ function resolveComplexity(metadata, requested, projectPath) {
5987
6282
  return requested;
5988
6283
  }
5989
6284
  function loadPrinciples(projectPath) {
5990
- const principlesPath = path45.join(projectPath, "docs", "principles.md");
5991
- return fs26.existsSync(principlesPath) ? fs26.readFileSync(principlesPath, "utf-8") : void 0;
6285
+ const principlesPath = path46.join(projectPath, "docs", "principles.md");
6286
+ return fs27.existsSync(principlesPath) ? fs27.readFileSync(principlesPath, "utf-8") : void 0;
5992
6287
  }
5993
6288
  function readMostRecentFileInDir(dirPath) {
5994
- const files = fs26.readdirSync(dirPath).map((f) => ({ name: f, mtime: fs26.statSync(path45.join(dirPath, f)).mtimeMs })).sort((a, b) => b.mtime - a.mtime);
5995
- if (files.length > 0) return fs26.readFileSync(path45.join(dirPath, files[0].name), "utf-8");
6289
+ const files = fs27.readdirSync(dirPath).map((f) => ({ name: f, mtime: fs27.statSync(path46.join(dirPath, f)).mtimeMs })).sort((a, b) => b.mtime - a.mtime);
6290
+ if (files.length > 0) return fs27.readFileSync(path46.join(dirPath, files[0].name), "utf-8");
5996
6291
  return void 0;
5997
6292
  }
5998
6293
  function loadPriorState(metadata, projectPath) {
5999
6294
  if (!metadata?.state.persistent || metadata.state.files.length === 0) return void 0;
6000
6295
  for (const stateFilePath of metadata.state.files) {
6001
- const fullPath = path45.join(projectPath, stateFilePath);
6002
- if (!fs26.existsSync(fullPath)) continue;
6003
- const stat = fs26.statSync(fullPath);
6296
+ const fullPath = path46.join(projectPath, stateFilePath);
6297
+ if (!fs27.existsSync(fullPath)) continue;
6298
+ const stat = fs27.statSync(fullPath);
6004
6299
  if (stat.isDirectory()) return readMostRecentFileInDir(fullPath);
6005
- return fs26.readFileSync(fullPath, "utf-8");
6300
+ return fs27.readFileSync(fullPath, "utf-8");
6006
6301
  }
6007
6302
  return void 0;
6008
6303
  }
@@ -6022,9 +6317,9 @@ function resolvePhaseState(metadata, projectPath, phase) {
6022
6317
  }
6023
6318
  function appendProjectState(content, metadata, projectPath, hasPathOpt) {
6024
6319
  if (!metadata?.state.persistent || !hasPathOpt) return content;
6025
- const stateFile = path45.join(projectPath, ".harness", "state.json");
6026
- if (!fs26.existsSync(stateFile)) return content;
6027
- const stateContent = fs26.readFileSync(stateFile, "utf-8");
6320
+ const stateFile = path46.join(projectPath, ".harness", "state.json");
6321
+ if (!fs27.existsSync(stateFile)) return content;
6322
+ const stateContent = fs27.readFileSync(stateFile, "utf-8");
6028
6323
  return content + `
6029
6324
 
6030
6325
  ---
@@ -6036,14 +6331,14 @@ ${stateContent}
6036
6331
  }
6037
6332
  async function runSkill(name, opts) {
6038
6333
  const skillsDir = resolveSkillsDir();
6039
- const skillDir = path45.join(skillsDir, name);
6040
- if (!fs26.existsSync(skillDir)) {
6334
+ const skillDir = path46.join(skillsDir, name);
6335
+ if (!fs27.existsSync(skillDir)) {
6041
6336
  logger.error(`Skill not found: ${name}`);
6042
6337
  process.exit(ExitCode.ERROR);
6043
6338
  return;
6044
6339
  }
6045
6340
  const metadata = loadSkillMetadata(skillDir);
6046
- const projectPath = opts.path ? path45.resolve(opts.path) : process.cwd();
6341
+ const projectPath = opts.path ? path46.resolve(opts.path) : process.cwd();
6047
6342
  const complexity = resolveComplexity(
6048
6343
  metadata,
6049
6344
  opts.complexity ?? "standard",
@@ -6070,14 +6365,14 @@ async function runSkill(name, opts) {
6070
6365
  ...stateWarning !== void 0 && { stateWarning },
6071
6366
  ...opts.party !== void 0 && { party: opts.party }
6072
6367
  });
6073
- const skillMdPath = path45.join(skillDir, "SKILL.md");
6074
- if (!fs26.existsSync(skillMdPath)) {
6368
+ const skillMdPath = path46.join(skillDir, "SKILL.md");
6369
+ if (!fs27.existsSync(skillMdPath)) {
6075
6370
  logger.error(`SKILL.md not found for skill: ${name}`);
6076
6371
  process.exit(ExitCode.ERROR);
6077
6372
  return;
6078
6373
  }
6079
6374
  const content = appendProjectState(
6080
- fs26.readFileSync(skillMdPath, "utf-8"),
6375
+ fs27.readFileSync(skillMdPath, "utf-8"),
6081
6376
  metadata,
6082
6377
  projectPath,
6083
6378
  !!opts.path
@@ -6086,13 +6381,13 @@ async function runSkill(name, opts) {
6086
6381
  process.exit(ExitCode.SUCCESS);
6087
6382
  }
6088
6383
  function createRunCommand2() {
6089
- return new Command55("run").description("Run a skill (outputs SKILL.md content with context preamble)").argument("<name>", "Skill name (e.g., harness-tdd)").option("--path <path>", "Project root path for context injection").option("--complexity <level>", "Rigor level: fast, standard, thorough", "standard").option("--phase <name>", "Start at a specific phase (for re-entry)").option("--party", "Enable multi-perspective evaluation").action(async (name, opts) => runSkill(name, opts));
6384
+ return new Command57("run").description("Run a skill (outputs SKILL.md content with context preamble)").argument("<name>", "Skill name (e.g., harness-tdd)").option("--path <path>", "Project root path for context injection").option("--complexity <level>", "Rigor level: fast, standard, thorough", "standard").option("--phase <name>", "Start at a specific phase (for re-entry)").option("--party", "Enable multi-perspective evaluation").action(async (name, opts) => runSkill(name, opts));
6090
6385
  }
6091
6386
 
6092
6387
  // src/commands/skill/validate.ts
6093
- import { Command as Command56 } from "commander";
6094
- import * as fs27 from "fs";
6095
- import * as path46 from "path";
6388
+ import { Command as Command58 } from "commander";
6389
+ import * as fs28 from "fs";
6390
+ import * as path47 from "path";
6096
6391
  import { parse as parse3 } from "yaml";
6097
6392
  var BEHAVIORAL_REQUIRED_SECTIONS = [
6098
6393
  "## When to Use",
@@ -6104,11 +6399,11 @@ var BEHAVIORAL_REQUIRED_SECTIONS = [
6104
6399
  ];
6105
6400
  var KNOWLEDGE_REQUIRED_SECTIONS = ["## Instructions"];
6106
6401
  function validateSkillMd(name, skillMdPath, skillType, errors) {
6107
- if (!fs27.existsSync(skillMdPath)) {
6402
+ if (!fs28.existsSync(skillMdPath)) {
6108
6403
  errors.push(`${name}: missing SKILL.md`);
6109
6404
  return;
6110
6405
  }
6111
- const mdContent = fs27.readFileSync(skillMdPath, "utf-8");
6406
+ const mdContent = fs28.readFileSync(skillMdPath, "utf-8");
6112
6407
  if (!mdContent.trim().startsWith("# ")) {
6113
6408
  errors.push(`${name}/SKILL.md: must start with an h1 heading`);
6114
6409
  }
@@ -6133,20 +6428,20 @@ function validateSkillMd(name, skillMdPath, skillType, errors) {
6133
6428
  }
6134
6429
  }
6135
6430
  function validateSkillEntry(name, skillsDir, errors) {
6136
- const skillDir = path46.join(skillsDir, name);
6137
- const yamlPath = path46.join(skillDir, "skill.yaml");
6138
- if (!fs27.existsSync(yamlPath)) {
6431
+ const skillDir = path47.join(skillsDir, name);
6432
+ const yamlPath = path47.join(skillDir, "skill.yaml");
6433
+ if (!fs28.existsSync(yamlPath)) {
6139
6434
  errors.push(`${name}: missing skill.yaml`);
6140
6435
  return false;
6141
6436
  }
6142
6437
  try {
6143
- const raw = fs27.readFileSync(yamlPath, "utf-8");
6438
+ const raw = fs28.readFileSync(yamlPath, "utf-8");
6144
6439
  const result = SkillMetadataSchema.safeParse(parse3(raw));
6145
6440
  if (!result.success) {
6146
6441
  errors.push(`${name}/skill.yaml: ${result.error.message}`);
6147
6442
  return false;
6148
6443
  }
6149
- validateSkillMd(name, path46.join(skillDir, "SKILL.md"), result.data.type, errors);
6444
+ validateSkillMd(name, path47.join(skillDir, "SKILL.md"), result.data.type, errors);
6150
6445
  return true;
6151
6446
  } catch (e) {
6152
6447
  errors.push(`${name}: parse error \u2014 ${e instanceof Error ? e.message : String(e)}`);
@@ -6154,15 +6449,15 @@ function validateSkillEntry(name, skillsDir, errors) {
6154
6449
  }
6155
6450
  }
6156
6451
  function createValidateCommand2() {
6157
- return new Command56("validate").description("Validate all skill.yaml files and SKILL.md structure").action(async (_opts, cmd) => {
6452
+ return new Command58("validate").description("Validate all skill.yaml files and SKILL.md structure").action(async (_opts, cmd) => {
6158
6453
  const globalOpts = cmd.optsWithGlobals();
6159
6454
  const skillsDir = resolveSkillsDir();
6160
- if (!fs27.existsSync(skillsDir)) {
6455
+ if (!fs28.existsSync(skillsDir)) {
6161
6456
  logger.info("No skills directory found.");
6162
6457
  process.exit(ExitCode.SUCCESS);
6163
6458
  return;
6164
6459
  }
6165
- const entries = fs27.readdirSync(skillsDir, { withFileTypes: true }).filter((d) => d.isDirectory()).map((d) => d.name);
6460
+ const entries = fs28.readdirSync(skillsDir, { withFileTypes: true }).filter((d) => d.isDirectory()).map((d) => d.name);
6166
6461
  const errors = [];
6167
6462
  let validated = 0;
6168
6463
  for (const name of entries) {
@@ -6184,24 +6479,24 @@ function createValidateCommand2() {
6184
6479
  }
6185
6480
 
6186
6481
  // src/commands/skill/info.ts
6187
- import { Command as Command57 } from "commander";
6188
- import * as fs28 from "fs";
6189
- import * as path47 from "path";
6482
+ import { Command as Command59 } from "commander";
6483
+ import * as fs29 from "fs";
6484
+ import * as path48 from "path";
6190
6485
  import { parse as parse4 } from "yaml";
6191
6486
  function loadSkillMetadata2(name) {
6192
6487
  const skillsDir = resolveSkillsDir();
6193
- const skillDir = path47.join(skillsDir, name);
6194
- if (!fs28.existsSync(skillDir)) {
6488
+ const skillDir = path48.join(skillsDir, name);
6489
+ if (!fs29.existsSync(skillDir)) {
6195
6490
  logger.error(`Skill not found: ${name}`);
6196
6491
  return { ok: false, exitCode: ExitCode.ERROR };
6197
6492
  }
6198
- const yamlPath = path47.join(skillDir, "skill.yaml");
6199
- if (!fs28.existsSync(yamlPath)) {
6493
+ const yamlPath = path48.join(skillDir, "skill.yaml");
6494
+ if (!fs29.existsSync(yamlPath)) {
6200
6495
  logger.error(`skill.yaml not found for skill: ${name}`);
6201
6496
  return { ok: false, exitCode: ExitCode.ERROR };
6202
6497
  }
6203
6498
  try {
6204
- const raw = fs28.readFileSync(yamlPath, "utf-8");
6499
+ const raw = fs29.readFileSync(yamlPath, "utf-8");
6205
6500
  const parsed = parse4(raw);
6206
6501
  const result = SkillMetadataSchema.safeParse(parsed);
6207
6502
  if (!result.success) {
@@ -6230,7 +6525,7 @@ function printSkillInfo(skill) {
6230
6525
  console.log(`Persistent: ${skill.state.persistent}`);
6231
6526
  }
6232
6527
  function createInfoCommand() {
6233
- return new Command57("info").description("Show metadata for a skill").argument("<name>", "Skill name (e.g., harness-tdd)").action(async (name, _opts, cmd) => {
6528
+ return new Command59("info").description("Show metadata for a skill").argument("<name>", "Skill name (e.g., harness-tdd)").action(async (name, _opts, cmd) => {
6234
6529
  const globalOpts = cmd.optsWithGlobals();
6235
6530
  const loaded = loadSkillMetadata2(name);
6236
6531
  if (!loaded.ok) {
@@ -6247,7 +6542,7 @@ function createInfoCommand() {
6247
6542
  }
6248
6543
 
6249
6544
  // src/commands/skill/search.ts
6250
- import { Command as Command58 } from "commander";
6545
+ import { Command as Command60 } from "commander";
6251
6546
  async function runSearch(query, opts) {
6252
6547
  const results = await searchNpmRegistry(query, opts.registry);
6253
6548
  return results.filter((r) => {
@@ -6292,15 +6587,15 @@ async function runSearchAction(query, opts, globalOpts) {
6292
6587
  }
6293
6588
  }
6294
6589
  function createSearchCommand() {
6295
- return new Command58("search").description("Search for community skills on the @harness-skills registry").argument("<query>", "Search query").option("--platform <platform>", "Filter by platform (e.g., claude-code)").option("--trigger <trigger>", "Filter by trigger type (e.g., manual, automatic)").option("--registry <url>", "Use a custom npm registry URL").action(async (query, opts, cmd) => {
6590
+ return new Command60("search").description("Search for community skills on the @harness-skills registry").argument("<query>", "Search query").option("--platform <platform>", "Filter by platform (e.g., claude-code)").option("--trigger <trigger>", "Filter by trigger type (e.g., manual, automatic)").option("--registry <url>", "Use a custom npm registry URL").action(async (query, opts, cmd) => {
6296
6591
  await runSearchAction(query, opts, cmd.optsWithGlobals());
6297
6592
  });
6298
6593
  }
6299
6594
 
6300
6595
  // src/commands/skill/create.ts
6301
- import { Command as Command59 } from "commander";
6302
- import * as path48 from "path";
6303
- import * as fs29 from "fs";
6596
+ import { Command as Command61 } from "commander";
6597
+ import * as path49 from "path";
6598
+ import * as fs30 from "fs";
6304
6599
  import YAML from "yaml";
6305
6600
  var KEBAB_CASE_RE = /^[a-z][a-z0-9]*(-[a-z0-9]+)*$/;
6306
6601
  function buildReadme(name, description) {
@@ -6384,22 +6679,22 @@ function runCreate(name, opts) {
6384
6679
  if (!KEBAB_CASE_RE.test(name)) {
6385
6680
  throw new Error(`Invalid skill name "${name}". Must be kebab-case (e.g., my-skill).`);
6386
6681
  }
6387
- const baseDir = opts.outputDir ?? path48.join(process.cwd(), "agents", "skills", "claude-code");
6388
- const skillDir = path48.join(baseDir, name);
6389
- if (fs29.existsSync(skillDir)) {
6682
+ const baseDir = opts.outputDir ?? path49.join(process.cwd(), "agents", "skills", "claude-code");
6683
+ const skillDir = path49.join(baseDir, name);
6684
+ if (fs30.existsSync(skillDir)) {
6390
6685
  throw new Error(`Skill directory already exists: ${skillDir}`);
6391
6686
  }
6392
- fs29.mkdirSync(skillDir, { recursive: true });
6687
+ fs30.mkdirSync(skillDir, { recursive: true });
6393
6688
  const description = opts.description || `A community skill: ${name}`;
6394
6689
  const skillYaml = buildSkillYaml(name, opts);
6395
- const skillYamlPath = path48.join(skillDir, "skill.yaml");
6396
- fs29.writeFileSync(skillYamlPath, YAML.stringify(skillYaml));
6690
+ const skillYamlPath = path49.join(skillDir, "skill.yaml");
6691
+ fs30.writeFileSync(skillYamlPath, YAML.stringify(skillYaml));
6397
6692
  const skillMd = buildSkillMd(name, description);
6398
- const skillMdPath = path48.join(skillDir, "SKILL.md");
6399
- fs29.writeFileSync(skillMdPath, skillMd);
6693
+ const skillMdPath = path49.join(skillDir, "SKILL.md");
6694
+ fs30.writeFileSync(skillMdPath, skillMd);
6400
6695
  const readme = buildReadme(name, description);
6401
- const readmePath = path48.join(skillDir, "README.md");
6402
- fs29.writeFileSync(readmePath, readme);
6696
+ const readmePath = path49.join(skillDir, "README.md");
6697
+ fs30.writeFileSync(readmePath, readme);
6403
6698
  return {
6404
6699
  name,
6405
6700
  directory: skillDir,
@@ -6413,12 +6708,12 @@ function printCreateResult(name, result) {
6413
6708
  }
6414
6709
  logger.info(`
6415
6710
  Next steps:`);
6416
- logger.info(` 1. Edit ${path48.join(result.directory, "SKILL.md")} with your skill content`);
6711
+ logger.info(` 1. Edit ${path49.join(result.directory, "SKILL.md")} with your skill content`);
6417
6712
  logger.info(` 2. Run: harness skill validate ${name}`);
6418
6713
  logger.info(` 3. Run: harness skills publish`);
6419
6714
  }
6420
6715
  function createCreateCommand() {
6421
- return new Command59("create").description("Scaffold a new community skill").argument("<name>", "Skill name (kebab-case)").option("--description <desc>", "Skill description").option("--type <type>", "Skill type: rigid or flexible", "flexible").option("--platforms <platforms>", "Comma-separated platforms (default: claude-code)").option("--triggers <triggers>", "Comma-separated triggers (default: manual)").option("--output-dir <dir>", "Output directory (default: agents/skills/claude-code/)").action(async (name, opts, cmd) => {
6716
+ return new Command61("create").description("Scaffold a new community skill").argument("<name>", "Skill name (kebab-case)").option("--description <desc>", "Skill description").option("--type <type>", "Skill type: rigid or flexible", "flexible").option("--platforms <platforms>", "Comma-separated platforms (default: claude-code)").option("--triggers <triggers>", "Comma-separated triggers (default: manual)").option("--output-dir <dir>", "Output directory (default: agents/skills/claude-code/)").action(async (name, opts, cmd) => {
6422
6717
  const globalOpts = cmd.optsWithGlobals();
6423
6718
  try {
6424
6719
  const result = runCreate(name, {
@@ -6441,26 +6736,26 @@ function createCreateCommand() {
6441
6736
  }
6442
6737
 
6443
6738
  // src/commands/skill/publish.ts
6444
- import { Command as Command60 } from "commander";
6445
- import * as fs31 from "fs";
6446
- import * as path50 from "path";
6739
+ import { Command as Command62 } from "commander";
6740
+ import * as fs32 from "fs";
6741
+ import * as path51 from "path";
6447
6742
  import { execFileSync as execFileSync5 } from "child_process";
6448
6743
 
6449
6744
  // src/registry/validator.ts
6450
- import * as fs30 from "fs";
6451
- import * as path49 from "path";
6745
+ import * as fs31 from "fs";
6746
+ import * as path50 from "path";
6452
6747
  import { parse as parse5 } from "yaml";
6453
6748
  import semver4 from "semver";
6454
6749
  async function validateForPublish(skillDir, registryUrl) {
6455
6750
  const errors = [];
6456
- const skillYamlPath = path49.join(skillDir, "skill.yaml");
6457
- if (!fs30.existsSync(skillYamlPath)) {
6751
+ const skillYamlPath = path50.join(skillDir, "skill.yaml");
6752
+ if (!fs31.existsSync(skillYamlPath)) {
6458
6753
  errors.push("skill.yaml not found. Create one with: harness skill create <name>");
6459
6754
  return { valid: false, errors };
6460
6755
  }
6461
6756
  let skillMeta;
6462
6757
  try {
6463
- const raw = fs30.readFileSync(skillYamlPath, "utf-8");
6758
+ const raw = fs31.readFileSync(skillYamlPath, "utf-8");
6464
6759
  const parsed = parse5(raw);
6465
6760
  const result = SkillMetadataSchema.safeParse(parsed);
6466
6761
  if (!result.success) {
@@ -6482,11 +6777,11 @@ async function validateForPublish(skillDir, registryUrl) {
6482
6777
  if (!skillMeta.triggers || skillMeta.triggers.length === 0) {
6483
6778
  errors.push("At least one trigger is required. Add triggers to skill.yaml.");
6484
6779
  }
6485
- const skillMdPath = path49.join(skillDir, "SKILL.md");
6486
- if (!fs30.existsSync(skillMdPath)) {
6780
+ const skillMdPath = path50.join(skillDir, "SKILL.md");
6781
+ if (!fs31.existsSync(skillMdPath)) {
6487
6782
  errors.push("SKILL.md not found. Create it with content describing your skill.");
6488
6783
  } else {
6489
- const content = fs30.readFileSync(skillMdPath, "utf-8");
6784
+ const content = fs31.readFileSync(skillMdPath, "utf-8");
6490
6785
  if (!content.includes("## When to Use")) {
6491
6786
  errors.push('SKILL.md must contain a "## When to Use" section.');
6492
6787
  }
@@ -6566,11 +6861,11 @@ ${errorList}`);
6566
6861
  }
6567
6862
  const meta = validation.skillMeta;
6568
6863
  const pkg = derivePackageJson(meta);
6569
- const pkgPath = path50.join(skillDir, "package.json");
6570
- fs31.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + "\n");
6571
- const readmePath = path50.join(skillDir, "README.md");
6572
- if (!fs31.existsSync(readmePath)) {
6573
- const skillMdContent = fs31.readFileSync(path50.join(skillDir, "SKILL.md"), "utf-8");
6864
+ const pkgPath = path51.join(skillDir, "package.json");
6865
+ fs32.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + "\n");
6866
+ const readmePath = path51.join(skillDir, "README.md");
6867
+ if (!fs32.existsSync(readmePath)) {
6868
+ const skillMdContent = fs32.readFileSync(path51.join(skillDir, "SKILL.md"), "utf-8");
6574
6869
  const readme = `# ${pkg.name}
6575
6870
 
6576
6871
  ${meta.description}
@@ -6584,7 +6879,7 @@ harness install ${meta.name}
6584
6879
  ---
6585
6880
 
6586
6881
  ${skillMdContent}`;
6587
- fs31.writeFileSync(readmePath, readme);
6882
+ fs32.writeFileSync(readmePath, readme);
6588
6883
  }
6589
6884
  if (opts.dryRun) {
6590
6885
  return {
@@ -6610,7 +6905,7 @@ ${skillMdContent}`;
6610
6905
  };
6611
6906
  }
6612
6907
  function createPublishCommand() {
6613
- return new Command60("publish").description("Validate and publish a skill to @harness-skills on npm").option("--dry-run", "Run validation and generate package.json without publishing").option("--dir <dir>", "Skill directory (default: current directory)").option("--registry <url>", "Use a custom npm registry URL").action(async (opts, cmd) => {
6908
+ return new Command62("publish").description("Validate and publish a skill to @harness-skills on npm").option("--dry-run", "Run validation and generate package.json without publishing").option("--dir <dir>", "Skill directory (default: current directory)").option("--registry <url>", "Use a custom npm registry URL").action(async (opts, cmd) => {
6614
6909
  const globalOpts = cmd.optsWithGlobals();
6615
6910
  const skillDir = opts.dir || process.cwd();
6616
6911
  try {
@@ -6635,7 +6930,7 @@ function createPublishCommand() {
6635
6930
 
6636
6931
  // src/commands/skill/index.ts
6637
6932
  function createSkillCommand() {
6638
- const command = new Command61("skill").description("Skill management commands");
6933
+ const command = new Command63("skill").description("Skill management commands");
6639
6934
  command.addCommand(createListCommand3());
6640
6935
  command.addCommand(createRunCommand2());
6641
6936
  command.addCommand(createValidateCommand2());
@@ -6647,7 +6942,7 @@ function createSkillCommand() {
6647
6942
  }
6648
6943
 
6649
6944
  // src/commands/snapshot.ts
6650
- import { Command as Command62 } from "commander";
6945
+ import { Command as Command64 } from "commander";
6651
6946
  import { execSync as execSync5 } from "child_process";
6652
6947
  import chalk9 from "chalk";
6653
6948
  function getCommitHash3(cwd) {
@@ -6829,7 +7124,7 @@ function registerListCommand(parent) {
6829
7124
  });
6830
7125
  }
6831
7126
  function createSnapshotCommand() {
6832
- const command = new Command62("snapshot").description("Architecture timeline snapshot commands");
7127
+ const command = new Command64("snapshot").description("Architecture timeline snapshot commands");
6833
7128
  registerCaptureCommand(command);
6834
7129
  registerTrendsCommand(command);
6835
7130
  registerListCommand(command);
@@ -6837,11 +7132,11 @@ function createSnapshotCommand() {
6837
7132
  }
6838
7133
 
6839
7134
  // src/commands/state/index.ts
6840
- import { Command as Command67 } from "commander";
7135
+ import { Command as Command69 } from "commander";
6841
7136
 
6842
7137
  // src/commands/state/show.ts
6843
- import { Command as Command63 } from "commander";
6844
- import * as path51 from "path";
7138
+ import { Command as Command65 } from "commander";
7139
+ import * as path52 from "path";
6845
7140
  function printStateText(state, stream) {
6846
7141
  if (stream) console.log(`Stream: ${stream}`);
6847
7142
  console.log(`Schema Version: ${state.schemaVersion}`);
@@ -6865,9 +7160,9 @@ function printStateProgress(progress) {
6865
7160
  }
6866
7161
  }
6867
7162
  function createShowCommand() {
6868
- return new Command63("show").description("Show current project state").option("--path <path>", "Project root path", ".").option("--stream <name>", "Target a specific stream").action(async (opts, cmd) => {
7163
+ return new Command65("show").description("Show current project state").option("--path <path>", "Project root path", ".").option("--stream <name>", "Target a specific stream").action(async (opts, cmd) => {
6869
7164
  const globalOpts = cmd.optsWithGlobals();
6870
- const result = await loadState(path51.resolve(opts.path), opts.stream);
7165
+ const result = await loadState(path52.resolve(opts.path), opts.stream);
6871
7166
  if (!result.ok) {
6872
7167
  logger.error(result.error.message);
6873
7168
  process.exit(ExitCode.ERROR);
@@ -6882,9 +7177,9 @@ function createShowCommand() {
6882
7177
  }
6883
7178
 
6884
7179
  // src/commands/state/reset.ts
6885
- import { Command as Command64 } from "commander";
6886
- import * as fs32 from "fs";
6887
- import * as path52 from "path";
7180
+ import { Command as Command66 } from "commander";
7181
+ import * as fs33 from "fs";
7182
+ import * as path53 from "path";
6888
7183
  import * as readline from "readline";
6889
7184
  async function resolveStatePath(projectPath, stream) {
6890
7185
  if (stream) {
@@ -6893,22 +7188,22 @@ async function resolveStatePath(projectPath, stream) {
6893
7188
  logger.error(streamResult.error.message);
6894
7189
  process.exit(ExitCode.ERROR);
6895
7190
  }
6896
- return path52.join(streamResult.value, "state.json");
7191
+ return path53.join(streamResult.value, "state.json");
6897
7192
  }
6898
- return path52.join(projectPath, ".harness", "state.json");
7193
+ return path53.join(projectPath, ".harness", "state.json");
6899
7194
  }
6900
7195
  async function confirmReset() {
6901
7196
  const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
6902
- const answer = await new Promise((resolve32) => {
6903
- rl.question("Reset project state? This cannot be undone. [y/N] ", resolve32);
7197
+ const answer = await new Promise((resolve33) => {
7198
+ rl.question("Reset project state? This cannot be undone. [y/N] ", resolve33);
6904
7199
  });
6905
7200
  rl.close();
6906
7201
  return answer.toLowerCase() === "y" || answer.toLowerCase() === "yes";
6907
7202
  }
6908
7203
  async function runReset(opts) {
6909
- const projectPath = path52.resolve(opts.path);
7204
+ const projectPath = path53.resolve(opts.path);
6910
7205
  const statePath = await resolveStatePath(projectPath, opts.stream);
6911
- if (!fs32.existsSync(statePath)) {
7206
+ if (!fs33.existsSync(statePath)) {
6912
7207
  logger.info("No state file found. Nothing to reset.");
6913
7208
  process.exit(ExitCode.SUCCESS);
6914
7209
  }
@@ -6917,7 +7212,7 @@ async function runReset(opts) {
6917
7212
  process.exit(ExitCode.SUCCESS);
6918
7213
  }
6919
7214
  try {
6920
- fs32.unlinkSync(statePath);
7215
+ fs33.unlinkSync(statePath);
6921
7216
  logger.success("Project state reset.");
6922
7217
  } catch (e) {
6923
7218
  logger.error(`Failed to reset state: ${e instanceof Error ? e.message : String(e)}`);
@@ -6926,15 +7221,15 @@ async function runReset(opts) {
6926
7221
  process.exit(ExitCode.SUCCESS);
6927
7222
  }
6928
7223
  function createResetCommand() {
6929
- return new Command64("reset").description("Reset project state (deletes .harness/state.json)").option("--path <path>", "Project root path", ".").option("--stream <name>", "Target a specific stream").option("--yes", "Skip confirmation prompt").action(async (opts) => runReset(opts));
7224
+ return new Command66("reset").description("Reset project state (deletes .harness/state.json)").option("--path <path>", "Project root path", ".").option("--stream <name>", "Target a specific stream").option("--yes", "Skip confirmation prompt").action(async (opts) => runReset(opts));
6930
7225
  }
6931
7226
 
6932
7227
  // src/commands/state/learn.ts
6933
- import { Command as Command65 } from "commander";
6934
- import * as path53 from "path";
7228
+ import { Command as Command67 } from "commander";
7229
+ import * as path54 from "path";
6935
7230
  function createLearnCommand() {
6936
- return new Command65("learn").description("Append a learning to .harness/learnings.md").argument("<message>", "The learning to record").option("--path <path>", "Project root path", ".").option("--stream <name>", "Target a specific stream").action(async (message, opts, _cmd) => {
6937
- const projectPath = path53.resolve(opts.path);
7231
+ return new Command67("learn").description("Append a learning to .harness/learnings.md").argument("<message>", "The learning to record").option("--path <path>", "Project root path", ".").option("--stream <name>", "Target a specific stream").action(async (message, opts, _cmd) => {
7232
+ const projectPath = path54.resolve(opts.path);
6938
7233
  const result = await appendLearning(projectPath, message, void 0, void 0, opts.stream);
6939
7234
  if (!result.ok) {
6940
7235
  logger.error(result.error.message);
@@ -6947,10 +7242,10 @@ function createLearnCommand() {
6947
7242
  }
6948
7243
 
6949
7244
  // src/commands/state/streams.ts
6950
- import { Command as Command66 } from "commander";
6951
- import * as path54 from "path";
7245
+ import { Command as Command68 } from "commander";
7246
+ import * as path55 from "path";
6952
7247
  async function runListStreams(opts, globalOpts) {
6953
- const projectPath = path54.resolve(opts.path);
7248
+ const projectPath = path55.resolve(opts.path);
6954
7249
  const indexResult = await loadStreamIndex(projectPath);
6955
7250
  const result = await listStreams(projectPath);
6956
7251
  if (!result.ok) {
@@ -6971,7 +7266,7 @@ async function runListStreams(opts, globalOpts) {
6971
7266
  process.exit(ExitCode.SUCCESS);
6972
7267
  }
6973
7268
  async function runCreateStream(name, opts) {
6974
- const result = await createStream(path54.resolve(opts.path), name, opts.branch);
7269
+ const result = await createStream(path55.resolve(opts.path), name, opts.branch);
6975
7270
  if (!result.ok) {
6976
7271
  logger.error(result.error.message);
6977
7272
  process.exit(ExitCode.ERROR);
@@ -6980,7 +7275,7 @@ async function runCreateStream(name, opts) {
6980
7275
  process.exit(ExitCode.SUCCESS);
6981
7276
  }
6982
7277
  async function runArchiveStream(name, opts) {
6983
- const result = await archiveStream(path54.resolve(opts.path), name);
7278
+ const result = await archiveStream(path55.resolve(opts.path), name);
6984
7279
  if (!result.ok) {
6985
7280
  logger.error(result.error.message);
6986
7281
  process.exit(ExitCode.ERROR);
@@ -6989,7 +7284,7 @@ async function runArchiveStream(name, opts) {
6989
7284
  process.exit(ExitCode.SUCCESS);
6990
7285
  }
6991
7286
  async function runActivateStream(name, opts) {
6992
- const result = await setActiveStream(path54.resolve(opts.path), name);
7287
+ const result = await setActiveStream(path55.resolve(opts.path), name);
6993
7288
  if (!result.ok) {
6994
7289
  logger.error(result.error.message);
6995
7290
  process.exit(ExitCode.ERROR);
@@ -6998,7 +7293,7 @@ async function runActivateStream(name, opts) {
6998
7293
  process.exit(ExitCode.SUCCESS);
6999
7294
  }
7000
7295
  function createStreamsCommand() {
7001
- const command = new Command66("streams").description("Manage state streams");
7296
+ const command = new Command68("streams").description("Manage state streams");
7002
7297
  command.command("list").description("List all known streams").option("--path <path>", "Project root path", ".").action(async (opts, cmd) => runListStreams(opts, cmd.optsWithGlobals()));
7003
7298
  command.command("create <name>").description("Create a new stream").option("--path <path>", "Project root path", ".").option("--branch <branch>", "Associate with a git branch").action(async (name, opts) => runCreateStream(name, opts));
7004
7299
  command.command("archive <name>").description("Archive a stream").option("--path <path>", "Project root path", ".").action(async (name, opts) => runArchiveStream(name, opts));
@@ -7008,7 +7303,7 @@ function createStreamsCommand() {
7008
7303
 
7009
7304
  // src/commands/state/index.ts
7010
7305
  function createStateCommand() {
7011
- const command = new Command67("state").description("Project state management commands");
7306
+ const command = new Command69("state").description("Project state management commands");
7012
7307
  command.addCommand(createShowCommand());
7013
7308
  command.addCommand(createResetCommand());
7014
7309
  command.addCommand(createLearnCommand());
@@ -7017,7 +7312,7 @@ function createStateCommand() {
7017
7312
  }
7018
7313
 
7019
7314
  // src/commands/taint.ts
7020
- import { Command as Command68 } from "commander";
7315
+ import { Command as Command70 } from "commander";
7021
7316
  function getProjectRoot() {
7022
7317
  return process.cwd();
7023
7318
  }
@@ -7089,14 +7384,143 @@ function registerStatusCommand(taint) {
7089
7384
  });
7090
7385
  }
7091
7386
  function createTaintCommand() {
7092
- const taint = new Command68("taint").description("Manage sentinel session taint state");
7387
+ const taint = new Command70("taint").description("Manage sentinel session taint state");
7093
7388
  registerClearCommand(taint);
7094
7389
  registerStatusCommand(taint);
7095
7390
  return taint;
7096
7391
  }
7097
7392
 
7393
+ // src/commands/telemetry/index.ts
7394
+ import { Command as Command73 } from "commander";
7395
+
7396
+ // src/commands/telemetry/identify.ts
7397
+ import { Command as Command71 } from "commander";
7398
+ import * as fs34 from "fs";
7399
+ import * as path56 from "path";
7400
+ function telemetryFilePath(cwd) {
7401
+ return path56.join(cwd, ".harness", "telemetry.json");
7402
+ }
7403
+ function writeTelemetryFile(cwd, data) {
7404
+ const filePath = telemetryFilePath(cwd);
7405
+ const dir = path56.dirname(filePath);
7406
+ fs34.mkdirSync(dir, { recursive: true });
7407
+ fs34.writeFileSync(filePath, JSON.stringify(data, null, 2) + "\n", "utf-8");
7408
+ }
7409
+ var IDENTITY_FIELDS = ["project", "team", "alias"];
7410
+ function applyIdentityFields(opts, identity) {
7411
+ for (const field of IDENTITY_FIELDS) {
7412
+ if (opts[field]) identity[field] = opts[field];
7413
+ }
7414
+ }
7415
+ function printIdentity(identity) {
7416
+ for (const field of IDENTITY_FIELDS) {
7417
+ if (identity[field]) logger.info(` ${field.padEnd(7)}: ${identity[field]}`);
7418
+ }
7419
+ }
7420
+ function createIdentifyCommand() {
7421
+ const cmd = new Command71("identify").description("Set or clear telemetry identity fields in .harness/telemetry.json").option("--project <name>", "Project name").option("--team <name>", "Team name").option("--alias <name>", "User alias").option("--clear", "Remove all identity fields").action((opts) => {
7422
+ const cwd = process.cwd();
7423
+ if (opts.clear) {
7424
+ writeTelemetryFile(cwd, { identity: {} });
7425
+ logger.success("Telemetry identity cleared.");
7426
+ return;
7427
+ }
7428
+ const hasField = IDENTITY_FIELDS.some((f) => opts[f]);
7429
+ if (!hasField) {
7430
+ logger.error("Provide at least one of --project, --team, --alias, or --clear.");
7431
+ process.exitCode = 1;
7432
+ return;
7433
+ }
7434
+ const existingIdentity = readIdentity(cwd);
7435
+ const existing = { identity: { ...existingIdentity } };
7436
+ applyIdentityFields(opts, existing.identity);
7437
+ writeTelemetryFile(cwd, existing);
7438
+ logger.success("Telemetry identity updated:");
7439
+ printIdentity(existing.identity);
7440
+ });
7441
+ return cmd;
7442
+ }
7443
+
7444
+ // src/commands/telemetry/status.ts
7445
+ import { Command as Command72 } from "commander";
7446
+ function gatherEnvOverrides() {
7447
+ const overrides = {};
7448
+ if (process.env.DO_NOT_TRACK) overrides.DO_NOT_TRACK = process.env.DO_NOT_TRACK;
7449
+ if (process.env.HARNESS_TELEMETRY_OPTOUT)
7450
+ overrides.HARNESS_TELEMETRY_OPTOUT = process.env.HARNESS_TELEMETRY_OPTOUT;
7451
+ return overrides;
7452
+ }
7453
+ function resolveDisabledReason() {
7454
+ if (process.env.DO_NOT_TRACK === "1") return "DO_NOT_TRACK=1";
7455
+ if (process.env.HARNESS_TELEMETRY_OPTOUT === "1") return "HARNESS_TELEMETRY_OPTOUT=1";
7456
+ return "telemetry.enabled is false in config";
7457
+ }
7458
+ function printHumanStatus(result) {
7459
+ logger.info(`Telemetry: ${result.consent.allowed ? "enabled" : "disabled"}`);
7460
+ if (!result.consent.allowed && result.consent.reason) {
7461
+ logger.info(` Reason: ${result.consent.reason}`);
7462
+ }
7463
+ logger.info(`Install ID: ${result.installId ?? "not yet created"}`);
7464
+ const { identity } = result;
7465
+ const hasIdentity = identity.project || identity.team || identity.alias;
7466
+ if (hasIdentity) {
7467
+ logger.info("Identity:");
7468
+ for (const [key, value] of Object.entries(identity)) {
7469
+ if (value) logger.info(` ${key.padEnd(7)}: ${value}`);
7470
+ }
7471
+ } else {
7472
+ logger.info("Identity: not configured");
7473
+ }
7474
+ const overrideKeys = Object.keys(result.envOverrides);
7475
+ if (overrideKeys.length > 0) {
7476
+ logger.info("Env overrides:");
7477
+ for (const key of overrideKeys) {
7478
+ logger.info(` ${key}=${result.envOverrides[key]}`);
7479
+ }
7480
+ }
7481
+ }
7482
+ function createStatusCommand() {
7483
+ const cmd = new Command72("status").description("Show current telemetry consent state, install ID, and identity").option("--json", "Output as JSON").action((opts) => {
7484
+ const cwd = process.cwd();
7485
+ const envOverrides = gatherEnvOverrides();
7486
+ const consent = resolveConsent(cwd, void 0);
7487
+ let installId = null;
7488
+ let identity = {};
7489
+ if (consent.allowed) {
7490
+ identity = readIdentity(cwd);
7491
+ try {
7492
+ installId = getOrCreateInstallId(cwd);
7493
+ } catch {
7494
+ }
7495
+ }
7496
+ const result = {
7497
+ consent: {
7498
+ allowed: consent.allowed,
7499
+ ...!consent.allowed ? { reason: resolveDisabledReason() } : {}
7500
+ },
7501
+ installId,
7502
+ identity,
7503
+ envOverrides
7504
+ };
7505
+ if (opts.json) {
7506
+ console.log(JSON.stringify(result, null, 2));
7507
+ return;
7508
+ }
7509
+ printHumanStatus(result);
7510
+ });
7511
+ return cmd;
7512
+ }
7513
+
7514
+ // src/commands/telemetry/index.ts
7515
+ function createTelemetryCommand() {
7516
+ const command = new Command73("telemetry").description("Telemetry identity and status management");
7517
+ command.addCommand(createIdentifyCommand());
7518
+ command.addCommand(createStatusCommand());
7519
+ return command;
7520
+ }
7521
+
7098
7522
  // src/commands/traceability.ts
7099
- import { Command as Command69 } from "commander";
7523
+ import { Command as Command74 } from "commander";
7100
7524
  import chalk10 from "chalk";
7101
7525
  function confidenceLabel(maxConfidence) {
7102
7526
  if (maxConfidence >= 0.8) return "explicit";
@@ -7212,7 +7636,7 @@ async function runTraceability(options) {
7212
7636
  const projectPath = process.cwd();
7213
7637
  const store = await loadGraphStore(projectPath);
7214
7638
  if (!store) handleNoStore(mode);
7215
- const graphModule = await import("./dist-M6FBUXZD.js");
7639
+ const graphModule = await import("./dist-QW5G3GX3.js");
7216
7640
  const filterOptions = buildFilterOptions(options);
7217
7641
  const results = graphModule.queryTraceability(store, filterOptions);
7218
7642
  if (results.length === 0) handleEmptyResults(mode);
@@ -7227,7 +7651,7 @@ async function runTraceability(options) {
7227
7651
  process.exit(ExitCode.SUCCESS);
7228
7652
  }
7229
7653
  function createTraceabilityCommand() {
7230
- return new Command69("traceability").description("Show spec-to-implementation traceability from the knowledge graph").option("--spec <path>", "Filter by spec file path").option("--feature <name>", "Filter by feature name").action(async (opts, cmd) => {
7654
+ return new Command74("traceability").description("Show spec-to-implementation traceability from the knowledge graph").option("--spec <path>", "Filter by spec file path").option("--feature <name>", "Filter by feature name").action(async (opts, cmd) => {
7231
7655
  const globalOpts = cmd.optsWithGlobals();
7232
7656
  await runTraceability({
7233
7657
  spec: opts.spec,
@@ -7240,15 +7664,15 @@ function createTraceabilityCommand() {
7240
7664
  }
7241
7665
 
7242
7666
  // src/commands/uninstall.ts
7243
- import * as path55 from "path";
7244
- import { Command as Command70 } from "commander";
7667
+ import * as path57 from "path";
7668
+ import { Command as Command75 } from "commander";
7245
7669
  async function runUninstall(skillName, options) {
7246
7670
  const packageName = resolvePackageName(skillName);
7247
7671
  const shortName = extractSkillName(packageName);
7248
7672
  const globalDir = resolveGlobalSkillsDir();
7249
- const skillsDir = path55.dirname(globalDir);
7250
- const communityBase = path55.join(skillsDir, "community");
7251
- const lockfilePath = path55.join(communityBase, "skills-lock.json");
7673
+ const skillsDir = path57.dirname(globalDir);
7674
+ const communityBase = path57.join(skillsDir, "community");
7675
+ const lockfilePath = path57.join(communityBase, "skills-lock.json");
7252
7676
  const lockfile = readLockfile2(lockfilePath);
7253
7677
  const entry = lockfile.skills[packageName];
7254
7678
  if (!entry) {
@@ -7278,7 +7702,7 @@ async function runUninstall(skillName, options) {
7278
7702
  return result;
7279
7703
  }
7280
7704
  function createUninstallCommand() {
7281
- const cmd = new Command70("uninstall");
7705
+ const cmd = new Command75("uninstall");
7282
7706
  cmd.description("Uninstall a community skill").argument("<skill>", "Skill name or @harness-skills/scoped package name").option("--force", "Remove even if other skills depend on this one").action(async (skill, opts) => {
7283
7707
  try {
7284
7708
  const result = await runUninstall(skill, opts);
@@ -7297,9 +7721,9 @@ function createUninstallCommand() {
7297
7721
  }
7298
7722
 
7299
7723
  // src/commands/uninstall-constraints.ts
7300
- import * as fs33 from "fs/promises";
7301
- import * as path56 from "path";
7302
- import { Command as Command71 } from "commander";
7724
+ import * as fs35 from "fs/promises";
7725
+ import * as path58 from "path";
7726
+ import { Command as Command76 } from "commander";
7303
7727
  async function runUninstallConstraints(options) {
7304
7728
  const { packageName, configPath, lockfilePath } = options;
7305
7729
  const lockfileResult = await readLockfile(lockfilePath);
@@ -7319,7 +7743,7 @@ async function runUninstallConstraints(options) {
7319
7743
  }
7320
7744
  let localConfig;
7321
7745
  try {
7322
- const raw = await fs33.readFile(configPath, "utf-8");
7746
+ const raw = await fs35.readFile(configPath, "utf-8");
7323
7747
  localConfig = JSON.parse(raw);
7324
7748
  } catch (err) {
7325
7749
  return {
@@ -7356,11 +7780,11 @@ async function runUninstallConstraints(options) {
7356
7780
  };
7357
7781
  }
7358
7782
  function createUninstallConstraintsCommand() {
7359
- const cmd = new Command71("uninstall-constraints");
7783
+ const cmd = new Command76("uninstall-constraints");
7360
7784
  cmd.description("Remove a previously installed constraints package").argument("<name>", "Name of the constraint package to uninstall").option("-c, --config <path>", "Path to harness.config.json").action(async (name, opts) => {
7361
7785
  let configPath;
7362
7786
  if (opts.config) {
7363
- configPath = path56.resolve(opts.config);
7787
+ configPath = path58.resolve(opts.config);
7364
7788
  } else {
7365
7789
  const found = findConfigFile();
7366
7790
  if (!found.ok) {
@@ -7369,8 +7793,8 @@ function createUninstallConstraintsCommand() {
7369
7793
  }
7370
7794
  configPath = found.value;
7371
7795
  }
7372
- const projectRoot = path56.dirname(configPath);
7373
- const lockfilePath = path56.join(projectRoot, ".harness", "constraints.lock.json");
7796
+ const projectRoot = path58.dirname(configPath);
7797
+ const lockfilePath = path58.join(projectRoot, ".harness", "constraints.lock.json");
7374
7798
  const result = await runUninstallConstraints({
7375
7799
  packageName: name,
7376
7800
  configPath,
@@ -7395,9 +7819,10 @@ function createUninstallConstraintsCommand() {
7395
7819
  }
7396
7820
 
7397
7821
  // src/commands/update.ts
7398
- import { Command as Command72 } from "commander";
7399
- import { execFileSync as execFileSync6 } from "child_process";
7822
+ import { Command as Command77 } from "commander";
7823
+ import { execFile, execFileSync as execFileSync6 } from "child_process";
7400
7824
  import { realpathSync } from "fs";
7825
+ import { promisify } from "util";
7401
7826
  import readline2 from "readline";
7402
7827
  import chalk11 from "chalk";
7403
7828
  function detectPackageManager() {
@@ -7417,25 +7842,32 @@ function detectPackageManager() {
7417
7842
  }
7418
7843
  return "npm";
7419
7844
  }
7420
- function getLatestVersion(pkg = "@harness-engineering/cli") {
7421
- const output = execFileSync6("npm", ["view", pkg, "dist-tags.latest"], {
7845
+ var execFileAsync = promisify(execFile);
7846
+ async function getLatestVersionAsync(pkg) {
7847
+ const { stdout } = await execFileAsync("npm", ["view", pkg, "dist-tags.latest"], {
7422
7848
  encoding: "utf-8",
7423
7849
  timeout: 15e3
7424
7850
  });
7425
- return output.trim();
7851
+ return stdout.trim();
7426
7852
  }
7427
- function getInstalledVersion(pm) {
7853
+ function getInstalledVersions(pm, packages) {
7854
+ const versions = {};
7428
7855
  try {
7429
- const output = execFileSync6(pm, ["list", "-g", "@harness-engineering/cli", "--json"], {
7856
+ const output = execFileSync6(pm, ["list", "-g", "--json"], {
7430
7857
  encoding: "utf-8",
7431
7858
  timeout: 15e3
7432
7859
  });
7433
7860
  const data = JSON.parse(output);
7434
7861
  const deps = data.dependencies ?? {};
7435
- return deps["@harness-engineering/cli"]?.version ?? null;
7862
+ for (const pkg of packages) {
7863
+ versions[pkg] = deps[pkg]?.version ?? null;
7864
+ }
7436
7865
  } catch {
7437
- return null;
7866
+ for (const pkg of packages) {
7867
+ versions[pkg] = null;
7868
+ }
7438
7869
  }
7870
+ return versions;
7439
7871
  }
7440
7872
  function getInstalledPackages(pm) {
7441
7873
  try {
@@ -7455,10 +7887,10 @@ function prompt(question) {
7455
7887
  input: process.stdin,
7456
7888
  output: process.stdout
7457
7889
  });
7458
- return new Promise((resolve32) => {
7890
+ return new Promise((resolve33) => {
7459
7891
  rl.question(question, (answer) => {
7460
7892
  rl.close();
7461
- resolve32(answer.trim().toLowerCase());
7893
+ resolve33(answer.trim().toLowerCase());
7462
7894
  });
7463
7895
  });
7464
7896
  }
@@ -7477,27 +7909,25 @@ async function offerRegeneration() {
7477
7909
  console.log(` ${chalk11.cyan(`harness generate${isGlobal ? " --global" : ""}`)}`);
7478
7910
  }
7479
7911
  }
7480
- async function checkForUpdates(_pm, opts, currentVersion) {
7481
- if (opts.version) return void 0;
7912
+ async function checkAllPackages(packages, installedVersions) {
7482
7913
  logger.info("Checking for updates...");
7483
- let latestCliVersion;
7484
- try {
7485
- latestCliVersion = getLatestVersion();
7486
- } catch {
7487
- logger.error("Failed to fetch latest version from npm registry");
7488
- process.exit(ExitCode.ERROR);
7489
- }
7490
- if (currentVersion && currentVersion === latestCliVersion) {
7491
- logger.success(`Already up to date (v${currentVersion})`);
7492
- process.exit(ExitCode.SUCCESS);
7493
- }
7494
- if (currentVersion) {
7495
- console.log("");
7496
- logger.info(`Current CLI version: ${chalk11.dim(`v${currentVersion}`)}`);
7497
- logger.info(`Latest CLI version: ${chalk11.green(`v${latestCliVersion}`)}`);
7498
- console.log("");
7914
+ const results = await Promise.allSettled(
7915
+ packages.map(async (pkg) => {
7916
+ const latest = await getLatestVersionAsync(pkg);
7917
+ const current = installedVersions[pkg] ?? null;
7918
+ return { pkg, current, latest, outdated: !current || current !== latest };
7919
+ })
7920
+ );
7921
+ const outdated = [];
7922
+ for (const result of results) {
7923
+ if (result.status === "rejected") {
7924
+ continue;
7925
+ }
7926
+ if (result.value.outdated) {
7927
+ outdated.push(result.value);
7928
+ }
7499
7929
  }
7500
- return latestCliVersion;
7930
+ return { hasUpdates: outdated.length > 0, outdated };
7501
7931
  }
7502
7932
  function buildInstallPackages(packages, opts) {
7503
7933
  const pm = detectPackageManager();
@@ -7515,12 +7945,30 @@ async function runUpdateAction(opts, globalOpts) {
7515
7945
  if (globalOpts.verbose) {
7516
7946
  logger.info(`Detected package manager: ${pm}`);
7517
7947
  }
7518
- const currentVersion = getInstalledVersion(pm);
7519
- await checkForUpdates(pm, opts, currentVersion);
7520
7948
  const packages = getInstalledPackages(pm);
7521
7949
  if (globalOpts.verbose) {
7522
7950
  logger.info(`Installed packages: ${packages.join(", ")}`);
7523
7951
  }
7952
+ if (opts.regenerate) {
7953
+ await offerRegeneration();
7954
+ process.exit(ExitCode.SUCCESS);
7955
+ }
7956
+ if (!opts.version && !opts.force) {
7957
+ const installedVersions = getInstalledVersions(pm, packages);
7958
+ const { hasUpdates, outdated } = await checkAllPackages(packages, installedVersions);
7959
+ if (!hasUpdates) {
7960
+ logger.success("All packages are up to date");
7961
+ await offerRegeneration();
7962
+ process.exit(ExitCode.SUCCESS);
7963
+ }
7964
+ console.log("");
7965
+ for (const { pkg, current, latest } of outdated) {
7966
+ const shortName = pkg.replace("@harness-engineering/", "");
7967
+ const currentStr = current ? chalk11.dim(`v${current}`) : chalk11.dim("not installed");
7968
+ logger.info(`${shortName}: ${currentStr} \u2192 ${chalk11.green(`v${latest}`)}`);
7969
+ }
7970
+ console.log("");
7971
+ }
7524
7972
  const { installPkgs, installCmd } = buildInstallPackages(packages, opts);
7525
7973
  if (globalOpts.verbose) {
7526
7974
  logger.info(`Running: ${installCmd}`);
@@ -7540,16 +7988,19 @@ async function runUpdateAction(opts, globalOpts) {
7540
7988
  process.exit(ExitCode.SUCCESS);
7541
7989
  }
7542
7990
  function createUpdateCommand() {
7543
- return new Command72("update").description("Update all @harness-engineering packages to the latest version").option("--version <semver>", "Pin @harness-engineering/cli to a specific version").action(async (opts, cmd) => {
7991
+ return new Command77("update").description("Update all @harness-engineering packages to the latest version").option("--version <semver>", "Pin @harness-engineering/cli to a specific version").option("--force", "Force update even if versions match").option(
7992
+ "--regenerate",
7993
+ "Only regenerate slash commands and agent definitions (skip package updates)"
7994
+ ).action(async (opts, cmd) => {
7544
7995
  const globalOpts = cmd.optsWithGlobals();
7545
7996
  await runUpdateAction(opts, globalOpts);
7546
7997
  });
7547
7998
  }
7548
7999
 
7549
8000
  // src/commands/usage.ts
7550
- import { Command as Command73 } from "commander";
8001
+ import { Command as Command78 } from "commander";
7551
8002
  async function loadAndPriceRecords(cwd, includeClaudeSessions = false) {
7552
- const { readCostRecords, loadPricingData, calculateCost, parseCCRecords } = await import("./dist-27IJJDWG.js");
8003
+ const { readCostRecords, loadPricingData, calculateCost, parseCCRecords } = await import("./dist-TZQUURSP.js");
7553
8004
  const records = readCostRecords(cwd);
7554
8005
  if (includeClaudeSessions) {
7555
8006
  const ccRecords = parseCCRecords();
@@ -7574,6 +8025,13 @@ function formatTokenCount(count) {
7574
8025
  if (count >= 1e3) return (count / 1e3).toFixed(1) + "K";
7575
8026
  return String(count);
7576
8027
  }
8028
+ function formatPercent(ratio) {
8029
+ return (ratio * 100).toFixed(1) + "%";
8030
+ }
8031
+ function computeCacheHitRate(cacheReadTokens, inputTokens) {
8032
+ if (cacheReadTokens == null || cacheReadTokens === 0 || inputTokens === 0) return null;
8033
+ return cacheReadTokens / inputTokens;
8034
+ }
7577
8035
  function formatModels(models) {
7578
8036
  if (models.length === 0) return "unknown";
7579
8037
  if (models.length === 1) return models[0] ?? "unknown";
@@ -7593,15 +8051,25 @@ function registerDailyCommand(usage) {
7593
8051
  }
7594
8052
  return;
7595
8053
  }
7596
- const { aggregateByDay } = await import("./dist-27IJJDWG.js");
8054
+ const { aggregateByDay } = await import("./dist-TZQUURSP.js");
7597
8055
  const dailyData = aggregateByDay(records);
7598
8056
  const limited = dailyData.slice(0, days);
7599
8057
  if (globalOpts.json) {
7600
- console.log(JSON.stringify(limited, null, 2));
8058
+ const enriched = limited.map((day) => {
8059
+ const hitRate = computeCacheHitRate(day.cacheReadTokens, day.tokens.inputTokens);
8060
+ return {
8061
+ ...day,
8062
+ ...hitRate != null ? { cacheHitRate: Math.round(hitRate * 1e3) / 1e3 } : {}
8063
+ };
8064
+ });
8065
+ console.log(JSON.stringify(enriched, null, 2));
7601
8066
  return;
7602
8067
  }
7603
- const header = "Date | Sessions | Input | Output | Model(s) | Cost";
7604
- const divider = "-------------|----------|-----------|-----------|------------------------------|--------";
8068
+ const hasCacheData = limited.some((d) => d.cacheReadTokens != null && d.cacheReadTokens > 0);
8069
+ const cacheHeader = hasCacheData ? " | Cache " : "";
8070
+ const cacheDivider = hasCacheData ? " | ------" : "";
8071
+ const header = "Date | Sessions | Input | Output | Model(s) | Cost " + cacheHeader;
8072
+ const divider = "-------------|----------|-----------|-----------|------------------------------|-------" + cacheDivider;
7605
8073
  logger.info(header);
7606
8074
  logger.info(divider);
7607
8075
  for (const day of limited) {
@@ -7611,7 +8079,13 @@ function registerDailyCommand(usage) {
7611
8079
  const output = formatTokenCount(day.tokens.outputTokens).padStart(9);
7612
8080
  const models = formatModels(day.models).padEnd(28);
7613
8081
  const cost = formatMicroUSD(day.costMicroUSD);
7614
- logger.info(`${date} | ${sessions} | ${input} | ${output} | ${models} | ${cost}`);
8082
+ const cacheCol = hasCacheData ? (() => {
8083
+ const rate = computeCacheHitRate(day.cacheReadTokens, day.tokens.inputTokens);
8084
+ return " | " + (rate != null ? formatPercent(rate).padStart(5) : " -");
8085
+ })() : "";
8086
+ logger.info(
8087
+ `${date} | ${sessions} | ${input} | ${output} | ${models} | ${cost}${cacheCol}`
8088
+ );
7615
8089
  }
7616
8090
  });
7617
8091
  }
@@ -7629,7 +8103,7 @@ function registerSessionsCommand(usage) {
7629
8103
  }
7630
8104
  return;
7631
8105
  }
7632
- const { aggregateBySession } = await import("./dist-27IJJDWG.js");
8106
+ const { aggregateBySession } = await import("./dist-TZQUURSP.js");
7633
8107
  const sessionData = aggregateBySession(records);
7634
8108
  const limited = sessionData.slice(0, limit);
7635
8109
  if (globalOpts.json) {
@@ -7688,6 +8162,12 @@ function printSessionDetail(match) {
7688
8162
  if (match.cacheCreationTokens != null) {
7689
8163
  logger.info(` Cache creation tokens: ${formatTokenCount(match.cacheCreationTokens)}`);
7690
8164
  }
8165
+ const hitRate = computeCacheHitRate(match.cacheReadTokens, match.tokens.inputTokens);
8166
+ if (hitRate != null) {
8167
+ logger.info("");
8168
+ logger.info("Cache Performance:");
8169
+ logger.info(` Cache hit rate: ${formatPercent(hitRate)}`);
8170
+ }
7691
8171
  logger.info("");
7692
8172
  logger.info(`Cost: ${formatMicroUSD(match.costMicroUSD)}`);
7693
8173
  }
@@ -7696,7 +8176,7 @@ function registerSessionCommand(usage) {
7696
8176
  const globalOpts = cmd.optsWithGlobals();
7697
8177
  const cwd = process.cwd();
7698
8178
  const records = await loadAndPriceRecords(cwd, globalOpts.includeClaudeSessions);
7699
- const { aggregateBySession } = await import("./dist-27IJJDWG.js");
8179
+ const { aggregateBySession } = await import("./dist-TZQUURSP.js");
7700
8180
  const sessionData = aggregateBySession(records);
7701
8181
  const match = sessionData.find((s) => s.sessionId === id);
7702
8182
  if (!match) {
@@ -7705,7 +8185,12 @@ function registerSessionCommand(usage) {
7705
8185
  return;
7706
8186
  }
7707
8187
  if (globalOpts.json) {
7708
- console.log(JSON.stringify(match, null, 2));
8188
+ const hitRate = computeCacheHitRate(match.cacheReadTokens, match.tokens.inputTokens);
8189
+ const enriched = {
8190
+ ...match,
8191
+ ...hitRate != null ? { cacheHitRate: Math.round(hitRate * 1e3) / 1e3 } : {}
8192
+ };
8193
+ console.log(JSON.stringify(enriched, null, 2));
7709
8194
  return;
7710
8195
  }
7711
8196
  printSessionDetail(match);
@@ -7724,7 +8209,7 @@ function registerLatestCommand(usage) {
7724
8209
  }
7725
8210
  return;
7726
8211
  }
7727
- const { aggregateBySession } = await import("./dist-27IJJDWG.js");
8212
+ const { aggregateBySession } = await import("./dist-TZQUURSP.js");
7728
8213
  const sessionData = aggregateBySession(records);
7729
8214
  const latest = sessionData[0];
7730
8215
  if (!latest) {
@@ -7750,7 +8235,7 @@ function registerLatestCommand(usage) {
7750
8235
  });
7751
8236
  }
7752
8237
  function createUsageCommand() {
7753
- const usage = new Command73("usage").description("Token usage and cost tracking");
8238
+ const usage = new Command78("usage").description("Token usage and cost tracking");
7754
8239
  usage.option(
7755
8240
  "--include-claude-sessions",
7756
8241
  "Include Claude Code session data from ~/.claude/projects/"
@@ -7763,15 +8248,15 @@ function createUsageCommand() {
7763
8248
  }
7764
8249
 
7765
8250
  // src/commands/validate.ts
7766
- import { Command as Command74 } from "commander";
7767
- import * as path57 from "path";
8251
+ import { Command as Command79 } from "commander";
8252
+ import * as path59 from "path";
7768
8253
  async function runValidate(options) {
7769
8254
  const configResult = resolveConfig(options.configPath);
7770
8255
  if (!configResult.ok) {
7771
8256
  return configResult;
7772
8257
  }
7773
8258
  const config = configResult.value;
7774
- const cwd = options.cwd ?? (options.configPath ? path57.dirname(path57.resolve(options.configPath)) : process.cwd());
8259
+ const cwd = options.cwd ?? (options.configPath ? path59.dirname(path59.resolve(options.configPath)) : process.cwd());
7775
8260
  const result = {
7776
8261
  valid: true,
7777
8262
  checks: {
@@ -7781,7 +8266,7 @@ async function runValidate(options) {
7781
8266
  },
7782
8267
  issues: []
7783
8268
  };
7784
- const agentsMapPath = path57.resolve(cwd, config.agentsMapPath);
8269
+ const agentsMapPath = path59.resolve(cwd, config.agentsMapPath);
7785
8270
  const agentsResult = await validateAgentsMap(agentsMapPath);
7786
8271
  if (agentsResult.ok) {
7787
8272
  result.checks.agentsMap = true;
@@ -7826,11 +8311,11 @@ function resolveValidateMode(globalOpts) {
7826
8311
  return OutputMode.TEXT;
7827
8312
  }
7828
8313
  async function printCrossCheckWarnings(mode) {
7829
- const { runCrossCheck: runCrossCheck2 } = await import("./validate-cross-check-WQWFMPXJ.js");
8314
+ const { runCrossCheck: runCrossCheck2 } = await import("./validate-cross-check-M4NP2UF5.js");
7830
8315
  const cwd = process.cwd();
7831
8316
  const crossResult = await runCrossCheck2({
7832
- specsDir: path57.join(cwd, "docs", "specs"),
7833
- plansDir: path57.join(cwd, "docs", "plans"),
8317
+ specsDir: path59.join(cwd, "docs", "specs"),
8318
+ plansDir: path59.join(cwd, "docs", "plans"),
7834
8319
  projectPath: cwd
7835
8320
  });
7836
8321
  if (!crossResult.ok || crossResult.value.warnings === 0) return;
@@ -7842,7 +8327,7 @@ async function printCrossCheckWarnings(mode) {
7842
8327
  ${crossResult.value.warnings} warnings`);
7843
8328
  }
7844
8329
  function createValidateCommand3() {
7845
- const command = new Command74("validate").description("Run all validation checks").option("--cross-check", "Run cross-artifact consistency validation").action(async (opts, cmd) => {
8330
+ const command = new Command79("validate").description("Run all validation checks").option("--cross-check", "Run cross-artifact consistency validation").action(async (opts, cmd) => {
7846
8331
  const globalOpts = cmd.optsWithGlobals();
7847
8332
  const mode = resolveValidateMode(globalOpts);
7848
8333
  const formatter = new OutputFormatter(mode);
@@ -7871,6 +8356,7 @@ function createValidateCommand3() {
7871
8356
  // src/commands/_registry.ts
7872
8357
  var commandCreators = [
7873
8358
  createAddCommand,
8359
+ createAdoptionCommand,
7874
8360
  createAgentCommand,
7875
8361
  createBlueprintCommand,
7876
8362
  createCheckArchCommand,
@@ -7881,6 +8367,7 @@ var commandCreators = [
7881
8367
  createCheckSecurityCommand,
7882
8368
  createCICommand,
7883
8369
  createCleanupCommand,
8370
+ createCleanupSessionsCommand,
7884
8371
  createCreateSkillCommand,
7885
8372
  createDashboardCommand,
7886
8373
  createDoctorCommand,
@@ -7914,6 +8401,7 @@ var commandCreators = [
7914
8401
  createSnapshotCommand,
7915
8402
  createStateCommand,
7916
8403
  createTaintCommand,
8404
+ createTelemetryCommand,
7917
8405
  createTraceabilityCommand,
7918
8406
  createUninstallCommand,
7919
8407
  createUninstallConstraintsCommand,
@@ -7924,7 +8412,7 @@ var commandCreators = [
7924
8412
 
7925
8413
  // src/index.ts
7926
8414
  function createProgram() {
7927
- const program = new Command75();
8415
+ const program = new Command80();
7928
8416
  program.name("harness").description("CLI for Harness Engineering toolkit").version(CLI_VERSION).option("-c, --config <path>", "Path to config file").option("--json", "Output as JSON").option("--verbose", "Verbose output").option("--quiet", "Minimal output");
7929
8417
  for (const creator of commandCreators) {
7930
8418
  program.addCommand(creator());