@harness-engineering/cli 1.23.1 → 1.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (4483) hide show
  1. package/dist/agents/commands/claude-code/harness/harness.md +36 -0
  2. package/dist/agents/commands/codex/harness/add-harness-component/SKILL.md +21 -12
  3. package/dist/agents/commands/codex/harness/cleanup-dead-code/SKILL.md +9 -0
  4. package/dist/agents/commands/codex/harness/detect-doc-drift/SKILL.md +9 -0
  5. package/dist/agents/commands/codex/harness/enforce-architecture/SKILL.md +5 -15
  6. package/dist/agents/commands/codex/harness/harness-architecture-advisor/SKILL.md +5 -15
  7. package/dist/agents/commands/codex/harness/harness-autopilot/SKILL.md +10 -0
  8. package/dist/agents/commands/codex/harness/harness-brainstorming/SKILL.md +9 -0
  9. package/dist/agents/commands/codex/harness/harness-code-review/SKILL.md +5 -15
  10. package/dist/agents/commands/codex/harness/harness-codebase-cleanup/SKILL.md +9 -0
  11. package/dist/agents/commands/codex/harness/harness-debugging/SKILL.md +9 -0
  12. package/dist/agents/commands/codex/harness/harness-dependency-health/SKILL.md +8 -0
  13. package/dist/agents/commands/codex/harness/harness-docs-pipeline/SKILL.md +9 -0
  14. package/dist/agents/commands/codex/harness/harness-execution/SKILL.md +9 -0
  15. package/dist/agents/commands/codex/harness/harness-hotspot-detector/SKILL.md +8 -0
  16. package/dist/agents/commands/codex/harness/harness-impact-analysis/SKILL.md +8 -0
  17. package/dist/agents/commands/codex/harness/harness-integrity/SKILL.md +8 -0
  18. package/dist/agents/commands/codex/harness/harness-onboarding/SKILL.md +18 -10
  19. package/dist/agents/commands/codex/harness/harness-perf/SKILL.md +9 -0
  20. package/dist/agents/commands/codex/harness/harness-planning/SKILL.md +10 -0
  21. package/dist/agents/commands/codex/harness/harness-refactoring/SKILL.md +9 -0
  22. package/dist/agents/commands/codex/harness/harness-release-readiness/SKILL.md +9 -0
  23. package/dist/agents/commands/codex/harness/harness-roadmap/SKILL.md +10 -1
  24. package/dist/agents/commands/codex/harness/harness-security-scan/SKILL.md +5 -15
  25. package/dist/agents/commands/codex/harness/harness-skill-authoring/SKILL.md +20 -1
  26. package/dist/agents/commands/codex/harness/harness-soundness-review/SKILL.md +10 -0
  27. package/dist/agents/commands/codex/harness/harness-supply-chain-audit/SKILL.md +8 -0
  28. package/dist/agents/commands/codex/harness/harness-tdd/SKILL.md +9 -0
  29. package/dist/agents/commands/codex/harness/harness-test-advisor/SKILL.md +8 -0
  30. package/dist/agents/commands/codex/harness/harness-verification/SKILL.md +9 -0
  31. package/dist/agents/commands/codex/harness/harness-verify/SKILL.md +8 -0
  32. package/dist/agents/commands/codex/harness/initialize-harness-project/SKILL.md +22 -13
  33. package/dist/agents/commands/cursor/harness/add-harness-component.mdc +12 -12
  34. package/dist/agents/commands/cursor/harness/harness-onboarding.mdc +10 -10
  35. package/dist/agents/commands/cursor/harness/harness-roadmap.mdc +1 -1
  36. package/dist/agents/commands/cursor/harness/initialize-harness-project.mdc +13 -13
  37. package/dist/agents/commands/gemini-cli/harness/harness.toml +277 -0
  38. package/dist/agents/skills/README.md +6 -5
  39. package/dist/agents/skills/claude-code/a11y-aria-patterns/SKILL.md +183 -0
  40. package/dist/agents/skills/claude-code/a11y-aria-patterns/skill.yaml +43 -0
  41. package/dist/agents/skills/claude-code/a11y-color-contrast/SKILL.md +156 -0
  42. package/dist/agents/skills/claude-code/a11y-color-contrast/skill.yaml +45 -0
  43. package/dist/agents/skills/claude-code/a11y-form-patterns/SKILL.md +147 -0
  44. package/dist/agents/skills/claude-code/a11y-form-patterns/skill.yaml +45 -0
  45. package/dist/agents/skills/claude-code/a11y-image-text-alt/SKILL.md +159 -0
  46. package/dist/agents/skills/claude-code/a11y-image-text-alt/skill.yaml +43 -0
  47. package/dist/agents/skills/claude-code/a11y-keyboard-navigation/SKILL.md +169 -0
  48. package/dist/agents/skills/claude-code/a11y-keyboard-navigation/skill.yaml +45 -0
  49. package/dist/agents/skills/claude-code/a11y-modal-patterns/SKILL.md +201 -0
  50. package/dist/agents/skills/claude-code/a11y-modal-patterns/skill.yaml +42 -0
  51. package/dist/agents/skills/claude-code/a11y-motion-animation/SKILL.md +199 -0
  52. package/dist/agents/skills/claude-code/a11y-motion-animation/skill.yaml +45 -0
  53. package/dist/agents/skills/claude-code/a11y-screen-reader-testing/SKILL.md +138 -0
  54. package/dist/agents/skills/claude-code/a11y-screen-reader-testing/skill.yaml +43 -0
  55. package/dist/agents/skills/claude-code/a11y-semantic-html/SKILL.md +139 -0
  56. package/dist/agents/skills/claude-code/a11y-semantic-html/skill.yaml +43 -0
  57. package/dist/agents/skills/claude-code/a11y-testing-automation/SKILL.md +206 -0
  58. package/dist/agents/skills/claude-code/a11y-testing-automation/skill.yaml +45 -0
  59. package/dist/agents/skills/claude-code/add-harness-component/SKILL.md +21 -12
  60. package/dist/agents/skills/claude-code/add-harness-component/skill.yaml +2 -0
  61. package/dist/agents/skills/claude-code/align-documentation/SKILL.md +9 -0
  62. package/dist/agents/skills/claude-code/align-documentation/skill.yaml +2 -0
  63. package/dist/agents/skills/claude-code/angular-component-pattern/SKILL.md +112 -0
  64. package/dist/agents/skills/claude-code/angular-component-pattern/skill.yaml +46 -0
  65. package/dist/agents/skills/claude-code/angular-directive-pattern/SKILL.md +166 -0
  66. package/dist/agents/skills/claude-code/angular-directive-pattern/skill.yaml +44 -0
  67. package/dist/agents/skills/claude-code/angular-http-interceptors/SKILL.md +174 -0
  68. package/dist/agents/skills/claude-code/angular-http-interceptors/skill.yaml +44 -0
  69. package/dist/agents/skills/claude-code/angular-lazy-loading/SKILL.md +156 -0
  70. package/dist/agents/skills/claude-code/angular-lazy-loading/skill.yaml +44 -0
  71. package/dist/agents/skills/claude-code/angular-performance-patterns/SKILL.md +141 -0
  72. package/dist/agents/skills/claude-code/angular-performance-patterns/skill.yaml +45 -0
  73. package/dist/agents/skills/claude-code/angular-pipe-pattern/SKILL.md +126 -0
  74. package/dist/agents/skills/claude-code/angular-pipe-pattern/skill.yaml +44 -0
  75. package/dist/agents/skills/claude-code/angular-reactive-forms/SKILL.md +136 -0
  76. package/dist/agents/skills/claude-code/angular-reactive-forms/skill.yaml +44 -0
  77. package/dist/agents/skills/claude-code/angular-routing-guards/SKILL.md +150 -0
  78. package/dist/agents/skills/claude-code/angular-routing-guards/skill.yaml +44 -0
  79. package/dist/agents/skills/claude-code/angular-rxjs-patterns/SKILL.md +152 -0
  80. package/dist/agents/skills/claude-code/angular-rxjs-patterns/skill.yaml +45 -0
  81. package/dist/agents/skills/claude-code/angular-schematics/SKILL.md +184 -0
  82. package/dist/agents/skills/claude-code/angular-schematics/skill.yaml +44 -0
  83. package/dist/agents/skills/claude-code/angular-service-di/SKILL.md +108 -0
  84. package/dist/agents/skills/claude-code/angular-service-di/skill.yaml +45 -0
  85. package/dist/agents/skills/claude-code/angular-signals-pattern/SKILL.md +116 -0
  86. package/dist/agents/skills/claude-code/angular-signals-pattern/skill.yaml +44 -0
  87. package/dist/agents/skills/claude-code/angular-standalone-components/SKILL.md +130 -0
  88. package/dist/agents/skills/claude-code/angular-standalone-components/skill.yaml +44 -0
  89. package/dist/agents/skills/claude-code/angular-state-management/SKILL.md +150 -0
  90. package/dist/agents/skills/claude-code/angular-state-management/skill.yaml +45 -0
  91. package/dist/agents/skills/claude-code/angular-testing-patterns/SKILL.md +180 -0
  92. package/dist/agents/skills/claude-code/angular-testing-patterns/skill.yaml +45 -0
  93. package/dist/agents/skills/claude-code/astro-component-pattern/SKILL.md +160 -0
  94. package/dist/agents/skills/claude-code/astro-component-pattern/skill.yaml +44 -0
  95. package/dist/agents/skills/claude-code/astro-content-collections/SKILL.md +155 -0
  96. package/dist/agents/skills/claude-code/astro-content-collections/skill.yaml +42 -0
  97. package/dist/agents/skills/claude-code/astro-deployment-config/SKILL.md +208 -0
  98. package/dist/agents/skills/claude-code/astro-deployment-config/skill.yaml +46 -0
  99. package/dist/agents/skills/claude-code/astro-image-optimization/SKILL.md +188 -0
  100. package/dist/agents/skills/claude-code/astro-image-optimization/skill.yaml +45 -0
  101. package/dist/agents/skills/claude-code/astro-integration-pattern/SKILL.md +164 -0
  102. package/dist/agents/skills/claude-code/astro-integration-pattern/skill.yaml +44 -0
  103. package/dist/agents/skills/claude-code/astro-islands-architecture/SKILL.md +103 -0
  104. package/dist/agents/skills/claude-code/astro-islands-architecture/skill.yaml +44 -0
  105. package/dist/agents/skills/claude-code/astro-multi-framework/SKILL.md +161 -0
  106. package/dist/agents/skills/claude-code/astro-multi-framework/skill.yaml +46 -0
  107. package/dist/agents/skills/claude-code/astro-routing-pattern/SKILL.md +135 -0
  108. package/dist/agents/skills/claude-code/astro-routing-pattern/skill.yaml +43 -0
  109. package/dist/agents/skills/claude-code/astro-server-endpoints/SKILL.md +173 -0
  110. package/dist/agents/skills/claude-code/astro-server-endpoints/skill.yaml +44 -0
  111. package/dist/agents/skills/claude-code/astro-ssr-hybrid/SKILL.md +191 -0
  112. package/dist/agents/skills/claude-code/astro-ssr-hybrid/skill.yaml +46 -0
  113. package/dist/agents/skills/claude-code/astro-view-transitions/SKILL.md +168 -0
  114. package/dist/agents/skills/claude-code/astro-view-transitions/skill.yaml +45 -0
  115. package/dist/agents/skills/claude-code/check-mechanical-constraints/SKILL.md +9 -0
  116. package/dist/agents/skills/claude-code/check-mechanical-constraints/skill.yaml +2 -0
  117. package/dist/agents/skills/claude-code/cleanup-dead-code/SKILL.md +11 -0
  118. package/dist/agents/skills/claude-code/cleanup-dead-code/skill.yaml +2 -0
  119. package/dist/agents/skills/claude-code/css-animation-pattern/SKILL.md +143 -0
  120. package/dist/agents/skills/claude-code/css-animation-pattern/skill.yaml +43 -0
  121. package/dist/agents/skills/claude-code/css-component-variants/SKILL.md +147 -0
  122. package/dist/agents/skills/claude-code/css-component-variants/skill.yaml +42 -0
  123. package/dist/agents/skills/claude-code/css-css-modules/SKILL.md +168 -0
  124. package/dist/agents/skills/claude-code/css-css-modules/skill.yaml +38 -0
  125. package/dist/agents/skills/claude-code/css-custom-components/SKILL.md +178 -0
  126. package/dist/agents/skills/claude-code/css-custom-components/skill.yaml +39 -0
  127. package/dist/agents/skills/claude-code/css-dark-mode/SKILL.md +171 -0
  128. package/dist/agents/skills/claude-code/css-dark-mode/skill.yaml +41 -0
  129. package/dist/agents/skills/claude-code/css-design-tokens/SKILL.md +155 -0
  130. package/dist/agents/skills/claude-code/css-design-tokens/skill.yaml +42 -0
  131. package/dist/agents/skills/claude-code/css-headless-ui/SKILL.md +179 -0
  132. package/dist/agents/skills/claude-code/css-headless-ui/skill.yaml +39 -0
  133. package/dist/agents/skills/claude-code/css-layout-patterns/SKILL.md +155 -0
  134. package/dist/agents/skills/claude-code/css-layout-patterns/skill.yaml +43 -0
  135. package/dist/agents/skills/claude-code/css-performance-patterns/SKILL.md +163 -0
  136. package/dist/agents/skills/claude-code/css-performance-patterns/skill.yaml +40 -0
  137. package/dist/agents/skills/claude-code/css-responsive-design/SKILL.md +161 -0
  138. package/dist/agents/skills/claude-code/css-responsive-design/skill.yaml +42 -0
  139. package/dist/agents/skills/claude-code/css-tailwind-merge/SKILL.md +128 -0
  140. package/dist/agents/skills/claude-code/css-tailwind-merge/skill.yaml +39 -0
  141. package/dist/agents/skills/claude-code/css-tailwind-pattern/SKILL.md +126 -0
  142. package/dist/agents/skills/claude-code/css-tailwind-pattern/skill.yaml +40 -0
  143. package/dist/agents/skills/claude-code/design-affordances/SKILL.md +157 -0
  144. package/dist/agents/skills/claude-code/design-affordances/skill.yaml +35 -0
  145. package/dist/agents/skills/claude-code/design-alignment/SKILL.md +148 -0
  146. package/dist/agents/skills/claude-code/design-alignment/skill.yaml +33 -0
  147. package/dist/agents/skills/claude-code/design-apple-hig/SKILL.md +237 -0
  148. package/dist/agents/skills/claude-code/design-apple-hig/skill.yaml +37 -0
  149. package/dist/agents/skills/claude-code/design-atomic-design/SKILL.md +172 -0
  150. package/dist/agents/skills/claude-code/design-atomic-design/skill.yaml +35 -0
  151. package/dist/agents/skills/claude-code/design-brand-consistency/SKILL.md +167 -0
  152. package/dist/agents/skills/claude-code/design-brand-consistency/skill.yaml +35 -0
  153. package/dist/agents/skills/claude-code/design-color-accessibility/SKILL.md +161 -0
  154. package/dist/agents/skills/claude-code/design-color-accessibility/skill.yaml +34 -0
  155. package/dist/agents/skills/claude-code/design-color-harmony/SKILL.md +152 -0
  156. package/dist/agents/skills/claude-code/design-color-harmony/skill.yaml +35 -0
  157. package/dist/agents/skills/claude-code/design-color-psychology/SKILL.md +151 -0
  158. package/dist/agents/skills/claude-code/design-color-psychology/skill.yaml +34 -0
  159. package/dist/agents/skills/claude-code/design-component-anatomy/SKILL.md +243 -0
  160. package/dist/agents/skills/claude-code/design-component-anatomy/skill.yaml +34 -0
  161. package/dist/agents/skills/claude-code/design-consistency/SKILL.md +179 -0
  162. package/dist/agents/skills/claude-code/design-consistency/skill.yaml +35 -0
  163. package/dist/agents/skills/claude-code/design-content-density/SKILL.md +156 -0
  164. package/dist/agents/skills/claude-code/design-content-density/skill.yaml +34 -0
  165. package/dist/agents/skills/claude-code/design-contrast-ratio/SKILL.md +151 -0
  166. package/dist/agents/skills/claude-code/design-contrast-ratio/skill.yaml +35 -0
  167. package/dist/agents/skills/claude-code/design-dark-mode-color/SKILL.md +152 -0
  168. package/dist/agents/skills/claude-code/design-dark-mode-color/skill.yaml +35 -0
  169. package/dist/agents/skills/claude-code/design-data-viz-design/SKILL.md +178 -0
  170. package/dist/agents/skills/claude-code/design-data-viz-design/skill.yaml +35 -0
  171. package/dist/agents/skills/claude-code/design-design-audit/SKILL.md +193 -0
  172. package/dist/agents/skills/claude-code/design-design-audit/skill.yaml +33 -0
  173. package/dist/agents/skills/claude-code/design-design-critique/SKILL.md +175 -0
  174. package/dist/agents/skills/claude-code/design-design-critique/skill.yaml +32 -0
  175. package/dist/agents/skills/claude-code/design-design-documentation/SKILL.md +163 -0
  176. package/dist/agents/skills/claude-code/design-design-documentation/skill.yaml +33 -0
  177. package/dist/agents/skills/claude-code/design-design-governance/SKILL.md +187 -0
  178. package/dist/agents/skills/claude-code/design-design-governance/skill.yaml +34 -0
  179. package/dist/agents/skills/claude-code/design-elevation-shadow/SKILL.md +163 -0
  180. package/dist/agents/skills/claude-code/design-elevation-shadow/skill.yaml +34 -0
  181. package/dist/agents/skills/claude-code/design-empty-error-states/SKILL.md +154 -0
  182. package/dist/agents/skills/claude-code/design-empty-error-states/skill.yaml +35 -0
  183. package/dist/agents/skills/claude-code/design-feedback-patterns/SKILL.md +156 -0
  184. package/dist/agents/skills/claude-code/design-feedback-patterns/skill.yaml +35 -0
  185. package/dist/agents/skills/claude-code/design-fluent-design/SKILL.md +241 -0
  186. package/dist/agents/skills/claude-code/design-fluent-design/skill.yaml +35 -0
  187. package/dist/agents/skills/claude-code/design-font-pairing/SKILL.md +161 -0
  188. package/dist/agents/skills/claude-code/design-font-pairing/skill.yaml +34 -0
  189. package/dist/agents/skills/claude-code/design-form-ux/SKILL.md +156 -0
  190. package/dist/agents/skills/claude-code/design-form-ux/skill.yaml +35 -0
  191. package/dist/agents/skills/claude-code/design-gestalt-closure-continuity/SKILL.md +182 -0
  192. package/dist/agents/skills/claude-code/design-gestalt-closure-continuity/skill.yaml +33 -0
  193. package/dist/agents/skills/claude-code/design-gestalt-common-fate/SKILL.md +214 -0
  194. package/dist/agents/skills/claude-code/design-gestalt-common-fate/skill.yaml +33 -0
  195. package/dist/agents/skills/claude-code/design-gestalt-figure-ground/SKILL.md +189 -0
  196. package/dist/agents/skills/claude-code/design-gestalt-figure-ground/skill.yaml +34 -0
  197. package/dist/agents/skills/claude-code/design-gestalt-proximity/SKILL.md +162 -0
  198. package/dist/agents/skills/claude-code/design-gestalt-proximity/skill.yaml +34 -0
  199. package/dist/agents/skills/claude-code/design-gestalt-similarity/SKILL.md +175 -0
  200. package/dist/agents/skills/claude-code/design-gestalt-similarity/skill.yaml +33 -0
  201. package/dist/agents/skills/claude-code/design-grid-systems/SKILL.md +154 -0
  202. package/dist/agents/skills/claude-code/design-grid-systems/skill.yaml +35 -0
  203. package/dist/agents/skills/claude-code/design-i18n-design/SKILL.md +181 -0
  204. package/dist/agents/skills/claude-code/design-i18n-design/skill.yaml +35 -0
  205. package/dist/agents/skills/claude-code/design-iconography/SKILL.md +169 -0
  206. package/dist/agents/skills/claude-code/design-iconography/skill.yaml +35 -0
  207. package/dist/agents/skills/claude-code/design-illustration-style/SKILL.md +170 -0
  208. package/dist/agents/skills/claude-code/design-illustration-style/skill.yaml +34 -0
  209. package/dist/agents/skills/claude-code/design-imagery-photography/SKILL.md +172 -0
  210. package/dist/agents/skills/claude-code/design-imagery-photography/skill.yaml +35 -0
  211. package/dist/agents/skills/claude-code/design-information-architecture/SKILL.md +155 -0
  212. package/dist/agents/skills/claude-code/design-information-architecture/skill.yaml +35 -0
  213. package/dist/agents/skills/claude-code/design-loading-patterns/SKILL.md +175 -0
  214. package/dist/agents/skills/claude-code/design-loading-patterns/skill.yaml +33 -0
  215. package/dist/agents/skills/claude-code/design-material-design-3/SKILL.md +184 -0
  216. package/dist/agents/skills/claude-code/design-material-design-3/skill.yaml +36 -0
  217. package/dist/agents/skills/claude-code/design-micro-interactions/SKILL.md +156 -0
  218. package/dist/agents/skills/claude-code/design-micro-interactions/skill.yaml +35 -0
  219. package/dist/agents/skills/claude-code/design-motion-principles/SKILL.md +161 -0
  220. package/dist/agents/skills/claude-code/design-motion-principles/skill.yaml +36 -0
  221. package/dist/agents/skills/claude-code/design-naming-conventions/SKILL.md +200 -0
  222. package/dist/agents/skills/claude-code/design-naming-conventions/skill.yaml +34 -0
  223. package/dist/agents/skills/claude-code/design-navigation-ux/SKILL.md +150 -0
  224. package/dist/agents/skills/claude-code/design-navigation-ux/skill.yaml +34 -0
  225. package/dist/agents/skills/claude-code/design-palette-construction/SKILL.md +152 -0
  226. package/dist/agents/skills/claude-code/design-palette-construction/skill.yaml +37 -0
  227. package/dist/agents/skills/claude-code/design-parallax-scroll/SKILL.md +200 -0
  228. package/dist/agents/skills/claude-code/design-parallax-scroll/skill.yaml +34 -0
  229. package/dist/agents/skills/claude-code/design-readability/SKILL.md +183 -0
  230. package/dist/agents/skills/claude-code/design-readability/skill.yaml +36 -0
  231. package/dist/agents/skills/claude-code/design-responsive-strategy/SKILL.md +157 -0
  232. package/dist/agents/skills/claude-code/design-responsive-strategy/skill.yaml +34 -0
  233. package/dist/agents/skills/claude-code/design-responsive-type/SKILL.md +270 -0
  234. package/dist/agents/skills/claude-code/design-responsive-type/skill.yaml +34 -0
  235. package/dist/agents/skills/claude-code/design-state-design/SKILL.md +152 -0
  236. package/dist/agents/skills/claude-code/design-state-design/skill.yaml +36 -0
  237. package/dist/agents/skills/claude-code/design-token-architecture/SKILL.md +218 -0
  238. package/dist/agents/skills/claude-code/design-token-architecture/skill.yaml +36 -0
  239. package/dist/agents/skills/claude-code/design-transitions-timing/SKILL.md +183 -0
  240. package/dist/agents/skills/claude-code/design-transitions-timing/skill.yaml +34 -0
  241. package/dist/agents/skills/claude-code/design-type-scale/SKILL.md +157 -0
  242. package/dist/agents/skills/claude-code/design-type-scale/skill.yaml +34 -0
  243. package/dist/agents/skills/claude-code/design-typographic-hierarchy/SKILL.md +187 -0
  244. package/dist/agents/skills/claude-code/design-typographic-hierarchy/skill.yaml +34 -0
  245. package/dist/agents/skills/claude-code/design-typography-fundamentals/SKILL.md +158 -0
  246. package/dist/agents/skills/claude-code/design-typography-fundamentals/skill.yaml +36 -0
  247. package/dist/agents/skills/claude-code/design-visual-hierarchy/SKILL.md +150 -0
  248. package/dist/agents/skills/claude-code/design-visual-hierarchy/skill.yaml +36 -0
  249. package/dist/agents/skills/claude-code/design-web-fonts/SKILL.md +251 -0
  250. package/dist/agents/skills/claude-code/design-web-fonts/skill.yaml +35 -0
  251. package/dist/agents/skills/claude-code/design-whitespace/SKILL.md +150 -0
  252. package/dist/agents/skills/claude-code/design-whitespace/skill.yaml +36 -0
  253. package/dist/agents/skills/claude-code/detect-doc-drift/SKILL.md +9 -0
  254. package/dist/agents/skills/claude-code/detect-doc-drift/skill.yaml +2 -0
  255. package/dist/agents/skills/claude-code/drizzle-filtering-pattern/SKILL.md +185 -0
  256. package/dist/agents/skills/claude-code/drizzle-filtering-pattern/skill.yaml +43 -0
  257. package/dist/agents/skills/claude-code/drizzle-migrations/SKILL.md +139 -0
  258. package/dist/agents/skills/claude-code/drizzle-migrations/skill.yaml +39 -0
  259. package/dist/agents/skills/claude-code/drizzle-performance-patterns/SKILL.md +176 -0
  260. package/dist/agents/skills/claude-code/drizzle-performance-patterns/skill.yaml +42 -0
  261. package/dist/agents/skills/claude-code/drizzle-query-builder/SKILL.md +206 -0
  262. package/dist/agents/skills/claude-code/drizzle-query-builder/skill.yaml +44 -0
  263. package/dist/agents/skills/claude-code/drizzle-raw-sql/SKILL.md +157 -0
  264. package/dist/agents/skills/claude-code/drizzle-raw-sql/skill.yaml +39 -0
  265. package/dist/agents/skills/claude-code/drizzle-relations-pattern/SKILL.md +179 -0
  266. package/dist/agents/skills/claude-code/drizzle-relations-pattern/skill.yaml +41 -0
  267. package/dist/agents/skills/claude-code/drizzle-schema-definition/SKILL.md +151 -0
  268. package/dist/agents/skills/claude-code/drizzle-schema-definition/skill.yaml +46 -0
  269. package/dist/agents/skills/claude-code/drizzle-transactions/SKILL.md +146 -0
  270. package/dist/agents/skills/claude-code/drizzle-transactions/skill.yaml +39 -0
  271. package/dist/agents/skills/claude-code/drizzle-with-nextjs/SKILL.md +199 -0
  272. package/dist/agents/skills/claude-code/drizzle-with-nextjs/skill.yaml +43 -0
  273. package/dist/agents/skills/claude-code/enforce-architecture/SKILL.md +5 -15
  274. package/dist/agents/skills/claude-code/enforce-architecture/skill.yaml +2 -0
  275. package/dist/agents/skills/claude-code/events-event-schema/SKILL.md +180 -0
  276. package/dist/agents/skills/claude-code/events-event-schema/skill.yaml +44 -0
  277. package/dist/agents/skills/claude-code/events-event-storming/SKILL.md +199 -0
  278. package/dist/agents/skills/claude-code/events-event-storming/skill.yaml +44 -0
  279. package/dist/agents/skills/claude-code/events-idempotency/SKILL.md +188 -0
  280. package/dist/agents/skills/claude-code/events-idempotency/skill.yaml +43 -0
  281. package/dist/agents/skills/claude-code/events-kafka-patterns/SKILL.md +190 -0
  282. package/dist/agents/skills/claude-code/events-kafka-patterns/skill.yaml +44 -0
  283. package/dist/agents/skills/claude-code/events-message-queue/SKILL.md +190 -0
  284. package/dist/agents/skills/claude-code/events-message-queue/skill.yaml +43 -0
  285. package/dist/agents/skills/claude-code/events-outbox-pattern/SKILL.md +212 -0
  286. package/dist/agents/skills/claude-code/events-outbox-pattern/skill.yaml +43 -0
  287. package/dist/agents/skills/claude-code/events-pubsub-pattern/SKILL.md +158 -0
  288. package/dist/agents/skills/claude-code/events-pubsub-pattern/skill.yaml +44 -0
  289. package/dist/agents/skills/claude-code/events-redis-pubsub/SKILL.md +183 -0
  290. package/dist/agents/skills/claude-code/events-redis-pubsub/skill.yaml +42 -0
  291. package/dist/agents/skills/claude-code/events-saga-choreography/SKILL.md +177 -0
  292. package/dist/agents/skills/claude-code/events-saga-choreography/skill.yaml +43 -0
  293. package/dist/agents/skills/claude-code/events-sse-pattern/SKILL.md +221 -0
  294. package/dist/agents/skills/claude-code/events-sse-pattern/skill.yaml +42 -0
  295. package/dist/agents/skills/claude-code/events-webhooks-pattern/SKILL.md +214 -0
  296. package/dist/agents/skills/claude-code/events-webhooks-pattern/skill.yaml +43 -0
  297. package/dist/agents/skills/claude-code/events-websocket-pattern/SKILL.md +252 -0
  298. package/dist/agents/skills/claude-code/events-websocket-pattern/skill.yaml +43 -0
  299. package/dist/agents/skills/claude-code/gof-abstract-factory/SKILL.md +193 -0
  300. package/dist/agents/skills/claude-code/gof-abstract-factory/skill.yaml +35 -0
  301. package/dist/agents/skills/claude-code/gof-adapter-pattern/SKILL.md +157 -0
  302. package/dist/agents/skills/claude-code/gof-adapter-pattern/skill.yaml +36 -0
  303. package/dist/agents/skills/claude-code/gof-bridge-pattern/SKILL.md +183 -0
  304. package/dist/agents/skills/claude-code/gof-bridge-pattern/skill.yaml +35 -0
  305. package/dist/agents/skills/claude-code/gof-builder-pattern/SKILL.md +236 -0
  306. package/dist/agents/skills/claude-code/gof-builder-pattern/skill.yaml +35 -0
  307. package/dist/agents/skills/claude-code/gof-chain-of-responsibility/SKILL.md +199 -0
  308. package/dist/agents/skills/claude-code/gof-chain-of-responsibility/skill.yaml +35 -0
  309. package/dist/agents/skills/claude-code/gof-command-pattern/SKILL.md +197 -0
  310. package/dist/agents/skills/claude-code/gof-command-pattern/skill.yaml +35 -0
  311. package/dist/agents/skills/claude-code/gof-composite-pattern/SKILL.md +188 -0
  312. package/dist/agents/skills/claude-code/gof-composite-pattern/skill.yaml +35 -0
  313. package/dist/agents/skills/claude-code/gof-decorator-pattern/SKILL.md +177 -0
  314. package/dist/agents/skills/claude-code/gof-decorator-pattern/skill.yaml +36 -0
  315. package/dist/agents/skills/claude-code/gof-facade-pattern/SKILL.md +143 -0
  316. package/dist/agents/skills/claude-code/gof-facade-pattern/skill.yaml +35 -0
  317. package/dist/agents/skills/claude-code/gof-factory-method/SKILL.md +148 -0
  318. package/dist/agents/skills/claude-code/gof-factory-method/skill.yaml +36 -0
  319. package/dist/agents/skills/claude-code/gof-flyweight-pattern/SKILL.md +160 -0
  320. package/dist/agents/skills/claude-code/gof-flyweight-pattern/skill.yaml +35 -0
  321. package/dist/agents/skills/claude-code/gof-iterator-pattern/SKILL.md +177 -0
  322. package/dist/agents/skills/claude-code/gof-iterator-pattern/skill.yaml +35 -0
  323. package/dist/agents/skills/claude-code/gof-mediator-pattern/SKILL.md +171 -0
  324. package/dist/agents/skills/claude-code/gof-mediator-pattern/skill.yaml +35 -0
  325. package/dist/agents/skills/claude-code/gof-memento-pattern/SKILL.md +207 -0
  326. package/dist/agents/skills/claude-code/gof-memento-pattern/skill.yaml +34 -0
  327. package/dist/agents/skills/claude-code/gof-null-object/SKILL.md +177 -0
  328. package/dist/agents/skills/claude-code/gof-null-object/skill.yaml +35 -0
  329. package/dist/agents/skills/claude-code/gof-observer-pattern/SKILL.md +175 -0
  330. package/dist/agents/skills/claude-code/gof-observer-pattern/skill.yaml +37 -0
  331. package/dist/agents/skills/claude-code/gof-prototype-pattern/SKILL.md +162 -0
  332. package/dist/agents/skills/claude-code/gof-prototype-pattern/skill.yaml +35 -0
  333. package/dist/agents/skills/claude-code/gof-proxy-pattern/SKILL.md +184 -0
  334. package/dist/agents/skills/claude-code/gof-proxy-pattern/skill.yaml +36 -0
  335. package/dist/agents/skills/claude-code/gof-singleton/SKILL.md +149 -0
  336. package/dist/agents/skills/claude-code/gof-singleton/skill.yaml +35 -0
  337. package/dist/agents/skills/claude-code/gof-state-pattern/SKILL.md +220 -0
  338. package/dist/agents/skills/claude-code/gof-state-pattern/skill.yaml +35 -0
  339. package/dist/agents/skills/claude-code/gof-strategy-pattern/SKILL.md +179 -0
  340. package/dist/agents/skills/claude-code/gof-strategy-pattern/skill.yaml +35 -0
  341. package/dist/agents/skills/claude-code/gof-template-method/SKILL.md +189 -0
  342. package/dist/agents/skills/claude-code/gof-template-method/skill.yaml +35 -0
  343. package/dist/agents/skills/claude-code/gof-visitor-pattern/SKILL.md +205 -0
  344. package/dist/agents/skills/claude-code/gof-visitor-pattern/skill.yaml +34 -0
  345. package/dist/agents/skills/claude-code/graphql-apollo-server/SKILL.md +169 -0
  346. package/dist/agents/skills/claude-code/graphql-apollo-server/skill.yaml +41 -0
  347. package/dist/agents/skills/claude-code/graphql-auth-patterns/SKILL.md +197 -0
  348. package/dist/agents/skills/claude-code/graphql-auth-patterns/skill.yaml +42 -0
  349. package/dist/agents/skills/claude-code/graphql-client-patterns/SKILL.md +152 -0
  350. package/dist/agents/skills/claude-code/graphql-client-patterns/skill.yaml +41 -0
  351. package/dist/agents/skills/claude-code/graphql-codegen-pattern/SKILL.md +154 -0
  352. package/dist/agents/skills/claude-code/graphql-codegen-pattern/skill.yaml +39 -0
  353. package/dist/agents/skills/claude-code/graphql-dataloader-pattern/SKILL.md +138 -0
  354. package/dist/agents/skills/claude-code/graphql-dataloader-pattern/skill.yaml +38 -0
  355. package/dist/agents/skills/claude-code/graphql-error-handling/SKILL.md +167 -0
  356. package/dist/agents/skills/claude-code/graphql-error-handling/skill.yaml +39 -0
  357. package/dist/agents/skills/claude-code/graphql-federation-pattern/SKILL.md +137 -0
  358. package/dist/agents/skills/claude-code/graphql-federation-pattern/skill.yaml +41 -0
  359. package/dist/agents/skills/claude-code/graphql-pagination-patterns/SKILL.md +175 -0
  360. package/dist/agents/skills/claude-code/graphql-pagination-patterns/skill.yaml +40 -0
  361. package/dist/agents/skills/claude-code/graphql-performance-patterns/SKILL.md +166 -0
  362. package/dist/agents/skills/claude-code/graphql-performance-patterns/skill.yaml +39 -0
  363. package/dist/agents/skills/claude-code/graphql-resolver-pattern/SKILL.md +129 -0
  364. package/dist/agents/skills/claude-code/graphql-resolver-pattern/skill.yaml +39 -0
  365. package/dist/agents/skills/claude-code/graphql-schema-design/SKILL.md +145 -0
  366. package/dist/agents/skills/claude-code/graphql-schema-design/skill.yaml +41 -0
  367. package/dist/agents/skills/claude-code/graphql-subscriptions/SKILL.md +198 -0
  368. package/dist/agents/skills/claude-code/graphql-subscriptions/skill.yaml +39 -0
  369. package/dist/agents/skills/claude-code/harness-accessibility/SKILL.md +10 -0
  370. package/dist/agents/skills/claude-code/harness-accessibility/skill.yaml +2 -0
  371. package/dist/agents/skills/claude-code/harness-api-design/SKILL.md +5 -15
  372. package/dist/agents/skills/claude-code/harness-api-design/skill.yaml +7 -0
  373. package/dist/agents/skills/claude-code/harness-architecture-advisor/SKILL.md +5 -15
  374. package/dist/agents/skills/claude-code/harness-architecture-advisor/skill.yaml +2 -0
  375. package/dist/agents/skills/claude-code/harness-auth/SKILL.md +5 -15
  376. package/dist/agents/skills/claude-code/harness-auth/skill.yaml +6 -0
  377. package/dist/agents/skills/claude-code/harness-autopilot/SKILL.md +10 -0
  378. package/dist/agents/skills/claude-code/harness-autopilot/skill.yaml +2 -0
  379. package/dist/agents/skills/claude-code/harness-brainstorming/SKILL.md +9 -0
  380. package/dist/agents/skills/claude-code/harness-brainstorming/skill.yaml +2 -0
  381. package/dist/agents/skills/claude-code/harness-caching/SKILL.md +10 -0
  382. package/dist/agents/skills/claude-code/harness-caching/skill.yaml +5 -0
  383. package/dist/agents/skills/claude-code/harness-chaos/SKILL.md +10 -0
  384. package/dist/agents/skills/claude-code/harness-chaos/skill.yaml +2 -0
  385. package/dist/agents/skills/claude-code/harness-code-review/SKILL.md +5 -15
  386. package/dist/agents/skills/claude-code/harness-code-review/skill.yaml +2 -0
  387. package/dist/agents/skills/claude-code/harness-codebase-cleanup/SKILL.md +11 -0
  388. package/dist/agents/skills/claude-code/harness-codebase-cleanup/skill.yaml +2 -0
  389. package/dist/agents/skills/claude-code/harness-compliance/SKILL.md +10 -0
  390. package/dist/agents/skills/claude-code/harness-compliance/skill.yaml +2 -0
  391. package/dist/agents/skills/claude-code/harness-containerization/SKILL.md +10 -0
  392. package/dist/agents/skills/claude-code/harness-containerization/skill.yaml +7 -0
  393. package/dist/agents/skills/claude-code/harness-data-pipeline/SKILL.md +10 -0
  394. package/dist/agents/skills/claude-code/harness-data-pipeline/skill.yaml +2 -0
  395. package/dist/agents/skills/claude-code/harness-data-validation/SKILL.md +10 -0
  396. package/dist/agents/skills/claude-code/harness-data-validation/skill.yaml +7 -0
  397. package/dist/agents/skills/claude-code/harness-database/SKILL.md +5 -15
  398. package/dist/agents/skills/claude-code/harness-database/skill.yaml +14 -0
  399. package/dist/agents/skills/claude-code/harness-debugging/SKILL.md +9 -0
  400. package/dist/agents/skills/claude-code/harness-debugging/skill.yaml +2 -0
  401. package/dist/agents/skills/claude-code/harness-dependency-health/SKILL.md +10 -0
  402. package/dist/agents/skills/claude-code/harness-dependency-health/skill.yaml +2 -0
  403. package/dist/agents/skills/claude-code/harness-deployment/SKILL.md +5 -15
  404. package/dist/agents/skills/claude-code/harness-deployment/skill.yaml +2 -0
  405. package/dist/agents/skills/claude-code/harness-design/SKILL.md +10 -0
  406. package/dist/agents/skills/claude-code/harness-design/skill.yaml +8 -0
  407. package/dist/agents/skills/claude-code/harness-design-mobile/SKILL.md +10 -0
  408. package/dist/agents/skills/claude-code/harness-design-mobile/skill.yaml +2 -0
  409. package/dist/agents/skills/claude-code/harness-design-system/SKILL.md +10 -0
  410. package/dist/agents/skills/claude-code/harness-design-system/skill.yaml +9 -0
  411. package/dist/agents/skills/claude-code/harness-design-web/SKILL.md +10 -0
  412. package/dist/agents/skills/claude-code/harness-design-web/skill.yaml +7 -0
  413. package/dist/agents/skills/claude-code/harness-diagnostics/SKILL.md +9 -0
  414. package/dist/agents/skills/claude-code/harness-diagnostics/skill.yaml +2 -0
  415. package/dist/agents/skills/claude-code/harness-docs-pipeline/SKILL.md +11 -0
  416. package/dist/agents/skills/claude-code/harness-docs-pipeline/skill.yaml +2 -0
  417. package/dist/agents/skills/claude-code/harness-dx/SKILL.md +10 -0
  418. package/dist/agents/skills/claude-code/harness-dx/skill.yaml +2 -0
  419. package/dist/agents/skills/claude-code/harness-e2e/SKILL.md +9 -0
  420. package/dist/agents/skills/claude-code/harness-e2e/skill.yaml +14 -0
  421. package/dist/agents/skills/claude-code/harness-event-driven/SKILL.md +10 -0
  422. package/dist/agents/skills/claude-code/harness-event-driven/skill.yaml +7 -0
  423. package/dist/agents/skills/claude-code/harness-execution/SKILL.md +9 -0
  424. package/dist/agents/skills/claude-code/harness-execution/skill.yaml +2 -0
  425. package/dist/agents/skills/claude-code/harness-feature-flags/SKILL.md +10 -0
  426. package/dist/agents/skills/claude-code/harness-feature-flags/skill.yaml +2 -0
  427. package/dist/agents/skills/claude-code/harness-git-workflow/SKILL.md +10 -0
  428. package/dist/agents/skills/claude-code/harness-git-workflow/skill.yaml +2 -0
  429. package/dist/agents/skills/claude-code/harness-hotspot-detector/SKILL.md +10 -0
  430. package/dist/agents/skills/claude-code/harness-hotspot-detector/skill.yaml +2 -0
  431. package/dist/agents/skills/claude-code/harness-i18n/SKILL.md +10 -0
  432. package/dist/agents/skills/claude-code/harness-i18n/skill.yaml +2 -0
  433. package/dist/agents/skills/claude-code/harness-i18n-process/SKILL.md +10 -0
  434. package/dist/agents/skills/claude-code/harness-i18n-process/skill.yaml +2 -0
  435. package/dist/agents/skills/claude-code/harness-i18n-workflow/SKILL.md +10 -0
  436. package/dist/agents/skills/claude-code/harness-i18n-workflow/skill.yaml +2 -0
  437. package/dist/agents/skills/claude-code/harness-impact-analysis/SKILL.md +10 -0
  438. package/dist/agents/skills/claude-code/harness-impact-analysis/skill.yaml +2 -0
  439. package/dist/agents/skills/claude-code/harness-incident-response/SKILL.md +10 -0
  440. package/dist/agents/skills/claude-code/harness-incident-response/skill.yaml +2 -0
  441. package/dist/agents/skills/claude-code/harness-infrastructure-as-code/SKILL.md +10 -0
  442. package/dist/agents/skills/claude-code/harness-infrastructure-as-code/skill.yaml +9 -0
  443. package/dist/agents/skills/claude-code/harness-integration-test/SKILL.md +9 -0
  444. package/dist/agents/skills/claude-code/harness-integration-test/skill.yaml +2 -0
  445. package/dist/agents/skills/claude-code/harness-integrity/SKILL.md +10 -0
  446. package/dist/agents/skills/claude-code/harness-integrity/skill.yaml +2 -0
  447. package/dist/agents/skills/claude-code/harness-knowledge-mapper/SKILL.md +9 -0
  448. package/dist/agents/skills/claude-code/harness-knowledge-mapper/skill.yaml +2 -0
  449. package/dist/agents/skills/claude-code/harness-load-testing/SKILL.md +10 -0
  450. package/dist/agents/skills/claude-code/harness-load-testing/skill.yaml +2 -0
  451. package/dist/agents/skills/claude-code/harness-ml-ops/SKILL.md +10 -0
  452. package/dist/agents/skills/claude-code/harness-ml-ops/skill.yaml +5 -0
  453. package/dist/agents/skills/claude-code/harness-mobile-patterns/SKILL.md +10 -0
  454. package/dist/agents/skills/claude-code/harness-mobile-patterns/skill.yaml +12 -0
  455. package/dist/agents/skills/claude-code/harness-mutation-test/SKILL.md +9 -0
  456. package/dist/agents/skills/claude-code/harness-mutation-test/skill.yaml +2 -0
  457. package/dist/agents/skills/claude-code/harness-observability/SKILL.md +10 -0
  458. package/dist/agents/skills/claude-code/harness-observability/skill.yaml +7 -0
  459. package/dist/agents/skills/claude-code/harness-onboarding/SKILL.md +18 -10
  460. package/dist/agents/skills/claude-code/harness-onboarding/skill.yaml +2 -0
  461. package/dist/agents/skills/claude-code/harness-parallel-agents/SKILL.md +9 -0
  462. package/dist/agents/skills/claude-code/harness-parallel-agents/skill.yaml +2 -0
  463. package/dist/agents/skills/claude-code/harness-perf/SKILL.md +11 -0
  464. package/dist/agents/skills/claude-code/harness-perf/skill.yaml +2 -0
  465. package/dist/agents/skills/claude-code/harness-perf-tdd/SKILL.md +10 -0
  466. package/dist/agents/skills/claude-code/harness-perf-tdd/skill.yaml +2 -0
  467. package/dist/agents/skills/claude-code/harness-planning/SKILL.md +10 -0
  468. package/dist/agents/skills/claude-code/harness-planning/skill.yaml +2 -0
  469. package/dist/agents/skills/claude-code/harness-pre-commit-review/SKILL.md +9 -0
  470. package/dist/agents/skills/claude-code/harness-pre-commit-review/skill.yaml +1 -1
  471. package/dist/agents/skills/claude-code/harness-product-spec/SKILL.md +10 -0
  472. package/dist/agents/skills/claude-code/harness-product-spec/skill.yaml +2 -0
  473. package/dist/agents/skills/claude-code/harness-property-test/SKILL.md +10 -0
  474. package/dist/agents/skills/claude-code/harness-property-test/skill.yaml +2 -0
  475. package/dist/agents/skills/claude-code/harness-refactoring/SKILL.md +9 -0
  476. package/dist/agents/skills/claude-code/harness-refactoring/skill.yaml +7 -0
  477. package/dist/agents/skills/claude-code/harness-release-readiness/SKILL.md +27 -0
  478. package/dist/agents/skills/claude-code/harness-release-readiness/skill.yaml +2 -0
  479. package/dist/agents/skills/claude-code/harness-resilience/SKILL.md +10 -0
  480. package/dist/agents/skills/claude-code/harness-resilience/skill.yaml +7 -0
  481. package/dist/agents/skills/claude-code/harness-roadmap/SKILL.md +10 -1
  482. package/dist/agents/skills/claude-code/harness-roadmap/skill.yaml +2 -0
  483. package/dist/agents/skills/claude-code/harness-roadmap-pilot/SKILL.md +8 -0
  484. package/dist/agents/skills/claude-code/harness-roadmap-pilot/skill.yaml +2 -0
  485. package/dist/agents/skills/claude-code/harness-router/SKILL.md +208 -0
  486. package/dist/agents/skills/claude-code/harness-router/skill.yaml +46 -0
  487. package/dist/agents/skills/claude-code/harness-secrets/SKILL.md +10 -0
  488. package/dist/agents/skills/claude-code/harness-secrets/skill.yaml +2 -0
  489. package/dist/agents/skills/claude-code/harness-security-review/SKILL.md +10 -0
  490. package/dist/agents/skills/claude-code/harness-security-review/skill.yaml +7 -0
  491. package/dist/agents/skills/claude-code/harness-security-scan/SKILL.md +5 -15
  492. package/dist/agents/skills/claude-code/harness-security-scan/skill.yaml +2 -0
  493. package/dist/agents/skills/claude-code/harness-skill-authoring/SKILL.md +147 -1
  494. package/dist/agents/skills/claude-code/harness-skill-authoring/skill.yaml +2 -0
  495. package/dist/agents/skills/claude-code/harness-soundness-review/SKILL.md +10 -0
  496. package/dist/agents/skills/claude-code/harness-soundness-review/skill.yaml +2 -0
  497. package/dist/agents/skills/claude-code/harness-sql-review/SKILL.md +10 -0
  498. package/dist/agents/skills/claude-code/harness-sql-review/skill.yaml +9 -0
  499. package/dist/agents/skills/claude-code/harness-state-management/SKILL.md +10 -0
  500. package/dist/agents/skills/claude-code/harness-state-management/skill.yaml +7 -0
  501. package/dist/agents/skills/claude-code/harness-supply-chain-audit/SKILL.md +10 -0
  502. package/dist/agents/skills/claude-code/harness-supply-chain-audit/skill.yaml +2 -0
  503. package/dist/agents/skills/claude-code/harness-tdd/SKILL.md +9 -0
  504. package/dist/agents/skills/claude-code/harness-tdd/skill.yaml +7 -0
  505. package/dist/agents/skills/claude-code/harness-test-advisor/SKILL.md +10 -0
  506. package/dist/agents/skills/claude-code/harness-test-advisor/skill.yaml +2 -0
  507. package/dist/agents/skills/claude-code/harness-test-data/SKILL.md +10 -0
  508. package/dist/agents/skills/claude-code/harness-test-data/skill.yaml +2 -0
  509. package/dist/agents/skills/claude-code/harness-ux-copy/SKILL.md +10 -0
  510. package/dist/agents/skills/claude-code/harness-ux-copy/skill.yaml +2 -0
  511. package/dist/agents/skills/claude-code/harness-verification/SKILL.md +9 -0
  512. package/dist/agents/skills/claude-code/harness-verification/skill.yaml +2 -0
  513. package/dist/agents/skills/claude-code/harness-verify/SKILL.md +10 -0
  514. package/dist/agents/skills/claude-code/harness-verify/skill.yaml +2 -0
  515. package/dist/agents/skills/claude-code/harness-visual-regression/SKILL.md +10 -0
  516. package/dist/agents/skills/claude-code/harness-visual-regression/skill.yaml +6 -0
  517. package/dist/agents/skills/claude-code/initialize-harness-project/SKILL.md +22 -13
  518. package/dist/agents/skills/claude-code/initialize-harness-project/skill.yaml +2 -0
  519. package/dist/agents/skills/claude-code/js-abstract-factory-pattern/SKILL.md +79 -0
  520. package/dist/agents/skills/claude-code/js-abstract-factory-pattern/skill.yaml +35 -0
  521. package/dist/agents/skills/claude-code/js-adapter-pattern/SKILL.md +77 -0
  522. package/dist/agents/skills/claude-code/js-adapter-pattern/skill.yaml +35 -0
  523. package/dist/agents/skills/claude-code/js-bridge-pattern/SKILL.md +90 -0
  524. package/dist/agents/skills/claude-code/js-bridge-pattern/skill.yaml +35 -0
  525. package/dist/agents/skills/claude-code/js-chain-of-responsibility-pattern/SKILL.md +81 -0
  526. package/dist/agents/skills/claude-code/js-chain-of-responsibility-pattern/skill.yaml +35 -0
  527. package/dist/agents/skills/claude-code/js-command-pattern/SKILL.md +81 -0
  528. package/dist/agents/skills/claude-code/js-command-pattern/skill.yaml +36 -0
  529. package/dist/agents/skills/claude-code/js-composite-pattern/SKILL.md +83 -0
  530. package/dist/agents/skills/claude-code/js-composite-pattern/skill.yaml +35 -0
  531. package/dist/agents/skills/claude-code/js-constructor-pattern/SKILL.md +78 -0
  532. package/dist/agents/skills/claude-code/js-constructor-pattern/skill.yaml +36 -0
  533. package/dist/agents/skills/claude-code/js-decorator-pattern/SKILL.md +73 -0
  534. package/dist/agents/skills/claude-code/js-decorator-pattern/skill.yaml +35 -0
  535. package/dist/agents/skills/claude-code/js-dynamic-import/SKILL.md +70 -0
  536. package/dist/agents/skills/claude-code/js-dynamic-import/skill.yaml +36 -0
  537. package/dist/agents/skills/claude-code/js-facade-pattern/SKILL.md +73 -0
  538. package/dist/agents/skills/claude-code/js-facade-pattern/skill.yaml +35 -0
  539. package/dist/agents/skills/claude-code/js-factory-pattern/SKILL.md +74 -0
  540. package/dist/agents/skills/claude-code/js-factory-pattern/skill.yaml +35 -0
  541. package/dist/agents/skills/claude-code/js-flyweight-pattern/SKILL.md +79 -0
  542. package/dist/agents/skills/claude-code/js-flyweight-pattern/skill.yaml +36 -0
  543. package/dist/agents/skills/claude-code/js-iterator-pattern/SKILL.md +78 -0
  544. package/dist/agents/skills/claude-code/js-iterator-pattern/skill.yaml +36 -0
  545. package/dist/agents/skills/claude-code/js-mediator-middleware-pattern/SKILL.md +92 -0
  546. package/dist/agents/skills/claude-code/js-mediator-middleware-pattern/skill.yaml +36 -0
  547. package/dist/agents/skills/claude-code/js-mixin-pattern/SKILL.md +85 -0
  548. package/dist/agents/skills/claude-code/js-mixin-pattern/skill.yaml +35 -0
  549. package/dist/agents/skills/claude-code/js-module-pattern/SKILL.md +75 -0
  550. package/dist/agents/skills/claude-code/js-module-pattern/skill.yaml +36 -0
  551. package/dist/agents/skills/claude-code/js-observer-pattern/SKILL.md +81 -0
  552. package/dist/agents/skills/claude-code/js-observer-pattern/skill.yaml +36 -0
  553. package/dist/agents/skills/claude-code/js-prototype-pattern/SKILL.md +70 -0
  554. package/dist/agents/skills/claude-code/js-prototype-pattern/skill.yaml +35 -0
  555. package/dist/agents/skills/claude-code/js-provider-pattern/SKILL.md +67 -0
  556. package/dist/agents/skills/claude-code/js-provider-pattern/skill.yaml +35 -0
  557. package/dist/agents/skills/claude-code/js-proxy-pattern/SKILL.md +79 -0
  558. package/dist/agents/skills/claude-code/js-proxy-pattern/skill.yaml +36 -0
  559. package/dist/agents/skills/claude-code/js-revealing-module-pattern/SKILL.md +77 -0
  560. package/dist/agents/skills/claude-code/js-revealing-module-pattern/skill.yaml +35 -0
  561. package/dist/agents/skills/claude-code/js-singleton-pattern/SKILL.md +80 -0
  562. package/dist/agents/skills/claude-code/js-singleton-pattern/skill.yaml +35 -0
  563. package/dist/agents/skills/claude-code/js-state-pattern/SKILL.md +90 -0
  564. package/dist/agents/skills/claude-code/js-state-pattern/skill.yaml +35 -0
  565. package/dist/agents/skills/claude-code/js-static-import/SKILL.md +63 -0
  566. package/dist/agents/skills/claude-code/js-static-import/skill.yaml +36 -0
  567. package/dist/agents/skills/claude-code/js-strategy-pattern/SKILL.md +71 -0
  568. package/dist/agents/skills/claude-code/js-strategy-pattern/skill.yaml +35 -0
  569. package/dist/agents/skills/claude-code/js-template-method-pattern/SKILL.md +80 -0
  570. package/dist/agents/skills/claude-code/js-template-method-pattern/skill.yaml +35 -0
  571. package/dist/agents/skills/claude-code/js-visitor-pattern/SKILL.md +85 -0
  572. package/dist/agents/skills/claude-code/js-visitor-pattern/skill.yaml +35 -0
  573. package/dist/agents/skills/claude-code/microservices-api-gateway/SKILL.md +211 -0
  574. package/dist/agents/skills/claude-code/microservices-api-gateway/skill.yaml +40 -0
  575. package/dist/agents/skills/claude-code/microservices-bulkhead-pattern/SKILL.md +215 -0
  576. package/dist/agents/skills/claude-code/microservices-bulkhead-pattern/skill.yaml +39 -0
  577. package/dist/agents/skills/claude-code/microservices-circuit-breaker/SKILL.md +208 -0
  578. package/dist/agents/skills/claude-code/microservices-circuit-breaker/skill.yaml +39 -0
  579. package/dist/agents/skills/claude-code/microservices-config-server/SKILL.md +231 -0
  580. package/dist/agents/skills/claude-code/microservices-config-server/skill.yaml +38 -0
  581. package/dist/agents/skills/claude-code/microservices-cqrs-pattern/SKILL.md +236 -0
  582. package/dist/agents/skills/claude-code/microservices-cqrs-pattern/skill.yaml +39 -0
  583. package/dist/agents/skills/claude-code/microservices-decomposition/SKILL.md +172 -0
  584. package/dist/agents/skills/claude-code/microservices-decomposition/skill.yaml +39 -0
  585. package/dist/agents/skills/claude-code/microservices-distributed-tracing/SKILL.md +222 -0
  586. package/dist/agents/skills/claude-code/microservices-distributed-tracing/skill.yaml +39 -0
  587. package/dist/agents/skills/claude-code/microservices-event-sourcing/SKILL.md +268 -0
  588. package/dist/agents/skills/claude-code/microservices-event-sourcing/skill.yaml +41 -0
  589. package/dist/agents/skills/claude-code/microservices-health-check/SKILL.md +212 -0
  590. package/dist/agents/skills/claude-code/microservices-health-check/skill.yaml +40 -0
  591. package/dist/agents/skills/claude-code/microservices-outbox-pattern/SKILL.md +252 -0
  592. package/dist/agents/skills/claude-code/microservices-outbox-pattern/skill.yaml +40 -0
  593. package/dist/agents/skills/claude-code/microservices-saga-pattern/SKILL.md +196 -0
  594. package/dist/agents/skills/claude-code/microservices-saga-pattern/skill.yaml +40 -0
  595. package/dist/agents/skills/claude-code/microservices-service-discovery/SKILL.md +186 -0
  596. package/dist/agents/skills/claude-code/microservices-service-discovery/skill.yaml +39 -0
  597. package/dist/agents/skills/claude-code/microservices-sidecar-pattern/SKILL.md +187 -0
  598. package/dist/agents/skills/claude-code/microservices-sidecar-pattern/skill.yaml +39 -0
  599. package/dist/agents/skills/claude-code/microservices-strangler-fig/SKILL.md +204 -0
  600. package/dist/agents/skills/claude-code/microservices-strangler-fig/skill.yaml +41 -0
  601. package/dist/agents/skills/claude-code/mobile-animation-patterns/SKILL.md +199 -0
  602. package/dist/agents/skills/claude-code/mobile-animation-patterns/skill.yaml +40 -0
  603. package/dist/agents/skills/claude-code/mobile-deployment-patterns/SKILL.md +262 -0
  604. package/dist/agents/skills/claude-code/mobile-deployment-patterns/skill.yaml +41 -0
  605. package/dist/agents/skills/claude-code/mobile-expo-setup/SKILL.md +194 -0
  606. package/dist/agents/skills/claude-code/mobile-expo-setup/skill.yaml +40 -0
  607. package/dist/agents/skills/claude-code/mobile-flatlist-patterns/SKILL.md +192 -0
  608. package/dist/agents/skills/claude-code/mobile-flatlist-patterns/skill.yaml +39 -0
  609. package/dist/agents/skills/claude-code/mobile-gesture-handling/SKILL.md +207 -0
  610. package/dist/agents/skills/claude-code/mobile-gesture-handling/skill.yaml +40 -0
  611. package/dist/agents/skills/claude-code/mobile-native-modules/SKILL.md +187 -0
  612. package/dist/agents/skills/claude-code/mobile-native-modules/skill.yaml +40 -0
  613. package/dist/agents/skills/claude-code/mobile-navigation-pattern/SKILL.md +227 -0
  614. package/dist/agents/skills/claude-code/mobile-navigation-pattern/skill.yaml +42 -0
  615. package/dist/agents/skills/claude-code/mobile-network-patterns/SKILL.md +274 -0
  616. package/dist/agents/skills/claude-code/mobile-network-patterns/skill.yaml +40 -0
  617. package/dist/agents/skills/claude-code/mobile-performance-patterns/SKILL.md +207 -0
  618. package/dist/agents/skills/claude-code/mobile-performance-patterns/skill.yaml +40 -0
  619. package/dist/agents/skills/claude-code/mobile-push-notifications/SKILL.md +235 -0
  620. package/dist/agents/skills/claude-code/mobile-push-notifications/skill.yaml +40 -0
  621. package/dist/agents/skills/claude-code/mobile-storage-patterns/SKILL.md +235 -0
  622. package/dist/agents/skills/claude-code/mobile-storage-patterns/skill.yaml +40 -0
  623. package/dist/agents/skills/claude-code/mobile-testing-patterns/SKILL.md +246 -0
  624. package/dist/agents/skills/claude-code/mobile-testing-patterns/skill.yaml +41 -0
  625. package/dist/agents/skills/claude-code/nestjs-config-module/SKILL.md +121 -0
  626. package/dist/agents/skills/claude-code/nestjs-config-module/skill.yaml +41 -0
  627. package/dist/agents/skills/claude-code/nestjs-controller-pattern/SKILL.md +93 -0
  628. package/dist/agents/skills/claude-code/nestjs-controller-pattern/skill.yaml +43 -0
  629. package/dist/agents/skills/claude-code/nestjs-dependency-injection/SKILL.md +97 -0
  630. package/dist/agents/skills/claude-code/nestjs-dependency-injection/skill.yaml +41 -0
  631. package/dist/agents/skills/claude-code/nestjs-dto-validation/SKILL.md +133 -0
  632. package/dist/agents/skills/claude-code/nestjs-dto-validation/skill.yaml +42 -0
  633. package/dist/agents/skills/claude-code/nestjs-event-driven/SKILL.md +123 -0
  634. package/dist/agents/skills/claude-code/nestjs-event-driven/skill.yaml +43 -0
  635. package/dist/agents/skills/claude-code/nestjs-exception-filters/SKILL.md +119 -0
  636. package/dist/agents/skills/claude-code/nestjs-exception-filters/skill.yaml +40 -0
  637. package/dist/agents/skills/claude-code/nestjs-graphql-integration/SKILL.md +132 -0
  638. package/dist/agents/skills/claude-code/nestjs-graphql-integration/skill.yaml +42 -0
  639. package/dist/agents/skills/claude-code/nestjs-guards-pattern/SKILL.md +101 -0
  640. package/dist/agents/skills/claude-code/nestjs-guards-pattern/skill.yaml +41 -0
  641. package/dist/agents/skills/claude-code/nestjs-interceptors-pattern/SKILL.md +106 -0
  642. package/dist/agents/skills/claude-code/nestjs-interceptors-pattern/skill.yaml +41 -0
  643. package/dist/agents/skills/claude-code/nestjs-microservices/SKILL.md +132 -0
  644. package/dist/agents/skills/claude-code/nestjs-microservices/skill.yaml +42 -0
  645. package/dist/agents/skills/claude-code/nestjs-middleware-pattern/SKILL.md +104 -0
  646. package/dist/agents/skills/claude-code/nestjs-middleware-pattern/skill.yaml +39 -0
  647. package/dist/agents/skills/claude-code/nestjs-module-pattern/SKILL.md +89 -0
  648. package/dist/agents/skills/claude-code/nestjs-module-pattern/skill.yaml +42 -0
  649. package/dist/agents/skills/claude-code/nestjs-pipes-pattern/SKILL.md +111 -0
  650. package/dist/agents/skills/claude-code/nestjs-pipes-pattern/skill.yaml +40 -0
  651. package/dist/agents/skills/claude-code/nestjs-service-pattern/SKILL.md +83 -0
  652. package/dist/agents/skills/claude-code/nestjs-service-pattern/skill.yaml +39 -0
  653. package/dist/agents/skills/claude-code/nestjs-swagger-integration/SKILL.md +137 -0
  654. package/dist/agents/skills/claude-code/nestjs-swagger-integration/skill.yaml +40 -0
  655. package/dist/agents/skills/claude-code/nestjs-testing-patterns/SKILL.md +130 -0
  656. package/dist/agents/skills/claude-code/nestjs-testing-patterns/skill.yaml +42 -0
  657. package/dist/agents/skills/claude-code/next-app-router/SKILL.md +77 -0
  658. package/dist/agents/skills/claude-code/next-app-router/skill.yaml +44 -0
  659. package/dist/agents/skills/claude-code/next-auth-patterns/SKILL.md +94 -0
  660. package/dist/agents/skills/claude-code/next-auth-patterns/skill.yaml +46 -0
  661. package/dist/agents/skills/claude-code/next-caching-strategies/SKILL.md +83 -0
  662. package/dist/agents/skills/claude-code/next-caching-strategies/skill.yaml +43 -0
  663. package/dist/agents/skills/claude-code/next-data-fetching/SKILL.md +97 -0
  664. package/dist/agents/skills/claude-code/next-data-fetching/skill.yaml +44 -0
  665. package/dist/agents/skills/claude-code/next-deployment-optimization/SKILL.md +92 -0
  666. package/dist/agents/skills/claude-code/next-deployment-optimization/skill.yaml +42 -0
  667. package/dist/agents/skills/claude-code/next-environment-config/SKILL.md +92 -0
  668. package/dist/agents/skills/claude-code/next-environment-config/skill.yaml +43 -0
  669. package/dist/agents/skills/claude-code/next-error-boundaries/SKILL.md +96 -0
  670. package/dist/agents/skills/claude-code/next-error-boundaries/skill.yaml +44 -0
  671. package/dist/agents/skills/claude-code/next-image-optimization/SKILL.md +91 -0
  672. package/dist/agents/skills/claude-code/next-image-optimization/skill.yaml +41 -0
  673. package/dist/agents/skills/claude-code/next-metadata-api/SKILL.md +94 -0
  674. package/dist/agents/skills/claude-code/next-metadata-api/skill.yaml +43 -0
  675. package/dist/agents/skills/claude-code/next-middleware-pattern/SKILL.md +80 -0
  676. package/dist/agents/skills/claude-code/next-middleware-pattern/skill.yaml +43 -0
  677. package/dist/agents/skills/claude-code/next-monorepo-setup/SKILL.md +103 -0
  678. package/dist/agents/skills/claude-code/next-monorepo-setup/skill.yaml +43 -0
  679. package/dist/agents/skills/claude-code/next-parallel-intercepting-routes/SKILL.md +98 -0
  680. package/dist/agents/skills/claude-code/next-parallel-intercepting-routes/skill.yaml +43 -0
  681. package/dist/agents/skills/claude-code/next-route-handlers/SKILL.md +80 -0
  682. package/dist/agents/skills/claude-code/next-route-handlers/skill.yaml +44 -0
  683. package/dist/agents/skills/claude-code/next-server-actions/SKILL.md +97 -0
  684. package/dist/agents/skills/claude-code/next-server-actions/skill.yaml +44 -0
  685. package/dist/agents/skills/claude-code/next-server-components/SKILL.md +82 -0
  686. package/dist/agents/skills/claude-code/next-server-components/skill.yaml +43 -0
  687. package/dist/agents/skills/claude-code/next-static-generation/SKILL.md +75 -0
  688. package/dist/agents/skills/claude-code/next-static-generation/skill.yaml +44 -0
  689. package/dist/agents/skills/claude-code/next-streaming-suspense/SKILL.md +86 -0
  690. package/dist/agents/skills/claude-code/next-streaming-suspense/skill.yaml +43 -0
  691. package/dist/agents/skills/claude-code/next-testing-patterns/SKILL.md +104 -0
  692. package/dist/agents/skills/claude-code/next-testing-patterns/skill.yaml +46 -0
  693. package/dist/agents/skills/claude-code/node-buffer-encoding/SKILL.md +138 -0
  694. package/dist/agents/skills/claude-code/node-buffer-encoding/skill.yaml +39 -0
  695. package/dist/agents/skills/claude-code/node-child-process/SKILL.md +162 -0
  696. package/dist/agents/skills/claude-code/node-child-process/skill.yaml +40 -0
  697. package/dist/agents/skills/claude-code/node-crypto-patterns/SKILL.md +147 -0
  698. package/dist/agents/skills/claude-code/node-crypto-patterns/skill.yaml +41 -0
  699. package/dist/agents/skills/claude-code/node-environment-config/SKILL.md +145 -0
  700. package/dist/agents/skills/claude-code/node-environment-config/skill.yaml +39 -0
  701. package/dist/agents/skills/claude-code/node-error-handling/SKILL.md +183 -0
  702. package/dist/agents/skills/claude-code/node-error-handling/skill.yaml +40 -0
  703. package/dist/agents/skills/claude-code/node-esm-patterns/SKILL.md +149 -0
  704. package/dist/agents/skills/claude-code/node-esm-patterns/skill.yaml +39 -0
  705. package/dist/agents/skills/claude-code/node-event-emitter/SKILL.md +144 -0
  706. package/dist/agents/skills/claude-code/node-event-emitter/skill.yaml +41 -0
  707. package/dist/agents/skills/claude-code/node-express-patterns/SKILL.md +193 -0
  708. package/dist/agents/skills/claude-code/node-express-patterns/skill.yaml +40 -0
  709. package/dist/agents/skills/claude-code/node-fastify-patterns/SKILL.md +200 -0
  710. package/dist/agents/skills/claude-code/node-fastify-patterns/skill.yaml +40 -0
  711. package/dist/agents/skills/claude-code/node-http-server/SKILL.md +159 -0
  712. package/dist/agents/skills/claude-code/node-http-server/skill.yaml +40 -0
  713. package/dist/agents/skills/claude-code/node-path-fs-patterns/SKILL.md +149 -0
  714. package/dist/agents/skills/claude-code/node-path-fs-patterns/skill.yaml +39 -0
  715. package/dist/agents/skills/claude-code/node-performance-profiling/SKILL.md +176 -0
  716. package/dist/agents/skills/claude-code/node-performance-profiling/skill.yaml +39 -0
  717. package/dist/agents/skills/claude-code/node-streams-pattern/SKILL.md +163 -0
  718. package/dist/agents/skills/claude-code/node-streams-pattern/skill.yaml +40 -0
  719. package/dist/agents/skills/claude-code/node-testing-patterns/SKILL.md +205 -0
  720. package/dist/agents/skills/claude-code/node-testing-patterns/skill.yaml +40 -0
  721. package/dist/agents/skills/claude-code/node-worker-threads/SKILL.md +169 -0
  722. package/dist/agents/skills/claude-code/node-worker-threads/skill.yaml +40 -0
  723. package/dist/agents/skills/claude-code/nuxt-auto-imports/SKILL.md +97 -0
  724. package/dist/agents/skills/claude-code/nuxt-auto-imports/skill.yaml +41 -0
  725. package/dist/agents/skills/claude-code/nuxt-composables-pattern/SKILL.md +119 -0
  726. package/dist/agents/skills/claude-code/nuxt-composables-pattern/skill.yaml +41 -0
  727. package/dist/agents/skills/claude-code/nuxt-deployment-config/SKILL.md +209 -0
  728. package/dist/agents/skills/claude-code/nuxt-deployment-config/skill.yaml +43 -0
  729. package/dist/agents/skills/claude-code/nuxt-layouts-pages/SKILL.md +210 -0
  730. package/dist/agents/skills/claude-code/nuxt-layouts-pages/skill.yaml +42 -0
  731. package/dist/agents/skills/claude-code/nuxt-middleware-pattern/SKILL.md +164 -0
  732. package/dist/agents/skills/claude-code/nuxt-middleware-pattern/skill.yaml +41 -0
  733. package/dist/agents/skills/claude-code/nuxt-modules-pattern/SKILL.md +193 -0
  734. package/dist/agents/skills/claude-code/nuxt-modules-pattern/skill.yaml +40 -0
  735. package/dist/agents/skills/claude-code/nuxt-plugins-pattern/SKILL.md +178 -0
  736. package/dist/agents/skills/claude-code/nuxt-plugins-pattern/skill.yaml +40 -0
  737. package/dist/agents/skills/claude-code/nuxt-seo-metadata/SKILL.md +185 -0
  738. package/dist/agents/skills/claude-code/nuxt-seo-metadata/skill.yaml +43 -0
  739. package/dist/agents/skills/claude-code/nuxt-server-routes/SKILL.md +154 -0
  740. package/dist/agents/skills/claude-code/nuxt-server-routes/skill.yaml +41 -0
  741. package/dist/agents/skills/claude-code/nuxt-state-management/SKILL.md +162 -0
  742. package/dist/agents/skills/claude-code/nuxt-state-management/skill.yaml +43 -0
  743. package/dist/agents/skills/claude-code/nuxt-testing-patterns/SKILL.md +203 -0
  744. package/dist/agents/skills/claude-code/nuxt-testing-patterns/skill.yaml +45 -0
  745. package/dist/agents/skills/claude-code/otel-context-propagation/SKILL.md +152 -0
  746. package/dist/agents/skills/claude-code/otel-context-propagation/skill.yaml +39 -0
  747. package/dist/agents/skills/claude-code/otel-custom-instrumentation/SKILL.md +166 -0
  748. package/dist/agents/skills/claude-code/otel-custom-instrumentation/skill.yaml +39 -0
  749. package/dist/agents/skills/claude-code/otel-error-tracking/SKILL.md +163 -0
  750. package/dist/agents/skills/claude-code/otel-error-tracking/skill.yaml +39 -0
  751. package/dist/agents/skills/claude-code/otel-exporter-config/SKILL.md +168 -0
  752. package/dist/agents/skills/claude-code/otel-exporter-config/skill.yaml +39 -0
  753. package/dist/agents/skills/claude-code/otel-logging-pattern/SKILL.md +161 -0
  754. package/dist/agents/skills/claude-code/otel-logging-pattern/skill.yaml +40 -0
  755. package/dist/agents/skills/claude-code/otel-metrics-pattern/SKILL.md +152 -0
  756. package/dist/agents/skills/claude-code/otel-metrics-pattern/skill.yaml +40 -0
  757. package/dist/agents/skills/claude-code/otel-nestjs-integration/SKILL.md +174 -0
  758. package/dist/agents/skills/claude-code/otel-nestjs-integration/skill.yaml +40 -0
  759. package/dist/agents/skills/claude-code/otel-nextjs-integration/SKILL.md +161 -0
  760. package/dist/agents/skills/claude-code/otel-nextjs-integration/skill.yaml +39 -0
  761. package/dist/agents/skills/claude-code/otel-performance-insights/SKILL.md +173 -0
  762. package/dist/agents/skills/claude-code/otel-performance-insights/skill.yaml +40 -0
  763. package/dist/agents/skills/claude-code/otel-sampling-strategies/SKILL.md +162 -0
  764. package/dist/agents/skills/claude-code/otel-sampling-strategies/skill.yaml +38 -0
  765. package/dist/agents/skills/claude-code/otel-sdk-setup/SKILL.md +145 -0
  766. package/dist/agents/skills/claude-code/otel-sdk-setup/skill.yaml +39 -0
  767. package/dist/agents/skills/claude-code/otel-tracing-pattern/SKILL.md +130 -0
  768. package/dist/agents/skills/claude-code/otel-tracing-pattern/skill.yaml +39 -0
  769. package/dist/agents/skills/claude-code/owasp-auth-patterns/SKILL.md +197 -0
  770. package/dist/agents/skills/claude-code/owasp-auth-patterns/skill.yaml +42 -0
  771. package/dist/agents/skills/claude-code/owasp-cryptography/SKILL.md +191 -0
  772. package/dist/agents/skills/claude-code/owasp-cryptography/skill.yaml +42 -0
  773. package/dist/agents/skills/claude-code/owasp-csrf-protection/SKILL.md +175 -0
  774. package/dist/agents/skills/claude-code/owasp-csrf-protection/skill.yaml +42 -0
  775. package/dist/agents/skills/claude-code/owasp-dependency-security/SKILL.md +173 -0
  776. package/dist/agents/skills/claude-code/owasp-dependency-security/skill.yaml +41 -0
  777. package/dist/agents/skills/claude-code/owasp-file-upload-security/SKILL.md +199 -0
  778. package/dist/agents/skills/claude-code/owasp-file-upload-security/skill.yaml +41 -0
  779. package/dist/agents/skills/claude-code/owasp-idor-prevention/SKILL.md +174 -0
  780. package/dist/agents/skills/claude-code/owasp-idor-prevention/skill.yaml +42 -0
  781. package/dist/agents/skills/claude-code/owasp-injection-prevention/SKILL.md +160 -0
  782. package/dist/agents/skills/claude-code/owasp-injection-prevention/skill.yaml +44 -0
  783. package/dist/agents/skills/claude-code/owasp-logging-monitoring/SKILL.md +214 -0
  784. package/dist/agents/skills/claude-code/owasp-logging-monitoring/skill.yaml +41 -0
  785. package/dist/agents/skills/claude-code/owasp-rate-limiting/SKILL.md +215 -0
  786. package/dist/agents/skills/claude-code/owasp-rate-limiting/skill.yaml +40 -0
  787. package/dist/agents/skills/claude-code/owasp-secrets-management/SKILL.md +171 -0
  788. package/dist/agents/skills/claude-code/owasp-secrets-management/skill.yaml +44 -0
  789. package/dist/agents/skills/claude-code/owasp-security-headers/SKILL.md +221 -0
  790. package/dist/agents/skills/claude-code/owasp-security-headers/skill.yaml +40 -0
  791. package/dist/agents/skills/claude-code/owasp-xss-prevention/SKILL.md +174 -0
  792. package/dist/agents/skills/claude-code/owasp-xss-prevention/skill.yaml +42 -0
  793. package/dist/agents/skills/claude-code/prisma-client-queries/SKILL.md +147 -0
  794. package/dist/agents/skills/claude-code/prisma-client-queries/skill.yaml +46 -0
  795. package/dist/agents/skills/claude-code/prisma-filtering-sorting/SKILL.md +157 -0
  796. package/dist/agents/skills/claude-code/prisma-filtering-sorting/skill.yaml +45 -0
  797. package/dist/agents/skills/claude-code/prisma-migrations/SKILL.md +115 -0
  798. package/dist/agents/skills/claude-code/prisma-migrations/skill.yaml +41 -0
  799. package/dist/agents/skills/claude-code/prisma-performance-patterns/SKILL.md +160 -0
  800. package/dist/agents/skills/claude-code/prisma-performance-patterns/skill.yaml +43 -0
  801. package/dist/agents/skills/claude-code/prisma-raw-queries/SKILL.md +125 -0
  802. package/dist/agents/skills/claude-code/prisma-raw-queries/skill.yaml +41 -0
  803. package/dist/agents/skills/claude-code/prisma-relations-pattern/SKILL.md +151 -0
  804. package/dist/agents/skills/claude-code/prisma-relations-pattern/skill.yaml +42 -0
  805. package/dist/agents/skills/claude-code/prisma-schema-design/SKILL.md +108 -0
  806. package/dist/agents/skills/claude-code/prisma-schema-design/skill.yaml +46 -0
  807. package/dist/agents/skills/claude-code/prisma-seeding-pattern/SKILL.md +168 -0
  808. package/dist/agents/skills/claude-code/prisma-seeding-pattern/skill.yaml +41 -0
  809. package/dist/agents/skills/claude-code/prisma-soft-delete/SKILL.md +172 -0
  810. package/dist/agents/skills/claude-code/prisma-soft-delete/skill.yaml +41 -0
  811. package/dist/agents/skills/claude-code/prisma-transactions/SKILL.md +147 -0
  812. package/dist/agents/skills/claude-code/prisma-transactions/skill.yaml +41 -0
  813. package/dist/agents/skills/claude-code/prisma-type-generation/SKILL.md +180 -0
  814. package/dist/agents/skills/claude-code/prisma-type-generation/skill.yaml +42 -0
  815. package/dist/agents/skills/claude-code/react-2026/SKILL.md +86 -0
  816. package/dist/agents/skills/claude-code/react-2026/skill.yaml +39 -0
  817. package/dist/agents/skills/claude-code/react-client-rendering/SKILL.md +60 -0
  818. package/dist/agents/skills/claude-code/react-client-rendering/skill.yaml +37 -0
  819. package/dist/agents/skills/claude-code/react-compound-pattern/SKILL.md +80 -0
  820. package/dist/agents/skills/claude-code/react-compound-pattern/skill.yaml +36 -0
  821. package/dist/agents/skills/claude-code/react-concurrent-ui/SKILL.md +59 -0
  822. package/dist/agents/skills/claude-code/react-concurrent-ui/skill.yaml +36 -0
  823. package/dist/agents/skills/claude-code/react-container-presentational/SKILL.md +76 -0
  824. package/dist/agents/skills/claude-code/react-container-presentational/skill.yaml +36 -0
  825. package/dist/agents/skills/claude-code/react-context-pattern/SKILL.md +75 -0
  826. package/dist/agents/skills/claude-code/react-context-pattern/skill.yaml +37 -0
  827. package/dist/agents/skills/claude-code/react-dynamic-import/SKILL.md +65 -0
  828. package/dist/agents/skills/claude-code/react-dynamic-import/skill.yaml +40 -0
  829. package/dist/agents/skills/claude-code/react-hoc-pattern/SKILL.md +71 -0
  830. package/dist/agents/skills/claude-code/react-hoc-pattern/skill.yaml +35 -0
  831. package/dist/agents/skills/claude-code/react-hooks-pattern/SKILL.md +74 -0
  832. package/dist/agents/skills/claude-code/react-hooks-pattern/skill.yaml +37 -0
  833. package/dist/agents/skills/claude-code/react-islands-pattern/SKILL.md +67 -0
  834. package/dist/agents/skills/claude-code/react-islands-pattern/skill.yaml +39 -0
  835. package/dist/agents/skills/claude-code/react-memoization-pattern/SKILL.md +64 -0
  836. package/dist/agents/skills/claude-code/react-memoization-pattern/skill.yaml +37 -0
  837. package/dist/agents/skills/claude-code/react-progressive-hydration/SKILL.md +74 -0
  838. package/dist/agents/skills/claude-code/react-progressive-hydration/skill.yaml +37 -0
  839. package/dist/agents/skills/claude-code/react-provider-pattern/SKILL.md +72 -0
  840. package/dist/agents/skills/claude-code/react-provider-pattern/skill.yaml +37 -0
  841. package/dist/agents/skills/claude-code/react-render-props-pattern/SKILL.md +73 -0
  842. package/dist/agents/skills/claude-code/react-render-props-pattern/skill.yaml +35 -0
  843. package/dist/agents/skills/claude-code/react-server-components/SKILL.md +81 -0
  844. package/dist/agents/skills/claude-code/react-server-components/skill.yaml +39 -0
  845. package/dist/agents/skills/claude-code/react-server-rendering/SKILL.md +63 -0
  846. package/dist/agents/skills/claude-code/react-server-rendering/skill.yaml +39 -0
  847. package/dist/agents/skills/claude-code/react-state-management-pattern/SKILL.md +72 -0
  848. package/dist/agents/skills/claude-code/react-state-management-pattern/skill.yaml +40 -0
  849. package/dist/agents/skills/claude-code/react-static-import/SKILL.md +61 -0
  850. package/dist/agents/skills/claude-code/react-static-import/skill.yaml +37 -0
  851. package/dist/agents/skills/claude-code/react-suspense-pattern/SKILL.md +62 -0
  852. package/dist/agents/skills/claude-code/react-suspense-pattern/skill.yaml +37 -0
  853. package/dist/agents/skills/claude-code/redux-entity-adapter/SKILL.md +120 -0
  854. package/dist/agents/skills/claude-code/redux-entity-adapter/skill.yaml +39 -0
  855. package/dist/agents/skills/claude-code/redux-listener-middleware/SKILL.md +117 -0
  856. package/dist/agents/skills/claude-code/redux-listener-middleware/skill.yaml +39 -0
  857. package/dist/agents/skills/claude-code/redux-persistence-pattern/SKILL.md +144 -0
  858. package/dist/agents/skills/claude-code/redux-persistence-pattern/skill.yaml +40 -0
  859. package/dist/agents/skills/claude-code/redux-rtk-optimistic/SKILL.md +117 -0
  860. package/dist/agents/skills/claude-code/redux-rtk-optimistic/skill.yaml +39 -0
  861. package/dist/agents/skills/claude-code/redux-rtk-query-endpoints/SKILL.md +131 -0
  862. package/dist/agents/skills/claude-code/redux-rtk-query-endpoints/skill.yaml +40 -0
  863. package/dist/agents/skills/claude-code/redux-rtk-query-setup/SKILL.md +117 -0
  864. package/dist/agents/skills/claude-code/redux-rtk-query-setup/skill.yaml +39 -0
  865. package/dist/agents/skills/claude-code/redux-selectors-pattern/SKILL.md +100 -0
  866. package/dist/agents/skills/claude-code/redux-selectors-pattern/skill.yaml +39 -0
  867. package/dist/agents/skills/claude-code/redux-slice-pattern/SKILL.md +117 -0
  868. package/dist/agents/skills/claude-code/redux-slice-pattern/skill.yaml +39 -0
  869. package/dist/agents/skills/claude-code/redux-store-setup/SKILL.md +103 -0
  870. package/dist/agents/skills/claude-code/redux-store-setup/skill.yaml +39 -0
  871. package/dist/agents/skills/claude-code/redux-testing-patterns/SKILL.md +138 -0
  872. package/dist/agents/skills/claude-code/redux-testing-patterns/skill.yaml +41 -0
  873. package/dist/agents/skills/claude-code/redux-thunk-pattern/SKILL.md +119 -0
  874. package/dist/agents/skills/claude-code/redux-thunk-pattern/skill.yaml +41 -0
  875. package/dist/agents/skills/claude-code/redux-typescript-patterns/SKILL.md +115 -0
  876. package/dist/agents/skills/claude-code/redux-typescript-patterns/skill.yaml +40 -0
  877. package/dist/agents/skills/claude-code/resilience-bulkhead-pattern/SKILL.md +145 -0
  878. package/dist/agents/skills/claude-code/resilience-bulkhead-pattern/skill.yaml +38 -0
  879. package/dist/agents/skills/claude-code/resilience-chaos-testing/SKILL.md +172 -0
  880. package/dist/agents/skills/claude-code/resilience-chaos-testing/skill.yaml +38 -0
  881. package/dist/agents/skills/claude-code/resilience-circuit-breaker/SKILL.md +159 -0
  882. package/dist/agents/skills/claude-code/resilience-circuit-breaker/skill.yaml +39 -0
  883. package/dist/agents/skills/claude-code/resilience-dead-letter/SKILL.md +185 -0
  884. package/dist/agents/skills/claude-code/resilience-dead-letter/skill.yaml +39 -0
  885. package/dist/agents/skills/claude-code/resilience-fallback-pattern/SKILL.md +155 -0
  886. package/dist/agents/skills/claude-code/resilience-fallback-pattern/skill.yaml +38 -0
  887. package/dist/agents/skills/claude-code/resilience-health-checks/SKILL.md +180 -0
  888. package/dist/agents/skills/claude-code/resilience-health-checks/skill.yaml +38 -0
  889. package/dist/agents/skills/claude-code/resilience-idempotency/SKILL.md +167 -0
  890. package/dist/agents/skills/claude-code/resilience-idempotency/skill.yaml +38 -0
  891. package/dist/agents/skills/claude-code/resilience-rate-limiting/SKILL.md +171 -0
  892. package/dist/agents/skills/claude-code/resilience-rate-limiting/skill.yaml +38 -0
  893. package/dist/agents/skills/claude-code/resilience-retry-pattern/SKILL.md +137 -0
  894. package/dist/agents/skills/claude-code/resilience-retry-pattern/skill.yaml +39 -0
  895. package/dist/agents/skills/claude-code/resilience-timeout-pattern/SKILL.md +148 -0
  896. package/dist/agents/skills/claude-code/resilience-timeout-pattern/skill.yaml +38 -0
  897. package/dist/agents/skills/claude-code/state-context-pattern/SKILL.md +143 -0
  898. package/dist/agents/skills/claude-code/state-context-pattern/skill.yaml +38 -0
  899. package/dist/agents/skills/claude-code/state-jotai-atoms/SKILL.md +153 -0
  900. package/dist/agents/skills/claude-code/state-jotai-atoms/skill.yaml +39 -0
  901. package/dist/agents/skills/claude-code/state-selection-patterns/SKILL.md +115 -0
  902. package/dist/agents/skills/claude-code/state-selection-patterns/skill.yaml +39 -0
  903. package/dist/agents/skills/claude-code/state-server-client-sync/SKILL.md +148 -0
  904. package/dist/agents/skills/claude-code/state-server-client-sync/skill.yaml +40 -0
  905. package/dist/agents/skills/claude-code/state-zustand-devtools/SKILL.md +120 -0
  906. package/dist/agents/skills/claude-code/state-zustand-devtools/skill.yaml +38 -0
  907. package/dist/agents/skills/claude-code/state-zustand-immer/SKILL.md +150 -0
  908. package/dist/agents/skills/claude-code/state-zustand-immer/skill.yaml +38 -0
  909. package/dist/agents/skills/claude-code/state-zustand-persist/SKILL.md +148 -0
  910. package/dist/agents/skills/claude-code/state-zustand-persist/skill.yaml +38 -0
  911. package/dist/agents/skills/claude-code/state-zustand-react/SKILL.md +136 -0
  912. package/dist/agents/skills/claude-code/state-zustand-react/skill.yaml +40 -0
  913. package/dist/agents/skills/claude-code/state-zustand-slices/SKILL.md +135 -0
  914. package/dist/agents/skills/claude-code/state-zustand-slices/skill.yaml +39 -0
  915. package/dist/agents/skills/claude-code/state-zustand-store/SKILL.md +123 -0
  916. package/dist/agents/skills/claude-code/state-zustand-store/skill.yaml +39 -0
  917. package/dist/agents/skills/claude-code/svelte-adapter-config/SKILL.md +262 -0
  918. package/dist/agents/skills/claude-code/svelte-adapter-config/skill.yaml +42 -0
  919. package/dist/agents/skills/claude-code/svelte-component-composition/SKILL.md +222 -0
  920. package/dist/agents/skills/claude-code/svelte-component-composition/skill.yaml +41 -0
  921. package/dist/agents/skills/claude-code/svelte-error-pages/SKILL.md +186 -0
  922. package/dist/agents/skills/claude-code/svelte-error-pages/skill.yaml +42 -0
  923. package/dist/agents/skills/claude-code/svelte-form-actions/SKILL.md +230 -0
  924. package/dist/agents/skills/claude-code/svelte-form-actions/skill.yaml +41 -0
  925. package/dist/agents/skills/claude-code/svelte-load-functions/SKILL.md +206 -0
  926. package/dist/agents/skills/claude-code/svelte-load-functions/skill.yaml +44 -0
  927. package/dist/agents/skills/claude-code/svelte-performance-patterns/SKILL.md +218 -0
  928. package/dist/agents/skills/claude-code/svelte-performance-patterns/skill.yaml +43 -0
  929. package/dist/agents/skills/claude-code/svelte-routing-pattern/SKILL.md +203 -0
  930. package/dist/agents/skills/claude-code/svelte-routing-pattern/skill.yaml +43 -0
  931. package/dist/agents/skills/claude-code/svelte-runes-pattern/SKILL.md +204 -0
  932. package/dist/agents/skills/claude-code/svelte-runes-pattern/skill.yaml +43 -0
  933. package/dist/agents/skills/claude-code/svelte-server-hooks/SKILL.md +239 -0
  934. package/dist/agents/skills/claude-code/svelte-server-hooks/skill.yaml +43 -0
  935. package/dist/agents/skills/claude-code/svelte-state-management/SKILL.md +196 -0
  936. package/dist/agents/skills/claude-code/svelte-state-management/skill.yaml +43 -0
  937. package/dist/agents/skills/claude-code/svelte-stores-pattern/SKILL.md +187 -0
  938. package/dist/agents/skills/claude-code/svelte-stores-pattern/skill.yaml +43 -0
  939. package/dist/agents/skills/claude-code/svelte-testing-patterns/SKILL.md +231 -0
  940. package/dist/agents/skills/claude-code/svelte-testing-patterns/skill.yaml +45 -0
  941. package/dist/agents/skills/claude-code/svelte-transitions-animations/SKILL.md +222 -0
  942. package/dist/agents/skills/claude-code/svelte-transitions-animations/skill.yaml +43 -0
  943. package/dist/agents/skills/claude-code/tanstack-cache-management/SKILL.md +108 -0
  944. package/dist/agents/skills/claude-code/tanstack-cache-management/skill.yaml +43 -0
  945. package/dist/agents/skills/claude-code/tanstack-dependent-queries/SKILL.md +108 -0
  946. package/dist/agents/skills/claude-code/tanstack-dependent-queries/skill.yaml +41 -0
  947. package/dist/agents/skills/claude-code/tanstack-devtools/SKILL.md +100 -0
  948. package/dist/agents/skills/claude-code/tanstack-devtools/skill.yaml +43 -0
  949. package/dist/agents/skills/claude-code/tanstack-infinite-queries/SKILL.md +106 -0
  950. package/dist/agents/skills/claude-code/tanstack-infinite-queries/skill.yaml +43 -0
  951. package/dist/agents/skills/claude-code/tanstack-mutation-patterns/SKILL.md +122 -0
  952. package/dist/agents/skills/claude-code/tanstack-mutation-patterns/skill.yaml +43 -0
  953. package/dist/agents/skills/claude-code/tanstack-optimistic-updates/SKILL.md +106 -0
  954. package/dist/agents/skills/claude-code/tanstack-optimistic-updates/skill.yaml +43 -0
  955. package/dist/agents/skills/claude-code/tanstack-prefetching/SKILL.md +106 -0
  956. package/dist/agents/skills/claude-code/tanstack-prefetching/skill.yaml +43 -0
  957. package/dist/agents/skills/claude-code/tanstack-query-invalidation/SKILL.md +95 -0
  958. package/dist/agents/skills/claude-code/tanstack-query-invalidation/skill.yaml +42 -0
  959. package/dist/agents/skills/claude-code/tanstack-query-keys/SKILL.md +94 -0
  960. package/dist/agents/skills/claude-code/tanstack-query-keys/skill.yaml +42 -0
  961. package/dist/agents/skills/claude-code/tanstack-suspense-mode/SKILL.md +96 -0
  962. package/dist/agents/skills/claude-code/tanstack-suspense-mode/skill.yaml +41 -0
  963. package/dist/agents/skills/claude-code/test-accessibility-testing/SKILL.md +201 -0
  964. package/dist/agents/skills/claude-code/test-accessibility-testing/skill.yaml +42 -0
  965. package/dist/agents/skills/claude-code/test-component-react/SKILL.md +173 -0
  966. package/dist/agents/skills/claude-code/test-component-react/skill.yaml +44 -0
  967. package/dist/agents/skills/claude-code/test-component-svelte/SKILL.md +184 -0
  968. package/dist/agents/skills/claude-code/test-component-svelte/skill.yaml +42 -0
  969. package/dist/agents/skills/claude-code/test-contract-testing/SKILL.md +180 -0
  970. package/dist/agents/skills/claude-code/test-contract-testing/skill.yaml +41 -0
  971. package/dist/agents/skills/claude-code/test-coverage-patterns/SKILL.md +165 -0
  972. package/dist/agents/skills/claude-code/test-coverage-patterns/skill.yaml +43 -0
  973. package/dist/agents/skills/claude-code/test-e2e-strategy/SKILL.md +146 -0
  974. package/dist/agents/skills/claude-code/test-e2e-strategy/skill.yaml +43 -0
  975. package/dist/agents/skills/claude-code/test-factory-patterns/SKILL.md +198 -0
  976. package/dist/agents/skills/claude-code/test-factory-patterns/skill.yaml +43 -0
  977. package/dist/agents/skills/claude-code/test-integration-patterns/SKILL.md +202 -0
  978. package/dist/agents/skills/claude-code/test-integration-patterns/skill.yaml +43 -0
  979. package/dist/agents/skills/claude-code/test-mock-patterns/SKILL.md +184 -0
  980. package/dist/agents/skills/claude-code/test-mock-patterns/skill.yaml +44 -0
  981. package/dist/agents/skills/claude-code/test-msw-pattern/SKILL.md +181 -0
  982. package/dist/agents/skills/claude-code/test-msw-pattern/skill.yaml +43 -0
  983. package/dist/agents/skills/claude-code/test-performance-testing/SKILL.md +199 -0
  984. package/dist/agents/skills/claude-code/test-performance-testing/skill.yaml +42 -0
  985. package/dist/agents/skills/claude-code/test-playwright-patterns/SKILL.md +197 -0
  986. package/dist/agents/skills/claude-code/test-playwright-patterns/skill.yaml +43 -0
  987. package/dist/agents/skills/claude-code/test-playwright-setup/SKILL.md +178 -0
  988. package/dist/agents/skills/claude-code/test-playwright-setup/skill.yaml +42 -0
  989. package/dist/agents/skills/claude-code/test-property-based/SKILL.md +172 -0
  990. package/dist/agents/skills/claude-code/test-property-based/skill.yaml +42 -0
  991. package/dist/agents/skills/claude-code/test-snapshot-patterns/SKILL.md +142 -0
  992. package/dist/agents/skills/claude-code/test-snapshot-patterns/skill.yaml +41 -0
  993. package/dist/agents/skills/claude-code/test-tdd-workflow/SKILL.md +185 -0
  994. package/dist/agents/skills/claude-code/test-tdd-workflow/skill.yaml +42 -0
  995. package/dist/agents/skills/claude-code/test-unit-patterns/SKILL.md +209 -0
  996. package/dist/agents/skills/claude-code/test-unit-patterns/skill.yaml +44 -0
  997. package/dist/agents/skills/claude-code/test-vitest-config/SKILL.md +212 -0
  998. package/dist/agents/skills/claude-code/test-vitest-config/skill.yaml +44 -0
  999. package/dist/agents/skills/claude-code/trpc-context-pattern/SKILL.md +190 -0
  1000. package/dist/agents/skills/claude-code/trpc-context-pattern/skill.yaml +41 -0
  1001. package/dist/agents/skills/claude-code/trpc-error-handling/SKILL.md +132 -0
  1002. package/dist/agents/skills/claude-code/trpc-error-handling/skill.yaml +42 -0
  1003. package/dist/agents/skills/claude-code/trpc-input-validation/SKILL.md +100 -0
  1004. package/dist/agents/skills/claude-code/trpc-input-validation/skill.yaml +42 -0
  1005. package/dist/agents/skills/claude-code/trpc-middleware-pattern/SKILL.md +99 -0
  1006. package/dist/agents/skills/claude-code/trpc-middleware-pattern/skill.yaml +41 -0
  1007. package/dist/agents/skills/claude-code/trpc-nextjs-integration/SKILL.md +203 -0
  1008. package/dist/agents/skills/claude-code/trpc-nextjs-integration/skill.yaml +43 -0
  1009. package/dist/agents/skills/claude-code/trpc-react-query-integration/SKILL.md +182 -0
  1010. package/dist/agents/skills/claude-code/trpc-react-query-integration/skill.yaml +43 -0
  1011. package/dist/agents/skills/claude-code/trpc-router-composition/SKILL.md +98 -0
  1012. package/dist/agents/skills/claude-code/trpc-router-composition/skill.yaml +42 -0
  1013. package/dist/agents/skills/claude-code/trpc-subscription-pattern/SKILL.md +118 -0
  1014. package/dist/agents/skills/claude-code/trpc-subscription-pattern/skill.yaml +43 -0
  1015. package/dist/agents/skills/claude-code/ts-async-patterns/SKILL.md +193 -0
  1016. package/dist/agents/skills/claude-code/ts-async-patterns/skill.yaml +38 -0
  1017. package/dist/agents/skills/claude-code/ts-branded-types/SKILL.md +161 -0
  1018. package/dist/agents/skills/claude-code/ts-branded-types/skill.yaml +38 -0
  1019. package/dist/agents/skills/claude-code/ts-class-patterns/SKILL.md +238 -0
  1020. package/dist/agents/skills/claude-code/ts-class-patterns/skill.yaml +38 -0
  1021. package/dist/agents/skills/claude-code/ts-conditional-types/SKILL.md +142 -0
  1022. package/dist/agents/skills/claude-code/ts-conditional-types/skill.yaml +38 -0
  1023. package/dist/agents/skills/claude-code/ts-config-patterns/SKILL.md +190 -0
  1024. package/dist/agents/skills/claude-code/ts-config-patterns/skill.yaml +38 -0
  1025. package/dist/agents/skills/claude-code/ts-declaration-merging/SKILL.md +187 -0
  1026. package/dist/agents/skills/claude-code/ts-declaration-merging/skill.yaml +37 -0
  1027. package/dist/agents/skills/claude-code/ts-decorator-patterns/SKILL.md +181 -0
  1028. package/dist/agents/skills/claude-code/ts-decorator-patterns/skill.yaml +37 -0
  1029. package/dist/agents/skills/claude-code/ts-discriminated-unions/SKILL.md +186 -0
  1030. package/dist/agents/skills/claude-code/ts-discriminated-unions/skill.yaml +38 -0
  1031. package/dist/agents/skills/claude-code/ts-error-handling-types/SKILL.md +205 -0
  1032. package/dist/agents/skills/claude-code/ts-error-handling-types/skill.yaml +38 -0
  1033. package/dist/agents/skills/claude-code/ts-generics-pattern/SKILL.md +104 -0
  1034. package/dist/agents/skills/claude-code/ts-generics-pattern/skill.yaml +39 -0
  1035. package/dist/agents/skills/claude-code/ts-mapped-types/SKILL.md +147 -0
  1036. package/dist/agents/skills/claude-code/ts-mapped-types/skill.yaml +38 -0
  1037. package/dist/agents/skills/claude-code/ts-module-patterns/SKILL.md +156 -0
  1038. package/dist/agents/skills/claude-code/ts-module-patterns/skill.yaml +37 -0
  1039. package/dist/agents/skills/claude-code/ts-performance-patterns/SKILL.md +158 -0
  1040. package/dist/agents/skills/claude-code/ts-performance-patterns/skill.yaml +37 -0
  1041. package/dist/agents/skills/claude-code/ts-satisfies-operator/SKILL.md +151 -0
  1042. package/dist/agents/skills/claude-code/ts-satisfies-operator/skill.yaml +38 -0
  1043. package/dist/agents/skills/claude-code/ts-strict-mode/SKILL.md +167 -0
  1044. package/dist/agents/skills/claude-code/ts-strict-mode/skill.yaml +38 -0
  1045. package/dist/agents/skills/claude-code/ts-template-literal-types/SKILL.md +146 -0
  1046. package/dist/agents/skills/claude-code/ts-template-literal-types/skill.yaml +38 -0
  1047. package/dist/agents/skills/claude-code/ts-testing-types/SKILL.md +166 -0
  1048. package/dist/agents/skills/claude-code/ts-testing-types/skill.yaml +38 -0
  1049. package/dist/agents/skills/claude-code/ts-type-guards/SKILL.md +168 -0
  1050. package/dist/agents/skills/claude-code/ts-type-guards/skill.yaml +39 -0
  1051. package/dist/agents/skills/claude-code/ts-utility-types/SKILL.md +119 -0
  1052. package/dist/agents/skills/claude-code/ts-utility-types/skill.yaml +43 -0
  1053. package/dist/agents/skills/claude-code/ts-zod-integration/SKILL.md +181 -0
  1054. package/dist/agents/skills/claude-code/ts-zod-integration/skill.yaml +37 -0
  1055. package/dist/agents/skills/claude-code/validate-context-engineering/SKILL.md +9 -0
  1056. package/dist/agents/skills/claude-code/validate-context-engineering/skill.yaml +2 -0
  1057. package/dist/agents/skills/claude-code/vue-async-components/SKILL.md +67 -0
  1058. package/dist/agents/skills/claude-code/vue-async-components/skill.yaml +35 -0
  1059. package/dist/agents/skills/claude-code/vue-component-events/SKILL.md +72 -0
  1060. package/dist/agents/skills/claude-code/vue-component-events/skill.yaml +35 -0
  1061. package/dist/agents/skills/claude-code/vue-composables-pattern/SKILL.md +75 -0
  1062. package/dist/agents/skills/claude-code/vue-composables-pattern/skill.yaml +34 -0
  1063. package/dist/agents/skills/claude-code/vue-directive-pattern/SKILL.md +66 -0
  1064. package/dist/agents/skills/claude-code/vue-directive-pattern/skill.yaml +34 -0
  1065. package/dist/agents/skills/claude-code/vue-pinia-pattern/SKILL.md +69 -0
  1066. package/dist/agents/skills/claude-code/vue-pinia-pattern/skill.yaml +35 -0
  1067. package/dist/agents/skills/claude-code/vue-provide-inject/SKILL.md +66 -0
  1068. package/dist/agents/skills/claude-code/vue-provide-inject/skill.yaml +35 -0
  1069. package/dist/agents/skills/claude-code/vue-reactive-refs/SKILL.md +67 -0
  1070. package/dist/agents/skills/claude-code/vue-reactive-refs/skill.yaml +35 -0
  1071. package/dist/agents/skills/claude-code/vue-renderless-components/SKILL.md +69 -0
  1072. package/dist/agents/skills/claude-code/vue-renderless-components/skill.yaml +35 -0
  1073. package/dist/agents/skills/claude-code/vue-slots-pattern/SKILL.md +72 -0
  1074. package/dist/agents/skills/claude-code/vue-slots-pattern/skill.yaml +35 -0
  1075. package/dist/agents/skills/claude-code/vue-teleport-pattern/SKILL.md +66 -0
  1076. package/dist/agents/skills/claude-code/vue-teleport-pattern/skill.yaml +35 -0
  1077. package/dist/agents/skills/claude-code/vue-watchers-pattern/SKILL.md +73 -0
  1078. package/dist/agents/skills/claude-code/vue-watchers-pattern/skill.yaml +35 -0
  1079. package/dist/agents/skills/claude-code/xstate-actor-pattern/SKILL.md +155 -0
  1080. package/dist/agents/skills/claude-code/xstate-actor-pattern/skill.yaml +40 -0
  1081. package/dist/agents/skills/claude-code/xstate-guards-actions/SKILL.md +153 -0
  1082. package/dist/agents/skills/claude-code/xstate-guards-actions/skill.yaml +41 -0
  1083. package/dist/agents/skills/claude-code/xstate-history-states/SKILL.md +123 -0
  1084. package/dist/agents/skills/claude-code/xstate-history-states/skill.yaml +39 -0
  1085. package/dist/agents/skills/claude-code/xstate-invoke-pattern/SKILL.md +165 -0
  1086. package/dist/agents/skills/claude-code/xstate-invoke-pattern/skill.yaml +40 -0
  1087. package/dist/agents/skills/claude-code/xstate-machine-definition/SKILL.md +151 -0
  1088. package/dist/agents/skills/claude-code/xstate-machine-definition/skill.yaml +40 -0
  1089. package/dist/agents/skills/claude-code/xstate-parallel-states/SKILL.md +130 -0
  1090. package/dist/agents/skills/claude-code/xstate-parallel-states/skill.yaml +39 -0
  1091. package/dist/agents/skills/claude-code/xstate-react-integration/SKILL.md +138 -0
  1092. package/dist/agents/skills/claude-code/xstate-react-integration/skill.yaml +39 -0
  1093. package/dist/agents/skills/claude-code/xstate-testing-patterns/SKILL.md +173 -0
  1094. package/dist/agents/skills/claude-code/xstate-testing-patterns/skill.yaml +39 -0
  1095. package/dist/agents/skills/claude-code/xstate-typegen/SKILL.md +168 -0
  1096. package/dist/agents/skills/claude-code/xstate-typegen/skill.yaml +39 -0
  1097. package/dist/agents/skills/claude-code/xstate-visualization/SKILL.md +124 -0
  1098. package/dist/agents/skills/claude-code/xstate-visualization/skill.yaml +39 -0
  1099. package/dist/agents/skills/claude-code/zod-array-validation/SKILL.md +160 -0
  1100. package/dist/agents/skills/claude-code/zod-array-validation/skill.yaml +42 -0
  1101. package/dist/agents/skills/claude-code/zod-async-validation/SKILL.md +205 -0
  1102. package/dist/agents/skills/claude-code/zod-async-validation/skill.yaml +40 -0
  1103. package/dist/agents/skills/claude-code/zod-error-handling/SKILL.md +206 -0
  1104. package/dist/agents/skills/claude-code/zod-error-handling/skill.yaml +41 -0
  1105. package/dist/agents/skills/claude-code/zod-infer-types/SKILL.md +192 -0
  1106. package/dist/agents/skills/claude-code/zod-infer-types/skill.yaml +41 -0
  1107. package/dist/agents/skills/claude-code/zod-nextjs-integration/SKILL.md +232 -0
  1108. package/dist/agents/skills/claude-code/zod-nextjs-integration/skill.yaml +42 -0
  1109. package/dist/agents/skills/claude-code/zod-object-patterns/SKILL.md +190 -0
  1110. package/dist/agents/skills/claude-code/zod-object-patterns/skill.yaml +43 -0
  1111. package/dist/agents/skills/claude-code/zod-schema-definition/SKILL.md +170 -0
  1112. package/dist/agents/skills/claude-code/zod-schema-definition/skill.yaml +42 -0
  1113. package/dist/agents/skills/claude-code/zod-string-validation/SKILL.md +180 -0
  1114. package/dist/agents/skills/claude-code/zod-string-validation/skill.yaml +43 -0
  1115. package/dist/agents/skills/claude-code/zod-transform-refine/SKILL.md +193 -0
  1116. package/dist/agents/skills/claude-code/zod-transform-refine/skill.yaml +42 -0
  1117. package/dist/agents/skills/claude-code/zod-union-discriminated/SKILL.md +168 -0
  1118. package/dist/agents/skills/claude-code/zod-union-discriminated/skill.yaml +40 -0
  1119. package/dist/agents/skills/codex/a11y-aria-patterns/SKILL.md +183 -0
  1120. package/dist/agents/skills/codex/a11y-aria-patterns/skill.yaml +43 -0
  1121. package/dist/agents/skills/codex/a11y-color-contrast/SKILL.md +156 -0
  1122. package/dist/agents/skills/codex/a11y-color-contrast/skill.yaml +45 -0
  1123. package/dist/agents/skills/codex/a11y-form-patterns/SKILL.md +147 -0
  1124. package/dist/agents/skills/codex/a11y-form-patterns/skill.yaml +45 -0
  1125. package/dist/agents/skills/codex/a11y-image-text-alt/SKILL.md +159 -0
  1126. package/dist/agents/skills/codex/a11y-image-text-alt/skill.yaml +43 -0
  1127. package/dist/agents/skills/codex/a11y-keyboard-navigation/SKILL.md +169 -0
  1128. package/dist/agents/skills/codex/a11y-keyboard-navigation/skill.yaml +45 -0
  1129. package/dist/agents/skills/codex/a11y-modal-patterns/SKILL.md +201 -0
  1130. package/dist/agents/skills/codex/a11y-modal-patterns/skill.yaml +42 -0
  1131. package/dist/agents/skills/codex/a11y-motion-animation/SKILL.md +199 -0
  1132. package/dist/agents/skills/codex/a11y-motion-animation/skill.yaml +45 -0
  1133. package/dist/agents/skills/codex/a11y-screen-reader-testing/SKILL.md +138 -0
  1134. package/dist/agents/skills/codex/a11y-screen-reader-testing/skill.yaml +43 -0
  1135. package/dist/agents/skills/codex/a11y-semantic-html/SKILL.md +139 -0
  1136. package/dist/agents/skills/codex/a11y-semantic-html/skill.yaml +43 -0
  1137. package/dist/agents/skills/codex/a11y-testing-automation/SKILL.md +206 -0
  1138. package/dist/agents/skills/codex/a11y-testing-automation/skill.yaml +45 -0
  1139. package/dist/agents/skills/codex/add-harness-component/SKILL.md +21 -12
  1140. package/dist/agents/skills/codex/add-harness-component/skill.yaml +2 -0
  1141. package/dist/agents/skills/codex/align-documentation/SKILL.md +9 -0
  1142. package/dist/agents/skills/codex/align-documentation/skill.yaml +2 -0
  1143. package/dist/agents/skills/codex/angular-component-pattern/SKILL.md +112 -0
  1144. package/dist/agents/skills/codex/angular-component-pattern/skill.yaml +46 -0
  1145. package/dist/agents/skills/codex/angular-directive-pattern/SKILL.md +166 -0
  1146. package/dist/agents/skills/codex/angular-directive-pattern/skill.yaml +44 -0
  1147. package/dist/agents/skills/codex/angular-http-interceptors/SKILL.md +174 -0
  1148. package/dist/agents/skills/codex/angular-http-interceptors/skill.yaml +44 -0
  1149. package/dist/agents/skills/codex/angular-lazy-loading/SKILL.md +156 -0
  1150. package/dist/agents/skills/codex/angular-lazy-loading/skill.yaml +44 -0
  1151. package/dist/agents/skills/codex/angular-performance-patterns/SKILL.md +141 -0
  1152. package/dist/agents/skills/codex/angular-performance-patterns/skill.yaml +45 -0
  1153. package/dist/agents/skills/codex/angular-pipe-pattern/SKILL.md +126 -0
  1154. package/dist/agents/skills/codex/angular-pipe-pattern/skill.yaml +44 -0
  1155. package/dist/agents/skills/codex/angular-reactive-forms/SKILL.md +136 -0
  1156. package/dist/agents/skills/codex/angular-reactive-forms/skill.yaml +44 -0
  1157. package/dist/agents/skills/codex/angular-routing-guards/SKILL.md +150 -0
  1158. package/dist/agents/skills/codex/angular-routing-guards/skill.yaml +44 -0
  1159. package/dist/agents/skills/codex/angular-rxjs-patterns/SKILL.md +152 -0
  1160. package/dist/agents/skills/codex/angular-rxjs-patterns/skill.yaml +45 -0
  1161. package/dist/agents/skills/codex/angular-schematics/SKILL.md +184 -0
  1162. package/dist/agents/skills/codex/angular-schematics/skill.yaml +44 -0
  1163. package/dist/agents/skills/codex/angular-service-di/SKILL.md +108 -0
  1164. package/dist/agents/skills/codex/angular-service-di/skill.yaml +45 -0
  1165. package/dist/agents/skills/codex/angular-signals-pattern/SKILL.md +116 -0
  1166. package/dist/agents/skills/codex/angular-signals-pattern/skill.yaml +44 -0
  1167. package/dist/agents/skills/codex/angular-standalone-components/SKILL.md +130 -0
  1168. package/dist/agents/skills/codex/angular-standalone-components/skill.yaml +44 -0
  1169. package/dist/agents/skills/codex/angular-state-management/SKILL.md +150 -0
  1170. package/dist/agents/skills/codex/angular-state-management/skill.yaml +45 -0
  1171. package/dist/agents/skills/codex/angular-testing-patterns/SKILL.md +180 -0
  1172. package/dist/agents/skills/codex/angular-testing-patterns/skill.yaml +45 -0
  1173. package/dist/agents/skills/codex/astro-component-pattern/SKILL.md +160 -0
  1174. package/dist/agents/skills/codex/astro-component-pattern/skill.yaml +44 -0
  1175. package/dist/agents/skills/codex/astro-content-collections/SKILL.md +155 -0
  1176. package/dist/agents/skills/codex/astro-content-collections/skill.yaml +42 -0
  1177. package/dist/agents/skills/codex/astro-deployment-config/SKILL.md +208 -0
  1178. package/dist/agents/skills/codex/astro-deployment-config/skill.yaml +46 -0
  1179. package/dist/agents/skills/codex/astro-image-optimization/SKILL.md +188 -0
  1180. package/dist/agents/skills/codex/astro-image-optimization/skill.yaml +45 -0
  1181. package/dist/agents/skills/codex/astro-integration-pattern/SKILL.md +164 -0
  1182. package/dist/agents/skills/codex/astro-integration-pattern/skill.yaml +44 -0
  1183. package/dist/agents/skills/codex/astro-islands-architecture/SKILL.md +103 -0
  1184. package/dist/agents/skills/codex/astro-islands-architecture/skill.yaml +44 -0
  1185. package/dist/agents/skills/codex/astro-multi-framework/SKILL.md +161 -0
  1186. package/dist/agents/skills/codex/astro-multi-framework/skill.yaml +46 -0
  1187. package/dist/agents/skills/codex/astro-routing-pattern/SKILL.md +135 -0
  1188. package/dist/agents/skills/codex/astro-routing-pattern/skill.yaml +43 -0
  1189. package/dist/agents/skills/codex/astro-server-endpoints/SKILL.md +173 -0
  1190. package/dist/agents/skills/codex/astro-server-endpoints/skill.yaml +44 -0
  1191. package/dist/agents/skills/codex/astro-ssr-hybrid/SKILL.md +191 -0
  1192. package/dist/agents/skills/codex/astro-ssr-hybrid/skill.yaml +46 -0
  1193. package/dist/agents/skills/codex/astro-view-transitions/SKILL.md +168 -0
  1194. package/dist/agents/skills/codex/astro-view-transitions/skill.yaml +45 -0
  1195. package/dist/agents/skills/codex/check-mechanical-constraints/SKILL.md +9 -0
  1196. package/dist/agents/skills/codex/check-mechanical-constraints/skill.yaml +2 -0
  1197. package/dist/agents/skills/codex/cleanup-dead-code/SKILL.md +11 -0
  1198. package/dist/agents/skills/codex/cleanup-dead-code/skill.yaml +2 -0
  1199. package/dist/agents/skills/codex/css-animation-pattern/SKILL.md +143 -0
  1200. package/dist/agents/skills/codex/css-animation-pattern/skill.yaml +43 -0
  1201. package/dist/agents/skills/codex/css-component-variants/SKILL.md +147 -0
  1202. package/dist/agents/skills/codex/css-component-variants/skill.yaml +42 -0
  1203. package/dist/agents/skills/codex/css-css-modules/SKILL.md +168 -0
  1204. package/dist/agents/skills/codex/css-css-modules/skill.yaml +38 -0
  1205. package/dist/agents/skills/codex/css-custom-components/SKILL.md +178 -0
  1206. package/dist/agents/skills/codex/css-custom-components/skill.yaml +39 -0
  1207. package/dist/agents/skills/codex/css-dark-mode/SKILL.md +171 -0
  1208. package/dist/agents/skills/codex/css-dark-mode/skill.yaml +41 -0
  1209. package/dist/agents/skills/codex/css-design-tokens/SKILL.md +155 -0
  1210. package/dist/agents/skills/codex/css-design-tokens/skill.yaml +42 -0
  1211. package/dist/agents/skills/codex/css-headless-ui/SKILL.md +179 -0
  1212. package/dist/agents/skills/codex/css-headless-ui/skill.yaml +39 -0
  1213. package/dist/agents/skills/codex/css-layout-patterns/SKILL.md +155 -0
  1214. package/dist/agents/skills/codex/css-layout-patterns/skill.yaml +43 -0
  1215. package/dist/agents/skills/codex/css-performance-patterns/SKILL.md +163 -0
  1216. package/dist/agents/skills/codex/css-performance-patterns/skill.yaml +40 -0
  1217. package/dist/agents/skills/codex/css-responsive-design/SKILL.md +161 -0
  1218. package/dist/agents/skills/codex/css-responsive-design/skill.yaml +42 -0
  1219. package/dist/agents/skills/codex/css-tailwind-merge/SKILL.md +128 -0
  1220. package/dist/agents/skills/codex/css-tailwind-merge/skill.yaml +39 -0
  1221. package/dist/agents/skills/codex/css-tailwind-pattern/SKILL.md +126 -0
  1222. package/dist/agents/skills/codex/css-tailwind-pattern/skill.yaml +40 -0
  1223. package/dist/agents/skills/codex/design-affordances/SKILL.md +157 -0
  1224. package/dist/agents/skills/codex/design-affordances/skill.yaml +35 -0
  1225. package/dist/agents/skills/codex/design-alignment/SKILL.md +148 -0
  1226. package/dist/agents/skills/codex/design-alignment/skill.yaml +33 -0
  1227. package/dist/agents/skills/codex/design-apple-hig/SKILL.md +237 -0
  1228. package/dist/agents/skills/codex/design-apple-hig/skill.yaml +37 -0
  1229. package/dist/agents/skills/codex/design-atomic-design/SKILL.md +172 -0
  1230. package/dist/agents/skills/codex/design-atomic-design/skill.yaml +35 -0
  1231. package/dist/agents/skills/codex/design-brand-consistency/SKILL.md +167 -0
  1232. package/dist/agents/skills/codex/design-brand-consistency/skill.yaml +35 -0
  1233. package/dist/agents/skills/codex/design-color-accessibility/SKILL.md +161 -0
  1234. package/dist/agents/skills/codex/design-color-accessibility/skill.yaml +34 -0
  1235. package/dist/agents/skills/codex/design-color-harmony/SKILL.md +152 -0
  1236. package/dist/agents/skills/codex/design-color-harmony/skill.yaml +35 -0
  1237. package/dist/agents/skills/codex/design-color-psychology/SKILL.md +151 -0
  1238. package/dist/agents/skills/codex/design-color-psychology/skill.yaml +34 -0
  1239. package/dist/agents/skills/codex/design-component-anatomy/SKILL.md +243 -0
  1240. package/dist/agents/skills/codex/design-component-anatomy/skill.yaml +34 -0
  1241. package/dist/agents/skills/codex/design-consistency/SKILL.md +179 -0
  1242. package/dist/agents/skills/codex/design-consistency/skill.yaml +35 -0
  1243. package/dist/agents/skills/codex/design-content-density/SKILL.md +156 -0
  1244. package/dist/agents/skills/codex/design-content-density/skill.yaml +34 -0
  1245. package/dist/agents/skills/codex/design-contrast-ratio/SKILL.md +151 -0
  1246. package/dist/agents/skills/codex/design-contrast-ratio/skill.yaml +35 -0
  1247. package/dist/agents/skills/codex/design-dark-mode-color/SKILL.md +152 -0
  1248. package/dist/agents/skills/codex/design-dark-mode-color/skill.yaml +35 -0
  1249. package/dist/agents/skills/codex/design-data-viz-design/SKILL.md +178 -0
  1250. package/dist/agents/skills/codex/design-data-viz-design/skill.yaml +35 -0
  1251. package/dist/agents/skills/codex/design-design-audit/SKILL.md +193 -0
  1252. package/dist/agents/skills/codex/design-design-audit/skill.yaml +33 -0
  1253. package/dist/agents/skills/codex/design-design-critique/SKILL.md +175 -0
  1254. package/dist/agents/skills/codex/design-design-critique/skill.yaml +32 -0
  1255. package/dist/agents/skills/codex/design-design-documentation/SKILL.md +163 -0
  1256. package/dist/agents/skills/codex/design-design-documentation/skill.yaml +33 -0
  1257. package/dist/agents/skills/codex/design-design-governance/SKILL.md +187 -0
  1258. package/dist/agents/skills/codex/design-design-governance/skill.yaml +34 -0
  1259. package/dist/agents/skills/codex/design-elevation-shadow/SKILL.md +163 -0
  1260. package/dist/agents/skills/codex/design-elevation-shadow/skill.yaml +34 -0
  1261. package/dist/agents/skills/codex/design-empty-error-states/SKILL.md +154 -0
  1262. package/dist/agents/skills/codex/design-empty-error-states/skill.yaml +35 -0
  1263. package/dist/agents/skills/codex/design-feedback-patterns/SKILL.md +156 -0
  1264. package/dist/agents/skills/codex/design-feedback-patterns/skill.yaml +35 -0
  1265. package/dist/agents/skills/codex/design-fluent-design/SKILL.md +241 -0
  1266. package/dist/agents/skills/codex/design-fluent-design/skill.yaml +35 -0
  1267. package/dist/agents/skills/codex/design-font-pairing/SKILL.md +161 -0
  1268. package/dist/agents/skills/codex/design-font-pairing/skill.yaml +34 -0
  1269. package/dist/agents/skills/codex/design-form-ux/SKILL.md +156 -0
  1270. package/dist/agents/skills/codex/design-form-ux/skill.yaml +35 -0
  1271. package/dist/agents/skills/codex/design-gestalt-closure-continuity/SKILL.md +182 -0
  1272. package/dist/agents/skills/codex/design-gestalt-closure-continuity/skill.yaml +33 -0
  1273. package/dist/agents/skills/codex/design-gestalt-common-fate/SKILL.md +214 -0
  1274. package/dist/agents/skills/codex/design-gestalt-common-fate/skill.yaml +33 -0
  1275. package/dist/agents/skills/codex/design-gestalt-figure-ground/SKILL.md +189 -0
  1276. package/dist/agents/skills/codex/design-gestalt-figure-ground/skill.yaml +34 -0
  1277. package/dist/agents/skills/codex/design-gestalt-proximity/SKILL.md +162 -0
  1278. package/dist/agents/skills/codex/design-gestalt-proximity/skill.yaml +34 -0
  1279. package/dist/agents/skills/codex/design-gestalt-similarity/SKILL.md +175 -0
  1280. package/dist/agents/skills/codex/design-gestalt-similarity/skill.yaml +33 -0
  1281. package/dist/agents/skills/codex/design-grid-systems/SKILL.md +154 -0
  1282. package/dist/agents/skills/codex/design-grid-systems/skill.yaml +35 -0
  1283. package/dist/agents/skills/codex/design-i18n-design/SKILL.md +181 -0
  1284. package/dist/agents/skills/codex/design-i18n-design/skill.yaml +35 -0
  1285. package/dist/agents/skills/codex/design-iconography/SKILL.md +169 -0
  1286. package/dist/agents/skills/codex/design-iconography/skill.yaml +35 -0
  1287. package/dist/agents/skills/codex/design-illustration-style/SKILL.md +170 -0
  1288. package/dist/agents/skills/codex/design-illustration-style/skill.yaml +34 -0
  1289. package/dist/agents/skills/codex/design-imagery-photography/SKILL.md +172 -0
  1290. package/dist/agents/skills/codex/design-imagery-photography/skill.yaml +35 -0
  1291. package/dist/agents/skills/codex/design-information-architecture/SKILL.md +155 -0
  1292. package/dist/agents/skills/codex/design-information-architecture/skill.yaml +35 -0
  1293. package/dist/agents/skills/codex/design-loading-patterns/SKILL.md +175 -0
  1294. package/dist/agents/skills/codex/design-loading-patterns/skill.yaml +33 -0
  1295. package/dist/agents/skills/codex/design-material-design-3/SKILL.md +184 -0
  1296. package/dist/agents/skills/codex/design-material-design-3/skill.yaml +36 -0
  1297. package/dist/agents/skills/codex/design-micro-interactions/SKILL.md +156 -0
  1298. package/dist/agents/skills/codex/design-micro-interactions/skill.yaml +35 -0
  1299. package/dist/agents/skills/codex/design-motion-principles/SKILL.md +161 -0
  1300. package/dist/agents/skills/codex/design-motion-principles/skill.yaml +36 -0
  1301. package/dist/agents/skills/codex/design-naming-conventions/SKILL.md +200 -0
  1302. package/dist/agents/skills/codex/design-naming-conventions/skill.yaml +34 -0
  1303. package/dist/agents/skills/codex/design-navigation-ux/SKILL.md +150 -0
  1304. package/dist/agents/skills/codex/design-navigation-ux/skill.yaml +34 -0
  1305. package/dist/agents/skills/codex/design-palette-construction/SKILL.md +152 -0
  1306. package/dist/agents/skills/codex/design-palette-construction/skill.yaml +37 -0
  1307. package/dist/agents/skills/codex/design-parallax-scroll/SKILL.md +200 -0
  1308. package/dist/agents/skills/codex/design-parallax-scroll/skill.yaml +34 -0
  1309. package/dist/agents/skills/codex/design-readability/SKILL.md +183 -0
  1310. package/dist/agents/skills/codex/design-readability/skill.yaml +36 -0
  1311. package/dist/agents/skills/codex/design-responsive-strategy/SKILL.md +157 -0
  1312. package/dist/agents/skills/codex/design-responsive-strategy/skill.yaml +34 -0
  1313. package/dist/agents/skills/codex/design-responsive-type/SKILL.md +270 -0
  1314. package/dist/agents/skills/codex/design-responsive-type/skill.yaml +34 -0
  1315. package/dist/agents/skills/codex/design-state-design/SKILL.md +152 -0
  1316. package/dist/agents/skills/codex/design-state-design/skill.yaml +36 -0
  1317. package/dist/agents/skills/codex/design-token-architecture/SKILL.md +218 -0
  1318. package/dist/agents/skills/codex/design-token-architecture/skill.yaml +36 -0
  1319. package/dist/agents/skills/codex/design-transitions-timing/SKILL.md +183 -0
  1320. package/dist/agents/skills/codex/design-transitions-timing/skill.yaml +34 -0
  1321. package/dist/agents/skills/codex/design-type-scale/SKILL.md +157 -0
  1322. package/dist/agents/skills/codex/design-type-scale/skill.yaml +34 -0
  1323. package/dist/agents/skills/codex/design-typographic-hierarchy/SKILL.md +187 -0
  1324. package/dist/agents/skills/codex/design-typographic-hierarchy/skill.yaml +34 -0
  1325. package/dist/agents/skills/codex/design-typography-fundamentals/SKILL.md +158 -0
  1326. package/dist/agents/skills/codex/design-typography-fundamentals/skill.yaml +36 -0
  1327. package/dist/agents/skills/codex/design-visual-hierarchy/SKILL.md +150 -0
  1328. package/dist/agents/skills/codex/design-visual-hierarchy/skill.yaml +36 -0
  1329. package/dist/agents/skills/codex/design-web-fonts/SKILL.md +251 -0
  1330. package/dist/agents/skills/codex/design-web-fonts/skill.yaml +35 -0
  1331. package/dist/agents/skills/codex/design-whitespace/SKILL.md +150 -0
  1332. package/dist/agents/skills/codex/design-whitespace/skill.yaml +36 -0
  1333. package/dist/agents/skills/codex/detect-doc-drift/SKILL.md +9 -0
  1334. package/dist/agents/skills/codex/detect-doc-drift/skill.yaml +2 -0
  1335. package/dist/agents/skills/codex/drizzle-filtering-pattern/SKILL.md +185 -0
  1336. package/dist/agents/skills/codex/drizzle-filtering-pattern/skill.yaml +43 -0
  1337. package/dist/agents/skills/codex/drizzle-migrations/SKILL.md +139 -0
  1338. package/dist/agents/skills/codex/drizzle-migrations/skill.yaml +39 -0
  1339. package/dist/agents/skills/codex/drizzle-performance-patterns/SKILL.md +176 -0
  1340. package/dist/agents/skills/codex/drizzle-performance-patterns/skill.yaml +42 -0
  1341. package/dist/agents/skills/codex/drizzle-query-builder/SKILL.md +206 -0
  1342. package/dist/agents/skills/codex/drizzle-query-builder/skill.yaml +44 -0
  1343. package/dist/agents/skills/codex/drizzle-raw-sql/SKILL.md +157 -0
  1344. package/dist/agents/skills/codex/drizzle-raw-sql/skill.yaml +39 -0
  1345. package/dist/agents/skills/codex/drizzle-relations-pattern/SKILL.md +179 -0
  1346. package/dist/agents/skills/codex/drizzle-relations-pattern/skill.yaml +41 -0
  1347. package/dist/agents/skills/codex/drizzle-schema-definition/SKILL.md +151 -0
  1348. package/dist/agents/skills/codex/drizzle-schema-definition/skill.yaml +46 -0
  1349. package/dist/agents/skills/codex/drizzle-transactions/SKILL.md +146 -0
  1350. package/dist/agents/skills/codex/drizzle-transactions/skill.yaml +39 -0
  1351. package/dist/agents/skills/codex/drizzle-with-nextjs/SKILL.md +199 -0
  1352. package/dist/agents/skills/codex/drizzle-with-nextjs/skill.yaml +43 -0
  1353. package/dist/agents/skills/codex/enforce-architecture/SKILL.md +5 -15
  1354. package/dist/agents/skills/codex/enforce-architecture/skill.yaml +2 -0
  1355. package/dist/agents/skills/codex/events-event-schema/SKILL.md +180 -0
  1356. package/dist/agents/skills/codex/events-event-schema/skill.yaml +44 -0
  1357. package/dist/agents/skills/codex/events-event-storming/SKILL.md +199 -0
  1358. package/dist/agents/skills/codex/events-event-storming/skill.yaml +44 -0
  1359. package/dist/agents/skills/codex/events-idempotency/SKILL.md +188 -0
  1360. package/dist/agents/skills/codex/events-idempotency/skill.yaml +43 -0
  1361. package/dist/agents/skills/codex/events-kafka-patterns/SKILL.md +190 -0
  1362. package/dist/agents/skills/codex/events-kafka-patterns/skill.yaml +44 -0
  1363. package/dist/agents/skills/codex/events-message-queue/SKILL.md +190 -0
  1364. package/dist/agents/skills/codex/events-message-queue/skill.yaml +43 -0
  1365. package/dist/agents/skills/codex/events-outbox-pattern/SKILL.md +212 -0
  1366. package/dist/agents/skills/codex/events-outbox-pattern/skill.yaml +43 -0
  1367. package/dist/agents/skills/codex/events-pubsub-pattern/SKILL.md +158 -0
  1368. package/dist/agents/skills/codex/events-pubsub-pattern/skill.yaml +44 -0
  1369. package/dist/agents/skills/codex/events-redis-pubsub/SKILL.md +183 -0
  1370. package/dist/agents/skills/codex/events-redis-pubsub/skill.yaml +42 -0
  1371. package/dist/agents/skills/codex/events-saga-choreography/SKILL.md +177 -0
  1372. package/dist/agents/skills/codex/events-saga-choreography/skill.yaml +43 -0
  1373. package/dist/agents/skills/codex/events-sse-pattern/SKILL.md +221 -0
  1374. package/dist/agents/skills/codex/events-sse-pattern/skill.yaml +42 -0
  1375. package/dist/agents/skills/codex/events-webhooks-pattern/SKILL.md +214 -0
  1376. package/dist/agents/skills/codex/events-webhooks-pattern/skill.yaml +43 -0
  1377. package/dist/agents/skills/codex/events-websocket-pattern/SKILL.md +252 -0
  1378. package/dist/agents/skills/codex/events-websocket-pattern/skill.yaml +43 -0
  1379. package/dist/agents/skills/codex/gof-abstract-factory/SKILL.md +193 -0
  1380. package/dist/agents/skills/codex/gof-abstract-factory/skill.yaml +35 -0
  1381. package/dist/agents/skills/codex/gof-adapter-pattern/SKILL.md +157 -0
  1382. package/dist/agents/skills/codex/gof-adapter-pattern/skill.yaml +36 -0
  1383. package/dist/agents/skills/codex/gof-bridge-pattern/SKILL.md +183 -0
  1384. package/dist/agents/skills/codex/gof-bridge-pattern/skill.yaml +35 -0
  1385. package/dist/agents/skills/codex/gof-builder-pattern/SKILL.md +236 -0
  1386. package/dist/agents/skills/codex/gof-builder-pattern/skill.yaml +35 -0
  1387. package/dist/agents/skills/codex/gof-chain-of-responsibility/SKILL.md +199 -0
  1388. package/dist/agents/skills/codex/gof-chain-of-responsibility/skill.yaml +35 -0
  1389. package/dist/agents/skills/codex/gof-command-pattern/SKILL.md +197 -0
  1390. package/dist/agents/skills/codex/gof-command-pattern/skill.yaml +35 -0
  1391. package/dist/agents/skills/codex/gof-composite-pattern/SKILL.md +188 -0
  1392. package/dist/agents/skills/codex/gof-composite-pattern/skill.yaml +35 -0
  1393. package/dist/agents/skills/codex/gof-decorator-pattern/SKILL.md +177 -0
  1394. package/dist/agents/skills/codex/gof-decorator-pattern/skill.yaml +36 -0
  1395. package/dist/agents/skills/codex/gof-facade-pattern/SKILL.md +143 -0
  1396. package/dist/agents/skills/codex/gof-facade-pattern/skill.yaml +35 -0
  1397. package/dist/agents/skills/codex/gof-factory-method/SKILL.md +148 -0
  1398. package/dist/agents/skills/codex/gof-factory-method/skill.yaml +36 -0
  1399. package/dist/agents/skills/codex/gof-flyweight-pattern/SKILL.md +160 -0
  1400. package/dist/agents/skills/codex/gof-flyweight-pattern/skill.yaml +35 -0
  1401. package/dist/agents/skills/codex/gof-iterator-pattern/SKILL.md +177 -0
  1402. package/dist/agents/skills/codex/gof-iterator-pattern/skill.yaml +35 -0
  1403. package/dist/agents/skills/codex/gof-mediator-pattern/SKILL.md +171 -0
  1404. package/dist/agents/skills/codex/gof-mediator-pattern/skill.yaml +35 -0
  1405. package/dist/agents/skills/codex/gof-memento-pattern/SKILL.md +207 -0
  1406. package/dist/agents/skills/codex/gof-memento-pattern/skill.yaml +34 -0
  1407. package/dist/agents/skills/codex/gof-null-object/SKILL.md +177 -0
  1408. package/dist/agents/skills/codex/gof-null-object/skill.yaml +35 -0
  1409. package/dist/agents/skills/codex/gof-observer-pattern/SKILL.md +175 -0
  1410. package/dist/agents/skills/codex/gof-observer-pattern/skill.yaml +37 -0
  1411. package/dist/agents/skills/codex/gof-prototype-pattern/SKILL.md +162 -0
  1412. package/dist/agents/skills/codex/gof-prototype-pattern/skill.yaml +35 -0
  1413. package/dist/agents/skills/codex/gof-proxy-pattern/SKILL.md +184 -0
  1414. package/dist/agents/skills/codex/gof-proxy-pattern/skill.yaml +36 -0
  1415. package/dist/agents/skills/codex/gof-singleton/SKILL.md +149 -0
  1416. package/dist/agents/skills/codex/gof-singleton/skill.yaml +35 -0
  1417. package/dist/agents/skills/codex/gof-state-pattern/SKILL.md +220 -0
  1418. package/dist/agents/skills/codex/gof-state-pattern/skill.yaml +35 -0
  1419. package/dist/agents/skills/codex/gof-strategy-pattern/SKILL.md +179 -0
  1420. package/dist/agents/skills/codex/gof-strategy-pattern/skill.yaml +35 -0
  1421. package/dist/agents/skills/codex/gof-template-method/SKILL.md +189 -0
  1422. package/dist/agents/skills/codex/gof-template-method/skill.yaml +35 -0
  1423. package/dist/agents/skills/codex/gof-visitor-pattern/SKILL.md +205 -0
  1424. package/dist/agents/skills/codex/gof-visitor-pattern/skill.yaml +34 -0
  1425. package/dist/agents/skills/codex/graphql-apollo-server/SKILL.md +169 -0
  1426. package/dist/agents/skills/codex/graphql-apollo-server/skill.yaml +41 -0
  1427. package/dist/agents/skills/codex/graphql-auth-patterns/SKILL.md +197 -0
  1428. package/dist/agents/skills/codex/graphql-auth-patterns/skill.yaml +42 -0
  1429. package/dist/agents/skills/codex/graphql-client-patterns/SKILL.md +152 -0
  1430. package/dist/agents/skills/codex/graphql-client-patterns/skill.yaml +41 -0
  1431. package/dist/agents/skills/codex/graphql-codegen-pattern/SKILL.md +154 -0
  1432. package/dist/agents/skills/codex/graphql-codegen-pattern/skill.yaml +39 -0
  1433. package/dist/agents/skills/codex/graphql-dataloader-pattern/SKILL.md +138 -0
  1434. package/dist/agents/skills/codex/graphql-dataloader-pattern/skill.yaml +38 -0
  1435. package/dist/agents/skills/codex/graphql-error-handling/SKILL.md +167 -0
  1436. package/dist/agents/skills/codex/graphql-error-handling/skill.yaml +39 -0
  1437. package/dist/agents/skills/codex/graphql-federation-pattern/SKILL.md +137 -0
  1438. package/dist/agents/skills/codex/graphql-federation-pattern/skill.yaml +41 -0
  1439. package/dist/agents/skills/codex/graphql-pagination-patterns/SKILL.md +175 -0
  1440. package/dist/agents/skills/codex/graphql-pagination-patterns/skill.yaml +40 -0
  1441. package/dist/agents/skills/codex/graphql-performance-patterns/SKILL.md +166 -0
  1442. package/dist/agents/skills/codex/graphql-performance-patterns/skill.yaml +39 -0
  1443. package/dist/agents/skills/codex/graphql-resolver-pattern/SKILL.md +129 -0
  1444. package/dist/agents/skills/codex/graphql-resolver-pattern/skill.yaml +39 -0
  1445. package/dist/agents/skills/codex/graphql-schema-design/SKILL.md +145 -0
  1446. package/dist/agents/skills/codex/graphql-schema-design/skill.yaml +41 -0
  1447. package/dist/agents/skills/codex/graphql-subscriptions/SKILL.md +198 -0
  1448. package/dist/agents/skills/codex/graphql-subscriptions/skill.yaml +39 -0
  1449. package/dist/agents/skills/codex/harness-accessibility/SKILL.md +10 -0
  1450. package/dist/agents/skills/codex/harness-accessibility/skill.yaml +2 -0
  1451. package/dist/agents/skills/codex/harness-api-design/SKILL.md +5 -15
  1452. package/dist/agents/skills/codex/harness-api-design/skill.yaml +7 -0
  1453. package/dist/agents/skills/codex/harness-architecture-advisor/SKILL.md +5 -15
  1454. package/dist/agents/skills/codex/harness-architecture-advisor/skill.yaml +2 -0
  1455. package/dist/agents/skills/codex/harness-auth/SKILL.md +5 -15
  1456. package/dist/agents/skills/codex/harness-auth/skill.yaml +6 -0
  1457. package/dist/agents/skills/codex/harness-autopilot/SKILL.md +10 -0
  1458. package/dist/agents/skills/codex/harness-autopilot/skill.yaml +2 -0
  1459. package/dist/agents/skills/codex/harness-brainstorming/SKILL.md +9 -0
  1460. package/dist/agents/skills/codex/harness-brainstorming/skill.yaml +2 -0
  1461. package/dist/agents/skills/codex/harness-caching/SKILL.md +10 -0
  1462. package/dist/agents/skills/codex/harness-caching/skill.yaml +5 -0
  1463. package/dist/agents/skills/codex/harness-chaos/SKILL.md +10 -0
  1464. package/dist/agents/skills/codex/harness-chaos/skill.yaml +2 -0
  1465. package/dist/agents/skills/codex/harness-code-review/SKILL.md +5 -15
  1466. package/dist/agents/skills/codex/harness-code-review/skill.yaml +2 -0
  1467. package/dist/agents/skills/codex/harness-codebase-cleanup/SKILL.md +11 -0
  1468. package/dist/agents/skills/codex/harness-codebase-cleanup/skill.yaml +2 -0
  1469. package/dist/agents/skills/codex/harness-compliance/SKILL.md +10 -0
  1470. package/dist/agents/skills/codex/harness-compliance/skill.yaml +2 -0
  1471. package/dist/agents/skills/codex/harness-containerization/SKILL.md +10 -0
  1472. package/dist/agents/skills/codex/harness-containerization/skill.yaml +7 -0
  1473. package/dist/agents/skills/codex/harness-data-pipeline/SKILL.md +10 -0
  1474. package/dist/agents/skills/codex/harness-data-pipeline/skill.yaml +2 -0
  1475. package/dist/agents/skills/codex/harness-data-validation/SKILL.md +10 -0
  1476. package/dist/agents/skills/codex/harness-data-validation/skill.yaml +7 -0
  1477. package/dist/agents/skills/codex/harness-database/SKILL.md +5 -15
  1478. package/dist/agents/skills/codex/harness-database/skill.yaml +14 -0
  1479. package/dist/agents/skills/codex/harness-debugging/SKILL.md +9 -0
  1480. package/dist/agents/skills/codex/harness-debugging/skill.yaml +2 -0
  1481. package/dist/agents/skills/codex/harness-dependency-health/SKILL.md +10 -0
  1482. package/dist/agents/skills/codex/harness-dependency-health/skill.yaml +2 -0
  1483. package/dist/agents/skills/codex/harness-deployment/SKILL.md +5 -15
  1484. package/dist/agents/skills/codex/harness-deployment/skill.yaml +2 -0
  1485. package/dist/agents/skills/codex/harness-design/SKILL.md +10 -0
  1486. package/dist/agents/skills/codex/harness-design/skill.yaml +8 -0
  1487. package/dist/agents/skills/codex/harness-design-mobile/SKILL.md +10 -0
  1488. package/dist/agents/skills/codex/harness-design-mobile/skill.yaml +2 -0
  1489. package/dist/agents/skills/codex/harness-design-system/SKILL.md +10 -0
  1490. package/dist/agents/skills/codex/harness-design-system/skill.yaml +9 -0
  1491. package/dist/agents/skills/codex/harness-design-web/SKILL.md +10 -0
  1492. package/dist/agents/skills/codex/harness-design-web/skill.yaml +7 -0
  1493. package/dist/agents/skills/codex/harness-diagnostics/SKILL.md +9 -0
  1494. package/dist/agents/skills/codex/harness-diagnostics/skill.yaml +2 -0
  1495. package/dist/agents/skills/codex/harness-docs-pipeline/SKILL.md +11 -0
  1496. package/dist/agents/skills/codex/harness-docs-pipeline/skill.yaml +2 -0
  1497. package/dist/agents/skills/codex/harness-dx/SKILL.md +10 -0
  1498. package/dist/agents/skills/codex/harness-dx/skill.yaml +2 -0
  1499. package/dist/agents/skills/codex/harness-e2e/SKILL.md +9 -0
  1500. package/dist/agents/skills/codex/harness-e2e/skill.yaml +14 -0
  1501. package/dist/agents/skills/codex/harness-event-driven/SKILL.md +10 -0
  1502. package/dist/agents/skills/codex/harness-event-driven/skill.yaml +7 -0
  1503. package/dist/agents/skills/codex/harness-execution/SKILL.md +9 -0
  1504. package/dist/agents/skills/codex/harness-execution/skill.yaml +2 -0
  1505. package/dist/agents/skills/codex/harness-feature-flags/SKILL.md +10 -0
  1506. package/dist/agents/skills/codex/harness-feature-flags/skill.yaml +2 -0
  1507. package/dist/agents/skills/codex/harness-git-workflow/SKILL.md +10 -0
  1508. package/dist/agents/skills/codex/harness-git-workflow/skill.yaml +2 -0
  1509. package/dist/agents/skills/codex/harness-hotspot-detector/SKILL.md +10 -0
  1510. package/dist/agents/skills/codex/harness-hotspot-detector/skill.yaml +2 -0
  1511. package/dist/agents/skills/codex/harness-i18n/SKILL.md +10 -0
  1512. package/dist/agents/skills/codex/harness-i18n/skill.yaml +2 -0
  1513. package/dist/agents/skills/codex/harness-i18n-process/SKILL.md +10 -0
  1514. package/dist/agents/skills/codex/harness-i18n-process/skill.yaml +2 -0
  1515. package/dist/agents/skills/codex/harness-i18n-workflow/SKILL.md +10 -0
  1516. package/dist/agents/skills/codex/harness-i18n-workflow/skill.yaml +2 -0
  1517. package/dist/agents/skills/codex/harness-impact-analysis/SKILL.md +10 -0
  1518. package/dist/agents/skills/codex/harness-impact-analysis/skill.yaml +2 -0
  1519. package/dist/agents/skills/codex/harness-incident-response/SKILL.md +10 -0
  1520. package/dist/agents/skills/codex/harness-incident-response/skill.yaml +2 -0
  1521. package/dist/agents/skills/codex/harness-infrastructure-as-code/SKILL.md +10 -0
  1522. package/dist/agents/skills/codex/harness-infrastructure-as-code/skill.yaml +9 -0
  1523. package/dist/agents/skills/codex/harness-integration-test/SKILL.md +9 -0
  1524. package/dist/agents/skills/codex/harness-integration-test/skill.yaml +2 -0
  1525. package/dist/agents/skills/codex/harness-integrity/SKILL.md +10 -0
  1526. package/dist/agents/skills/codex/harness-integrity/skill.yaml +2 -0
  1527. package/dist/agents/skills/codex/harness-knowledge-mapper/SKILL.md +9 -0
  1528. package/dist/agents/skills/codex/harness-knowledge-mapper/skill.yaml +2 -0
  1529. package/dist/agents/skills/codex/harness-load-testing/SKILL.md +10 -0
  1530. package/dist/agents/skills/codex/harness-load-testing/skill.yaml +2 -0
  1531. package/dist/agents/skills/codex/harness-ml-ops/SKILL.md +10 -0
  1532. package/dist/agents/skills/codex/harness-ml-ops/skill.yaml +5 -0
  1533. package/dist/agents/skills/codex/harness-mobile-patterns/SKILL.md +10 -0
  1534. package/dist/agents/skills/codex/harness-mobile-patterns/skill.yaml +12 -0
  1535. package/dist/agents/skills/codex/harness-mutation-test/SKILL.md +9 -0
  1536. package/dist/agents/skills/codex/harness-mutation-test/skill.yaml +2 -0
  1537. package/dist/agents/skills/codex/harness-observability/SKILL.md +10 -0
  1538. package/dist/agents/skills/codex/harness-observability/skill.yaml +7 -0
  1539. package/dist/agents/skills/codex/harness-onboarding/SKILL.md +18 -10
  1540. package/dist/agents/skills/codex/harness-onboarding/skill.yaml +2 -0
  1541. package/dist/agents/skills/codex/harness-parallel-agents/SKILL.md +9 -0
  1542. package/dist/agents/skills/codex/harness-parallel-agents/skill.yaml +2 -0
  1543. package/dist/agents/skills/codex/harness-perf/SKILL.md +11 -0
  1544. package/dist/agents/skills/codex/harness-perf/skill.yaml +2 -0
  1545. package/dist/agents/skills/codex/harness-perf-tdd/SKILL.md +10 -0
  1546. package/dist/agents/skills/codex/harness-perf-tdd/skill.yaml +2 -0
  1547. package/dist/agents/skills/codex/harness-planning/SKILL.md +10 -0
  1548. package/dist/agents/skills/codex/harness-planning/skill.yaml +2 -0
  1549. package/dist/agents/skills/codex/harness-pre-commit-review/SKILL.md +9 -0
  1550. package/dist/agents/skills/codex/harness-pre-commit-review/skill.yaml +1 -1
  1551. package/dist/agents/skills/codex/harness-product-spec/SKILL.md +10 -0
  1552. package/dist/agents/skills/codex/harness-product-spec/skill.yaml +2 -0
  1553. package/dist/agents/skills/codex/harness-property-test/SKILL.md +10 -0
  1554. package/dist/agents/skills/codex/harness-property-test/skill.yaml +2 -0
  1555. package/dist/agents/skills/codex/harness-refactoring/SKILL.md +9 -0
  1556. package/dist/agents/skills/codex/harness-refactoring/skill.yaml +7 -0
  1557. package/dist/agents/skills/codex/harness-release-readiness/SKILL.md +27 -0
  1558. package/dist/agents/skills/codex/harness-release-readiness/skill.yaml +2 -0
  1559. package/dist/agents/skills/codex/harness-resilience/SKILL.md +10 -0
  1560. package/dist/agents/skills/codex/harness-resilience/skill.yaml +7 -0
  1561. package/dist/agents/skills/codex/harness-roadmap/SKILL.md +10 -1
  1562. package/dist/agents/skills/codex/harness-roadmap/skill.yaml +2 -0
  1563. package/dist/agents/skills/codex/harness-roadmap-pilot/SKILL.md +8 -0
  1564. package/dist/agents/skills/codex/harness-roadmap-pilot/skill.yaml +2 -0
  1565. package/dist/agents/skills/codex/harness-router/SKILL.md +208 -0
  1566. package/dist/agents/skills/codex/harness-router/skill.yaml +46 -0
  1567. package/dist/agents/skills/codex/harness-secrets/SKILL.md +10 -0
  1568. package/dist/agents/skills/codex/harness-secrets/skill.yaml +2 -0
  1569. package/dist/agents/skills/codex/harness-security-review/SKILL.md +10 -0
  1570. package/dist/agents/skills/codex/harness-security-review/skill.yaml +7 -0
  1571. package/dist/agents/skills/codex/harness-security-scan/SKILL.md +5 -15
  1572. package/dist/agents/skills/codex/harness-security-scan/skill.yaml +2 -0
  1573. package/dist/agents/skills/codex/harness-skill-authoring/SKILL.md +147 -1
  1574. package/dist/agents/skills/codex/harness-skill-authoring/skill.yaml +2 -0
  1575. package/dist/agents/skills/codex/harness-soundness-review/SKILL.md +10 -0
  1576. package/dist/agents/skills/codex/harness-soundness-review/skill.yaml +2 -0
  1577. package/dist/agents/skills/codex/harness-sql-review/SKILL.md +10 -0
  1578. package/dist/agents/skills/codex/harness-sql-review/skill.yaml +9 -0
  1579. package/dist/agents/skills/codex/harness-state-management/SKILL.md +10 -0
  1580. package/dist/agents/skills/codex/harness-state-management/skill.yaml +7 -0
  1581. package/dist/agents/skills/codex/harness-supply-chain-audit/SKILL.md +10 -0
  1582. package/dist/agents/skills/codex/harness-supply-chain-audit/skill.yaml +2 -0
  1583. package/dist/agents/skills/codex/harness-tdd/SKILL.md +9 -0
  1584. package/dist/agents/skills/codex/harness-tdd/skill.yaml +7 -0
  1585. package/dist/agents/skills/codex/harness-test-advisor/SKILL.md +10 -0
  1586. package/dist/agents/skills/codex/harness-test-advisor/skill.yaml +2 -0
  1587. package/dist/agents/skills/codex/harness-test-data/SKILL.md +10 -0
  1588. package/dist/agents/skills/codex/harness-test-data/skill.yaml +2 -0
  1589. package/dist/agents/skills/codex/harness-ux-copy/SKILL.md +10 -0
  1590. package/dist/agents/skills/codex/harness-ux-copy/skill.yaml +2 -0
  1591. package/dist/agents/skills/codex/harness-verification/SKILL.md +9 -0
  1592. package/dist/agents/skills/codex/harness-verification/skill.yaml +2 -0
  1593. package/dist/agents/skills/codex/harness-verify/SKILL.md +10 -0
  1594. package/dist/agents/skills/codex/harness-verify/skill.yaml +2 -0
  1595. package/dist/agents/skills/codex/harness-visual-regression/SKILL.md +10 -0
  1596. package/dist/agents/skills/codex/harness-visual-regression/skill.yaml +6 -0
  1597. package/dist/agents/skills/codex/initialize-harness-project/SKILL.md +22 -13
  1598. package/dist/agents/skills/codex/initialize-harness-project/skill.yaml +2 -0
  1599. package/dist/agents/skills/codex/js-abstract-factory-pattern/SKILL.md +79 -0
  1600. package/dist/agents/skills/codex/js-abstract-factory-pattern/skill.yaml +35 -0
  1601. package/dist/agents/skills/codex/js-adapter-pattern/SKILL.md +77 -0
  1602. package/dist/agents/skills/codex/js-adapter-pattern/skill.yaml +35 -0
  1603. package/dist/agents/skills/codex/js-bridge-pattern/SKILL.md +90 -0
  1604. package/dist/agents/skills/codex/js-bridge-pattern/skill.yaml +35 -0
  1605. package/dist/agents/skills/codex/js-chain-of-responsibility-pattern/SKILL.md +81 -0
  1606. package/dist/agents/skills/codex/js-chain-of-responsibility-pattern/skill.yaml +35 -0
  1607. package/dist/agents/skills/codex/js-command-pattern/SKILL.md +81 -0
  1608. package/dist/agents/skills/codex/js-command-pattern/skill.yaml +36 -0
  1609. package/dist/agents/skills/codex/js-composite-pattern/SKILL.md +83 -0
  1610. package/dist/agents/skills/codex/js-composite-pattern/skill.yaml +35 -0
  1611. package/dist/agents/skills/codex/js-constructor-pattern/SKILL.md +78 -0
  1612. package/dist/agents/skills/codex/js-constructor-pattern/skill.yaml +36 -0
  1613. package/dist/agents/skills/codex/js-decorator-pattern/SKILL.md +73 -0
  1614. package/dist/agents/skills/codex/js-decorator-pattern/skill.yaml +35 -0
  1615. package/dist/agents/skills/codex/js-dynamic-import/SKILL.md +70 -0
  1616. package/dist/agents/skills/codex/js-dynamic-import/skill.yaml +36 -0
  1617. package/dist/agents/skills/codex/js-facade-pattern/SKILL.md +73 -0
  1618. package/dist/agents/skills/codex/js-facade-pattern/skill.yaml +35 -0
  1619. package/dist/agents/skills/codex/js-factory-pattern/SKILL.md +74 -0
  1620. package/dist/agents/skills/codex/js-factory-pattern/skill.yaml +35 -0
  1621. package/dist/agents/skills/codex/js-flyweight-pattern/SKILL.md +79 -0
  1622. package/dist/agents/skills/codex/js-flyweight-pattern/skill.yaml +36 -0
  1623. package/dist/agents/skills/codex/js-iterator-pattern/SKILL.md +78 -0
  1624. package/dist/agents/skills/codex/js-iterator-pattern/skill.yaml +36 -0
  1625. package/dist/agents/skills/codex/js-mediator-middleware-pattern/SKILL.md +92 -0
  1626. package/dist/agents/skills/codex/js-mediator-middleware-pattern/skill.yaml +36 -0
  1627. package/dist/agents/skills/codex/js-mixin-pattern/SKILL.md +85 -0
  1628. package/dist/agents/skills/codex/js-mixin-pattern/skill.yaml +35 -0
  1629. package/dist/agents/skills/codex/js-module-pattern/SKILL.md +75 -0
  1630. package/dist/agents/skills/codex/js-module-pattern/skill.yaml +36 -0
  1631. package/dist/agents/skills/codex/js-observer-pattern/SKILL.md +81 -0
  1632. package/dist/agents/skills/codex/js-observer-pattern/skill.yaml +36 -0
  1633. package/dist/agents/skills/codex/js-prototype-pattern/SKILL.md +70 -0
  1634. package/dist/agents/skills/codex/js-prototype-pattern/skill.yaml +35 -0
  1635. package/dist/agents/skills/codex/js-provider-pattern/SKILL.md +67 -0
  1636. package/dist/agents/skills/codex/js-provider-pattern/skill.yaml +35 -0
  1637. package/dist/agents/skills/codex/js-proxy-pattern/SKILL.md +79 -0
  1638. package/dist/agents/skills/codex/js-proxy-pattern/skill.yaml +36 -0
  1639. package/dist/agents/skills/codex/js-revealing-module-pattern/SKILL.md +77 -0
  1640. package/dist/agents/skills/codex/js-revealing-module-pattern/skill.yaml +35 -0
  1641. package/dist/agents/skills/codex/js-singleton-pattern/SKILL.md +80 -0
  1642. package/dist/agents/skills/codex/js-singleton-pattern/skill.yaml +35 -0
  1643. package/dist/agents/skills/codex/js-state-pattern/SKILL.md +90 -0
  1644. package/dist/agents/skills/codex/js-state-pattern/skill.yaml +35 -0
  1645. package/dist/agents/skills/codex/js-static-import/SKILL.md +63 -0
  1646. package/dist/agents/skills/codex/js-static-import/skill.yaml +36 -0
  1647. package/dist/agents/skills/codex/js-strategy-pattern/SKILL.md +71 -0
  1648. package/dist/agents/skills/codex/js-strategy-pattern/skill.yaml +35 -0
  1649. package/dist/agents/skills/codex/js-template-method-pattern/SKILL.md +80 -0
  1650. package/dist/agents/skills/codex/js-template-method-pattern/skill.yaml +35 -0
  1651. package/dist/agents/skills/codex/js-visitor-pattern/SKILL.md +85 -0
  1652. package/dist/agents/skills/codex/js-visitor-pattern/skill.yaml +35 -0
  1653. package/dist/agents/skills/codex/microservices-api-gateway/SKILL.md +211 -0
  1654. package/dist/agents/skills/codex/microservices-api-gateway/skill.yaml +40 -0
  1655. package/dist/agents/skills/codex/microservices-bulkhead-pattern/SKILL.md +215 -0
  1656. package/dist/agents/skills/codex/microservices-bulkhead-pattern/skill.yaml +39 -0
  1657. package/dist/agents/skills/codex/microservices-circuit-breaker/SKILL.md +208 -0
  1658. package/dist/agents/skills/codex/microservices-circuit-breaker/skill.yaml +39 -0
  1659. package/dist/agents/skills/codex/microservices-config-server/SKILL.md +231 -0
  1660. package/dist/agents/skills/codex/microservices-config-server/skill.yaml +38 -0
  1661. package/dist/agents/skills/codex/microservices-cqrs-pattern/SKILL.md +236 -0
  1662. package/dist/agents/skills/codex/microservices-cqrs-pattern/skill.yaml +39 -0
  1663. package/dist/agents/skills/codex/microservices-decomposition/SKILL.md +172 -0
  1664. package/dist/agents/skills/codex/microservices-decomposition/skill.yaml +39 -0
  1665. package/dist/agents/skills/codex/microservices-distributed-tracing/SKILL.md +222 -0
  1666. package/dist/agents/skills/codex/microservices-distributed-tracing/skill.yaml +39 -0
  1667. package/dist/agents/skills/codex/microservices-event-sourcing/SKILL.md +268 -0
  1668. package/dist/agents/skills/codex/microservices-event-sourcing/skill.yaml +41 -0
  1669. package/dist/agents/skills/codex/microservices-health-check/SKILL.md +212 -0
  1670. package/dist/agents/skills/codex/microservices-health-check/skill.yaml +40 -0
  1671. package/dist/agents/skills/codex/microservices-outbox-pattern/SKILL.md +252 -0
  1672. package/dist/agents/skills/codex/microservices-outbox-pattern/skill.yaml +40 -0
  1673. package/dist/agents/skills/codex/microservices-saga-pattern/SKILL.md +196 -0
  1674. package/dist/agents/skills/codex/microservices-saga-pattern/skill.yaml +40 -0
  1675. package/dist/agents/skills/codex/microservices-service-discovery/SKILL.md +186 -0
  1676. package/dist/agents/skills/codex/microservices-service-discovery/skill.yaml +39 -0
  1677. package/dist/agents/skills/codex/microservices-sidecar-pattern/SKILL.md +187 -0
  1678. package/dist/agents/skills/codex/microservices-sidecar-pattern/skill.yaml +39 -0
  1679. package/dist/agents/skills/codex/microservices-strangler-fig/SKILL.md +204 -0
  1680. package/dist/agents/skills/codex/microservices-strangler-fig/skill.yaml +41 -0
  1681. package/dist/agents/skills/codex/mobile-animation-patterns/SKILL.md +199 -0
  1682. package/dist/agents/skills/codex/mobile-animation-patterns/skill.yaml +40 -0
  1683. package/dist/agents/skills/codex/mobile-deployment-patterns/SKILL.md +262 -0
  1684. package/dist/agents/skills/codex/mobile-deployment-patterns/skill.yaml +41 -0
  1685. package/dist/agents/skills/codex/mobile-expo-setup/SKILL.md +194 -0
  1686. package/dist/agents/skills/codex/mobile-expo-setup/skill.yaml +40 -0
  1687. package/dist/agents/skills/codex/mobile-flatlist-patterns/SKILL.md +192 -0
  1688. package/dist/agents/skills/codex/mobile-flatlist-patterns/skill.yaml +39 -0
  1689. package/dist/agents/skills/codex/mobile-gesture-handling/SKILL.md +207 -0
  1690. package/dist/agents/skills/codex/mobile-gesture-handling/skill.yaml +40 -0
  1691. package/dist/agents/skills/codex/mobile-native-modules/SKILL.md +187 -0
  1692. package/dist/agents/skills/codex/mobile-native-modules/skill.yaml +40 -0
  1693. package/dist/agents/skills/codex/mobile-navigation-pattern/SKILL.md +227 -0
  1694. package/dist/agents/skills/codex/mobile-navigation-pattern/skill.yaml +42 -0
  1695. package/dist/agents/skills/codex/mobile-network-patterns/SKILL.md +274 -0
  1696. package/dist/agents/skills/codex/mobile-network-patterns/skill.yaml +40 -0
  1697. package/dist/agents/skills/codex/mobile-performance-patterns/SKILL.md +207 -0
  1698. package/dist/agents/skills/codex/mobile-performance-patterns/skill.yaml +40 -0
  1699. package/dist/agents/skills/codex/mobile-push-notifications/SKILL.md +235 -0
  1700. package/dist/agents/skills/codex/mobile-push-notifications/skill.yaml +40 -0
  1701. package/dist/agents/skills/codex/mobile-storage-patterns/SKILL.md +235 -0
  1702. package/dist/agents/skills/codex/mobile-storage-patterns/skill.yaml +40 -0
  1703. package/dist/agents/skills/codex/mobile-testing-patterns/SKILL.md +246 -0
  1704. package/dist/agents/skills/codex/mobile-testing-patterns/skill.yaml +41 -0
  1705. package/dist/agents/skills/codex/nestjs-config-module/SKILL.md +121 -0
  1706. package/dist/agents/skills/codex/nestjs-config-module/skill.yaml +41 -0
  1707. package/dist/agents/skills/codex/nestjs-controller-pattern/SKILL.md +93 -0
  1708. package/dist/agents/skills/codex/nestjs-controller-pattern/skill.yaml +43 -0
  1709. package/dist/agents/skills/codex/nestjs-dependency-injection/SKILL.md +97 -0
  1710. package/dist/agents/skills/codex/nestjs-dependency-injection/skill.yaml +41 -0
  1711. package/dist/agents/skills/codex/nestjs-dto-validation/SKILL.md +133 -0
  1712. package/dist/agents/skills/codex/nestjs-dto-validation/skill.yaml +42 -0
  1713. package/dist/agents/skills/codex/nestjs-event-driven/SKILL.md +123 -0
  1714. package/dist/agents/skills/codex/nestjs-event-driven/skill.yaml +43 -0
  1715. package/dist/agents/skills/codex/nestjs-exception-filters/SKILL.md +119 -0
  1716. package/dist/agents/skills/codex/nestjs-exception-filters/skill.yaml +40 -0
  1717. package/dist/agents/skills/codex/nestjs-graphql-integration/SKILL.md +132 -0
  1718. package/dist/agents/skills/codex/nestjs-graphql-integration/skill.yaml +42 -0
  1719. package/dist/agents/skills/codex/nestjs-guards-pattern/SKILL.md +101 -0
  1720. package/dist/agents/skills/codex/nestjs-guards-pattern/skill.yaml +41 -0
  1721. package/dist/agents/skills/codex/nestjs-interceptors-pattern/SKILL.md +106 -0
  1722. package/dist/agents/skills/codex/nestjs-interceptors-pattern/skill.yaml +41 -0
  1723. package/dist/agents/skills/codex/nestjs-microservices/SKILL.md +132 -0
  1724. package/dist/agents/skills/codex/nestjs-microservices/skill.yaml +42 -0
  1725. package/dist/agents/skills/codex/nestjs-middleware-pattern/SKILL.md +104 -0
  1726. package/dist/agents/skills/codex/nestjs-middleware-pattern/skill.yaml +39 -0
  1727. package/dist/agents/skills/codex/nestjs-module-pattern/SKILL.md +89 -0
  1728. package/dist/agents/skills/codex/nestjs-module-pattern/skill.yaml +42 -0
  1729. package/dist/agents/skills/codex/nestjs-pipes-pattern/SKILL.md +111 -0
  1730. package/dist/agents/skills/codex/nestjs-pipes-pattern/skill.yaml +40 -0
  1731. package/dist/agents/skills/codex/nestjs-service-pattern/SKILL.md +83 -0
  1732. package/dist/agents/skills/codex/nestjs-service-pattern/skill.yaml +39 -0
  1733. package/dist/agents/skills/codex/nestjs-swagger-integration/SKILL.md +137 -0
  1734. package/dist/agents/skills/codex/nestjs-swagger-integration/skill.yaml +40 -0
  1735. package/dist/agents/skills/codex/nestjs-testing-patterns/SKILL.md +130 -0
  1736. package/dist/agents/skills/codex/nestjs-testing-patterns/skill.yaml +42 -0
  1737. package/dist/agents/skills/codex/next-app-router/SKILL.md +77 -0
  1738. package/dist/agents/skills/codex/next-app-router/skill.yaml +44 -0
  1739. package/dist/agents/skills/codex/next-auth-patterns/SKILL.md +94 -0
  1740. package/dist/agents/skills/codex/next-auth-patterns/skill.yaml +46 -0
  1741. package/dist/agents/skills/codex/next-caching-strategies/SKILL.md +83 -0
  1742. package/dist/agents/skills/codex/next-caching-strategies/skill.yaml +43 -0
  1743. package/dist/agents/skills/codex/next-data-fetching/SKILL.md +97 -0
  1744. package/dist/agents/skills/codex/next-data-fetching/skill.yaml +44 -0
  1745. package/dist/agents/skills/codex/next-deployment-optimization/SKILL.md +92 -0
  1746. package/dist/agents/skills/codex/next-deployment-optimization/skill.yaml +42 -0
  1747. package/dist/agents/skills/codex/next-environment-config/SKILL.md +92 -0
  1748. package/dist/agents/skills/codex/next-environment-config/skill.yaml +43 -0
  1749. package/dist/agents/skills/codex/next-error-boundaries/SKILL.md +96 -0
  1750. package/dist/agents/skills/codex/next-error-boundaries/skill.yaml +44 -0
  1751. package/dist/agents/skills/codex/next-image-optimization/SKILL.md +91 -0
  1752. package/dist/agents/skills/codex/next-image-optimization/skill.yaml +41 -0
  1753. package/dist/agents/skills/codex/next-metadata-api/SKILL.md +94 -0
  1754. package/dist/agents/skills/codex/next-metadata-api/skill.yaml +43 -0
  1755. package/dist/agents/skills/codex/next-middleware-pattern/SKILL.md +80 -0
  1756. package/dist/agents/skills/codex/next-middleware-pattern/skill.yaml +43 -0
  1757. package/dist/agents/skills/codex/next-monorepo-setup/SKILL.md +103 -0
  1758. package/dist/agents/skills/codex/next-monorepo-setup/skill.yaml +43 -0
  1759. package/dist/agents/skills/codex/next-parallel-intercepting-routes/SKILL.md +98 -0
  1760. package/dist/agents/skills/codex/next-parallel-intercepting-routes/skill.yaml +43 -0
  1761. package/dist/agents/skills/codex/next-route-handlers/SKILL.md +80 -0
  1762. package/dist/agents/skills/codex/next-route-handlers/skill.yaml +44 -0
  1763. package/dist/agents/skills/codex/next-server-actions/SKILL.md +97 -0
  1764. package/dist/agents/skills/codex/next-server-actions/skill.yaml +44 -0
  1765. package/dist/agents/skills/codex/next-server-components/SKILL.md +82 -0
  1766. package/dist/agents/skills/codex/next-server-components/skill.yaml +43 -0
  1767. package/dist/agents/skills/codex/next-static-generation/SKILL.md +75 -0
  1768. package/dist/agents/skills/codex/next-static-generation/skill.yaml +44 -0
  1769. package/dist/agents/skills/codex/next-streaming-suspense/SKILL.md +86 -0
  1770. package/dist/agents/skills/codex/next-streaming-suspense/skill.yaml +43 -0
  1771. package/dist/agents/skills/codex/next-testing-patterns/SKILL.md +104 -0
  1772. package/dist/agents/skills/codex/next-testing-patterns/skill.yaml +46 -0
  1773. package/dist/agents/skills/codex/node-buffer-encoding/SKILL.md +138 -0
  1774. package/dist/agents/skills/codex/node-buffer-encoding/skill.yaml +39 -0
  1775. package/dist/agents/skills/codex/node-child-process/SKILL.md +162 -0
  1776. package/dist/agents/skills/codex/node-child-process/skill.yaml +40 -0
  1777. package/dist/agents/skills/codex/node-crypto-patterns/SKILL.md +147 -0
  1778. package/dist/agents/skills/codex/node-crypto-patterns/skill.yaml +41 -0
  1779. package/dist/agents/skills/codex/node-environment-config/SKILL.md +145 -0
  1780. package/dist/agents/skills/codex/node-environment-config/skill.yaml +39 -0
  1781. package/dist/agents/skills/codex/node-error-handling/SKILL.md +183 -0
  1782. package/dist/agents/skills/codex/node-error-handling/skill.yaml +40 -0
  1783. package/dist/agents/skills/codex/node-esm-patterns/SKILL.md +149 -0
  1784. package/dist/agents/skills/codex/node-esm-patterns/skill.yaml +39 -0
  1785. package/dist/agents/skills/codex/node-event-emitter/SKILL.md +144 -0
  1786. package/dist/agents/skills/codex/node-event-emitter/skill.yaml +41 -0
  1787. package/dist/agents/skills/codex/node-express-patterns/SKILL.md +193 -0
  1788. package/dist/agents/skills/codex/node-express-patterns/skill.yaml +40 -0
  1789. package/dist/agents/skills/codex/node-fastify-patterns/SKILL.md +200 -0
  1790. package/dist/agents/skills/codex/node-fastify-patterns/skill.yaml +40 -0
  1791. package/dist/agents/skills/codex/node-http-server/SKILL.md +159 -0
  1792. package/dist/agents/skills/codex/node-http-server/skill.yaml +40 -0
  1793. package/dist/agents/skills/codex/node-path-fs-patterns/SKILL.md +149 -0
  1794. package/dist/agents/skills/codex/node-path-fs-patterns/skill.yaml +39 -0
  1795. package/dist/agents/skills/codex/node-performance-profiling/SKILL.md +176 -0
  1796. package/dist/agents/skills/codex/node-performance-profiling/skill.yaml +39 -0
  1797. package/dist/agents/skills/codex/node-streams-pattern/SKILL.md +163 -0
  1798. package/dist/agents/skills/codex/node-streams-pattern/skill.yaml +40 -0
  1799. package/dist/agents/skills/codex/node-testing-patterns/SKILL.md +205 -0
  1800. package/dist/agents/skills/codex/node-testing-patterns/skill.yaml +40 -0
  1801. package/dist/agents/skills/codex/node-worker-threads/SKILL.md +169 -0
  1802. package/dist/agents/skills/codex/node-worker-threads/skill.yaml +40 -0
  1803. package/dist/agents/skills/codex/nuxt-auto-imports/SKILL.md +97 -0
  1804. package/dist/agents/skills/codex/nuxt-auto-imports/skill.yaml +41 -0
  1805. package/dist/agents/skills/codex/nuxt-composables-pattern/SKILL.md +119 -0
  1806. package/dist/agents/skills/codex/nuxt-composables-pattern/skill.yaml +41 -0
  1807. package/dist/agents/skills/codex/nuxt-deployment-config/SKILL.md +209 -0
  1808. package/dist/agents/skills/codex/nuxt-deployment-config/skill.yaml +43 -0
  1809. package/dist/agents/skills/codex/nuxt-layouts-pages/SKILL.md +210 -0
  1810. package/dist/agents/skills/codex/nuxt-layouts-pages/skill.yaml +42 -0
  1811. package/dist/agents/skills/codex/nuxt-middleware-pattern/SKILL.md +164 -0
  1812. package/dist/agents/skills/codex/nuxt-middleware-pattern/skill.yaml +41 -0
  1813. package/dist/agents/skills/codex/nuxt-modules-pattern/SKILL.md +193 -0
  1814. package/dist/agents/skills/codex/nuxt-modules-pattern/skill.yaml +40 -0
  1815. package/dist/agents/skills/codex/nuxt-plugins-pattern/SKILL.md +178 -0
  1816. package/dist/agents/skills/codex/nuxt-plugins-pattern/skill.yaml +40 -0
  1817. package/dist/agents/skills/codex/nuxt-seo-metadata/SKILL.md +185 -0
  1818. package/dist/agents/skills/codex/nuxt-seo-metadata/skill.yaml +43 -0
  1819. package/dist/agents/skills/codex/nuxt-server-routes/SKILL.md +154 -0
  1820. package/dist/agents/skills/codex/nuxt-server-routes/skill.yaml +41 -0
  1821. package/dist/agents/skills/codex/nuxt-state-management/SKILL.md +162 -0
  1822. package/dist/agents/skills/codex/nuxt-state-management/skill.yaml +43 -0
  1823. package/dist/agents/skills/codex/nuxt-testing-patterns/SKILL.md +203 -0
  1824. package/dist/agents/skills/codex/nuxt-testing-patterns/skill.yaml +45 -0
  1825. package/dist/agents/skills/codex/otel-context-propagation/SKILL.md +152 -0
  1826. package/dist/agents/skills/codex/otel-context-propagation/skill.yaml +39 -0
  1827. package/dist/agents/skills/codex/otel-custom-instrumentation/SKILL.md +166 -0
  1828. package/dist/agents/skills/codex/otel-custom-instrumentation/skill.yaml +39 -0
  1829. package/dist/agents/skills/codex/otel-error-tracking/SKILL.md +163 -0
  1830. package/dist/agents/skills/codex/otel-error-tracking/skill.yaml +39 -0
  1831. package/dist/agents/skills/codex/otel-exporter-config/SKILL.md +168 -0
  1832. package/dist/agents/skills/codex/otel-exporter-config/skill.yaml +39 -0
  1833. package/dist/agents/skills/codex/otel-logging-pattern/SKILL.md +161 -0
  1834. package/dist/agents/skills/codex/otel-logging-pattern/skill.yaml +40 -0
  1835. package/dist/agents/skills/codex/otel-metrics-pattern/SKILL.md +152 -0
  1836. package/dist/agents/skills/codex/otel-metrics-pattern/skill.yaml +40 -0
  1837. package/dist/agents/skills/codex/otel-nestjs-integration/SKILL.md +174 -0
  1838. package/dist/agents/skills/codex/otel-nestjs-integration/skill.yaml +40 -0
  1839. package/dist/agents/skills/codex/otel-nextjs-integration/SKILL.md +161 -0
  1840. package/dist/agents/skills/codex/otel-nextjs-integration/skill.yaml +39 -0
  1841. package/dist/agents/skills/codex/otel-performance-insights/SKILL.md +173 -0
  1842. package/dist/agents/skills/codex/otel-performance-insights/skill.yaml +40 -0
  1843. package/dist/agents/skills/codex/otel-sampling-strategies/SKILL.md +162 -0
  1844. package/dist/agents/skills/codex/otel-sampling-strategies/skill.yaml +38 -0
  1845. package/dist/agents/skills/codex/otel-sdk-setup/SKILL.md +145 -0
  1846. package/dist/agents/skills/codex/otel-sdk-setup/skill.yaml +39 -0
  1847. package/dist/agents/skills/codex/otel-tracing-pattern/SKILL.md +130 -0
  1848. package/dist/agents/skills/codex/otel-tracing-pattern/skill.yaml +39 -0
  1849. package/dist/agents/skills/codex/owasp-auth-patterns/SKILL.md +197 -0
  1850. package/dist/agents/skills/codex/owasp-auth-patterns/skill.yaml +42 -0
  1851. package/dist/agents/skills/codex/owasp-cryptography/SKILL.md +191 -0
  1852. package/dist/agents/skills/codex/owasp-cryptography/skill.yaml +42 -0
  1853. package/dist/agents/skills/codex/owasp-csrf-protection/SKILL.md +175 -0
  1854. package/dist/agents/skills/codex/owasp-csrf-protection/skill.yaml +42 -0
  1855. package/dist/agents/skills/codex/owasp-dependency-security/SKILL.md +173 -0
  1856. package/dist/agents/skills/codex/owasp-dependency-security/skill.yaml +41 -0
  1857. package/dist/agents/skills/codex/owasp-file-upload-security/SKILL.md +199 -0
  1858. package/dist/agents/skills/codex/owasp-file-upload-security/skill.yaml +41 -0
  1859. package/dist/agents/skills/codex/owasp-idor-prevention/SKILL.md +174 -0
  1860. package/dist/agents/skills/codex/owasp-idor-prevention/skill.yaml +42 -0
  1861. package/dist/agents/skills/codex/owasp-injection-prevention/SKILL.md +160 -0
  1862. package/dist/agents/skills/codex/owasp-injection-prevention/skill.yaml +44 -0
  1863. package/dist/agents/skills/codex/owasp-logging-monitoring/SKILL.md +214 -0
  1864. package/dist/agents/skills/codex/owasp-logging-monitoring/skill.yaml +41 -0
  1865. package/dist/agents/skills/codex/owasp-rate-limiting/SKILL.md +215 -0
  1866. package/dist/agents/skills/codex/owasp-rate-limiting/skill.yaml +40 -0
  1867. package/dist/agents/skills/codex/owasp-secrets-management/SKILL.md +171 -0
  1868. package/dist/agents/skills/codex/owasp-secrets-management/skill.yaml +44 -0
  1869. package/dist/agents/skills/codex/owasp-security-headers/SKILL.md +221 -0
  1870. package/dist/agents/skills/codex/owasp-security-headers/skill.yaml +40 -0
  1871. package/dist/agents/skills/codex/owasp-xss-prevention/SKILL.md +174 -0
  1872. package/dist/agents/skills/codex/owasp-xss-prevention/skill.yaml +42 -0
  1873. package/dist/agents/skills/codex/prisma-client-queries/SKILL.md +147 -0
  1874. package/dist/agents/skills/codex/prisma-client-queries/skill.yaml +46 -0
  1875. package/dist/agents/skills/codex/prisma-filtering-sorting/SKILL.md +157 -0
  1876. package/dist/agents/skills/codex/prisma-filtering-sorting/skill.yaml +45 -0
  1877. package/dist/agents/skills/codex/prisma-migrations/SKILL.md +115 -0
  1878. package/dist/agents/skills/codex/prisma-migrations/skill.yaml +41 -0
  1879. package/dist/agents/skills/codex/prisma-performance-patterns/SKILL.md +160 -0
  1880. package/dist/agents/skills/codex/prisma-performance-patterns/skill.yaml +43 -0
  1881. package/dist/agents/skills/codex/prisma-raw-queries/SKILL.md +125 -0
  1882. package/dist/agents/skills/codex/prisma-raw-queries/skill.yaml +41 -0
  1883. package/dist/agents/skills/codex/prisma-relations-pattern/SKILL.md +151 -0
  1884. package/dist/agents/skills/codex/prisma-relations-pattern/skill.yaml +42 -0
  1885. package/dist/agents/skills/codex/prisma-schema-design/SKILL.md +108 -0
  1886. package/dist/agents/skills/codex/prisma-schema-design/skill.yaml +46 -0
  1887. package/dist/agents/skills/codex/prisma-seeding-pattern/SKILL.md +168 -0
  1888. package/dist/agents/skills/codex/prisma-seeding-pattern/skill.yaml +41 -0
  1889. package/dist/agents/skills/codex/prisma-soft-delete/SKILL.md +172 -0
  1890. package/dist/agents/skills/codex/prisma-soft-delete/skill.yaml +41 -0
  1891. package/dist/agents/skills/codex/prisma-transactions/SKILL.md +147 -0
  1892. package/dist/agents/skills/codex/prisma-transactions/skill.yaml +41 -0
  1893. package/dist/agents/skills/codex/prisma-type-generation/SKILL.md +180 -0
  1894. package/dist/agents/skills/codex/prisma-type-generation/skill.yaml +42 -0
  1895. package/dist/agents/skills/codex/react-2026/SKILL.md +86 -0
  1896. package/dist/agents/skills/codex/react-2026/skill.yaml +39 -0
  1897. package/dist/agents/skills/codex/react-client-rendering/SKILL.md +60 -0
  1898. package/dist/agents/skills/codex/react-client-rendering/skill.yaml +37 -0
  1899. package/dist/agents/skills/codex/react-compound-pattern/SKILL.md +80 -0
  1900. package/dist/agents/skills/codex/react-compound-pattern/skill.yaml +36 -0
  1901. package/dist/agents/skills/codex/react-concurrent-ui/SKILL.md +59 -0
  1902. package/dist/agents/skills/codex/react-concurrent-ui/skill.yaml +36 -0
  1903. package/dist/agents/skills/codex/react-container-presentational/SKILL.md +76 -0
  1904. package/dist/agents/skills/codex/react-container-presentational/skill.yaml +36 -0
  1905. package/dist/agents/skills/codex/react-context-pattern/SKILL.md +75 -0
  1906. package/dist/agents/skills/codex/react-context-pattern/skill.yaml +37 -0
  1907. package/dist/agents/skills/codex/react-dynamic-import/SKILL.md +65 -0
  1908. package/dist/agents/skills/codex/react-dynamic-import/skill.yaml +40 -0
  1909. package/dist/agents/skills/codex/react-hoc-pattern/SKILL.md +71 -0
  1910. package/dist/agents/skills/codex/react-hoc-pattern/skill.yaml +35 -0
  1911. package/dist/agents/skills/codex/react-hooks-pattern/SKILL.md +74 -0
  1912. package/dist/agents/skills/codex/react-hooks-pattern/skill.yaml +37 -0
  1913. package/dist/agents/skills/codex/react-islands-pattern/SKILL.md +67 -0
  1914. package/dist/agents/skills/codex/react-islands-pattern/skill.yaml +39 -0
  1915. package/dist/agents/skills/codex/react-memoization-pattern/SKILL.md +64 -0
  1916. package/dist/agents/skills/codex/react-memoization-pattern/skill.yaml +37 -0
  1917. package/dist/agents/skills/codex/react-progressive-hydration/SKILL.md +74 -0
  1918. package/dist/agents/skills/codex/react-progressive-hydration/skill.yaml +37 -0
  1919. package/dist/agents/skills/codex/react-provider-pattern/SKILL.md +72 -0
  1920. package/dist/agents/skills/codex/react-provider-pattern/skill.yaml +37 -0
  1921. package/dist/agents/skills/codex/react-render-props-pattern/SKILL.md +73 -0
  1922. package/dist/agents/skills/codex/react-render-props-pattern/skill.yaml +35 -0
  1923. package/dist/agents/skills/codex/react-server-components/SKILL.md +81 -0
  1924. package/dist/agents/skills/codex/react-server-components/skill.yaml +39 -0
  1925. package/dist/agents/skills/codex/react-server-rendering/SKILL.md +63 -0
  1926. package/dist/agents/skills/codex/react-server-rendering/skill.yaml +39 -0
  1927. package/dist/agents/skills/codex/react-state-management-pattern/SKILL.md +72 -0
  1928. package/dist/agents/skills/codex/react-state-management-pattern/skill.yaml +40 -0
  1929. package/dist/agents/skills/codex/react-static-import/SKILL.md +61 -0
  1930. package/dist/agents/skills/codex/react-static-import/skill.yaml +37 -0
  1931. package/dist/agents/skills/codex/react-suspense-pattern/SKILL.md +62 -0
  1932. package/dist/agents/skills/codex/react-suspense-pattern/skill.yaml +37 -0
  1933. package/dist/agents/skills/codex/redux-entity-adapter/SKILL.md +120 -0
  1934. package/dist/agents/skills/codex/redux-entity-adapter/skill.yaml +39 -0
  1935. package/dist/agents/skills/codex/redux-listener-middleware/SKILL.md +117 -0
  1936. package/dist/agents/skills/codex/redux-listener-middleware/skill.yaml +39 -0
  1937. package/dist/agents/skills/codex/redux-persistence-pattern/SKILL.md +144 -0
  1938. package/dist/agents/skills/codex/redux-persistence-pattern/skill.yaml +40 -0
  1939. package/dist/agents/skills/codex/redux-rtk-optimistic/SKILL.md +117 -0
  1940. package/dist/agents/skills/codex/redux-rtk-optimistic/skill.yaml +39 -0
  1941. package/dist/agents/skills/codex/redux-rtk-query-endpoints/SKILL.md +131 -0
  1942. package/dist/agents/skills/codex/redux-rtk-query-endpoints/skill.yaml +40 -0
  1943. package/dist/agents/skills/codex/redux-rtk-query-setup/SKILL.md +117 -0
  1944. package/dist/agents/skills/codex/redux-rtk-query-setup/skill.yaml +39 -0
  1945. package/dist/agents/skills/codex/redux-selectors-pattern/SKILL.md +100 -0
  1946. package/dist/agents/skills/codex/redux-selectors-pattern/skill.yaml +39 -0
  1947. package/dist/agents/skills/codex/redux-slice-pattern/SKILL.md +117 -0
  1948. package/dist/agents/skills/codex/redux-slice-pattern/skill.yaml +39 -0
  1949. package/dist/agents/skills/codex/redux-store-setup/SKILL.md +103 -0
  1950. package/dist/agents/skills/codex/redux-store-setup/skill.yaml +39 -0
  1951. package/dist/agents/skills/codex/redux-testing-patterns/SKILL.md +138 -0
  1952. package/dist/agents/skills/codex/redux-testing-patterns/skill.yaml +41 -0
  1953. package/dist/agents/skills/codex/redux-thunk-pattern/SKILL.md +119 -0
  1954. package/dist/agents/skills/codex/redux-thunk-pattern/skill.yaml +41 -0
  1955. package/dist/agents/skills/codex/redux-typescript-patterns/SKILL.md +115 -0
  1956. package/dist/agents/skills/codex/redux-typescript-patterns/skill.yaml +40 -0
  1957. package/dist/agents/skills/codex/resilience-bulkhead-pattern/SKILL.md +145 -0
  1958. package/dist/agents/skills/codex/resilience-bulkhead-pattern/skill.yaml +38 -0
  1959. package/dist/agents/skills/codex/resilience-chaos-testing/SKILL.md +172 -0
  1960. package/dist/agents/skills/codex/resilience-chaos-testing/skill.yaml +38 -0
  1961. package/dist/agents/skills/codex/resilience-circuit-breaker/SKILL.md +159 -0
  1962. package/dist/agents/skills/codex/resilience-circuit-breaker/skill.yaml +39 -0
  1963. package/dist/agents/skills/codex/resilience-dead-letter/SKILL.md +185 -0
  1964. package/dist/agents/skills/codex/resilience-dead-letter/skill.yaml +39 -0
  1965. package/dist/agents/skills/codex/resilience-fallback-pattern/SKILL.md +155 -0
  1966. package/dist/agents/skills/codex/resilience-fallback-pattern/skill.yaml +38 -0
  1967. package/dist/agents/skills/codex/resilience-health-checks/SKILL.md +180 -0
  1968. package/dist/agents/skills/codex/resilience-health-checks/skill.yaml +38 -0
  1969. package/dist/agents/skills/codex/resilience-idempotency/SKILL.md +167 -0
  1970. package/dist/agents/skills/codex/resilience-idempotency/skill.yaml +38 -0
  1971. package/dist/agents/skills/codex/resilience-rate-limiting/SKILL.md +171 -0
  1972. package/dist/agents/skills/codex/resilience-rate-limiting/skill.yaml +38 -0
  1973. package/dist/agents/skills/codex/resilience-retry-pattern/SKILL.md +137 -0
  1974. package/dist/agents/skills/codex/resilience-retry-pattern/skill.yaml +39 -0
  1975. package/dist/agents/skills/codex/resilience-timeout-pattern/SKILL.md +148 -0
  1976. package/dist/agents/skills/codex/resilience-timeout-pattern/skill.yaml +38 -0
  1977. package/dist/agents/skills/codex/state-context-pattern/SKILL.md +143 -0
  1978. package/dist/agents/skills/codex/state-context-pattern/skill.yaml +38 -0
  1979. package/dist/agents/skills/codex/state-jotai-atoms/SKILL.md +153 -0
  1980. package/dist/agents/skills/codex/state-jotai-atoms/skill.yaml +39 -0
  1981. package/dist/agents/skills/codex/state-selection-patterns/SKILL.md +115 -0
  1982. package/dist/agents/skills/codex/state-selection-patterns/skill.yaml +39 -0
  1983. package/dist/agents/skills/codex/state-server-client-sync/SKILL.md +148 -0
  1984. package/dist/agents/skills/codex/state-server-client-sync/skill.yaml +40 -0
  1985. package/dist/agents/skills/codex/state-zustand-devtools/SKILL.md +120 -0
  1986. package/dist/agents/skills/codex/state-zustand-devtools/skill.yaml +38 -0
  1987. package/dist/agents/skills/codex/state-zustand-immer/SKILL.md +150 -0
  1988. package/dist/agents/skills/codex/state-zustand-immer/skill.yaml +38 -0
  1989. package/dist/agents/skills/codex/state-zustand-persist/SKILL.md +148 -0
  1990. package/dist/agents/skills/codex/state-zustand-persist/skill.yaml +38 -0
  1991. package/dist/agents/skills/codex/state-zustand-react/SKILL.md +136 -0
  1992. package/dist/agents/skills/codex/state-zustand-react/skill.yaml +40 -0
  1993. package/dist/agents/skills/codex/state-zustand-slices/SKILL.md +135 -0
  1994. package/dist/agents/skills/codex/state-zustand-slices/skill.yaml +39 -0
  1995. package/dist/agents/skills/codex/state-zustand-store/SKILL.md +123 -0
  1996. package/dist/agents/skills/codex/state-zustand-store/skill.yaml +39 -0
  1997. package/dist/agents/skills/codex/svelte-adapter-config/SKILL.md +262 -0
  1998. package/dist/agents/skills/codex/svelte-adapter-config/skill.yaml +42 -0
  1999. package/dist/agents/skills/codex/svelte-component-composition/SKILL.md +222 -0
  2000. package/dist/agents/skills/codex/svelte-component-composition/skill.yaml +41 -0
  2001. package/dist/agents/skills/codex/svelte-error-pages/SKILL.md +186 -0
  2002. package/dist/agents/skills/codex/svelte-error-pages/skill.yaml +42 -0
  2003. package/dist/agents/skills/codex/svelte-form-actions/SKILL.md +230 -0
  2004. package/dist/agents/skills/codex/svelte-form-actions/skill.yaml +41 -0
  2005. package/dist/agents/skills/codex/svelte-load-functions/SKILL.md +206 -0
  2006. package/dist/agents/skills/codex/svelte-load-functions/skill.yaml +44 -0
  2007. package/dist/agents/skills/codex/svelte-performance-patterns/SKILL.md +218 -0
  2008. package/dist/agents/skills/codex/svelte-performance-patterns/skill.yaml +43 -0
  2009. package/dist/agents/skills/codex/svelte-routing-pattern/SKILL.md +203 -0
  2010. package/dist/agents/skills/codex/svelte-routing-pattern/skill.yaml +43 -0
  2011. package/dist/agents/skills/codex/svelte-runes-pattern/SKILL.md +204 -0
  2012. package/dist/agents/skills/codex/svelte-runes-pattern/skill.yaml +43 -0
  2013. package/dist/agents/skills/codex/svelte-server-hooks/SKILL.md +239 -0
  2014. package/dist/agents/skills/codex/svelte-server-hooks/skill.yaml +43 -0
  2015. package/dist/agents/skills/codex/svelte-state-management/SKILL.md +196 -0
  2016. package/dist/agents/skills/codex/svelte-state-management/skill.yaml +43 -0
  2017. package/dist/agents/skills/codex/svelte-stores-pattern/SKILL.md +187 -0
  2018. package/dist/agents/skills/codex/svelte-stores-pattern/skill.yaml +43 -0
  2019. package/dist/agents/skills/codex/svelte-testing-patterns/SKILL.md +231 -0
  2020. package/dist/agents/skills/codex/svelte-testing-patterns/skill.yaml +45 -0
  2021. package/dist/agents/skills/codex/svelte-transitions-animations/SKILL.md +222 -0
  2022. package/dist/agents/skills/codex/svelte-transitions-animations/skill.yaml +43 -0
  2023. package/dist/agents/skills/codex/tanstack-cache-management/SKILL.md +108 -0
  2024. package/dist/agents/skills/codex/tanstack-cache-management/skill.yaml +43 -0
  2025. package/dist/agents/skills/codex/tanstack-dependent-queries/SKILL.md +108 -0
  2026. package/dist/agents/skills/codex/tanstack-dependent-queries/skill.yaml +41 -0
  2027. package/dist/agents/skills/codex/tanstack-devtools/SKILL.md +100 -0
  2028. package/dist/agents/skills/codex/tanstack-devtools/skill.yaml +43 -0
  2029. package/dist/agents/skills/codex/tanstack-infinite-queries/SKILL.md +106 -0
  2030. package/dist/agents/skills/codex/tanstack-infinite-queries/skill.yaml +43 -0
  2031. package/dist/agents/skills/codex/tanstack-mutation-patterns/SKILL.md +122 -0
  2032. package/dist/agents/skills/codex/tanstack-mutation-patterns/skill.yaml +43 -0
  2033. package/dist/agents/skills/codex/tanstack-optimistic-updates/SKILL.md +106 -0
  2034. package/dist/agents/skills/codex/tanstack-optimistic-updates/skill.yaml +43 -0
  2035. package/dist/agents/skills/codex/tanstack-prefetching/SKILL.md +106 -0
  2036. package/dist/agents/skills/codex/tanstack-prefetching/skill.yaml +43 -0
  2037. package/dist/agents/skills/codex/tanstack-query-invalidation/SKILL.md +95 -0
  2038. package/dist/agents/skills/codex/tanstack-query-invalidation/skill.yaml +42 -0
  2039. package/dist/agents/skills/codex/tanstack-query-keys/SKILL.md +94 -0
  2040. package/dist/agents/skills/codex/tanstack-query-keys/skill.yaml +42 -0
  2041. package/dist/agents/skills/codex/tanstack-suspense-mode/SKILL.md +96 -0
  2042. package/dist/agents/skills/codex/tanstack-suspense-mode/skill.yaml +41 -0
  2043. package/dist/agents/skills/codex/test-accessibility-testing/SKILL.md +201 -0
  2044. package/dist/agents/skills/codex/test-accessibility-testing/skill.yaml +42 -0
  2045. package/dist/agents/skills/codex/test-component-react/SKILL.md +173 -0
  2046. package/dist/agents/skills/codex/test-component-react/skill.yaml +44 -0
  2047. package/dist/agents/skills/codex/test-component-svelte/SKILL.md +184 -0
  2048. package/dist/agents/skills/codex/test-component-svelte/skill.yaml +42 -0
  2049. package/dist/agents/skills/codex/test-contract-testing/SKILL.md +180 -0
  2050. package/dist/agents/skills/codex/test-contract-testing/skill.yaml +41 -0
  2051. package/dist/agents/skills/codex/test-coverage-patterns/SKILL.md +165 -0
  2052. package/dist/agents/skills/codex/test-coverage-patterns/skill.yaml +43 -0
  2053. package/dist/agents/skills/codex/test-e2e-strategy/SKILL.md +146 -0
  2054. package/dist/agents/skills/codex/test-e2e-strategy/skill.yaml +43 -0
  2055. package/dist/agents/skills/codex/test-factory-patterns/SKILL.md +198 -0
  2056. package/dist/agents/skills/codex/test-factory-patterns/skill.yaml +43 -0
  2057. package/dist/agents/skills/codex/test-integration-patterns/SKILL.md +202 -0
  2058. package/dist/agents/skills/codex/test-integration-patterns/skill.yaml +43 -0
  2059. package/dist/agents/skills/codex/test-mock-patterns/SKILL.md +184 -0
  2060. package/dist/agents/skills/codex/test-mock-patterns/skill.yaml +44 -0
  2061. package/dist/agents/skills/codex/test-msw-pattern/SKILL.md +181 -0
  2062. package/dist/agents/skills/codex/test-msw-pattern/skill.yaml +43 -0
  2063. package/dist/agents/skills/codex/test-performance-testing/SKILL.md +199 -0
  2064. package/dist/agents/skills/codex/test-performance-testing/skill.yaml +42 -0
  2065. package/dist/agents/skills/codex/test-playwright-patterns/SKILL.md +197 -0
  2066. package/dist/agents/skills/codex/test-playwright-patterns/skill.yaml +43 -0
  2067. package/dist/agents/skills/codex/test-playwright-setup/SKILL.md +178 -0
  2068. package/dist/agents/skills/codex/test-playwright-setup/skill.yaml +42 -0
  2069. package/dist/agents/skills/codex/test-property-based/SKILL.md +172 -0
  2070. package/dist/agents/skills/codex/test-property-based/skill.yaml +42 -0
  2071. package/dist/agents/skills/codex/test-snapshot-patterns/SKILL.md +142 -0
  2072. package/dist/agents/skills/codex/test-snapshot-patterns/skill.yaml +41 -0
  2073. package/dist/agents/skills/codex/test-tdd-workflow/SKILL.md +185 -0
  2074. package/dist/agents/skills/codex/test-tdd-workflow/skill.yaml +42 -0
  2075. package/dist/agents/skills/codex/test-unit-patterns/SKILL.md +209 -0
  2076. package/dist/agents/skills/codex/test-unit-patterns/skill.yaml +44 -0
  2077. package/dist/agents/skills/codex/test-vitest-config/SKILL.md +212 -0
  2078. package/dist/agents/skills/codex/test-vitest-config/skill.yaml +44 -0
  2079. package/dist/agents/skills/codex/trpc-context-pattern/SKILL.md +190 -0
  2080. package/dist/agents/skills/codex/trpc-context-pattern/skill.yaml +41 -0
  2081. package/dist/agents/skills/codex/trpc-error-handling/SKILL.md +132 -0
  2082. package/dist/agents/skills/codex/trpc-error-handling/skill.yaml +42 -0
  2083. package/dist/agents/skills/codex/trpc-input-validation/SKILL.md +100 -0
  2084. package/dist/agents/skills/codex/trpc-input-validation/skill.yaml +42 -0
  2085. package/dist/agents/skills/codex/trpc-middleware-pattern/SKILL.md +99 -0
  2086. package/dist/agents/skills/codex/trpc-middleware-pattern/skill.yaml +41 -0
  2087. package/dist/agents/skills/codex/trpc-nextjs-integration/SKILL.md +203 -0
  2088. package/dist/agents/skills/codex/trpc-nextjs-integration/skill.yaml +43 -0
  2089. package/dist/agents/skills/codex/trpc-react-query-integration/SKILL.md +182 -0
  2090. package/dist/agents/skills/codex/trpc-react-query-integration/skill.yaml +43 -0
  2091. package/dist/agents/skills/codex/trpc-router-composition/SKILL.md +98 -0
  2092. package/dist/agents/skills/codex/trpc-router-composition/skill.yaml +42 -0
  2093. package/dist/agents/skills/codex/trpc-subscription-pattern/SKILL.md +118 -0
  2094. package/dist/agents/skills/codex/trpc-subscription-pattern/skill.yaml +43 -0
  2095. package/dist/agents/skills/codex/ts-async-patterns/SKILL.md +193 -0
  2096. package/dist/agents/skills/codex/ts-async-patterns/skill.yaml +38 -0
  2097. package/dist/agents/skills/codex/ts-branded-types/SKILL.md +161 -0
  2098. package/dist/agents/skills/codex/ts-branded-types/skill.yaml +38 -0
  2099. package/dist/agents/skills/codex/ts-class-patterns/SKILL.md +238 -0
  2100. package/dist/agents/skills/codex/ts-class-patterns/skill.yaml +38 -0
  2101. package/dist/agents/skills/codex/ts-conditional-types/SKILL.md +142 -0
  2102. package/dist/agents/skills/codex/ts-conditional-types/skill.yaml +38 -0
  2103. package/dist/agents/skills/codex/ts-config-patterns/SKILL.md +190 -0
  2104. package/dist/agents/skills/codex/ts-config-patterns/skill.yaml +38 -0
  2105. package/dist/agents/skills/codex/ts-declaration-merging/SKILL.md +187 -0
  2106. package/dist/agents/skills/codex/ts-declaration-merging/skill.yaml +37 -0
  2107. package/dist/agents/skills/codex/ts-decorator-patterns/SKILL.md +181 -0
  2108. package/dist/agents/skills/codex/ts-decorator-patterns/skill.yaml +37 -0
  2109. package/dist/agents/skills/codex/ts-discriminated-unions/SKILL.md +186 -0
  2110. package/dist/agents/skills/codex/ts-discriminated-unions/skill.yaml +38 -0
  2111. package/dist/agents/skills/codex/ts-error-handling-types/SKILL.md +205 -0
  2112. package/dist/agents/skills/codex/ts-error-handling-types/skill.yaml +38 -0
  2113. package/dist/agents/skills/codex/ts-generics-pattern/SKILL.md +104 -0
  2114. package/dist/agents/skills/codex/ts-generics-pattern/skill.yaml +39 -0
  2115. package/dist/agents/skills/codex/ts-mapped-types/SKILL.md +147 -0
  2116. package/dist/agents/skills/codex/ts-mapped-types/skill.yaml +38 -0
  2117. package/dist/agents/skills/codex/ts-module-patterns/SKILL.md +156 -0
  2118. package/dist/agents/skills/codex/ts-module-patterns/skill.yaml +37 -0
  2119. package/dist/agents/skills/codex/ts-performance-patterns/SKILL.md +158 -0
  2120. package/dist/agents/skills/codex/ts-performance-patterns/skill.yaml +37 -0
  2121. package/dist/agents/skills/codex/ts-satisfies-operator/SKILL.md +151 -0
  2122. package/dist/agents/skills/codex/ts-satisfies-operator/skill.yaml +38 -0
  2123. package/dist/agents/skills/codex/ts-strict-mode/SKILL.md +167 -0
  2124. package/dist/agents/skills/codex/ts-strict-mode/skill.yaml +38 -0
  2125. package/dist/agents/skills/codex/ts-template-literal-types/SKILL.md +146 -0
  2126. package/dist/agents/skills/codex/ts-template-literal-types/skill.yaml +38 -0
  2127. package/dist/agents/skills/codex/ts-testing-types/SKILL.md +166 -0
  2128. package/dist/agents/skills/codex/ts-testing-types/skill.yaml +38 -0
  2129. package/dist/agents/skills/codex/ts-type-guards/SKILL.md +168 -0
  2130. package/dist/agents/skills/codex/ts-type-guards/skill.yaml +39 -0
  2131. package/dist/agents/skills/codex/ts-utility-types/SKILL.md +119 -0
  2132. package/dist/agents/skills/codex/ts-utility-types/skill.yaml +43 -0
  2133. package/dist/agents/skills/codex/ts-zod-integration/SKILL.md +181 -0
  2134. package/dist/agents/skills/codex/ts-zod-integration/skill.yaml +37 -0
  2135. package/dist/agents/skills/codex/validate-context-engineering/SKILL.md +9 -0
  2136. package/dist/agents/skills/codex/validate-context-engineering/skill.yaml +2 -0
  2137. package/dist/agents/skills/codex/vue-async-components/SKILL.md +67 -0
  2138. package/dist/agents/skills/codex/vue-async-components/skill.yaml +35 -0
  2139. package/dist/agents/skills/codex/vue-component-events/SKILL.md +72 -0
  2140. package/dist/agents/skills/codex/vue-component-events/skill.yaml +35 -0
  2141. package/dist/agents/skills/codex/vue-composables-pattern/SKILL.md +75 -0
  2142. package/dist/agents/skills/codex/vue-composables-pattern/skill.yaml +34 -0
  2143. package/dist/agents/skills/codex/vue-directive-pattern/SKILL.md +66 -0
  2144. package/dist/agents/skills/codex/vue-directive-pattern/skill.yaml +34 -0
  2145. package/dist/agents/skills/codex/vue-pinia-pattern/SKILL.md +69 -0
  2146. package/dist/agents/skills/codex/vue-pinia-pattern/skill.yaml +35 -0
  2147. package/dist/agents/skills/codex/vue-provide-inject/SKILL.md +66 -0
  2148. package/dist/agents/skills/codex/vue-provide-inject/skill.yaml +35 -0
  2149. package/dist/agents/skills/codex/vue-reactive-refs/SKILL.md +67 -0
  2150. package/dist/agents/skills/codex/vue-reactive-refs/skill.yaml +35 -0
  2151. package/dist/agents/skills/codex/vue-renderless-components/SKILL.md +69 -0
  2152. package/dist/agents/skills/codex/vue-renderless-components/skill.yaml +35 -0
  2153. package/dist/agents/skills/codex/vue-slots-pattern/SKILL.md +72 -0
  2154. package/dist/agents/skills/codex/vue-slots-pattern/skill.yaml +35 -0
  2155. package/dist/agents/skills/codex/vue-teleport-pattern/SKILL.md +66 -0
  2156. package/dist/agents/skills/codex/vue-teleport-pattern/skill.yaml +35 -0
  2157. package/dist/agents/skills/codex/vue-watchers-pattern/SKILL.md +73 -0
  2158. package/dist/agents/skills/codex/vue-watchers-pattern/skill.yaml +35 -0
  2159. package/dist/agents/skills/codex/xstate-actor-pattern/SKILL.md +155 -0
  2160. package/dist/agents/skills/codex/xstate-actor-pattern/skill.yaml +40 -0
  2161. package/dist/agents/skills/codex/xstate-guards-actions/SKILL.md +153 -0
  2162. package/dist/agents/skills/codex/xstate-guards-actions/skill.yaml +41 -0
  2163. package/dist/agents/skills/codex/xstate-history-states/SKILL.md +123 -0
  2164. package/dist/agents/skills/codex/xstate-history-states/skill.yaml +39 -0
  2165. package/dist/agents/skills/codex/xstate-invoke-pattern/SKILL.md +165 -0
  2166. package/dist/agents/skills/codex/xstate-invoke-pattern/skill.yaml +40 -0
  2167. package/dist/agents/skills/codex/xstate-machine-definition/SKILL.md +151 -0
  2168. package/dist/agents/skills/codex/xstate-machine-definition/skill.yaml +40 -0
  2169. package/dist/agents/skills/codex/xstate-parallel-states/SKILL.md +130 -0
  2170. package/dist/agents/skills/codex/xstate-parallel-states/skill.yaml +39 -0
  2171. package/dist/agents/skills/codex/xstate-react-integration/SKILL.md +138 -0
  2172. package/dist/agents/skills/codex/xstate-react-integration/skill.yaml +39 -0
  2173. package/dist/agents/skills/codex/xstate-testing-patterns/SKILL.md +173 -0
  2174. package/dist/agents/skills/codex/xstate-testing-patterns/skill.yaml +39 -0
  2175. package/dist/agents/skills/codex/xstate-typegen/SKILL.md +168 -0
  2176. package/dist/agents/skills/codex/xstate-typegen/skill.yaml +39 -0
  2177. package/dist/agents/skills/codex/xstate-visualization/SKILL.md +124 -0
  2178. package/dist/agents/skills/codex/xstate-visualization/skill.yaml +39 -0
  2179. package/dist/agents/skills/codex/zod-array-validation/SKILL.md +160 -0
  2180. package/dist/agents/skills/codex/zod-array-validation/skill.yaml +42 -0
  2181. package/dist/agents/skills/codex/zod-async-validation/SKILL.md +205 -0
  2182. package/dist/agents/skills/codex/zod-async-validation/skill.yaml +40 -0
  2183. package/dist/agents/skills/codex/zod-error-handling/SKILL.md +206 -0
  2184. package/dist/agents/skills/codex/zod-error-handling/skill.yaml +41 -0
  2185. package/dist/agents/skills/codex/zod-infer-types/SKILL.md +192 -0
  2186. package/dist/agents/skills/codex/zod-infer-types/skill.yaml +41 -0
  2187. package/dist/agents/skills/codex/zod-nextjs-integration/SKILL.md +232 -0
  2188. package/dist/agents/skills/codex/zod-nextjs-integration/skill.yaml +42 -0
  2189. package/dist/agents/skills/codex/zod-object-patterns/SKILL.md +190 -0
  2190. package/dist/agents/skills/codex/zod-object-patterns/skill.yaml +43 -0
  2191. package/dist/agents/skills/codex/zod-schema-definition/SKILL.md +170 -0
  2192. package/dist/agents/skills/codex/zod-schema-definition/skill.yaml +42 -0
  2193. package/dist/agents/skills/codex/zod-string-validation/SKILL.md +180 -0
  2194. package/dist/agents/skills/codex/zod-string-validation/skill.yaml +43 -0
  2195. package/dist/agents/skills/codex/zod-transform-refine/SKILL.md +193 -0
  2196. package/dist/agents/skills/codex/zod-transform-refine/skill.yaml +42 -0
  2197. package/dist/agents/skills/codex/zod-union-discriminated/SKILL.md +168 -0
  2198. package/dist/agents/skills/codex/zod-union-discriminated/skill.yaml +40 -0
  2199. package/dist/agents/skills/cursor/a11y-aria-patterns/SKILL.md +183 -0
  2200. package/dist/agents/skills/cursor/a11y-aria-patterns/skill.yaml +43 -0
  2201. package/dist/agents/skills/cursor/a11y-color-contrast/SKILL.md +156 -0
  2202. package/dist/agents/skills/cursor/a11y-color-contrast/skill.yaml +45 -0
  2203. package/dist/agents/skills/cursor/a11y-form-patterns/SKILL.md +147 -0
  2204. package/dist/agents/skills/cursor/a11y-form-patterns/skill.yaml +45 -0
  2205. package/dist/agents/skills/cursor/a11y-image-text-alt/SKILL.md +159 -0
  2206. package/dist/agents/skills/cursor/a11y-image-text-alt/skill.yaml +43 -0
  2207. package/dist/agents/skills/cursor/a11y-keyboard-navigation/SKILL.md +169 -0
  2208. package/dist/agents/skills/cursor/a11y-keyboard-navigation/skill.yaml +45 -0
  2209. package/dist/agents/skills/cursor/a11y-modal-patterns/SKILL.md +201 -0
  2210. package/dist/agents/skills/cursor/a11y-modal-patterns/skill.yaml +42 -0
  2211. package/dist/agents/skills/cursor/a11y-motion-animation/SKILL.md +199 -0
  2212. package/dist/agents/skills/cursor/a11y-motion-animation/skill.yaml +45 -0
  2213. package/dist/agents/skills/cursor/a11y-screen-reader-testing/SKILL.md +138 -0
  2214. package/dist/agents/skills/cursor/a11y-screen-reader-testing/skill.yaml +43 -0
  2215. package/dist/agents/skills/cursor/a11y-semantic-html/SKILL.md +139 -0
  2216. package/dist/agents/skills/cursor/a11y-semantic-html/skill.yaml +43 -0
  2217. package/dist/agents/skills/cursor/a11y-testing-automation/SKILL.md +206 -0
  2218. package/dist/agents/skills/cursor/a11y-testing-automation/skill.yaml +45 -0
  2219. package/dist/agents/skills/cursor/add-harness-component/SKILL.md +21 -12
  2220. package/dist/agents/skills/cursor/add-harness-component/skill.yaml +2 -0
  2221. package/dist/agents/skills/cursor/align-documentation/SKILL.md +9 -0
  2222. package/dist/agents/skills/cursor/align-documentation/skill.yaml +2 -0
  2223. package/dist/agents/skills/cursor/angular-component-pattern/SKILL.md +112 -0
  2224. package/dist/agents/skills/cursor/angular-component-pattern/skill.yaml +46 -0
  2225. package/dist/agents/skills/cursor/angular-directive-pattern/SKILL.md +166 -0
  2226. package/dist/agents/skills/cursor/angular-directive-pattern/skill.yaml +44 -0
  2227. package/dist/agents/skills/cursor/angular-http-interceptors/SKILL.md +174 -0
  2228. package/dist/agents/skills/cursor/angular-http-interceptors/skill.yaml +44 -0
  2229. package/dist/agents/skills/cursor/angular-lazy-loading/SKILL.md +156 -0
  2230. package/dist/agents/skills/cursor/angular-lazy-loading/skill.yaml +44 -0
  2231. package/dist/agents/skills/cursor/angular-performance-patterns/SKILL.md +141 -0
  2232. package/dist/agents/skills/cursor/angular-performance-patterns/skill.yaml +45 -0
  2233. package/dist/agents/skills/cursor/angular-pipe-pattern/SKILL.md +126 -0
  2234. package/dist/agents/skills/cursor/angular-pipe-pattern/skill.yaml +44 -0
  2235. package/dist/agents/skills/cursor/angular-reactive-forms/SKILL.md +136 -0
  2236. package/dist/agents/skills/cursor/angular-reactive-forms/skill.yaml +44 -0
  2237. package/dist/agents/skills/cursor/angular-routing-guards/SKILL.md +150 -0
  2238. package/dist/agents/skills/cursor/angular-routing-guards/skill.yaml +44 -0
  2239. package/dist/agents/skills/cursor/angular-rxjs-patterns/SKILL.md +152 -0
  2240. package/dist/agents/skills/cursor/angular-rxjs-patterns/skill.yaml +45 -0
  2241. package/dist/agents/skills/cursor/angular-schematics/SKILL.md +184 -0
  2242. package/dist/agents/skills/cursor/angular-schematics/skill.yaml +44 -0
  2243. package/dist/agents/skills/cursor/angular-service-di/SKILL.md +108 -0
  2244. package/dist/agents/skills/cursor/angular-service-di/skill.yaml +45 -0
  2245. package/dist/agents/skills/cursor/angular-signals-pattern/SKILL.md +116 -0
  2246. package/dist/agents/skills/cursor/angular-signals-pattern/skill.yaml +44 -0
  2247. package/dist/agents/skills/cursor/angular-standalone-components/SKILL.md +130 -0
  2248. package/dist/agents/skills/cursor/angular-standalone-components/skill.yaml +44 -0
  2249. package/dist/agents/skills/cursor/angular-state-management/SKILL.md +150 -0
  2250. package/dist/agents/skills/cursor/angular-state-management/skill.yaml +45 -0
  2251. package/dist/agents/skills/cursor/angular-testing-patterns/SKILL.md +180 -0
  2252. package/dist/agents/skills/cursor/angular-testing-patterns/skill.yaml +45 -0
  2253. package/dist/agents/skills/cursor/astro-component-pattern/SKILL.md +160 -0
  2254. package/dist/agents/skills/cursor/astro-component-pattern/skill.yaml +44 -0
  2255. package/dist/agents/skills/cursor/astro-content-collections/SKILL.md +155 -0
  2256. package/dist/agents/skills/cursor/astro-content-collections/skill.yaml +42 -0
  2257. package/dist/agents/skills/cursor/astro-deployment-config/SKILL.md +208 -0
  2258. package/dist/agents/skills/cursor/astro-deployment-config/skill.yaml +46 -0
  2259. package/dist/agents/skills/cursor/astro-image-optimization/SKILL.md +188 -0
  2260. package/dist/agents/skills/cursor/astro-image-optimization/skill.yaml +45 -0
  2261. package/dist/agents/skills/cursor/astro-integration-pattern/SKILL.md +164 -0
  2262. package/dist/agents/skills/cursor/astro-integration-pattern/skill.yaml +44 -0
  2263. package/dist/agents/skills/cursor/astro-islands-architecture/SKILL.md +103 -0
  2264. package/dist/agents/skills/cursor/astro-islands-architecture/skill.yaml +44 -0
  2265. package/dist/agents/skills/cursor/astro-multi-framework/SKILL.md +161 -0
  2266. package/dist/agents/skills/cursor/astro-multi-framework/skill.yaml +46 -0
  2267. package/dist/agents/skills/cursor/astro-routing-pattern/SKILL.md +135 -0
  2268. package/dist/agents/skills/cursor/astro-routing-pattern/skill.yaml +43 -0
  2269. package/dist/agents/skills/cursor/astro-server-endpoints/SKILL.md +173 -0
  2270. package/dist/agents/skills/cursor/astro-server-endpoints/skill.yaml +44 -0
  2271. package/dist/agents/skills/cursor/astro-ssr-hybrid/SKILL.md +191 -0
  2272. package/dist/agents/skills/cursor/astro-ssr-hybrid/skill.yaml +46 -0
  2273. package/dist/agents/skills/cursor/astro-view-transitions/SKILL.md +168 -0
  2274. package/dist/agents/skills/cursor/astro-view-transitions/skill.yaml +45 -0
  2275. package/dist/agents/skills/cursor/check-mechanical-constraints/SKILL.md +9 -0
  2276. package/dist/agents/skills/cursor/check-mechanical-constraints/skill.yaml +2 -0
  2277. package/dist/agents/skills/cursor/cleanup-dead-code/SKILL.md +11 -0
  2278. package/dist/agents/skills/cursor/cleanup-dead-code/skill.yaml +2 -0
  2279. package/dist/agents/skills/cursor/css-animation-pattern/SKILL.md +143 -0
  2280. package/dist/agents/skills/cursor/css-animation-pattern/skill.yaml +43 -0
  2281. package/dist/agents/skills/cursor/css-component-variants/SKILL.md +147 -0
  2282. package/dist/agents/skills/cursor/css-component-variants/skill.yaml +42 -0
  2283. package/dist/agents/skills/cursor/css-css-modules/SKILL.md +168 -0
  2284. package/dist/agents/skills/cursor/css-css-modules/skill.yaml +38 -0
  2285. package/dist/agents/skills/cursor/css-custom-components/SKILL.md +178 -0
  2286. package/dist/agents/skills/cursor/css-custom-components/skill.yaml +39 -0
  2287. package/dist/agents/skills/cursor/css-dark-mode/SKILL.md +171 -0
  2288. package/dist/agents/skills/cursor/css-dark-mode/skill.yaml +41 -0
  2289. package/dist/agents/skills/cursor/css-design-tokens/SKILL.md +155 -0
  2290. package/dist/agents/skills/cursor/css-design-tokens/skill.yaml +42 -0
  2291. package/dist/agents/skills/cursor/css-headless-ui/SKILL.md +179 -0
  2292. package/dist/agents/skills/cursor/css-headless-ui/skill.yaml +39 -0
  2293. package/dist/agents/skills/cursor/css-layout-patterns/SKILL.md +155 -0
  2294. package/dist/agents/skills/cursor/css-layout-patterns/skill.yaml +43 -0
  2295. package/dist/agents/skills/cursor/css-performance-patterns/SKILL.md +163 -0
  2296. package/dist/agents/skills/cursor/css-performance-patterns/skill.yaml +40 -0
  2297. package/dist/agents/skills/cursor/css-responsive-design/SKILL.md +161 -0
  2298. package/dist/agents/skills/cursor/css-responsive-design/skill.yaml +42 -0
  2299. package/dist/agents/skills/cursor/css-tailwind-merge/SKILL.md +128 -0
  2300. package/dist/agents/skills/cursor/css-tailwind-merge/skill.yaml +39 -0
  2301. package/dist/agents/skills/cursor/css-tailwind-pattern/SKILL.md +126 -0
  2302. package/dist/agents/skills/cursor/css-tailwind-pattern/skill.yaml +40 -0
  2303. package/dist/agents/skills/cursor/design-affordances/SKILL.md +157 -0
  2304. package/dist/agents/skills/cursor/design-affordances/skill.yaml +35 -0
  2305. package/dist/agents/skills/cursor/design-alignment/SKILL.md +148 -0
  2306. package/dist/agents/skills/cursor/design-alignment/skill.yaml +33 -0
  2307. package/dist/agents/skills/cursor/design-apple-hig/SKILL.md +237 -0
  2308. package/dist/agents/skills/cursor/design-apple-hig/skill.yaml +37 -0
  2309. package/dist/agents/skills/cursor/design-atomic-design/SKILL.md +172 -0
  2310. package/dist/agents/skills/cursor/design-atomic-design/skill.yaml +35 -0
  2311. package/dist/agents/skills/cursor/design-brand-consistency/SKILL.md +167 -0
  2312. package/dist/agents/skills/cursor/design-brand-consistency/skill.yaml +35 -0
  2313. package/dist/agents/skills/cursor/design-color-accessibility/SKILL.md +161 -0
  2314. package/dist/agents/skills/cursor/design-color-accessibility/skill.yaml +34 -0
  2315. package/dist/agents/skills/cursor/design-color-harmony/SKILL.md +152 -0
  2316. package/dist/agents/skills/cursor/design-color-harmony/skill.yaml +35 -0
  2317. package/dist/agents/skills/cursor/design-color-psychology/SKILL.md +151 -0
  2318. package/dist/agents/skills/cursor/design-color-psychology/skill.yaml +34 -0
  2319. package/dist/agents/skills/cursor/design-component-anatomy/SKILL.md +243 -0
  2320. package/dist/agents/skills/cursor/design-component-anatomy/skill.yaml +34 -0
  2321. package/dist/agents/skills/cursor/design-consistency/SKILL.md +179 -0
  2322. package/dist/agents/skills/cursor/design-consistency/skill.yaml +35 -0
  2323. package/dist/agents/skills/cursor/design-content-density/SKILL.md +156 -0
  2324. package/dist/agents/skills/cursor/design-content-density/skill.yaml +34 -0
  2325. package/dist/agents/skills/cursor/design-contrast-ratio/SKILL.md +151 -0
  2326. package/dist/agents/skills/cursor/design-contrast-ratio/skill.yaml +35 -0
  2327. package/dist/agents/skills/cursor/design-dark-mode-color/SKILL.md +152 -0
  2328. package/dist/agents/skills/cursor/design-dark-mode-color/skill.yaml +35 -0
  2329. package/dist/agents/skills/cursor/design-data-viz-design/SKILL.md +178 -0
  2330. package/dist/agents/skills/cursor/design-data-viz-design/skill.yaml +35 -0
  2331. package/dist/agents/skills/cursor/design-design-audit/SKILL.md +193 -0
  2332. package/dist/agents/skills/cursor/design-design-audit/skill.yaml +33 -0
  2333. package/dist/agents/skills/cursor/design-design-critique/SKILL.md +175 -0
  2334. package/dist/agents/skills/cursor/design-design-critique/skill.yaml +32 -0
  2335. package/dist/agents/skills/cursor/design-design-documentation/SKILL.md +163 -0
  2336. package/dist/agents/skills/cursor/design-design-documentation/skill.yaml +33 -0
  2337. package/dist/agents/skills/cursor/design-design-governance/SKILL.md +187 -0
  2338. package/dist/agents/skills/cursor/design-design-governance/skill.yaml +34 -0
  2339. package/dist/agents/skills/cursor/design-elevation-shadow/SKILL.md +163 -0
  2340. package/dist/agents/skills/cursor/design-elevation-shadow/skill.yaml +34 -0
  2341. package/dist/agents/skills/cursor/design-empty-error-states/SKILL.md +154 -0
  2342. package/dist/agents/skills/cursor/design-empty-error-states/skill.yaml +35 -0
  2343. package/dist/agents/skills/cursor/design-feedback-patterns/SKILL.md +156 -0
  2344. package/dist/agents/skills/cursor/design-feedback-patterns/skill.yaml +35 -0
  2345. package/dist/agents/skills/cursor/design-fluent-design/SKILL.md +241 -0
  2346. package/dist/agents/skills/cursor/design-fluent-design/skill.yaml +35 -0
  2347. package/dist/agents/skills/cursor/design-font-pairing/SKILL.md +161 -0
  2348. package/dist/agents/skills/cursor/design-font-pairing/skill.yaml +34 -0
  2349. package/dist/agents/skills/cursor/design-form-ux/SKILL.md +156 -0
  2350. package/dist/agents/skills/cursor/design-form-ux/skill.yaml +35 -0
  2351. package/dist/agents/skills/cursor/design-gestalt-closure-continuity/SKILL.md +182 -0
  2352. package/dist/agents/skills/cursor/design-gestalt-closure-continuity/skill.yaml +33 -0
  2353. package/dist/agents/skills/cursor/design-gestalt-common-fate/SKILL.md +214 -0
  2354. package/dist/agents/skills/cursor/design-gestalt-common-fate/skill.yaml +33 -0
  2355. package/dist/agents/skills/cursor/design-gestalt-figure-ground/SKILL.md +189 -0
  2356. package/dist/agents/skills/cursor/design-gestalt-figure-ground/skill.yaml +34 -0
  2357. package/dist/agents/skills/cursor/design-gestalt-proximity/SKILL.md +162 -0
  2358. package/dist/agents/skills/cursor/design-gestalt-proximity/skill.yaml +34 -0
  2359. package/dist/agents/skills/cursor/design-gestalt-similarity/SKILL.md +175 -0
  2360. package/dist/agents/skills/cursor/design-gestalt-similarity/skill.yaml +33 -0
  2361. package/dist/agents/skills/cursor/design-grid-systems/SKILL.md +154 -0
  2362. package/dist/agents/skills/cursor/design-grid-systems/skill.yaml +35 -0
  2363. package/dist/agents/skills/cursor/design-i18n-design/SKILL.md +181 -0
  2364. package/dist/agents/skills/cursor/design-i18n-design/skill.yaml +35 -0
  2365. package/dist/agents/skills/cursor/design-iconography/SKILL.md +169 -0
  2366. package/dist/agents/skills/cursor/design-iconography/skill.yaml +35 -0
  2367. package/dist/agents/skills/cursor/design-illustration-style/SKILL.md +170 -0
  2368. package/dist/agents/skills/cursor/design-illustration-style/skill.yaml +34 -0
  2369. package/dist/agents/skills/cursor/design-imagery-photography/SKILL.md +172 -0
  2370. package/dist/agents/skills/cursor/design-imagery-photography/skill.yaml +35 -0
  2371. package/dist/agents/skills/cursor/design-information-architecture/SKILL.md +155 -0
  2372. package/dist/agents/skills/cursor/design-information-architecture/skill.yaml +35 -0
  2373. package/dist/agents/skills/cursor/design-loading-patterns/SKILL.md +175 -0
  2374. package/dist/agents/skills/cursor/design-loading-patterns/skill.yaml +33 -0
  2375. package/dist/agents/skills/cursor/design-material-design-3/SKILL.md +184 -0
  2376. package/dist/agents/skills/cursor/design-material-design-3/skill.yaml +36 -0
  2377. package/dist/agents/skills/cursor/design-micro-interactions/SKILL.md +156 -0
  2378. package/dist/agents/skills/cursor/design-micro-interactions/skill.yaml +35 -0
  2379. package/dist/agents/skills/cursor/design-motion-principles/SKILL.md +161 -0
  2380. package/dist/agents/skills/cursor/design-motion-principles/skill.yaml +36 -0
  2381. package/dist/agents/skills/cursor/design-naming-conventions/SKILL.md +200 -0
  2382. package/dist/agents/skills/cursor/design-naming-conventions/skill.yaml +34 -0
  2383. package/dist/agents/skills/cursor/design-navigation-ux/SKILL.md +150 -0
  2384. package/dist/agents/skills/cursor/design-navigation-ux/skill.yaml +34 -0
  2385. package/dist/agents/skills/cursor/design-palette-construction/SKILL.md +152 -0
  2386. package/dist/agents/skills/cursor/design-palette-construction/skill.yaml +37 -0
  2387. package/dist/agents/skills/cursor/design-parallax-scroll/SKILL.md +200 -0
  2388. package/dist/agents/skills/cursor/design-parallax-scroll/skill.yaml +34 -0
  2389. package/dist/agents/skills/cursor/design-readability/SKILL.md +183 -0
  2390. package/dist/agents/skills/cursor/design-readability/skill.yaml +36 -0
  2391. package/dist/agents/skills/cursor/design-responsive-strategy/SKILL.md +157 -0
  2392. package/dist/agents/skills/cursor/design-responsive-strategy/skill.yaml +34 -0
  2393. package/dist/agents/skills/cursor/design-responsive-type/SKILL.md +270 -0
  2394. package/dist/agents/skills/cursor/design-responsive-type/skill.yaml +34 -0
  2395. package/dist/agents/skills/cursor/design-state-design/SKILL.md +152 -0
  2396. package/dist/agents/skills/cursor/design-state-design/skill.yaml +36 -0
  2397. package/dist/agents/skills/cursor/design-token-architecture/SKILL.md +218 -0
  2398. package/dist/agents/skills/cursor/design-token-architecture/skill.yaml +36 -0
  2399. package/dist/agents/skills/cursor/design-transitions-timing/SKILL.md +183 -0
  2400. package/dist/agents/skills/cursor/design-transitions-timing/skill.yaml +34 -0
  2401. package/dist/agents/skills/cursor/design-type-scale/SKILL.md +157 -0
  2402. package/dist/agents/skills/cursor/design-type-scale/skill.yaml +34 -0
  2403. package/dist/agents/skills/cursor/design-typographic-hierarchy/SKILL.md +187 -0
  2404. package/dist/agents/skills/cursor/design-typographic-hierarchy/skill.yaml +34 -0
  2405. package/dist/agents/skills/cursor/design-typography-fundamentals/SKILL.md +158 -0
  2406. package/dist/agents/skills/cursor/design-typography-fundamentals/skill.yaml +36 -0
  2407. package/dist/agents/skills/cursor/design-visual-hierarchy/SKILL.md +150 -0
  2408. package/dist/agents/skills/cursor/design-visual-hierarchy/skill.yaml +36 -0
  2409. package/dist/agents/skills/cursor/design-web-fonts/SKILL.md +251 -0
  2410. package/dist/agents/skills/cursor/design-web-fonts/skill.yaml +35 -0
  2411. package/dist/agents/skills/cursor/design-whitespace/SKILL.md +150 -0
  2412. package/dist/agents/skills/cursor/design-whitespace/skill.yaml +36 -0
  2413. package/dist/agents/skills/cursor/detect-doc-drift/SKILL.md +9 -0
  2414. package/dist/agents/skills/cursor/detect-doc-drift/skill.yaml +2 -0
  2415. package/dist/agents/skills/cursor/drizzle-filtering-pattern/SKILL.md +185 -0
  2416. package/dist/agents/skills/cursor/drizzle-filtering-pattern/skill.yaml +43 -0
  2417. package/dist/agents/skills/cursor/drizzle-migrations/SKILL.md +139 -0
  2418. package/dist/agents/skills/cursor/drizzle-migrations/skill.yaml +39 -0
  2419. package/dist/agents/skills/cursor/drizzle-performance-patterns/SKILL.md +176 -0
  2420. package/dist/agents/skills/cursor/drizzle-performance-patterns/skill.yaml +42 -0
  2421. package/dist/agents/skills/cursor/drizzle-query-builder/SKILL.md +206 -0
  2422. package/dist/agents/skills/cursor/drizzle-query-builder/skill.yaml +44 -0
  2423. package/dist/agents/skills/cursor/drizzle-raw-sql/SKILL.md +157 -0
  2424. package/dist/agents/skills/cursor/drizzle-raw-sql/skill.yaml +39 -0
  2425. package/dist/agents/skills/cursor/drizzle-relations-pattern/SKILL.md +179 -0
  2426. package/dist/agents/skills/cursor/drizzle-relations-pattern/skill.yaml +41 -0
  2427. package/dist/agents/skills/cursor/drizzle-schema-definition/SKILL.md +151 -0
  2428. package/dist/agents/skills/cursor/drizzle-schema-definition/skill.yaml +46 -0
  2429. package/dist/agents/skills/cursor/drizzle-transactions/SKILL.md +146 -0
  2430. package/dist/agents/skills/cursor/drizzle-transactions/skill.yaml +39 -0
  2431. package/dist/agents/skills/cursor/drizzle-with-nextjs/SKILL.md +199 -0
  2432. package/dist/agents/skills/cursor/drizzle-with-nextjs/skill.yaml +43 -0
  2433. package/dist/agents/skills/cursor/enforce-architecture/SKILL.md +5 -15
  2434. package/dist/agents/skills/cursor/enforce-architecture/skill.yaml +2 -0
  2435. package/dist/agents/skills/cursor/events-event-schema/SKILL.md +180 -0
  2436. package/dist/agents/skills/cursor/events-event-schema/skill.yaml +44 -0
  2437. package/dist/agents/skills/cursor/events-event-storming/SKILL.md +199 -0
  2438. package/dist/agents/skills/cursor/events-event-storming/skill.yaml +44 -0
  2439. package/dist/agents/skills/cursor/events-idempotency/SKILL.md +188 -0
  2440. package/dist/agents/skills/cursor/events-idempotency/skill.yaml +43 -0
  2441. package/dist/agents/skills/cursor/events-kafka-patterns/SKILL.md +190 -0
  2442. package/dist/agents/skills/cursor/events-kafka-patterns/skill.yaml +44 -0
  2443. package/dist/agents/skills/cursor/events-message-queue/SKILL.md +190 -0
  2444. package/dist/agents/skills/cursor/events-message-queue/skill.yaml +43 -0
  2445. package/dist/agents/skills/cursor/events-outbox-pattern/SKILL.md +212 -0
  2446. package/dist/agents/skills/cursor/events-outbox-pattern/skill.yaml +43 -0
  2447. package/dist/agents/skills/cursor/events-pubsub-pattern/SKILL.md +158 -0
  2448. package/dist/agents/skills/cursor/events-pubsub-pattern/skill.yaml +44 -0
  2449. package/dist/agents/skills/cursor/events-redis-pubsub/SKILL.md +183 -0
  2450. package/dist/agents/skills/cursor/events-redis-pubsub/skill.yaml +42 -0
  2451. package/dist/agents/skills/cursor/events-saga-choreography/SKILL.md +177 -0
  2452. package/dist/agents/skills/cursor/events-saga-choreography/skill.yaml +43 -0
  2453. package/dist/agents/skills/cursor/events-sse-pattern/SKILL.md +221 -0
  2454. package/dist/agents/skills/cursor/events-sse-pattern/skill.yaml +42 -0
  2455. package/dist/agents/skills/cursor/events-webhooks-pattern/SKILL.md +214 -0
  2456. package/dist/agents/skills/cursor/events-webhooks-pattern/skill.yaml +43 -0
  2457. package/dist/agents/skills/cursor/events-websocket-pattern/SKILL.md +252 -0
  2458. package/dist/agents/skills/cursor/events-websocket-pattern/skill.yaml +43 -0
  2459. package/dist/agents/skills/cursor/gof-abstract-factory/SKILL.md +193 -0
  2460. package/dist/agents/skills/cursor/gof-abstract-factory/skill.yaml +35 -0
  2461. package/dist/agents/skills/cursor/gof-adapter-pattern/SKILL.md +157 -0
  2462. package/dist/agents/skills/cursor/gof-adapter-pattern/skill.yaml +36 -0
  2463. package/dist/agents/skills/cursor/gof-bridge-pattern/SKILL.md +183 -0
  2464. package/dist/agents/skills/cursor/gof-bridge-pattern/skill.yaml +35 -0
  2465. package/dist/agents/skills/cursor/gof-builder-pattern/SKILL.md +236 -0
  2466. package/dist/agents/skills/cursor/gof-builder-pattern/skill.yaml +35 -0
  2467. package/dist/agents/skills/cursor/gof-chain-of-responsibility/SKILL.md +199 -0
  2468. package/dist/agents/skills/cursor/gof-chain-of-responsibility/skill.yaml +35 -0
  2469. package/dist/agents/skills/cursor/gof-command-pattern/SKILL.md +197 -0
  2470. package/dist/agents/skills/cursor/gof-command-pattern/skill.yaml +35 -0
  2471. package/dist/agents/skills/cursor/gof-composite-pattern/SKILL.md +188 -0
  2472. package/dist/agents/skills/cursor/gof-composite-pattern/skill.yaml +35 -0
  2473. package/dist/agents/skills/cursor/gof-decorator-pattern/SKILL.md +177 -0
  2474. package/dist/agents/skills/cursor/gof-decorator-pattern/skill.yaml +36 -0
  2475. package/dist/agents/skills/cursor/gof-facade-pattern/SKILL.md +143 -0
  2476. package/dist/agents/skills/cursor/gof-facade-pattern/skill.yaml +35 -0
  2477. package/dist/agents/skills/cursor/gof-factory-method/SKILL.md +148 -0
  2478. package/dist/agents/skills/cursor/gof-factory-method/skill.yaml +36 -0
  2479. package/dist/agents/skills/cursor/gof-flyweight-pattern/SKILL.md +160 -0
  2480. package/dist/agents/skills/cursor/gof-flyweight-pattern/skill.yaml +35 -0
  2481. package/dist/agents/skills/cursor/gof-iterator-pattern/SKILL.md +177 -0
  2482. package/dist/agents/skills/cursor/gof-iterator-pattern/skill.yaml +35 -0
  2483. package/dist/agents/skills/cursor/gof-mediator-pattern/SKILL.md +171 -0
  2484. package/dist/agents/skills/cursor/gof-mediator-pattern/skill.yaml +35 -0
  2485. package/dist/agents/skills/cursor/gof-memento-pattern/SKILL.md +207 -0
  2486. package/dist/agents/skills/cursor/gof-memento-pattern/skill.yaml +34 -0
  2487. package/dist/agents/skills/cursor/gof-null-object/SKILL.md +177 -0
  2488. package/dist/agents/skills/cursor/gof-null-object/skill.yaml +35 -0
  2489. package/dist/agents/skills/cursor/gof-observer-pattern/SKILL.md +175 -0
  2490. package/dist/agents/skills/cursor/gof-observer-pattern/skill.yaml +37 -0
  2491. package/dist/agents/skills/cursor/gof-prototype-pattern/SKILL.md +162 -0
  2492. package/dist/agents/skills/cursor/gof-prototype-pattern/skill.yaml +35 -0
  2493. package/dist/agents/skills/cursor/gof-proxy-pattern/SKILL.md +184 -0
  2494. package/dist/agents/skills/cursor/gof-proxy-pattern/skill.yaml +36 -0
  2495. package/dist/agents/skills/cursor/gof-singleton/SKILL.md +149 -0
  2496. package/dist/agents/skills/cursor/gof-singleton/skill.yaml +35 -0
  2497. package/dist/agents/skills/cursor/gof-state-pattern/SKILL.md +220 -0
  2498. package/dist/agents/skills/cursor/gof-state-pattern/skill.yaml +35 -0
  2499. package/dist/agents/skills/cursor/gof-strategy-pattern/SKILL.md +179 -0
  2500. package/dist/agents/skills/cursor/gof-strategy-pattern/skill.yaml +35 -0
  2501. package/dist/agents/skills/cursor/gof-template-method/SKILL.md +189 -0
  2502. package/dist/agents/skills/cursor/gof-template-method/skill.yaml +35 -0
  2503. package/dist/agents/skills/cursor/gof-visitor-pattern/SKILL.md +205 -0
  2504. package/dist/agents/skills/cursor/gof-visitor-pattern/skill.yaml +34 -0
  2505. package/dist/agents/skills/cursor/graphql-apollo-server/SKILL.md +169 -0
  2506. package/dist/agents/skills/cursor/graphql-apollo-server/skill.yaml +41 -0
  2507. package/dist/agents/skills/cursor/graphql-auth-patterns/SKILL.md +197 -0
  2508. package/dist/agents/skills/cursor/graphql-auth-patterns/skill.yaml +42 -0
  2509. package/dist/agents/skills/cursor/graphql-client-patterns/SKILL.md +152 -0
  2510. package/dist/agents/skills/cursor/graphql-client-patterns/skill.yaml +41 -0
  2511. package/dist/agents/skills/cursor/graphql-codegen-pattern/SKILL.md +154 -0
  2512. package/dist/agents/skills/cursor/graphql-codegen-pattern/skill.yaml +39 -0
  2513. package/dist/agents/skills/cursor/graphql-dataloader-pattern/SKILL.md +138 -0
  2514. package/dist/agents/skills/cursor/graphql-dataloader-pattern/skill.yaml +38 -0
  2515. package/dist/agents/skills/cursor/graphql-error-handling/SKILL.md +167 -0
  2516. package/dist/agents/skills/cursor/graphql-error-handling/skill.yaml +39 -0
  2517. package/dist/agents/skills/cursor/graphql-federation-pattern/SKILL.md +137 -0
  2518. package/dist/agents/skills/cursor/graphql-federation-pattern/skill.yaml +41 -0
  2519. package/dist/agents/skills/cursor/graphql-pagination-patterns/SKILL.md +175 -0
  2520. package/dist/agents/skills/cursor/graphql-pagination-patterns/skill.yaml +40 -0
  2521. package/dist/agents/skills/cursor/graphql-performance-patterns/SKILL.md +166 -0
  2522. package/dist/agents/skills/cursor/graphql-performance-patterns/skill.yaml +39 -0
  2523. package/dist/agents/skills/cursor/graphql-resolver-pattern/SKILL.md +129 -0
  2524. package/dist/agents/skills/cursor/graphql-resolver-pattern/skill.yaml +39 -0
  2525. package/dist/agents/skills/cursor/graphql-schema-design/SKILL.md +145 -0
  2526. package/dist/agents/skills/cursor/graphql-schema-design/skill.yaml +41 -0
  2527. package/dist/agents/skills/cursor/graphql-subscriptions/SKILL.md +198 -0
  2528. package/dist/agents/skills/cursor/graphql-subscriptions/skill.yaml +39 -0
  2529. package/dist/agents/skills/cursor/harness-accessibility/SKILL.md +10 -0
  2530. package/dist/agents/skills/cursor/harness-accessibility/skill.yaml +2 -0
  2531. package/dist/agents/skills/cursor/harness-api-design/SKILL.md +5 -15
  2532. package/dist/agents/skills/cursor/harness-api-design/skill.yaml +7 -0
  2533. package/dist/agents/skills/cursor/harness-architecture-advisor/SKILL.md +5 -15
  2534. package/dist/agents/skills/cursor/harness-architecture-advisor/skill.yaml +2 -0
  2535. package/dist/agents/skills/cursor/harness-auth/SKILL.md +5 -15
  2536. package/dist/agents/skills/cursor/harness-auth/skill.yaml +6 -0
  2537. package/dist/agents/skills/cursor/harness-autopilot/SKILL.md +10 -0
  2538. package/dist/agents/skills/cursor/harness-autopilot/skill.yaml +2 -0
  2539. package/dist/agents/skills/cursor/harness-brainstorming/SKILL.md +9 -0
  2540. package/dist/agents/skills/cursor/harness-brainstorming/skill.yaml +2 -0
  2541. package/dist/agents/skills/cursor/harness-caching/SKILL.md +10 -0
  2542. package/dist/agents/skills/cursor/harness-caching/skill.yaml +5 -0
  2543. package/dist/agents/skills/cursor/harness-chaos/SKILL.md +10 -0
  2544. package/dist/agents/skills/cursor/harness-chaos/skill.yaml +2 -0
  2545. package/dist/agents/skills/cursor/harness-code-review/SKILL.md +5 -15
  2546. package/dist/agents/skills/cursor/harness-code-review/skill.yaml +2 -0
  2547. package/dist/agents/skills/cursor/harness-codebase-cleanup/SKILL.md +11 -0
  2548. package/dist/agents/skills/cursor/harness-codebase-cleanup/skill.yaml +2 -0
  2549. package/dist/agents/skills/cursor/harness-compliance/SKILL.md +10 -0
  2550. package/dist/agents/skills/cursor/harness-compliance/skill.yaml +2 -0
  2551. package/dist/agents/skills/cursor/harness-containerization/SKILL.md +10 -0
  2552. package/dist/agents/skills/cursor/harness-containerization/skill.yaml +7 -0
  2553. package/dist/agents/skills/cursor/harness-data-pipeline/SKILL.md +10 -0
  2554. package/dist/agents/skills/cursor/harness-data-pipeline/skill.yaml +2 -0
  2555. package/dist/agents/skills/cursor/harness-data-validation/SKILL.md +10 -0
  2556. package/dist/agents/skills/cursor/harness-data-validation/skill.yaml +7 -0
  2557. package/dist/agents/skills/cursor/harness-database/SKILL.md +5 -15
  2558. package/dist/agents/skills/cursor/harness-database/skill.yaml +14 -0
  2559. package/dist/agents/skills/cursor/harness-debugging/SKILL.md +9 -0
  2560. package/dist/agents/skills/cursor/harness-debugging/skill.yaml +2 -0
  2561. package/dist/agents/skills/cursor/harness-dependency-health/SKILL.md +10 -0
  2562. package/dist/agents/skills/cursor/harness-dependency-health/skill.yaml +2 -0
  2563. package/dist/agents/skills/cursor/harness-deployment/SKILL.md +5 -15
  2564. package/dist/agents/skills/cursor/harness-deployment/skill.yaml +2 -0
  2565. package/dist/agents/skills/cursor/harness-design/SKILL.md +10 -0
  2566. package/dist/agents/skills/cursor/harness-design/skill.yaml +8 -0
  2567. package/dist/agents/skills/cursor/harness-design-mobile/SKILL.md +10 -0
  2568. package/dist/agents/skills/cursor/harness-design-mobile/skill.yaml +2 -0
  2569. package/dist/agents/skills/cursor/harness-design-system/SKILL.md +10 -0
  2570. package/dist/agents/skills/cursor/harness-design-system/skill.yaml +9 -0
  2571. package/dist/agents/skills/cursor/harness-design-web/SKILL.md +10 -0
  2572. package/dist/agents/skills/cursor/harness-design-web/skill.yaml +7 -0
  2573. package/dist/agents/skills/cursor/harness-diagnostics/SKILL.md +9 -0
  2574. package/dist/agents/skills/cursor/harness-diagnostics/skill.yaml +2 -0
  2575. package/dist/agents/skills/cursor/harness-docs-pipeline/SKILL.md +11 -0
  2576. package/dist/agents/skills/cursor/harness-docs-pipeline/skill.yaml +2 -0
  2577. package/dist/agents/skills/cursor/harness-dx/SKILL.md +10 -0
  2578. package/dist/agents/skills/cursor/harness-dx/skill.yaml +2 -0
  2579. package/dist/agents/skills/cursor/harness-e2e/SKILL.md +9 -0
  2580. package/dist/agents/skills/cursor/harness-e2e/skill.yaml +14 -0
  2581. package/dist/agents/skills/cursor/harness-event-driven/SKILL.md +10 -0
  2582. package/dist/agents/skills/cursor/harness-event-driven/skill.yaml +7 -0
  2583. package/dist/agents/skills/cursor/harness-execution/SKILL.md +9 -0
  2584. package/dist/agents/skills/cursor/harness-execution/skill.yaml +2 -0
  2585. package/dist/agents/skills/cursor/harness-feature-flags/SKILL.md +10 -0
  2586. package/dist/agents/skills/cursor/harness-feature-flags/skill.yaml +2 -0
  2587. package/dist/agents/skills/cursor/harness-git-workflow/SKILL.md +10 -0
  2588. package/dist/agents/skills/cursor/harness-git-workflow/skill.yaml +2 -0
  2589. package/dist/agents/skills/cursor/harness-hotspot-detector/SKILL.md +10 -0
  2590. package/dist/agents/skills/cursor/harness-hotspot-detector/skill.yaml +2 -0
  2591. package/dist/agents/skills/cursor/harness-i18n/SKILL.md +10 -0
  2592. package/dist/agents/skills/cursor/harness-i18n/skill.yaml +2 -0
  2593. package/dist/agents/skills/cursor/harness-i18n-process/SKILL.md +10 -0
  2594. package/dist/agents/skills/cursor/harness-i18n-process/skill.yaml +2 -0
  2595. package/dist/agents/skills/cursor/harness-i18n-workflow/SKILL.md +10 -0
  2596. package/dist/agents/skills/cursor/harness-i18n-workflow/skill.yaml +2 -0
  2597. package/dist/agents/skills/cursor/harness-impact-analysis/SKILL.md +10 -0
  2598. package/dist/agents/skills/cursor/harness-impact-analysis/skill.yaml +2 -0
  2599. package/dist/agents/skills/cursor/harness-incident-response/SKILL.md +10 -0
  2600. package/dist/agents/skills/cursor/harness-incident-response/skill.yaml +2 -0
  2601. package/dist/agents/skills/cursor/harness-infrastructure-as-code/SKILL.md +10 -0
  2602. package/dist/agents/skills/cursor/harness-infrastructure-as-code/skill.yaml +9 -0
  2603. package/dist/agents/skills/cursor/harness-integration-test/SKILL.md +9 -0
  2604. package/dist/agents/skills/cursor/harness-integration-test/skill.yaml +2 -0
  2605. package/dist/agents/skills/cursor/harness-integrity/SKILL.md +10 -0
  2606. package/dist/agents/skills/cursor/harness-integrity/skill.yaml +2 -0
  2607. package/dist/agents/skills/cursor/harness-knowledge-mapper/SKILL.md +9 -0
  2608. package/dist/agents/skills/cursor/harness-knowledge-mapper/skill.yaml +2 -0
  2609. package/dist/agents/skills/cursor/harness-load-testing/SKILL.md +10 -0
  2610. package/dist/agents/skills/cursor/harness-load-testing/skill.yaml +2 -0
  2611. package/dist/agents/skills/cursor/harness-ml-ops/SKILL.md +10 -0
  2612. package/dist/agents/skills/cursor/harness-ml-ops/skill.yaml +5 -0
  2613. package/dist/agents/skills/cursor/harness-mobile-patterns/SKILL.md +10 -0
  2614. package/dist/agents/skills/cursor/harness-mobile-patterns/skill.yaml +12 -0
  2615. package/dist/agents/skills/cursor/harness-mutation-test/SKILL.md +9 -0
  2616. package/dist/agents/skills/cursor/harness-mutation-test/skill.yaml +2 -0
  2617. package/dist/agents/skills/cursor/harness-observability/SKILL.md +10 -0
  2618. package/dist/agents/skills/cursor/harness-observability/skill.yaml +7 -0
  2619. package/dist/agents/skills/cursor/harness-onboarding/SKILL.md +18 -10
  2620. package/dist/agents/skills/cursor/harness-onboarding/skill.yaml +2 -0
  2621. package/dist/agents/skills/cursor/harness-parallel-agents/SKILL.md +9 -0
  2622. package/dist/agents/skills/cursor/harness-parallel-agents/skill.yaml +2 -0
  2623. package/dist/agents/skills/cursor/harness-perf/SKILL.md +11 -0
  2624. package/dist/agents/skills/cursor/harness-perf/skill.yaml +2 -0
  2625. package/dist/agents/skills/cursor/harness-perf-tdd/SKILL.md +10 -0
  2626. package/dist/agents/skills/cursor/harness-perf-tdd/skill.yaml +2 -0
  2627. package/dist/agents/skills/cursor/harness-planning/SKILL.md +10 -0
  2628. package/dist/agents/skills/cursor/harness-planning/skill.yaml +2 -0
  2629. package/dist/agents/skills/cursor/harness-pre-commit-review/SKILL.md +9 -0
  2630. package/dist/agents/skills/cursor/harness-pre-commit-review/skill.yaml +1 -1
  2631. package/dist/agents/skills/cursor/harness-product-spec/SKILL.md +10 -0
  2632. package/dist/agents/skills/cursor/harness-product-spec/skill.yaml +2 -0
  2633. package/dist/agents/skills/cursor/harness-property-test/SKILL.md +10 -0
  2634. package/dist/agents/skills/cursor/harness-property-test/skill.yaml +2 -0
  2635. package/dist/agents/skills/cursor/harness-refactoring/SKILL.md +9 -0
  2636. package/dist/agents/skills/cursor/harness-refactoring/skill.yaml +7 -0
  2637. package/dist/agents/skills/cursor/harness-release-readiness/SKILL.md +27 -0
  2638. package/dist/agents/skills/cursor/harness-release-readiness/skill.yaml +2 -0
  2639. package/dist/agents/skills/cursor/harness-resilience/SKILL.md +10 -0
  2640. package/dist/agents/skills/cursor/harness-resilience/skill.yaml +7 -0
  2641. package/dist/agents/skills/cursor/harness-roadmap/SKILL.md +10 -1
  2642. package/dist/agents/skills/cursor/harness-roadmap/skill.yaml +2 -0
  2643. package/dist/agents/skills/cursor/harness-roadmap-pilot/SKILL.md +8 -0
  2644. package/dist/agents/skills/cursor/harness-roadmap-pilot/skill.yaml +2 -0
  2645. package/dist/agents/skills/cursor/harness-router/SKILL.md +208 -0
  2646. package/dist/agents/skills/cursor/harness-router/skill.yaml +46 -0
  2647. package/dist/agents/skills/cursor/harness-secrets/SKILL.md +10 -0
  2648. package/dist/agents/skills/cursor/harness-secrets/skill.yaml +2 -0
  2649. package/dist/agents/skills/cursor/harness-security-review/SKILL.md +10 -0
  2650. package/dist/agents/skills/cursor/harness-security-review/skill.yaml +7 -0
  2651. package/dist/agents/skills/cursor/harness-security-scan/SKILL.md +5 -15
  2652. package/dist/agents/skills/cursor/harness-security-scan/skill.yaml +2 -0
  2653. package/dist/agents/skills/cursor/harness-skill-authoring/SKILL.md +147 -1
  2654. package/dist/agents/skills/cursor/harness-skill-authoring/skill.yaml +2 -0
  2655. package/dist/agents/skills/cursor/harness-soundness-review/SKILL.md +10 -0
  2656. package/dist/agents/skills/cursor/harness-soundness-review/skill.yaml +2 -0
  2657. package/dist/agents/skills/cursor/harness-sql-review/SKILL.md +10 -0
  2658. package/dist/agents/skills/cursor/harness-sql-review/skill.yaml +9 -0
  2659. package/dist/agents/skills/cursor/harness-state-management/SKILL.md +10 -0
  2660. package/dist/agents/skills/cursor/harness-state-management/skill.yaml +7 -0
  2661. package/dist/agents/skills/cursor/harness-supply-chain-audit/SKILL.md +10 -0
  2662. package/dist/agents/skills/cursor/harness-supply-chain-audit/skill.yaml +2 -0
  2663. package/dist/agents/skills/cursor/harness-tdd/SKILL.md +9 -0
  2664. package/dist/agents/skills/cursor/harness-tdd/skill.yaml +7 -0
  2665. package/dist/agents/skills/cursor/harness-test-advisor/SKILL.md +10 -0
  2666. package/dist/agents/skills/cursor/harness-test-advisor/skill.yaml +2 -0
  2667. package/dist/agents/skills/cursor/harness-test-data/SKILL.md +10 -0
  2668. package/dist/agents/skills/cursor/harness-test-data/skill.yaml +2 -0
  2669. package/dist/agents/skills/cursor/harness-ux-copy/SKILL.md +10 -0
  2670. package/dist/agents/skills/cursor/harness-ux-copy/skill.yaml +2 -0
  2671. package/dist/agents/skills/cursor/harness-verification/SKILL.md +9 -0
  2672. package/dist/agents/skills/cursor/harness-verification/skill.yaml +2 -0
  2673. package/dist/agents/skills/cursor/harness-verify/SKILL.md +10 -0
  2674. package/dist/agents/skills/cursor/harness-verify/skill.yaml +2 -0
  2675. package/dist/agents/skills/cursor/harness-visual-regression/SKILL.md +10 -0
  2676. package/dist/agents/skills/cursor/harness-visual-regression/skill.yaml +6 -0
  2677. package/dist/agents/skills/cursor/initialize-harness-project/SKILL.md +22 -13
  2678. package/dist/agents/skills/cursor/initialize-harness-project/skill.yaml +2 -0
  2679. package/dist/agents/skills/cursor/js-abstract-factory-pattern/SKILL.md +79 -0
  2680. package/dist/agents/skills/cursor/js-abstract-factory-pattern/skill.yaml +35 -0
  2681. package/dist/agents/skills/cursor/js-adapter-pattern/SKILL.md +77 -0
  2682. package/dist/agents/skills/cursor/js-adapter-pattern/skill.yaml +35 -0
  2683. package/dist/agents/skills/cursor/js-bridge-pattern/SKILL.md +90 -0
  2684. package/dist/agents/skills/cursor/js-bridge-pattern/skill.yaml +35 -0
  2685. package/dist/agents/skills/cursor/js-chain-of-responsibility-pattern/SKILL.md +81 -0
  2686. package/dist/agents/skills/cursor/js-chain-of-responsibility-pattern/skill.yaml +35 -0
  2687. package/dist/agents/skills/cursor/js-command-pattern/SKILL.md +81 -0
  2688. package/dist/agents/skills/cursor/js-command-pattern/skill.yaml +36 -0
  2689. package/dist/agents/skills/cursor/js-composite-pattern/SKILL.md +83 -0
  2690. package/dist/agents/skills/cursor/js-composite-pattern/skill.yaml +35 -0
  2691. package/dist/agents/skills/cursor/js-constructor-pattern/SKILL.md +78 -0
  2692. package/dist/agents/skills/cursor/js-constructor-pattern/skill.yaml +36 -0
  2693. package/dist/agents/skills/cursor/js-decorator-pattern/SKILL.md +73 -0
  2694. package/dist/agents/skills/cursor/js-decorator-pattern/skill.yaml +35 -0
  2695. package/dist/agents/skills/cursor/js-dynamic-import/SKILL.md +70 -0
  2696. package/dist/agents/skills/cursor/js-dynamic-import/skill.yaml +36 -0
  2697. package/dist/agents/skills/cursor/js-facade-pattern/SKILL.md +73 -0
  2698. package/dist/agents/skills/cursor/js-facade-pattern/skill.yaml +35 -0
  2699. package/dist/agents/skills/cursor/js-factory-pattern/SKILL.md +74 -0
  2700. package/dist/agents/skills/cursor/js-factory-pattern/skill.yaml +35 -0
  2701. package/dist/agents/skills/cursor/js-flyweight-pattern/SKILL.md +79 -0
  2702. package/dist/agents/skills/cursor/js-flyweight-pattern/skill.yaml +36 -0
  2703. package/dist/agents/skills/cursor/js-iterator-pattern/SKILL.md +78 -0
  2704. package/dist/agents/skills/cursor/js-iterator-pattern/skill.yaml +36 -0
  2705. package/dist/agents/skills/cursor/js-mediator-middleware-pattern/SKILL.md +92 -0
  2706. package/dist/agents/skills/cursor/js-mediator-middleware-pattern/skill.yaml +36 -0
  2707. package/dist/agents/skills/cursor/js-mixin-pattern/SKILL.md +85 -0
  2708. package/dist/agents/skills/cursor/js-mixin-pattern/skill.yaml +35 -0
  2709. package/dist/agents/skills/cursor/js-module-pattern/SKILL.md +75 -0
  2710. package/dist/agents/skills/cursor/js-module-pattern/skill.yaml +36 -0
  2711. package/dist/agents/skills/cursor/js-observer-pattern/SKILL.md +81 -0
  2712. package/dist/agents/skills/cursor/js-observer-pattern/skill.yaml +36 -0
  2713. package/dist/agents/skills/cursor/js-prototype-pattern/SKILL.md +70 -0
  2714. package/dist/agents/skills/cursor/js-prototype-pattern/skill.yaml +35 -0
  2715. package/dist/agents/skills/cursor/js-provider-pattern/SKILL.md +67 -0
  2716. package/dist/agents/skills/cursor/js-provider-pattern/skill.yaml +35 -0
  2717. package/dist/agents/skills/cursor/js-proxy-pattern/SKILL.md +79 -0
  2718. package/dist/agents/skills/cursor/js-proxy-pattern/skill.yaml +36 -0
  2719. package/dist/agents/skills/cursor/js-revealing-module-pattern/SKILL.md +77 -0
  2720. package/dist/agents/skills/cursor/js-revealing-module-pattern/skill.yaml +35 -0
  2721. package/dist/agents/skills/cursor/js-singleton-pattern/SKILL.md +80 -0
  2722. package/dist/agents/skills/cursor/js-singleton-pattern/skill.yaml +35 -0
  2723. package/dist/agents/skills/cursor/js-state-pattern/SKILL.md +90 -0
  2724. package/dist/agents/skills/cursor/js-state-pattern/skill.yaml +35 -0
  2725. package/dist/agents/skills/cursor/js-static-import/SKILL.md +63 -0
  2726. package/dist/agents/skills/cursor/js-static-import/skill.yaml +36 -0
  2727. package/dist/agents/skills/cursor/js-strategy-pattern/SKILL.md +71 -0
  2728. package/dist/agents/skills/cursor/js-strategy-pattern/skill.yaml +35 -0
  2729. package/dist/agents/skills/cursor/js-template-method-pattern/SKILL.md +80 -0
  2730. package/dist/agents/skills/cursor/js-template-method-pattern/skill.yaml +35 -0
  2731. package/dist/agents/skills/cursor/js-visitor-pattern/SKILL.md +85 -0
  2732. package/dist/agents/skills/cursor/js-visitor-pattern/skill.yaml +35 -0
  2733. package/dist/agents/skills/cursor/microservices-api-gateway/SKILL.md +211 -0
  2734. package/dist/agents/skills/cursor/microservices-api-gateway/skill.yaml +40 -0
  2735. package/dist/agents/skills/cursor/microservices-bulkhead-pattern/SKILL.md +215 -0
  2736. package/dist/agents/skills/cursor/microservices-bulkhead-pattern/skill.yaml +39 -0
  2737. package/dist/agents/skills/cursor/microservices-circuit-breaker/SKILL.md +208 -0
  2738. package/dist/agents/skills/cursor/microservices-circuit-breaker/skill.yaml +39 -0
  2739. package/dist/agents/skills/cursor/microservices-config-server/SKILL.md +231 -0
  2740. package/dist/agents/skills/cursor/microservices-config-server/skill.yaml +38 -0
  2741. package/dist/agents/skills/cursor/microservices-cqrs-pattern/SKILL.md +236 -0
  2742. package/dist/agents/skills/cursor/microservices-cqrs-pattern/skill.yaml +39 -0
  2743. package/dist/agents/skills/cursor/microservices-decomposition/SKILL.md +172 -0
  2744. package/dist/agents/skills/cursor/microservices-decomposition/skill.yaml +39 -0
  2745. package/dist/agents/skills/cursor/microservices-distributed-tracing/SKILL.md +222 -0
  2746. package/dist/agents/skills/cursor/microservices-distributed-tracing/skill.yaml +39 -0
  2747. package/dist/agents/skills/cursor/microservices-event-sourcing/SKILL.md +268 -0
  2748. package/dist/agents/skills/cursor/microservices-event-sourcing/skill.yaml +41 -0
  2749. package/dist/agents/skills/cursor/microservices-health-check/SKILL.md +212 -0
  2750. package/dist/agents/skills/cursor/microservices-health-check/skill.yaml +40 -0
  2751. package/dist/agents/skills/cursor/microservices-outbox-pattern/SKILL.md +252 -0
  2752. package/dist/agents/skills/cursor/microservices-outbox-pattern/skill.yaml +40 -0
  2753. package/dist/agents/skills/cursor/microservices-saga-pattern/SKILL.md +196 -0
  2754. package/dist/agents/skills/cursor/microservices-saga-pattern/skill.yaml +40 -0
  2755. package/dist/agents/skills/cursor/microservices-service-discovery/SKILL.md +186 -0
  2756. package/dist/agents/skills/cursor/microservices-service-discovery/skill.yaml +39 -0
  2757. package/dist/agents/skills/cursor/microservices-sidecar-pattern/SKILL.md +187 -0
  2758. package/dist/agents/skills/cursor/microservices-sidecar-pattern/skill.yaml +39 -0
  2759. package/dist/agents/skills/cursor/microservices-strangler-fig/SKILL.md +204 -0
  2760. package/dist/agents/skills/cursor/microservices-strangler-fig/skill.yaml +41 -0
  2761. package/dist/agents/skills/cursor/mobile-animation-patterns/SKILL.md +199 -0
  2762. package/dist/agents/skills/cursor/mobile-animation-patterns/skill.yaml +40 -0
  2763. package/dist/agents/skills/cursor/mobile-deployment-patterns/SKILL.md +262 -0
  2764. package/dist/agents/skills/cursor/mobile-deployment-patterns/skill.yaml +41 -0
  2765. package/dist/agents/skills/cursor/mobile-expo-setup/SKILL.md +194 -0
  2766. package/dist/agents/skills/cursor/mobile-expo-setup/skill.yaml +40 -0
  2767. package/dist/agents/skills/cursor/mobile-flatlist-patterns/SKILL.md +192 -0
  2768. package/dist/agents/skills/cursor/mobile-flatlist-patterns/skill.yaml +39 -0
  2769. package/dist/agents/skills/cursor/mobile-gesture-handling/SKILL.md +207 -0
  2770. package/dist/agents/skills/cursor/mobile-gesture-handling/skill.yaml +40 -0
  2771. package/dist/agents/skills/cursor/mobile-native-modules/SKILL.md +187 -0
  2772. package/dist/agents/skills/cursor/mobile-native-modules/skill.yaml +40 -0
  2773. package/dist/agents/skills/cursor/mobile-navigation-pattern/SKILL.md +227 -0
  2774. package/dist/agents/skills/cursor/mobile-navigation-pattern/skill.yaml +42 -0
  2775. package/dist/agents/skills/cursor/mobile-network-patterns/SKILL.md +274 -0
  2776. package/dist/agents/skills/cursor/mobile-network-patterns/skill.yaml +40 -0
  2777. package/dist/agents/skills/cursor/mobile-performance-patterns/SKILL.md +207 -0
  2778. package/dist/agents/skills/cursor/mobile-performance-patterns/skill.yaml +40 -0
  2779. package/dist/agents/skills/cursor/mobile-push-notifications/SKILL.md +235 -0
  2780. package/dist/agents/skills/cursor/mobile-push-notifications/skill.yaml +40 -0
  2781. package/dist/agents/skills/cursor/mobile-storage-patterns/SKILL.md +235 -0
  2782. package/dist/agents/skills/cursor/mobile-storage-patterns/skill.yaml +40 -0
  2783. package/dist/agents/skills/cursor/mobile-testing-patterns/SKILL.md +246 -0
  2784. package/dist/agents/skills/cursor/mobile-testing-patterns/skill.yaml +41 -0
  2785. package/dist/agents/skills/cursor/nestjs-config-module/SKILL.md +121 -0
  2786. package/dist/agents/skills/cursor/nestjs-config-module/skill.yaml +41 -0
  2787. package/dist/agents/skills/cursor/nestjs-controller-pattern/SKILL.md +93 -0
  2788. package/dist/agents/skills/cursor/nestjs-controller-pattern/skill.yaml +43 -0
  2789. package/dist/agents/skills/cursor/nestjs-dependency-injection/SKILL.md +97 -0
  2790. package/dist/agents/skills/cursor/nestjs-dependency-injection/skill.yaml +41 -0
  2791. package/dist/agents/skills/cursor/nestjs-dto-validation/SKILL.md +133 -0
  2792. package/dist/agents/skills/cursor/nestjs-dto-validation/skill.yaml +42 -0
  2793. package/dist/agents/skills/cursor/nestjs-event-driven/SKILL.md +123 -0
  2794. package/dist/agents/skills/cursor/nestjs-event-driven/skill.yaml +43 -0
  2795. package/dist/agents/skills/cursor/nestjs-exception-filters/SKILL.md +119 -0
  2796. package/dist/agents/skills/cursor/nestjs-exception-filters/skill.yaml +40 -0
  2797. package/dist/agents/skills/cursor/nestjs-graphql-integration/SKILL.md +132 -0
  2798. package/dist/agents/skills/cursor/nestjs-graphql-integration/skill.yaml +42 -0
  2799. package/dist/agents/skills/cursor/nestjs-guards-pattern/SKILL.md +101 -0
  2800. package/dist/agents/skills/cursor/nestjs-guards-pattern/skill.yaml +41 -0
  2801. package/dist/agents/skills/cursor/nestjs-interceptors-pattern/SKILL.md +106 -0
  2802. package/dist/agents/skills/cursor/nestjs-interceptors-pattern/skill.yaml +41 -0
  2803. package/dist/agents/skills/cursor/nestjs-microservices/SKILL.md +132 -0
  2804. package/dist/agents/skills/cursor/nestjs-microservices/skill.yaml +42 -0
  2805. package/dist/agents/skills/cursor/nestjs-middleware-pattern/SKILL.md +104 -0
  2806. package/dist/agents/skills/cursor/nestjs-middleware-pattern/skill.yaml +39 -0
  2807. package/dist/agents/skills/cursor/nestjs-module-pattern/SKILL.md +89 -0
  2808. package/dist/agents/skills/cursor/nestjs-module-pattern/skill.yaml +42 -0
  2809. package/dist/agents/skills/cursor/nestjs-pipes-pattern/SKILL.md +111 -0
  2810. package/dist/agents/skills/cursor/nestjs-pipes-pattern/skill.yaml +40 -0
  2811. package/dist/agents/skills/cursor/nestjs-service-pattern/SKILL.md +83 -0
  2812. package/dist/agents/skills/cursor/nestjs-service-pattern/skill.yaml +39 -0
  2813. package/dist/agents/skills/cursor/nestjs-swagger-integration/SKILL.md +137 -0
  2814. package/dist/agents/skills/cursor/nestjs-swagger-integration/skill.yaml +40 -0
  2815. package/dist/agents/skills/cursor/nestjs-testing-patterns/SKILL.md +130 -0
  2816. package/dist/agents/skills/cursor/nestjs-testing-patterns/skill.yaml +42 -0
  2817. package/dist/agents/skills/cursor/next-app-router/SKILL.md +77 -0
  2818. package/dist/agents/skills/cursor/next-app-router/skill.yaml +44 -0
  2819. package/dist/agents/skills/cursor/next-auth-patterns/SKILL.md +94 -0
  2820. package/dist/agents/skills/cursor/next-auth-patterns/skill.yaml +46 -0
  2821. package/dist/agents/skills/cursor/next-caching-strategies/SKILL.md +83 -0
  2822. package/dist/agents/skills/cursor/next-caching-strategies/skill.yaml +43 -0
  2823. package/dist/agents/skills/cursor/next-data-fetching/SKILL.md +97 -0
  2824. package/dist/agents/skills/cursor/next-data-fetching/skill.yaml +44 -0
  2825. package/dist/agents/skills/cursor/next-deployment-optimization/SKILL.md +92 -0
  2826. package/dist/agents/skills/cursor/next-deployment-optimization/skill.yaml +42 -0
  2827. package/dist/agents/skills/cursor/next-environment-config/SKILL.md +92 -0
  2828. package/dist/agents/skills/cursor/next-environment-config/skill.yaml +43 -0
  2829. package/dist/agents/skills/cursor/next-error-boundaries/SKILL.md +96 -0
  2830. package/dist/agents/skills/cursor/next-error-boundaries/skill.yaml +44 -0
  2831. package/dist/agents/skills/cursor/next-image-optimization/SKILL.md +91 -0
  2832. package/dist/agents/skills/cursor/next-image-optimization/skill.yaml +41 -0
  2833. package/dist/agents/skills/cursor/next-metadata-api/SKILL.md +94 -0
  2834. package/dist/agents/skills/cursor/next-metadata-api/skill.yaml +43 -0
  2835. package/dist/agents/skills/cursor/next-middleware-pattern/SKILL.md +80 -0
  2836. package/dist/agents/skills/cursor/next-middleware-pattern/skill.yaml +43 -0
  2837. package/dist/agents/skills/cursor/next-monorepo-setup/SKILL.md +103 -0
  2838. package/dist/agents/skills/cursor/next-monorepo-setup/skill.yaml +43 -0
  2839. package/dist/agents/skills/cursor/next-parallel-intercepting-routes/SKILL.md +98 -0
  2840. package/dist/agents/skills/cursor/next-parallel-intercepting-routes/skill.yaml +43 -0
  2841. package/dist/agents/skills/cursor/next-route-handlers/SKILL.md +80 -0
  2842. package/dist/agents/skills/cursor/next-route-handlers/skill.yaml +44 -0
  2843. package/dist/agents/skills/cursor/next-server-actions/SKILL.md +97 -0
  2844. package/dist/agents/skills/cursor/next-server-actions/skill.yaml +44 -0
  2845. package/dist/agents/skills/cursor/next-server-components/SKILL.md +82 -0
  2846. package/dist/agents/skills/cursor/next-server-components/skill.yaml +43 -0
  2847. package/dist/agents/skills/cursor/next-static-generation/SKILL.md +75 -0
  2848. package/dist/agents/skills/cursor/next-static-generation/skill.yaml +44 -0
  2849. package/dist/agents/skills/cursor/next-streaming-suspense/SKILL.md +86 -0
  2850. package/dist/agents/skills/cursor/next-streaming-suspense/skill.yaml +43 -0
  2851. package/dist/agents/skills/cursor/next-testing-patterns/SKILL.md +104 -0
  2852. package/dist/agents/skills/cursor/next-testing-patterns/skill.yaml +46 -0
  2853. package/dist/agents/skills/cursor/node-buffer-encoding/SKILL.md +138 -0
  2854. package/dist/agents/skills/cursor/node-buffer-encoding/skill.yaml +39 -0
  2855. package/dist/agents/skills/cursor/node-child-process/SKILL.md +162 -0
  2856. package/dist/agents/skills/cursor/node-child-process/skill.yaml +40 -0
  2857. package/dist/agents/skills/cursor/node-crypto-patterns/SKILL.md +147 -0
  2858. package/dist/agents/skills/cursor/node-crypto-patterns/skill.yaml +41 -0
  2859. package/dist/agents/skills/cursor/node-environment-config/SKILL.md +145 -0
  2860. package/dist/agents/skills/cursor/node-environment-config/skill.yaml +39 -0
  2861. package/dist/agents/skills/cursor/node-error-handling/SKILL.md +183 -0
  2862. package/dist/agents/skills/cursor/node-error-handling/skill.yaml +40 -0
  2863. package/dist/agents/skills/cursor/node-esm-patterns/SKILL.md +149 -0
  2864. package/dist/agents/skills/cursor/node-esm-patterns/skill.yaml +39 -0
  2865. package/dist/agents/skills/cursor/node-event-emitter/SKILL.md +144 -0
  2866. package/dist/agents/skills/cursor/node-event-emitter/skill.yaml +41 -0
  2867. package/dist/agents/skills/cursor/node-express-patterns/SKILL.md +193 -0
  2868. package/dist/agents/skills/cursor/node-express-patterns/skill.yaml +40 -0
  2869. package/dist/agents/skills/cursor/node-fastify-patterns/SKILL.md +200 -0
  2870. package/dist/agents/skills/cursor/node-fastify-patterns/skill.yaml +40 -0
  2871. package/dist/agents/skills/cursor/node-http-server/SKILL.md +159 -0
  2872. package/dist/agents/skills/cursor/node-http-server/skill.yaml +40 -0
  2873. package/dist/agents/skills/cursor/node-path-fs-patterns/SKILL.md +149 -0
  2874. package/dist/agents/skills/cursor/node-path-fs-patterns/skill.yaml +39 -0
  2875. package/dist/agents/skills/cursor/node-performance-profiling/SKILL.md +176 -0
  2876. package/dist/agents/skills/cursor/node-performance-profiling/skill.yaml +39 -0
  2877. package/dist/agents/skills/cursor/node-streams-pattern/SKILL.md +163 -0
  2878. package/dist/agents/skills/cursor/node-streams-pattern/skill.yaml +40 -0
  2879. package/dist/agents/skills/cursor/node-testing-patterns/SKILL.md +205 -0
  2880. package/dist/agents/skills/cursor/node-testing-patterns/skill.yaml +40 -0
  2881. package/dist/agents/skills/cursor/node-worker-threads/SKILL.md +169 -0
  2882. package/dist/agents/skills/cursor/node-worker-threads/skill.yaml +40 -0
  2883. package/dist/agents/skills/cursor/nuxt-auto-imports/SKILL.md +97 -0
  2884. package/dist/agents/skills/cursor/nuxt-auto-imports/skill.yaml +41 -0
  2885. package/dist/agents/skills/cursor/nuxt-composables-pattern/SKILL.md +119 -0
  2886. package/dist/agents/skills/cursor/nuxt-composables-pattern/skill.yaml +41 -0
  2887. package/dist/agents/skills/cursor/nuxt-deployment-config/SKILL.md +209 -0
  2888. package/dist/agents/skills/cursor/nuxt-deployment-config/skill.yaml +43 -0
  2889. package/dist/agents/skills/cursor/nuxt-layouts-pages/SKILL.md +210 -0
  2890. package/dist/agents/skills/cursor/nuxt-layouts-pages/skill.yaml +42 -0
  2891. package/dist/agents/skills/cursor/nuxt-middleware-pattern/SKILL.md +164 -0
  2892. package/dist/agents/skills/cursor/nuxt-middleware-pattern/skill.yaml +41 -0
  2893. package/dist/agents/skills/cursor/nuxt-modules-pattern/SKILL.md +193 -0
  2894. package/dist/agents/skills/cursor/nuxt-modules-pattern/skill.yaml +40 -0
  2895. package/dist/agents/skills/cursor/nuxt-plugins-pattern/SKILL.md +178 -0
  2896. package/dist/agents/skills/cursor/nuxt-plugins-pattern/skill.yaml +40 -0
  2897. package/dist/agents/skills/cursor/nuxt-seo-metadata/SKILL.md +185 -0
  2898. package/dist/agents/skills/cursor/nuxt-seo-metadata/skill.yaml +43 -0
  2899. package/dist/agents/skills/cursor/nuxt-server-routes/SKILL.md +154 -0
  2900. package/dist/agents/skills/cursor/nuxt-server-routes/skill.yaml +41 -0
  2901. package/dist/agents/skills/cursor/nuxt-state-management/SKILL.md +162 -0
  2902. package/dist/agents/skills/cursor/nuxt-state-management/skill.yaml +43 -0
  2903. package/dist/agents/skills/cursor/nuxt-testing-patterns/SKILL.md +203 -0
  2904. package/dist/agents/skills/cursor/nuxt-testing-patterns/skill.yaml +45 -0
  2905. package/dist/agents/skills/cursor/otel-context-propagation/SKILL.md +152 -0
  2906. package/dist/agents/skills/cursor/otel-context-propagation/skill.yaml +39 -0
  2907. package/dist/agents/skills/cursor/otel-custom-instrumentation/SKILL.md +166 -0
  2908. package/dist/agents/skills/cursor/otel-custom-instrumentation/skill.yaml +39 -0
  2909. package/dist/agents/skills/cursor/otel-error-tracking/SKILL.md +163 -0
  2910. package/dist/agents/skills/cursor/otel-error-tracking/skill.yaml +39 -0
  2911. package/dist/agents/skills/cursor/otel-exporter-config/SKILL.md +168 -0
  2912. package/dist/agents/skills/cursor/otel-exporter-config/skill.yaml +39 -0
  2913. package/dist/agents/skills/cursor/otel-logging-pattern/SKILL.md +161 -0
  2914. package/dist/agents/skills/cursor/otel-logging-pattern/skill.yaml +40 -0
  2915. package/dist/agents/skills/cursor/otel-metrics-pattern/SKILL.md +152 -0
  2916. package/dist/agents/skills/cursor/otel-metrics-pattern/skill.yaml +40 -0
  2917. package/dist/agents/skills/cursor/otel-nestjs-integration/SKILL.md +174 -0
  2918. package/dist/agents/skills/cursor/otel-nestjs-integration/skill.yaml +40 -0
  2919. package/dist/agents/skills/cursor/otel-nextjs-integration/SKILL.md +161 -0
  2920. package/dist/agents/skills/cursor/otel-nextjs-integration/skill.yaml +39 -0
  2921. package/dist/agents/skills/cursor/otel-performance-insights/SKILL.md +173 -0
  2922. package/dist/agents/skills/cursor/otel-performance-insights/skill.yaml +40 -0
  2923. package/dist/agents/skills/cursor/otel-sampling-strategies/SKILL.md +162 -0
  2924. package/dist/agents/skills/cursor/otel-sampling-strategies/skill.yaml +38 -0
  2925. package/dist/agents/skills/cursor/otel-sdk-setup/SKILL.md +145 -0
  2926. package/dist/agents/skills/cursor/otel-sdk-setup/skill.yaml +39 -0
  2927. package/dist/agents/skills/cursor/otel-tracing-pattern/SKILL.md +130 -0
  2928. package/dist/agents/skills/cursor/otel-tracing-pattern/skill.yaml +39 -0
  2929. package/dist/agents/skills/cursor/owasp-auth-patterns/SKILL.md +197 -0
  2930. package/dist/agents/skills/cursor/owasp-auth-patterns/skill.yaml +42 -0
  2931. package/dist/agents/skills/cursor/owasp-cryptography/SKILL.md +191 -0
  2932. package/dist/agents/skills/cursor/owasp-cryptography/skill.yaml +42 -0
  2933. package/dist/agents/skills/cursor/owasp-csrf-protection/SKILL.md +175 -0
  2934. package/dist/agents/skills/cursor/owasp-csrf-protection/skill.yaml +42 -0
  2935. package/dist/agents/skills/cursor/owasp-dependency-security/SKILL.md +173 -0
  2936. package/dist/agents/skills/cursor/owasp-dependency-security/skill.yaml +41 -0
  2937. package/dist/agents/skills/cursor/owasp-file-upload-security/SKILL.md +199 -0
  2938. package/dist/agents/skills/cursor/owasp-file-upload-security/skill.yaml +41 -0
  2939. package/dist/agents/skills/cursor/owasp-idor-prevention/SKILL.md +174 -0
  2940. package/dist/agents/skills/cursor/owasp-idor-prevention/skill.yaml +42 -0
  2941. package/dist/agents/skills/cursor/owasp-injection-prevention/SKILL.md +160 -0
  2942. package/dist/agents/skills/cursor/owasp-injection-prevention/skill.yaml +44 -0
  2943. package/dist/agents/skills/cursor/owasp-logging-monitoring/SKILL.md +214 -0
  2944. package/dist/agents/skills/cursor/owasp-logging-monitoring/skill.yaml +41 -0
  2945. package/dist/agents/skills/cursor/owasp-rate-limiting/SKILL.md +215 -0
  2946. package/dist/agents/skills/cursor/owasp-rate-limiting/skill.yaml +40 -0
  2947. package/dist/agents/skills/cursor/owasp-secrets-management/SKILL.md +171 -0
  2948. package/dist/agents/skills/cursor/owasp-secrets-management/skill.yaml +44 -0
  2949. package/dist/agents/skills/cursor/owasp-security-headers/SKILL.md +221 -0
  2950. package/dist/agents/skills/cursor/owasp-security-headers/skill.yaml +40 -0
  2951. package/dist/agents/skills/cursor/owasp-xss-prevention/SKILL.md +174 -0
  2952. package/dist/agents/skills/cursor/owasp-xss-prevention/skill.yaml +42 -0
  2953. package/dist/agents/skills/cursor/prisma-client-queries/SKILL.md +147 -0
  2954. package/dist/agents/skills/cursor/prisma-client-queries/skill.yaml +46 -0
  2955. package/dist/agents/skills/cursor/prisma-filtering-sorting/SKILL.md +157 -0
  2956. package/dist/agents/skills/cursor/prisma-filtering-sorting/skill.yaml +45 -0
  2957. package/dist/agents/skills/cursor/prisma-migrations/SKILL.md +115 -0
  2958. package/dist/agents/skills/cursor/prisma-migrations/skill.yaml +41 -0
  2959. package/dist/agents/skills/cursor/prisma-performance-patterns/SKILL.md +160 -0
  2960. package/dist/agents/skills/cursor/prisma-performance-patterns/skill.yaml +43 -0
  2961. package/dist/agents/skills/cursor/prisma-raw-queries/SKILL.md +125 -0
  2962. package/dist/agents/skills/cursor/prisma-raw-queries/skill.yaml +41 -0
  2963. package/dist/agents/skills/cursor/prisma-relations-pattern/SKILL.md +151 -0
  2964. package/dist/agents/skills/cursor/prisma-relations-pattern/skill.yaml +42 -0
  2965. package/dist/agents/skills/cursor/prisma-schema-design/SKILL.md +108 -0
  2966. package/dist/agents/skills/cursor/prisma-schema-design/skill.yaml +46 -0
  2967. package/dist/agents/skills/cursor/prisma-seeding-pattern/SKILL.md +168 -0
  2968. package/dist/agents/skills/cursor/prisma-seeding-pattern/skill.yaml +41 -0
  2969. package/dist/agents/skills/cursor/prisma-soft-delete/SKILL.md +172 -0
  2970. package/dist/agents/skills/cursor/prisma-soft-delete/skill.yaml +41 -0
  2971. package/dist/agents/skills/cursor/prisma-transactions/SKILL.md +147 -0
  2972. package/dist/agents/skills/cursor/prisma-transactions/skill.yaml +41 -0
  2973. package/dist/agents/skills/cursor/prisma-type-generation/SKILL.md +180 -0
  2974. package/dist/agents/skills/cursor/prisma-type-generation/skill.yaml +42 -0
  2975. package/dist/agents/skills/cursor/react-2026/SKILL.md +86 -0
  2976. package/dist/agents/skills/cursor/react-2026/skill.yaml +39 -0
  2977. package/dist/agents/skills/cursor/react-client-rendering/SKILL.md +60 -0
  2978. package/dist/agents/skills/cursor/react-client-rendering/skill.yaml +37 -0
  2979. package/dist/agents/skills/cursor/react-compound-pattern/SKILL.md +80 -0
  2980. package/dist/agents/skills/cursor/react-compound-pattern/skill.yaml +36 -0
  2981. package/dist/agents/skills/cursor/react-concurrent-ui/SKILL.md +59 -0
  2982. package/dist/agents/skills/cursor/react-concurrent-ui/skill.yaml +36 -0
  2983. package/dist/agents/skills/cursor/react-container-presentational/SKILL.md +76 -0
  2984. package/dist/agents/skills/cursor/react-container-presentational/skill.yaml +36 -0
  2985. package/dist/agents/skills/cursor/react-context-pattern/SKILL.md +75 -0
  2986. package/dist/agents/skills/cursor/react-context-pattern/skill.yaml +37 -0
  2987. package/dist/agents/skills/cursor/react-dynamic-import/SKILL.md +65 -0
  2988. package/dist/agents/skills/cursor/react-dynamic-import/skill.yaml +40 -0
  2989. package/dist/agents/skills/cursor/react-hoc-pattern/SKILL.md +71 -0
  2990. package/dist/agents/skills/cursor/react-hoc-pattern/skill.yaml +35 -0
  2991. package/dist/agents/skills/cursor/react-hooks-pattern/SKILL.md +74 -0
  2992. package/dist/agents/skills/cursor/react-hooks-pattern/skill.yaml +37 -0
  2993. package/dist/agents/skills/cursor/react-islands-pattern/SKILL.md +67 -0
  2994. package/dist/agents/skills/cursor/react-islands-pattern/skill.yaml +39 -0
  2995. package/dist/agents/skills/cursor/react-memoization-pattern/SKILL.md +64 -0
  2996. package/dist/agents/skills/cursor/react-memoization-pattern/skill.yaml +37 -0
  2997. package/dist/agents/skills/cursor/react-progressive-hydration/SKILL.md +74 -0
  2998. package/dist/agents/skills/cursor/react-progressive-hydration/skill.yaml +37 -0
  2999. package/dist/agents/skills/cursor/react-provider-pattern/SKILL.md +72 -0
  3000. package/dist/agents/skills/cursor/react-provider-pattern/skill.yaml +37 -0
  3001. package/dist/agents/skills/cursor/react-render-props-pattern/SKILL.md +73 -0
  3002. package/dist/agents/skills/cursor/react-render-props-pattern/skill.yaml +35 -0
  3003. package/dist/agents/skills/cursor/react-server-components/SKILL.md +81 -0
  3004. package/dist/agents/skills/cursor/react-server-components/skill.yaml +39 -0
  3005. package/dist/agents/skills/cursor/react-server-rendering/SKILL.md +63 -0
  3006. package/dist/agents/skills/cursor/react-server-rendering/skill.yaml +39 -0
  3007. package/dist/agents/skills/cursor/react-state-management-pattern/SKILL.md +72 -0
  3008. package/dist/agents/skills/cursor/react-state-management-pattern/skill.yaml +40 -0
  3009. package/dist/agents/skills/cursor/react-static-import/SKILL.md +61 -0
  3010. package/dist/agents/skills/cursor/react-static-import/skill.yaml +37 -0
  3011. package/dist/agents/skills/cursor/react-suspense-pattern/SKILL.md +62 -0
  3012. package/dist/agents/skills/cursor/react-suspense-pattern/skill.yaml +37 -0
  3013. package/dist/agents/skills/cursor/redux-entity-adapter/SKILL.md +120 -0
  3014. package/dist/agents/skills/cursor/redux-entity-adapter/skill.yaml +39 -0
  3015. package/dist/agents/skills/cursor/redux-listener-middleware/SKILL.md +117 -0
  3016. package/dist/agents/skills/cursor/redux-listener-middleware/skill.yaml +39 -0
  3017. package/dist/agents/skills/cursor/redux-persistence-pattern/SKILL.md +144 -0
  3018. package/dist/agents/skills/cursor/redux-persistence-pattern/skill.yaml +40 -0
  3019. package/dist/agents/skills/cursor/redux-rtk-optimistic/SKILL.md +117 -0
  3020. package/dist/agents/skills/cursor/redux-rtk-optimistic/skill.yaml +39 -0
  3021. package/dist/agents/skills/cursor/redux-rtk-query-endpoints/SKILL.md +131 -0
  3022. package/dist/agents/skills/cursor/redux-rtk-query-endpoints/skill.yaml +40 -0
  3023. package/dist/agents/skills/cursor/redux-rtk-query-setup/SKILL.md +117 -0
  3024. package/dist/agents/skills/cursor/redux-rtk-query-setup/skill.yaml +39 -0
  3025. package/dist/agents/skills/cursor/redux-selectors-pattern/SKILL.md +100 -0
  3026. package/dist/agents/skills/cursor/redux-selectors-pattern/skill.yaml +39 -0
  3027. package/dist/agents/skills/cursor/redux-slice-pattern/SKILL.md +117 -0
  3028. package/dist/agents/skills/cursor/redux-slice-pattern/skill.yaml +39 -0
  3029. package/dist/agents/skills/cursor/redux-store-setup/SKILL.md +103 -0
  3030. package/dist/agents/skills/cursor/redux-store-setup/skill.yaml +39 -0
  3031. package/dist/agents/skills/cursor/redux-testing-patterns/SKILL.md +138 -0
  3032. package/dist/agents/skills/cursor/redux-testing-patterns/skill.yaml +41 -0
  3033. package/dist/agents/skills/cursor/redux-thunk-pattern/SKILL.md +119 -0
  3034. package/dist/agents/skills/cursor/redux-thunk-pattern/skill.yaml +41 -0
  3035. package/dist/agents/skills/cursor/redux-typescript-patterns/SKILL.md +115 -0
  3036. package/dist/agents/skills/cursor/redux-typescript-patterns/skill.yaml +40 -0
  3037. package/dist/agents/skills/cursor/resilience-bulkhead-pattern/SKILL.md +145 -0
  3038. package/dist/agents/skills/cursor/resilience-bulkhead-pattern/skill.yaml +38 -0
  3039. package/dist/agents/skills/cursor/resilience-chaos-testing/SKILL.md +172 -0
  3040. package/dist/agents/skills/cursor/resilience-chaos-testing/skill.yaml +38 -0
  3041. package/dist/agents/skills/cursor/resilience-circuit-breaker/SKILL.md +159 -0
  3042. package/dist/agents/skills/cursor/resilience-circuit-breaker/skill.yaml +39 -0
  3043. package/dist/agents/skills/cursor/resilience-dead-letter/SKILL.md +185 -0
  3044. package/dist/agents/skills/cursor/resilience-dead-letter/skill.yaml +39 -0
  3045. package/dist/agents/skills/cursor/resilience-fallback-pattern/SKILL.md +155 -0
  3046. package/dist/agents/skills/cursor/resilience-fallback-pattern/skill.yaml +38 -0
  3047. package/dist/agents/skills/cursor/resilience-health-checks/SKILL.md +180 -0
  3048. package/dist/agents/skills/cursor/resilience-health-checks/skill.yaml +38 -0
  3049. package/dist/agents/skills/cursor/resilience-idempotency/SKILL.md +167 -0
  3050. package/dist/agents/skills/cursor/resilience-idempotency/skill.yaml +38 -0
  3051. package/dist/agents/skills/cursor/resilience-rate-limiting/SKILL.md +171 -0
  3052. package/dist/agents/skills/cursor/resilience-rate-limiting/skill.yaml +38 -0
  3053. package/dist/agents/skills/cursor/resilience-retry-pattern/SKILL.md +137 -0
  3054. package/dist/agents/skills/cursor/resilience-retry-pattern/skill.yaml +39 -0
  3055. package/dist/agents/skills/cursor/resilience-timeout-pattern/SKILL.md +148 -0
  3056. package/dist/agents/skills/cursor/resilience-timeout-pattern/skill.yaml +38 -0
  3057. package/dist/agents/skills/cursor/state-context-pattern/SKILL.md +143 -0
  3058. package/dist/agents/skills/cursor/state-context-pattern/skill.yaml +38 -0
  3059. package/dist/agents/skills/cursor/state-jotai-atoms/SKILL.md +153 -0
  3060. package/dist/agents/skills/cursor/state-jotai-atoms/skill.yaml +39 -0
  3061. package/dist/agents/skills/cursor/state-selection-patterns/SKILL.md +115 -0
  3062. package/dist/agents/skills/cursor/state-selection-patterns/skill.yaml +39 -0
  3063. package/dist/agents/skills/cursor/state-server-client-sync/SKILL.md +148 -0
  3064. package/dist/agents/skills/cursor/state-server-client-sync/skill.yaml +40 -0
  3065. package/dist/agents/skills/cursor/state-zustand-devtools/SKILL.md +120 -0
  3066. package/dist/agents/skills/cursor/state-zustand-devtools/skill.yaml +38 -0
  3067. package/dist/agents/skills/cursor/state-zustand-immer/SKILL.md +150 -0
  3068. package/dist/agents/skills/cursor/state-zustand-immer/skill.yaml +38 -0
  3069. package/dist/agents/skills/cursor/state-zustand-persist/SKILL.md +148 -0
  3070. package/dist/agents/skills/cursor/state-zustand-persist/skill.yaml +38 -0
  3071. package/dist/agents/skills/cursor/state-zustand-react/SKILL.md +136 -0
  3072. package/dist/agents/skills/cursor/state-zustand-react/skill.yaml +40 -0
  3073. package/dist/agents/skills/cursor/state-zustand-slices/SKILL.md +135 -0
  3074. package/dist/agents/skills/cursor/state-zustand-slices/skill.yaml +39 -0
  3075. package/dist/agents/skills/cursor/state-zustand-store/SKILL.md +123 -0
  3076. package/dist/agents/skills/cursor/state-zustand-store/skill.yaml +39 -0
  3077. package/dist/agents/skills/cursor/svelte-adapter-config/SKILL.md +262 -0
  3078. package/dist/agents/skills/cursor/svelte-adapter-config/skill.yaml +42 -0
  3079. package/dist/agents/skills/cursor/svelte-component-composition/SKILL.md +222 -0
  3080. package/dist/agents/skills/cursor/svelte-component-composition/skill.yaml +41 -0
  3081. package/dist/agents/skills/cursor/svelte-error-pages/SKILL.md +186 -0
  3082. package/dist/agents/skills/cursor/svelte-error-pages/skill.yaml +42 -0
  3083. package/dist/agents/skills/cursor/svelte-form-actions/SKILL.md +230 -0
  3084. package/dist/agents/skills/cursor/svelte-form-actions/skill.yaml +41 -0
  3085. package/dist/agents/skills/cursor/svelte-load-functions/SKILL.md +206 -0
  3086. package/dist/agents/skills/cursor/svelte-load-functions/skill.yaml +44 -0
  3087. package/dist/agents/skills/cursor/svelte-performance-patterns/SKILL.md +218 -0
  3088. package/dist/agents/skills/cursor/svelte-performance-patterns/skill.yaml +43 -0
  3089. package/dist/agents/skills/cursor/svelte-routing-pattern/SKILL.md +203 -0
  3090. package/dist/agents/skills/cursor/svelte-routing-pattern/skill.yaml +43 -0
  3091. package/dist/agents/skills/cursor/svelte-runes-pattern/SKILL.md +204 -0
  3092. package/dist/agents/skills/cursor/svelte-runes-pattern/skill.yaml +43 -0
  3093. package/dist/agents/skills/cursor/svelte-server-hooks/SKILL.md +239 -0
  3094. package/dist/agents/skills/cursor/svelte-server-hooks/skill.yaml +43 -0
  3095. package/dist/agents/skills/cursor/svelte-state-management/SKILL.md +196 -0
  3096. package/dist/agents/skills/cursor/svelte-state-management/skill.yaml +43 -0
  3097. package/dist/agents/skills/cursor/svelte-stores-pattern/SKILL.md +187 -0
  3098. package/dist/agents/skills/cursor/svelte-stores-pattern/skill.yaml +43 -0
  3099. package/dist/agents/skills/cursor/svelte-testing-patterns/SKILL.md +231 -0
  3100. package/dist/agents/skills/cursor/svelte-testing-patterns/skill.yaml +45 -0
  3101. package/dist/agents/skills/cursor/svelte-transitions-animations/SKILL.md +222 -0
  3102. package/dist/agents/skills/cursor/svelte-transitions-animations/skill.yaml +43 -0
  3103. package/dist/agents/skills/cursor/tanstack-cache-management/SKILL.md +108 -0
  3104. package/dist/agents/skills/cursor/tanstack-cache-management/skill.yaml +43 -0
  3105. package/dist/agents/skills/cursor/tanstack-dependent-queries/SKILL.md +108 -0
  3106. package/dist/agents/skills/cursor/tanstack-dependent-queries/skill.yaml +41 -0
  3107. package/dist/agents/skills/cursor/tanstack-devtools/SKILL.md +100 -0
  3108. package/dist/agents/skills/cursor/tanstack-devtools/skill.yaml +43 -0
  3109. package/dist/agents/skills/cursor/tanstack-infinite-queries/SKILL.md +106 -0
  3110. package/dist/agents/skills/cursor/tanstack-infinite-queries/skill.yaml +43 -0
  3111. package/dist/agents/skills/cursor/tanstack-mutation-patterns/SKILL.md +122 -0
  3112. package/dist/agents/skills/cursor/tanstack-mutation-patterns/skill.yaml +43 -0
  3113. package/dist/agents/skills/cursor/tanstack-optimistic-updates/SKILL.md +106 -0
  3114. package/dist/agents/skills/cursor/tanstack-optimistic-updates/skill.yaml +43 -0
  3115. package/dist/agents/skills/cursor/tanstack-prefetching/SKILL.md +106 -0
  3116. package/dist/agents/skills/cursor/tanstack-prefetching/skill.yaml +43 -0
  3117. package/dist/agents/skills/cursor/tanstack-query-invalidation/SKILL.md +95 -0
  3118. package/dist/agents/skills/cursor/tanstack-query-invalidation/skill.yaml +42 -0
  3119. package/dist/agents/skills/cursor/tanstack-query-keys/SKILL.md +94 -0
  3120. package/dist/agents/skills/cursor/tanstack-query-keys/skill.yaml +42 -0
  3121. package/dist/agents/skills/cursor/tanstack-suspense-mode/SKILL.md +96 -0
  3122. package/dist/agents/skills/cursor/tanstack-suspense-mode/skill.yaml +41 -0
  3123. package/dist/agents/skills/cursor/test-accessibility-testing/SKILL.md +201 -0
  3124. package/dist/agents/skills/cursor/test-accessibility-testing/skill.yaml +42 -0
  3125. package/dist/agents/skills/cursor/test-component-react/SKILL.md +173 -0
  3126. package/dist/agents/skills/cursor/test-component-react/skill.yaml +44 -0
  3127. package/dist/agents/skills/cursor/test-component-svelte/SKILL.md +184 -0
  3128. package/dist/agents/skills/cursor/test-component-svelte/skill.yaml +42 -0
  3129. package/dist/agents/skills/cursor/test-contract-testing/SKILL.md +180 -0
  3130. package/dist/agents/skills/cursor/test-contract-testing/skill.yaml +41 -0
  3131. package/dist/agents/skills/cursor/test-coverage-patterns/SKILL.md +165 -0
  3132. package/dist/agents/skills/cursor/test-coverage-patterns/skill.yaml +43 -0
  3133. package/dist/agents/skills/cursor/test-e2e-strategy/SKILL.md +146 -0
  3134. package/dist/agents/skills/cursor/test-e2e-strategy/skill.yaml +43 -0
  3135. package/dist/agents/skills/cursor/test-factory-patterns/SKILL.md +198 -0
  3136. package/dist/agents/skills/cursor/test-factory-patterns/skill.yaml +43 -0
  3137. package/dist/agents/skills/cursor/test-integration-patterns/SKILL.md +202 -0
  3138. package/dist/agents/skills/cursor/test-integration-patterns/skill.yaml +43 -0
  3139. package/dist/agents/skills/cursor/test-mock-patterns/SKILL.md +184 -0
  3140. package/dist/agents/skills/cursor/test-mock-patterns/skill.yaml +44 -0
  3141. package/dist/agents/skills/cursor/test-msw-pattern/SKILL.md +181 -0
  3142. package/dist/agents/skills/cursor/test-msw-pattern/skill.yaml +43 -0
  3143. package/dist/agents/skills/cursor/test-performance-testing/SKILL.md +199 -0
  3144. package/dist/agents/skills/cursor/test-performance-testing/skill.yaml +42 -0
  3145. package/dist/agents/skills/cursor/test-playwright-patterns/SKILL.md +197 -0
  3146. package/dist/agents/skills/cursor/test-playwright-patterns/skill.yaml +43 -0
  3147. package/dist/agents/skills/cursor/test-playwright-setup/SKILL.md +178 -0
  3148. package/dist/agents/skills/cursor/test-playwright-setup/skill.yaml +42 -0
  3149. package/dist/agents/skills/cursor/test-property-based/SKILL.md +172 -0
  3150. package/dist/agents/skills/cursor/test-property-based/skill.yaml +42 -0
  3151. package/dist/agents/skills/cursor/test-snapshot-patterns/SKILL.md +142 -0
  3152. package/dist/agents/skills/cursor/test-snapshot-patterns/skill.yaml +41 -0
  3153. package/dist/agents/skills/cursor/test-tdd-workflow/SKILL.md +185 -0
  3154. package/dist/agents/skills/cursor/test-tdd-workflow/skill.yaml +42 -0
  3155. package/dist/agents/skills/cursor/test-unit-patterns/SKILL.md +209 -0
  3156. package/dist/agents/skills/cursor/test-unit-patterns/skill.yaml +44 -0
  3157. package/dist/agents/skills/cursor/test-vitest-config/SKILL.md +212 -0
  3158. package/dist/agents/skills/cursor/test-vitest-config/skill.yaml +44 -0
  3159. package/dist/agents/skills/cursor/trpc-context-pattern/SKILL.md +190 -0
  3160. package/dist/agents/skills/cursor/trpc-context-pattern/skill.yaml +41 -0
  3161. package/dist/agents/skills/cursor/trpc-error-handling/SKILL.md +132 -0
  3162. package/dist/agents/skills/cursor/trpc-error-handling/skill.yaml +42 -0
  3163. package/dist/agents/skills/cursor/trpc-input-validation/SKILL.md +100 -0
  3164. package/dist/agents/skills/cursor/trpc-input-validation/skill.yaml +42 -0
  3165. package/dist/agents/skills/cursor/trpc-middleware-pattern/SKILL.md +99 -0
  3166. package/dist/agents/skills/cursor/trpc-middleware-pattern/skill.yaml +41 -0
  3167. package/dist/agents/skills/cursor/trpc-nextjs-integration/SKILL.md +203 -0
  3168. package/dist/agents/skills/cursor/trpc-nextjs-integration/skill.yaml +43 -0
  3169. package/dist/agents/skills/cursor/trpc-react-query-integration/SKILL.md +182 -0
  3170. package/dist/agents/skills/cursor/trpc-react-query-integration/skill.yaml +43 -0
  3171. package/dist/agents/skills/cursor/trpc-router-composition/SKILL.md +98 -0
  3172. package/dist/agents/skills/cursor/trpc-router-composition/skill.yaml +42 -0
  3173. package/dist/agents/skills/cursor/trpc-subscription-pattern/SKILL.md +118 -0
  3174. package/dist/agents/skills/cursor/trpc-subscription-pattern/skill.yaml +43 -0
  3175. package/dist/agents/skills/cursor/ts-async-patterns/SKILL.md +193 -0
  3176. package/dist/agents/skills/cursor/ts-async-patterns/skill.yaml +38 -0
  3177. package/dist/agents/skills/cursor/ts-branded-types/SKILL.md +161 -0
  3178. package/dist/agents/skills/cursor/ts-branded-types/skill.yaml +38 -0
  3179. package/dist/agents/skills/cursor/ts-class-patterns/SKILL.md +238 -0
  3180. package/dist/agents/skills/cursor/ts-class-patterns/skill.yaml +38 -0
  3181. package/dist/agents/skills/cursor/ts-conditional-types/SKILL.md +142 -0
  3182. package/dist/agents/skills/cursor/ts-conditional-types/skill.yaml +38 -0
  3183. package/dist/agents/skills/cursor/ts-config-patterns/SKILL.md +190 -0
  3184. package/dist/agents/skills/cursor/ts-config-patterns/skill.yaml +38 -0
  3185. package/dist/agents/skills/cursor/ts-declaration-merging/SKILL.md +187 -0
  3186. package/dist/agents/skills/cursor/ts-declaration-merging/skill.yaml +37 -0
  3187. package/dist/agents/skills/cursor/ts-decorator-patterns/SKILL.md +181 -0
  3188. package/dist/agents/skills/cursor/ts-decorator-patterns/skill.yaml +37 -0
  3189. package/dist/agents/skills/cursor/ts-discriminated-unions/SKILL.md +186 -0
  3190. package/dist/agents/skills/cursor/ts-discriminated-unions/skill.yaml +38 -0
  3191. package/dist/agents/skills/cursor/ts-error-handling-types/SKILL.md +205 -0
  3192. package/dist/agents/skills/cursor/ts-error-handling-types/skill.yaml +38 -0
  3193. package/dist/agents/skills/cursor/ts-generics-pattern/SKILL.md +104 -0
  3194. package/dist/agents/skills/cursor/ts-generics-pattern/skill.yaml +39 -0
  3195. package/dist/agents/skills/cursor/ts-mapped-types/SKILL.md +147 -0
  3196. package/dist/agents/skills/cursor/ts-mapped-types/skill.yaml +38 -0
  3197. package/dist/agents/skills/cursor/ts-module-patterns/SKILL.md +156 -0
  3198. package/dist/agents/skills/cursor/ts-module-patterns/skill.yaml +37 -0
  3199. package/dist/agents/skills/cursor/ts-performance-patterns/SKILL.md +158 -0
  3200. package/dist/agents/skills/cursor/ts-performance-patterns/skill.yaml +37 -0
  3201. package/dist/agents/skills/cursor/ts-satisfies-operator/SKILL.md +151 -0
  3202. package/dist/agents/skills/cursor/ts-satisfies-operator/skill.yaml +38 -0
  3203. package/dist/agents/skills/cursor/ts-strict-mode/SKILL.md +167 -0
  3204. package/dist/agents/skills/cursor/ts-strict-mode/skill.yaml +38 -0
  3205. package/dist/agents/skills/cursor/ts-template-literal-types/SKILL.md +146 -0
  3206. package/dist/agents/skills/cursor/ts-template-literal-types/skill.yaml +38 -0
  3207. package/dist/agents/skills/cursor/ts-testing-types/SKILL.md +166 -0
  3208. package/dist/agents/skills/cursor/ts-testing-types/skill.yaml +38 -0
  3209. package/dist/agents/skills/cursor/ts-type-guards/SKILL.md +168 -0
  3210. package/dist/agents/skills/cursor/ts-type-guards/skill.yaml +39 -0
  3211. package/dist/agents/skills/cursor/ts-utility-types/SKILL.md +119 -0
  3212. package/dist/agents/skills/cursor/ts-utility-types/skill.yaml +43 -0
  3213. package/dist/agents/skills/cursor/ts-zod-integration/SKILL.md +181 -0
  3214. package/dist/agents/skills/cursor/ts-zod-integration/skill.yaml +37 -0
  3215. package/dist/agents/skills/cursor/validate-context-engineering/SKILL.md +9 -0
  3216. package/dist/agents/skills/cursor/validate-context-engineering/skill.yaml +2 -0
  3217. package/dist/agents/skills/cursor/vue-async-components/SKILL.md +67 -0
  3218. package/dist/agents/skills/cursor/vue-async-components/skill.yaml +35 -0
  3219. package/dist/agents/skills/cursor/vue-component-events/SKILL.md +72 -0
  3220. package/dist/agents/skills/cursor/vue-component-events/skill.yaml +35 -0
  3221. package/dist/agents/skills/cursor/vue-composables-pattern/SKILL.md +75 -0
  3222. package/dist/agents/skills/cursor/vue-composables-pattern/skill.yaml +34 -0
  3223. package/dist/agents/skills/cursor/vue-directive-pattern/SKILL.md +66 -0
  3224. package/dist/agents/skills/cursor/vue-directive-pattern/skill.yaml +34 -0
  3225. package/dist/agents/skills/cursor/vue-pinia-pattern/SKILL.md +69 -0
  3226. package/dist/agents/skills/cursor/vue-pinia-pattern/skill.yaml +35 -0
  3227. package/dist/agents/skills/cursor/vue-provide-inject/SKILL.md +66 -0
  3228. package/dist/agents/skills/cursor/vue-provide-inject/skill.yaml +35 -0
  3229. package/dist/agents/skills/cursor/vue-reactive-refs/SKILL.md +67 -0
  3230. package/dist/agents/skills/cursor/vue-reactive-refs/skill.yaml +35 -0
  3231. package/dist/agents/skills/cursor/vue-renderless-components/SKILL.md +69 -0
  3232. package/dist/agents/skills/cursor/vue-renderless-components/skill.yaml +35 -0
  3233. package/dist/agents/skills/cursor/vue-slots-pattern/SKILL.md +72 -0
  3234. package/dist/agents/skills/cursor/vue-slots-pattern/skill.yaml +35 -0
  3235. package/dist/agents/skills/cursor/vue-teleport-pattern/SKILL.md +66 -0
  3236. package/dist/agents/skills/cursor/vue-teleport-pattern/skill.yaml +35 -0
  3237. package/dist/agents/skills/cursor/vue-watchers-pattern/SKILL.md +73 -0
  3238. package/dist/agents/skills/cursor/vue-watchers-pattern/skill.yaml +35 -0
  3239. package/dist/agents/skills/cursor/xstate-actor-pattern/SKILL.md +155 -0
  3240. package/dist/agents/skills/cursor/xstate-actor-pattern/skill.yaml +40 -0
  3241. package/dist/agents/skills/cursor/xstate-guards-actions/SKILL.md +153 -0
  3242. package/dist/agents/skills/cursor/xstate-guards-actions/skill.yaml +41 -0
  3243. package/dist/agents/skills/cursor/xstate-history-states/SKILL.md +123 -0
  3244. package/dist/agents/skills/cursor/xstate-history-states/skill.yaml +39 -0
  3245. package/dist/agents/skills/cursor/xstate-invoke-pattern/SKILL.md +165 -0
  3246. package/dist/agents/skills/cursor/xstate-invoke-pattern/skill.yaml +40 -0
  3247. package/dist/agents/skills/cursor/xstate-machine-definition/SKILL.md +151 -0
  3248. package/dist/agents/skills/cursor/xstate-machine-definition/skill.yaml +40 -0
  3249. package/dist/agents/skills/cursor/xstate-parallel-states/SKILL.md +130 -0
  3250. package/dist/agents/skills/cursor/xstate-parallel-states/skill.yaml +39 -0
  3251. package/dist/agents/skills/cursor/xstate-react-integration/SKILL.md +138 -0
  3252. package/dist/agents/skills/cursor/xstate-react-integration/skill.yaml +39 -0
  3253. package/dist/agents/skills/cursor/xstate-testing-patterns/SKILL.md +173 -0
  3254. package/dist/agents/skills/cursor/xstate-testing-patterns/skill.yaml +39 -0
  3255. package/dist/agents/skills/cursor/xstate-typegen/SKILL.md +168 -0
  3256. package/dist/agents/skills/cursor/xstate-typegen/skill.yaml +39 -0
  3257. package/dist/agents/skills/cursor/xstate-visualization/SKILL.md +124 -0
  3258. package/dist/agents/skills/cursor/xstate-visualization/skill.yaml +39 -0
  3259. package/dist/agents/skills/cursor/zod-array-validation/SKILL.md +160 -0
  3260. package/dist/agents/skills/cursor/zod-array-validation/skill.yaml +42 -0
  3261. package/dist/agents/skills/cursor/zod-async-validation/SKILL.md +205 -0
  3262. package/dist/agents/skills/cursor/zod-async-validation/skill.yaml +40 -0
  3263. package/dist/agents/skills/cursor/zod-error-handling/SKILL.md +206 -0
  3264. package/dist/agents/skills/cursor/zod-error-handling/skill.yaml +41 -0
  3265. package/dist/agents/skills/cursor/zod-infer-types/SKILL.md +192 -0
  3266. package/dist/agents/skills/cursor/zod-infer-types/skill.yaml +41 -0
  3267. package/dist/agents/skills/cursor/zod-nextjs-integration/SKILL.md +232 -0
  3268. package/dist/agents/skills/cursor/zod-nextjs-integration/skill.yaml +42 -0
  3269. package/dist/agents/skills/cursor/zod-object-patterns/SKILL.md +190 -0
  3270. package/dist/agents/skills/cursor/zod-object-patterns/skill.yaml +43 -0
  3271. package/dist/agents/skills/cursor/zod-schema-definition/SKILL.md +170 -0
  3272. package/dist/agents/skills/cursor/zod-schema-definition/skill.yaml +42 -0
  3273. package/dist/agents/skills/cursor/zod-string-validation/SKILL.md +180 -0
  3274. package/dist/agents/skills/cursor/zod-string-validation/skill.yaml +43 -0
  3275. package/dist/agents/skills/cursor/zod-transform-refine/SKILL.md +193 -0
  3276. package/dist/agents/skills/cursor/zod-transform-refine/skill.yaml +42 -0
  3277. package/dist/agents/skills/cursor/zod-union-discriminated/SKILL.md +168 -0
  3278. package/dist/agents/skills/cursor/zod-union-discriminated/skill.yaml +40 -0
  3279. package/dist/agents/skills/gemini-cli/a11y-aria-patterns/SKILL.md +183 -0
  3280. package/dist/agents/skills/gemini-cli/a11y-aria-patterns/skill.yaml +43 -0
  3281. package/dist/agents/skills/gemini-cli/a11y-color-contrast/SKILL.md +156 -0
  3282. package/dist/agents/skills/gemini-cli/a11y-color-contrast/skill.yaml +45 -0
  3283. package/dist/agents/skills/gemini-cli/a11y-form-patterns/SKILL.md +147 -0
  3284. package/dist/agents/skills/gemini-cli/a11y-form-patterns/skill.yaml +45 -0
  3285. package/dist/agents/skills/gemini-cli/a11y-image-text-alt/SKILL.md +159 -0
  3286. package/dist/agents/skills/gemini-cli/a11y-image-text-alt/skill.yaml +43 -0
  3287. package/dist/agents/skills/gemini-cli/a11y-keyboard-navigation/SKILL.md +169 -0
  3288. package/dist/agents/skills/gemini-cli/a11y-keyboard-navigation/skill.yaml +45 -0
  3289. package/dist/agents/skills/gemini-cli/a11y-modal-patterns/SKILL.md +201 -0
  3290. package/dist/agents/skills/gemini-cli/a11y-modal-patterns/skill.yaml +42 -0
  3291. package/dist/agents/skills/gemini-cli/a11y-motion-animation/SKILL.md +199 -0
  3292. package/dist/agents/skills/gemini-cli/a11y-motion-animation/skill.yaml +45 -0
  3293. package/dist/agents/skills/gemini-cli/a11y-screen-reader-testing/SKILL.md +138 -0
  3294. package/dist/agents/skills/gemini-cli/a11y-screen-reader-testing/skill.yaml +43 -0
  3295. package/dist/agents/skills/gemini-cli/a11y-semantic-html/SKILL.md +139 -0
  3296. package/dist/agents/skills/gemini-cli/a11y-semantic-html/skill.yaml +43 -0
  3297. package/dist/agents/skills/gemini-cli/a11y-testing-automation/SKILL.md +206 -0
  3298. package/dist/agents/skills/gemini-cli/a11y-testing-automation/skill.yaml +45 -0
  3299. package/dist/agents/skills/gemini-cli/add-harness-component/SKILL.md +21 -12
  3300. package/dist/agents/skills/gemini-cli/add-harness-component/skill.yaml +2 -0
  3301. package/dist/agents/skills/gemini-cli/align-documentation/SKILL.md +9 -0
  3302. package/dist/agents/skills/gemini-cli/align-documentation/skill.yaml +2 -0
  3303. package/dist/agents/skills/gemini-cli/angular-component-pattern/SKILL.md +112 -0
  3304. package/dist/agents/skills/gemini-cli/angular-component-pattern/skill.yaml +46 -0
  3305. package/dist/agents/skills/gemini-cli/angular-directive-pattern/SKILL.md +166 -0
  3306. package/dist/agents/skills/gemini-cli/angular-directive-pattern/skill.yaml +44 -0
  3307. package/dist/agents/skills/gemini-cli/angular-http-interceptors/SKILL.md +174 -0
  3308. package/dist/agents/skills/gemini-cli/angular-http-interceptors/skill.yaml +44 -0
  3309. package/dist/agents/skills/gemini-cli/angular-lazy-loading/SKILL.md +156 -0
  3310. package/dist/agents/skills/gemini-cli/angular-lazy-loading/skill.yaml +44 -0
  3311. package/dist/agents/skills/gemini-cli/angular-performance-patterns/SKILL.md +141 -0
  3312. package/dist/agents/skills/gemini-cli/angular-performance-patterns/skill.yaml +45 -0
  3313. package/dist/agents/skills/gemini-cli/angular-pipe-pattern/SKILL.md +126 -0
  3314. package/dist/agents/skills/gemini-cli/angular-pipe-pattern/skill.yaml +44 -0
  3315. package/dist/agents/skills/gemini-cli/angular-reactive-forms/SKILL.md +136 -0
  3316. package/dist/agents/skills/gemini-cli/angular-reactive-forms/skill.yaml +44 -0
  3317. package/dist/agents/skills/gemini-cli/angular-routing-guards/SKILL.md +150 -0
  3318. package/dist/agents/skills/gemini-cli/angular-routing-guards/skill.yaml +44 -0
  3319. package/dist/agents/skills/gemini-cli/angular-rxjs-patterns/SKILL.md +152 -0
  3320. package/dist/agents/skills/gemini-cli/angular-rxjs-patterns/skill.yaml +45 -0
  3321. package/dist/agents/skills/gemini-cli/angular-schematics/SKILL.md +184 -0
  3322. package/dist/agents/skills/gemini-cli/angular-schematics/skill.yaml +44 -0
  3323. package/dist/agents/skills/gemini-cli/angular-service-di/SKILL.md +108 -0
  3324. package/dist/agents/skills/gemini-cli/angular-service-di/skill.yaml +45 -0
  3325. package/dist/agents/skills/gemini-cli/angular-signals-pattern/SKILL.md +116 -0
  3326. package/dist/agents/skills/gemini-cli/angular-signals-pattern/skill.yaml +44 -0
  3327. package/dist/agents/skills/gemini-cli/angular-standalone-components/SKILL.md +130 -0
  3328. package/dist/agents/skills/gemini-cli/angular-standalone-components/skill.yaml +44 -0
  3329. package/dist/agents/skills/gemini-cli/angular-state-management/SKILL.md +150 -0
  3330. package/dist/agents/skills/gemini-cli/angular-state-management/skill.yaml +45 -0
  3331. package/dist/agents/skills/gemini-cli/angular-testing-patterns/SKILL.md +180 -0
  3332. package/dist/agents/skills/gemini-cli/angular-testing-patterns/skill.yaml +45 -0
  3333. package/dist/agents/skills/gemini-cli/astro-component-pattern/SKILL.md +160 -0
  3334. package/dist/agents/skills/gemini-cli/astro-component-pattern/skill.yaml +44 -0
  3335. package/dist/agents/skills/gemini-cli/astro-content-collections/SKILL.md +155 -0
  3336. package/dist/agents/skills/gemini-cli/astro-content-collections/skill.yaml +42 -0
  3337. package/dist/agents/skills/gemini-cli/astro-deployment-config/SKILL.md +208 -0
  3338. package/dist/agents/skills/gemini-cli/astro-deployment-config/skill.yaml +46 -0
  3339. package/dist/agents/skills/gemini-cli/astro-image-optimization/SKILL.md +188 -0
  3340. package/dist/agents/skills/gemini-cli/astro-image-optimization/skill.yaml +45 -0
  3341. package/dist/agents/skills/gemini-cli/astro-integration-pattern/SKILL.md +164 -0
  3342. package/dist/agents/skills/gemini-cli/astro-integration-pattern/skill.yaml +44 -0
  3343. package/dist/agents/skills/gemini-cli/astro-islands-architecture/SKILL.md +103 -0
  3344. package/dist/agents/skills/gemini-cli/astro-islands-architecture/skill.yaml +44 -0
  3345. package/dist/agents/skills/gemini-cli/astro-multi-framework/SKILL.md +161 -0
  3346. package/dist/agents/skills/gemini-cli/astro-multi-framework/skill.yaml +46 -0
  3347. package/dist/agents/skills/gemini-cli/astro-routing-pattern/SKILL.md +135 -0
  3348. package/dist/agents/skills/gemini-cli/astro-routing-pattern/skill.yaml +43 -0
  3349. package/dist/agents/skills/gemini-cli/astro-server-endpoints/SKILL.md +173 -0
  3350. package/dist/agents/skills/gemini-cli/astro-server-endpoints/skill.yaml +44 -0
  3351. package/dist/agents/skills/gemini-cli/astro-ssr-hybrid/SKILL.md +191 -0
  3352. package/dist/agents/skills/gemini-cli/astro-ssr-hybrid/skill.yaml +46 -0
  3353. package/dist/agents/skills/gemini-cli/astro-view-transitions/SKILL.md +168 -0
  3354. package/dist/agents/skills/gemini-cli/astro-view-transitions/skill.yaml +45 -0
  3355. package/dist/agents/skills/gemini-cli/check-mechanical-constraints/SKILL.md +9 -0
  3356. package/dist/agents/skills/gemini-cli/check-mechanical-constraints/skill.yaml +2 -0
  3357. package/dist/agents/skills/gemini-cli/cleanup-dead-code/SKILL.md +11 -0
  3358. package/dist/agents/skills/gemini-cli/cleanup-dead-code/skill.yaml +2 -0
  3359. package/dist/agents/skills/gemini-cli/css-animation-pattern/SKILL.md +143 -0
  3360. package/dist/agents/skills/gemini-cli/css-animation-pattern/skill.yaml +43 -0
  3361. package/dist/agents/skills/gemini-cli/css-component-variants/SKILL.md +147 -0
  3362. package/dist/agents/skills/gemini-cli/css-component-variants/skill.yaml +42 -0
  3363. package/dist/agents/skills/gemini-cli/css-css-modules/SKILL.md +168 -0
  3364. package/dist/agents/skills/gemini-cli/css-css-modules/skill.yaml +38 -0
  3365. package/dist/agents/skills/gemini-cli/css-custom-components/SKILL.md +178 -0
  3366. package/dist/agents/skills/gemini-cli/css-custom-components/skill.yaml +39 -0
  3367. package/dist/agents/skills/gemini-cli/css-dark-mode/SKILL.md +171 -0
  3368. package/dist/agents/skills/gemini-cli/css-dark-mode/skill.yaml +41 -0
  3369. package/dist/agents/skills/gemini-cli/css-design-tokens/SKILL.md +155 -0
  3370. package/dist/agents/skills/gemini-cli/css-design-tokens/skill.yaml +42 -0
  3371. package/dist/agents/skills/gemini-cli/css-headless-ui/SKILL.md +179 -0
  3372. package/dist/agents/skills/gemini-cli/css-headless-ui/skill.yaml +39 -0
  3373. package/dist/agents/skills/gemini-cli/css-layout-patterns/SKILL.md +155 -0
  3374. package/dist/agents/skills/gemini-cli/css-layout-patterns/skill.yaml +43 -0
  3375. package/dist/agents/skills/gemini-cli/css-performance-patterns/SKILL.md +163 -0
  3376. package/dist/agents/skills/gemini-cli/css-performance-patterns/skill.yaml +40 -0
  3377. package/dist/agents/skills/gemini-cli/css-responsive-design/SKILL.md +161 -0
  3378. package/dist/agents/skills/gemini-cli/css-responsive-design/skill.yaml +42 -0
  3379. package/dist/agents/skills/gemini-cli/css-tailwind-merge/SKILL.md +128 -0
  3380. package/dist/agents/skills/gemini-cli/css-tailwind-merge/skill.yaml +39 -0
  3381. package/dist/agents/skills/gemini-cli/css-tailwind-pattern/SKILL.md +126 -0
  3382. package/dist/agents/skills/gemini-cli/css-tailwind-pattern/skill.yaml +40 -0
  3383. package/dist/agents/skills/gemini-cli/design-affordances/SKILL.md +157 -0
  3384. package/dist/agents/skills/gemini-cli/design-affordances/skill.yaml +35 -0
  3385. package/dist/agents/skills/gemini-cli/design-alignment/SKILL.md +148 -0
  3386. package/dist/agents/skills/gemini-cli/design-alignment/skill.yaml +33 -0
  3387. package/dist/agents/skills/gemini-cli/design-apple-hig/SKILL.md +237 -0
  3388. package/dist/agents/skills/gemini-cli/design-apple-hig/skill.yaml +37 -0
  3389. package/dist/agents/skills/gemini-cli/design-atomic-design/SKILL.md +172 -0
  3390. package/dist/agents/skills/gemini-cli/design-atomic-design/skill.yaml +35 -0
  3391. package/dist/agents/skills/gemini-cli/design-brand-consistency/SKILL.md +167 -0
  3392. package/dist/agents/skills/gemini-cli/design-brand-consistency/skill.yaml +35 -0
  3393. package/dist/agents/skills/gemini-cli/design-color-accessibility/SKILL.md +161 -0
  3394. package/dist/agents/skills/gemini-cli/design-color-accessibility/skill.yaml +34 -0
  3395. package/dist/agents/skills/gemini-cli/design-color-harmony/SKILL.md +152 -0
  3396. package/dist/agents/skills/gemini-cli/design-color-harmony/skill.yaml +35 -0
  3397. package/dist/agents/skills/gemini-cli/design-color-psychology/SKILL.md +151 -0
  3398. package/dist/agents/skills/gemini-cli/design-color-psychology/skill.yaml +34 -0
  3399. package/dist/agents/skills/gemini-cli/design-component-anatomy/SKILL.md +243 -0
  3400. package/dist/agents/skills/gemini-cli/design-component-anatomy/skill.yaml +34 -0
  3401. package/dist/agents/skills/gemini-cli/design-consistency/SKILL.md +179 -0
  3402. package/dist/agents/skills/gemini-cli/design-consistency/skill.yaml +35 -0
  3403. package/dist/agents/skills/gemini-cli/design-content-density/SKILL.md +156 -0
  3404. package/dist/agents/skills/gemini-cli/design-content-density/skill.yaml +34 -0
  3405. package/dist/agents/skills/gemini-cli/design-contrast-ratio/SKILL.md +151 -0
  3406. package/dist/agents/skills/gemini-cli/design-contrast-ratio/skill.yaml +35 -0
  3407. package/dist/agents/skills/gemini-cli/design-dark-mode-color/SKILL.md +152 -0
  3408. package/dist/agents/skills/gemini-cli/design-dark-mode-color/skill.yaml +35 -0
  3409. package/dist/agents/skills/gemini-cli/design-data-viz-design/SKILL.md +178 -0
  3410. package/dist/agents/skills/gemini-cli/design-data-viz-design/skill.yaml +35 -0
  3411. package/dist/agents/skills/gemini-cli/design-design-audit/SKILL.md +193 -0
  3412. package/dist/agents/skills/gemini-cli/design-design-audit/skill.yaml +33 -0
  3413. package/dist/agents/skills/gemini-cli/design-design-critique/SKILL.md +175 -0
  3414. package/dist/agents/skills/gemini-cli/design-design-critique/skill.yaml +32 -0
  3415. package/dist/agents/skills/gemini-cli/design-design-documentation/SKILL.md +163 -0
  3416. package/dist/agents/skills/gemini-cli/design-design-documentation/skill.yaml +33 -0
  3417. package/dist/agents/skills/gemini-cli/design-design-governance/SKILL.md +187 -0
  3418. package/dist/agents/skills/gemini-cli/design-design-governance/skill.yaml +34 -0
  3419. package/dist/agents/skills/gemini-cli/design-elevation-shadow/SKILL.md +163 -0
  3420. package/dist/agents/skills/gemini-cli/design-elevation-shadow/skill.yaml +34 -0
  3421. package/dist/agents/skills/gemini-cli/design-empty-error-states/SKILL.md +154 -0
  3422. package/dist/agents/skills/gemini-cli/design-empty-error-states/skill.yaml +35 -0
  3423. package/dist/agents/skills/gemini-cli/design-feedback-patterns/SKILL.md +156 -0
  3424. package/dist/agents/skills/gemini-cli/design-feedback-patterns/skill.yaml +35 -0
  3425. package/dist/agents/skills/gemini-cli/design-fluent-design/SKILL.md +241 -0
  3426. package/dist/agents/skills/gemini-cli/design-fluent-design/skill.yaml +35 -0
  3427. package/dist/agents/skills/gemini-cli/design-font-pairing/SKILL.md +161 -0
  3428. package/dist/agents/skills/gemini-cli/design-font-pairing/skill.yaml +34 -0
  3429. package/dist/agents/skills/gemini-cli/design-form-ux/SKILL.md +156 -0
  3430. package/dist/agents/skills/gemini-cli/design-form-ux/skill.yaml +35 -0
  3431. package/dist/agents/skills/gemini-cli/design-gestalt-closure-continuity/SKILL.md +182 -0
  3432. package/dist/agents/skills/gemini-cli/design-gestalt-closure-continuity/skill.yaml +33 -0
  3433. package/dist/agents/skills/gemini-cli/design-gestalt-common-fate/SKILL.md +214 -0
  3434. package/dist/agents/skills/gemini-cli/design-gestalt-common-fate/skill.yaml +33 -0
  3435. package/dist/agents/skills/gemini-cli/design-gestalt-figure-ground/SKILL.md +189 -0
  3436. package/dist/agents/skills/gemini-cli/design-gestalt-figure-ground/skill.yaml +34 -0
  3437. package/dist/agents/skills/gemini-cli/design-gestalt-proximity/SKILL.md +162 -0
  3438. package/dist/agents/skills/gemini-cli/design-gestalt-proximity/skill.yaml +34 -0
  3439. package/dist/agents/skills/gemini-cli/design-gestalt-similarity/SKILL.md +175 -0
  3440. package/dist/agents/skills/gemini-cli/design-gestalt-similarity/skill.yaml +33 -0
  3441. package/dist/agents/skills/gemini-cli/design-grid-systems/SKILL.md +154 -0
  3442. package/dist/agents/skills/gemini-cli/design-grid-systems/skill.yaml +35 -0
  3443. package/dist/agents/skills/gemini-cli/design-i18n-design/SKILL.md +181 -0
  3444. package/dist/agents/skills/gemini-cli/design-i18n-design/skill.yaml +35 -0
  3445. package/dist/agents/skills/gemini-cli/design-iconography/SKILL.md +169 -0
  3446. package/dist/agents/skills/gemini-cli/design-iconography/skill.yaml +35 -0
  3447. package/dist/agents/skills/gemini-cli/design-illustration-style/SKILL.md +170 -0
  3448. package/dist/agents/skills/gemini-cli/design-illustration-style/skill.yaml +34 -0
  3449. package/dist/agents/skills/gemini-cli/design-imagery-photography/SKILL.md +172 -0
  3450. package/dist/agents/skills/gemini-cli/design-imagery-photography/skill.yaml +35 -0
  3451. package/dist/agents/skills/gemini-cli/design-information-architecture/SKILL.md +155 -0
  3452. package/dist/agents/skills/gemini-cli/design-information-architecture/skill.yaml +35 -0
  3453. package/dist/agents/skills/gemini-cli/design-loading-patterns/SKILL.md +175 -0
  3454. package/dist/agents/skills/gemini-cli/design-loading-patterns/skill.yaml +33 -0
  3455. package/dist/agents/skills/gemini-cli/design-material-design-3/SKILL.md +184 -0
  3456. package/dist/agents/skills/gemini-cli/design-material-design-3/skill.yaml +36 -0
  3457. package/dist/agents/skills/gemini-cli/design-micro-interactions/SKILL.md +156 -0
  3458. package/dist/agents/skills/gemini-cli/design-micro-interactions/skill.yaml +35 -0
  3459. package/dist/agents/skills/gemini-cli/design-motion-principles/SKILL.md +161 -0
  3460. package/dist/agents/skills/gemini-cli/design-motion-principles/skill.yaml +36 -0
  3461. package/dist/agents/skills/gemini-cli/design-naming-conventions/SKILL.md +200 -0
  3462. package/dist/agents/skills/gemini-cli/design-naming-conventions/skill.yaml +34 -0
  3463. package/dist/agents/skills/gemini-cli/design-navigation-ux/SKILL.md +150 -0
  3464. package/dist/agents/skills/gemini-cli/design-navigation-ux/skill.yaml +34 -0
  3465. package/dist/agents/skills/gemini-cli/design-palette-construction/SKILL.md +152 -0
  3466. package/dist/agents/skills/gemini-cli/design-palette-construction/skill.yaml +37 -0
  3467. package/dist/agents/skills/gemini-cli/design-parallax-scroll/SKILL.md +200 -0
  3468. package/dist/agents/skills/gemini-cli/design-parallax-scroll/skill.yaml +34 -0
  3469. package/dist/agents/skills/gemini-cli/design-readability/SKILL.md +183 -0
  3470. package/dist/agents/skills/gemini-cli/design-readability/skill.yaml +36 -0
  3471. package/dist/agents/skills/gemini-cli/design-responsive-strategy/SKILL.md +157 -0
  3472. package/dist/agents/skills/gemini-cli/design-responsive-strategy/skill.yaml +34 -0
  3473. package/dist/agents/skills/gemini-cli/design-responsive-type/SKILL.md +270 -0
  3474. package/dist/agents/skills/gemini-cli/design-responsive-type/skill.yaml +34 -0
  3475. package/dist/agents/skills/gemini-cli/design-state-design/SKILL.md +152 -0
  3476. package/dist/agents/skills/gemini-cli/design-state-design/skill.yaml +36 -0
  3477. package/dist/agents/skills/gemini-cli/design-token-architecture/SKILL.md +218 -0
  3478. package/dist/agents/skills/gemini-cli/design-token-architecture/skill.yaml +36 -0
  3479. package/dist/agents/skills/gemini-cli/design-transitions-timing/SKILL.md +183 -0
  3480. package/dist/agents/skills/gemini-cli/design-transitions-timing/skill.yaml +34 -0
  3481. package/dist/agents/skills/gemini-cli/design-type-scale/SKILL.md +157 -0
  3482. package/dist/agents/skills/gemini-cli/design-type-scale/skill.yaml +34 -0
  3483. package/dist/agents/skills/gemini-cli/design-typographic-hierarchy/SKILL.md +187 -0
  3484. package/dist/agents/skills/gemini-cli/design-typographic-hierarchy/skill.yaml +34 -0
  3485. package/dist/agents/skills/gemini-cli/design-typography-fundamentals/SKILL.md +158 -0
  3486. package/dist/agents/skills/gemini-cli/design-typography-fundamentals/skill.yaml +36 -0
  3487. package/dist/agents/skills/gemini-cli/design-visual-hierarchy/SKILL.md +150 -0
  3488. package/dist/agents/skills/gemini-cli/design-visual-hierarchy/skill.yaml +36 -0
  3489. package/dist/agents/skills/gemini-cli/design-web-fonts/SKILL.md +251 -0
  3490. package/dist/agents/skills/gemini-cli/design-web-fonts/skill.yaml +35 -0
  3491. package/dist/agents/skills/gemini-cli/design-whitespace/SKILL.md +150 -0
  3492. package/dist/agents/skills/gemini-cli/design-whitespace/skill.yaml +36 -0
  3493. package/dist/agents/skills/gemini-cli/detect-doc-drift/SKILL.md +9 -0
  3494. package/dist/agents/skills/gemini-cli/detect-doc-drift/skill.yaml +2 -0
  3495. package/dist/agents/skills/gemini-cli/drizzle-filtering-pattern/SKILL.md +185 -0
  3496. package/dist/agents/skills/gemini-cli/drizzle-filtering-pattern/skill.yaml +43 -0
  3497. package/dist/agents/skills/gemini-cli/drizzle-migrations/SKILL.md +139 -0
  3498. package/dist/agents/skills/gemini-cli/drizzle-migrations/skill.yaml +39 -0
  3499. package/dist/agents/skills/gemini-cli/drizzle-performance-patterns/SKILL.md +176 -0
  3500. package/dist/agents/skills/gemini-cli/drizzle-performance-patterns/skill.yaml +42 -0
  3501. package/dist/agents/skills/gemini-cli/drizzle-query-builder/SKILL.md +206 -0
  3502. package/dist/agents/skills/gemini-cli/drizzle-query-builder/skill.yaml +44 -0
  3503. package/dist/agents/skills/gemini-cli/drizzle-raw-sql/SKILL.md +157 -0
  3504. package/dist/agents/skills/gemini-cli/drizzle-raw-sql/skill.yaml +39 -0
  3505. package/dist/agents/skills/gemini-cli/drizzle-relations-pattern/SKILL.md +179 -0
  3506. package/dist/agents/skills/gemini-cli/drizzle-relations-pattern/skill.yaml +41 -0
  3507. package/dist/agents/skills/gemini-cli/drizzle-schema-definition/SKILL.md +151 -0
  3508. package/dist/agents/skills/gemini-cli/drizzle-schema-definition/skill.yaml +46 -0
  3509. package/dist/agents/skills/gemini-cli/drizzle-transactions/SKILL.md +146 -0
  3510. package/dist/agents/skills/gemini-cli/drizzle-transactions/skill.yaml +39 -0
  3511. package/dist/agents/skills/gemini-cli/drizzle-with-nextjs/SKILL.md +199 -0
  3512. package/dist/agents/skills/gemini-cli/drizzle-with-nextjs/skill.yaml +43 -0
  3513. package/dist/agents/skills/gemini-cli/enforce-architecture/SKILL.md +5 -15
  3514. package/dist/agents/skills/gemini-cli/enforce-architecture/skill.yaml +2 -0
  3515. package/dist/agents/skills/gemini-cli/events-event-schema/SKILL.md +180 -0
  3516. package/dist/agents/skills/gemini-cli/events-event-schema/skill.yaml +44 -0
  3517. package/dist/agents/skills/gemini-cli/events-event-storming/SKILL.md +199 -0
  3518. package/dist/agents/skills/gemini-cli/events-event-storming/skill.yaml +44 -0
  3519. package/dist/agents/skills/gemini-cli/events-idempotency/SKILL.md +188 -0
  3520. package/dist/agents/skills/gemini-cli/events-idempotency/skill.yaml +43 -0
  3521. package/dist/agents/skills/gemini-cli/events-kafka-patterns/SKILL.md +190 -0
  3522. package/dist/agents/skills/gemini-cli/events-kafka-patterns/skill.yaml +44 -0
  3523. package/dist/agents/skills/gemini-cli/events-message-queue/SKILL.md +190 -0
  3524. package/dist/agents/skills/gemini-cli/events-message-queue/skill.yaml +43 -0
  3525. package/dist/agents/skills/gemini-cli/events-outbox-pattern/SKILL.md +212 -0
  3526. package/dist/agents/skills/gemini-cli/events-outbox-pattern/skill.yaml +43 -0
  3527. package/dist/agents/skills/gemini-cli/events-pubsub-pattern/SKILL.md +158 -0
  3528. package/dist/agents/skills/gemini-cli/events-pubsub-pattern/skill.yaml +44 -0
  3529. package/dist/agents/skills/gemini-cli/events-redis-pubsub/SKILL.md +183 -0
  3530. package/dist/agents/skills/gemini-cli/events-redis-pubsub/skill.yaml +42 -0
  3531. package/dist/agents/skills/gemini-cli/events-saga-choreography/SKILL.md +177 -0
  3532. package/dist/agents/skills/gemini-cli/events-saga-choreography/skill.yaml +43 -0
  3533. package/dist/agents/skills/gemini-cli/events-sse-pattern/SKILL.md +221 -0
  3534. package/dist/agents/skills/gemini-cli/events-sse-pattern/skill.yaml +42 -0
  3535. package/dist/agents/skills/gemini-cli/events-webhooks-pattern/SKILL.md +214 -0
  3536. package/dist/agents/skills/gemini-cli/events-webhooks-pattern/skill.yaml +43 -0
  3537. package/dist/agents/skills/gemini-cli/events-websocket-pattern/SKILL.md +252 -0
  3538. package/dist/agents/skills/gemini-cli/events-websocket-pattern/skill.yaml +43 -0
  3539. package/dist/agents/skills/gemini-cli/gof-abstract-factory/SKILL.md +193 -0
  3540. package/dist/agents/skills/gemini-cli/gof-abstract-factory/skill.yaml +35 -0
  3541. package/dist/agents/skills/gemini-cli/gof-adapter-pattern/SKILL.md +157 -0
  3542. package/dist/agents/skills/gemini-cli/gof-adapter-pattern/skill.yaml +36 -0
  3543. package/dist/agents/skills/gemini-cli/gof-bridge-pattern/SKILL.md +183 -0
  3544. package/dist/agents/skills/gemini-cli/gof-bridge-pattern/skill.yaml +35 -0
  3545. package/dist/agents/skills/gemini-cli/gof-builder-pattern/SKILL.md +236 -0
  3546. package/dist/agents/skills/gemini-cli/gof-builder-pattern/skill.yaml +35 -0
  3547. package/dist/agents/skills/gemini-cli/gof-chain-of-responsibility/SKILL.md +199 -0
  3548. package/dist/agents/skills/gemini-cli/gof-chain-of-responsibility/skill.yaml +35 -0
  3549. package/dist/agents/skills/gemini-cli/gof-command-pattern/SKILL.md +197 -0
  3550. package/dist/agents/skills/gemini-cli/gof-command-pattern/skill.yaml +35 -0
  3551. package/dist/agents/skills/gemini-cli/gof-composite-pattern/SKILL.md +188 -0
  3552. package/dist/agents/skills/gemini-cli/gof-composite-pattern/skill.yaml +35 -0
  3553. package/dist/agents/skills/gemini-cli/gof-decorator-pattern/SKILL.md +177 -0
  3554. package/dist/agents/skills/gemini-cli/gof-decorator-pattern/skill.yaml +36 -0
  3555. package/dist/agents/skills/gemini-cli/gof-facade-pattern/SKILL.md +143 -0
  3556. package/dist/agents/skills/gemini-cli/gof-facade-pattern/skill.yaml +35 -0
  3557. package/dist/agents/skills/gemini-cli/gof-factory-method/SKILL.md +148 -0
  3558. package/dist/agents/skills/gemini-cli/gof-factory-method/skill.yaml +36 -0
  3559. package/dist/agents/skills/gemini-cli/gof-flyweight-pattern/SKILL.md +160 -0
  3560. package/dist/agents/skills/gemini-cli/gof-flyweight-pattern/skill.yaml +35 -0
  3561. package/dist/agents/skills/gemini-cli/gof-iterator-pattern/SKILL.md +177 -0
  3562. package/dist/agents/skills/gemini-cli/gof-iterator-pattern/skill.yaml +35 -0
  3563. package/dist/agents/skills/gemini-cli/gof-mediator-pattern/SKILL.md +171 -0
  3564. package/dist/agents/skills/gemini-cli/gof-mediator-pattern/skill.yaml +35 -0
  3565. package/dist/agents/skills/gemini-cli/gof-memento-pattern/SKILL.md +207 -0
  3566. package/dist/agents/skills/gemini-cli/gof-memento-pattern/skill.yaml +34 -0
  3567. package/dist/agents/skills/gemini-cli/gof-null-object/SKILL.md +177 -0
  3568. package/dist/agents/skills/gemini-cli/gof-null-object/skill.yaml +35 -0
  3569. package/dist/agents/skills/gemini-cli/gof-observer-pattern/SKILL.md +175 -0
  3570. package/dist/agents/skills/gemini-cli/gof-observer-pattern/skill.yaml +37 -0
  3571. package/dist/agents/skills/gemini-cli/gof-prototype-pattern/SKILL.md +162 -0
  3572. package/dist/agents/skills/gemini-cli/gof-prototype-pattern/skill.yaml +35 -0
  3573. package/dist/agents/skills/gemini-cli/gof-proxy-pattern/SKILL.md +184 -0
  3574. package/dist/agents/skills/gemini-cli/gof-proxy-pattern/skill.yaml +36 -0
  3575. package/dist/agents/skills/gemini-cli/gof-singleton/SKILL.md +149 -0
  3576. package/dist/agents/skills/gemini-cli/gof-singleton/skill.yaml +35 -0
  3577. package/dist/agents/skills/gemini-cli/gof-state-pattern/SKILL.md +220 -0
  3578. package/dist/agents/skills/gemini-cli/gof-state-pattern/skill.yaml +35 -0
  3579. package/dist/agents/skills/gemini-cli/gof-strategy-pattern/SKILL.md +179 -0
  3580. package/dist/agents/skills/gemini-cli/gof-strategy-pattern/skill.yaml +35 -0
  3581. package/dist/agents/skills/gemini-cli/gof-template-method/SKILL.md +189 -0
  3582. package/dist/agents/skills/gemini-cli/gof-template-method/skill.yaml +35 -0
  3583. package/dist/agents/skills/gemini-cli/gof-visitor-pattern/SKILL.md +205 -0
  3584. package/dist/agents/skills/gemini-cli/gof-visitor-pattern/skill.yaml +34 -0
  3585. package/dist/agents/skills/gemini-cli/graphql-apollo-server/SKILL.md +169 -0
  3586. package/dist/agents/skills/gemini-cli/graphql-apollo-server/skill.yaml +41 -0
  3587. package/dist/agents/skills/gemini-cli/graphql-auth-patterns/SKILL.md +197 -0
  3588. package/dist/agents/skills/gemini-cli/graphql-auth-patterns/skill.yaml +42 -0
  3589. package/dist/agents/skills/gemini-cli/graphql-client-patterns/SKILL.md +152 -0
  3590. package/dist/agents/skills/gemini-cli/graphql-client-patterns/skill.yaml +41 -0
  3591. package/dist/agents/skills/gemini-cli/graphql-codegen-pattern/SKILL.md +154 -0
  3592. package/dist/agents/skills/gemini-cli/graphql-codegen-pattern/skill.yaml +39 -0
  3593. package/dist/agents/skills/gemini-cli/graphql-dataloader-pattern/SKILL.md +138 -0
  3594. package/dist/agents/skills/gemini-cli/graphql-dataloader-pattern/skill.yaml +38 -0
  3595. package/dist/agents/skills/gemini-cli/graphql-error-handling/SKILL.md +167 -0
  3596. package/dist/agents/skills/gemini-cli/graphql-error-handling/skill.yaml +39 -0
  3597. package/dist/agents/skills/gemini-cli/graphql-federation-pattern/SKILL.md +137 -0
  3598. package/dist/agents/skills/gemini-cli/graphql-federation-pattern/skill.yaml +41 -0
  3599. package/dist/agents/skills/gemini-cli/graphql-pagination-patterns/SKILL.md +175 -0
  3600. package/dist/agents/skills/gemini-cli/graphql-pagination-patterns/skill.yaml +40 -0
  3601. package/dist/agents/skills/gemini-cli/graphql-performance-patterns/SKILL.md +166 -0
  3602. package/dist/agents/skills/gemini-cli/graphql-performance-patterns/skill.yaml +39 -0
  3603. package/dist/agents/skills/gemini-cli/graphql-resolver-pattern/SKILL.md +129 -0
  3604. package/dist/agents/skills/gemini-cli/graphql-resolver-pattern/skill.yaml +39 -0
  3605. package/dist/agents/skills/gemini-cli/graphql-schema-design/SKILL.md +145 -0
  3606. package/dist/agents/skills/gemini-cli/graphql-schema-design/skill.yaml +41 -0
  3607. package/dist/agents/skills/gemini-cli/graphql-subscriptions/SKILL.md +198 -0
  3608. package/dist/agents/skills/gemini-cli/graphql-subscriptions/skill.yaml +39 -0
  3609. package/dist/agents/skills/gemini-cli/harness-accessibility/SKILL.md +10 -0
  3610. package/dist/agents/skills/gemini-cli/harness-accessibility/skill.yaml +2 -0
  3611. package/dist/agents/skills/gemini-cli/harness-api-design/SKILL.md +5 -15
  3612. package/dist/agents/skills/gemini-cli/harness-api-design/skill.yaml +7 -0
  3613. package/dist/agents/skills/gemini-cli/harness-architecture-advisor/SKILL.md +5 -15
  3614. package/dist/agents/skills/gemini-cli/harness-architecture-advisor/skill.yaml +2 -0
  3615. package/dist/agents/skills/gemini-cli/harness-auth/SKILL.md +5 -15
  3616. package/dist/agents/skills/gemini-cli/harness-auth/skill.yaml +6 -0
  3617. package/dist/agents/skills/gemini-cli/harness-autopilot/SKILL.md +10 -0
  3618. package/dist/agents/skills/gemini-cli/harness-autopilot/skill.yaml +2 -0
  3619. package/dist/agents/skills/gemini-cli/harness-brainstorming/SKILL.md +9 -0
  3620. package/dist/agents/skills/gemini-cli/harness-brainstorming/skill.yaml +2 -0
  3621. package/dist/agents/skills/gemini-cli/harness-caching/SKILL.md +10 -0
  3622. package/dist/agents/skills/gemini-cli/harness-caching/skill.yaml +5 -0
  3623. package/dist/agents/skills/gemini-cli/harness-chaos/SKILL.md +10 -0
  3624. package/dist/agents/skills/gemini-cli/harness-chaos/skill.yaml +2 -0
  3625. package/dist/agents/skills/gemini-cli/harness-code-review/SKILL.md +5 -15
  3626. package/dist/agents/skills/gemini-cli/harness-code-review/skill.yaml +2 -0
  3627. package/dist/agents/skills/gemini-cli/harness-codebase-cleanup/SKILL.md +11 -0
  3628. package/dist/agents/skills/gemini-cli/harness-codebase-cleanup/skill.yaml +2 -0
  3629. package/dist/agents/skills/gemini-cli/harness-compliance/SKILL.md +10 -0
  3630. package/dist/agents/skills/gemini-cli/harness-compliance/skill.yaml +2 -0
  3631. package/dist/agents/skills/gemini-cli/harness-containerization/SKILL.md +10 -0
  3632. package/dist/agents/skills/gemini-cli/harness-containerization/skill.yaml +7 -0
  3633. package/dist/agents/skills/gemini-cli/harness-data-pipeline/SKILL.md +10 -0
  3634. package/dist/agents/skills/gemini-cli/harness-data-pipeline/skill.yaml +2 -0
  3635. package/dist/agents/skills/gemini-cli/harness-data-validation/SKILL.md +10 -0
  3636. package/dist/agents/skills/gemini-cli/harness-data-validation/skill.yaml +7 -0
  3637. package/dist/agents/skills/gemini-cli/harness-database/SKILL.md +5 -15
  3638. package/dist/agents/skills/gemini-cli/harness-database/skill.yaml +14 -0
  3639. package/dist/agents/skills/gemini-cli/harness-debugging/SKILL.md +9 -0
  3640. package/dist/agents/skills/gemini-cli/harness-debugging/skill.yaml +2 -0
  3641. package/dist/agents/skills/gemini-cli/harness-dependency-health/SKILL.md +10 -0
  3642. package/dist/agents/skills/gemini-cli/harness-dependency-health/skill.yaml +2 -0
  3643. package/dist/agents/skills/gemini-cli/harness-deployment/SKILL.md +5 -15
  3644. package/dist/agents/skills/gemini-cli/harness-deployment/skill.yaml +2 -0
  3645. package/dist/agents/skills/gemini-cli/harness-design/SKILL.md +10 -0
  3646. package/dist/agents/skills/gemini-cli/harness-design/skill.yaml +8 -0
  3647. package/dist/agents/skills/gemini-cli/harness-design-mobile/SKILL.md +10 -0
  3648. package/dist/agents/skills/gemini-cli/harness-design-mobile/skill.yaml +2 -0
  3649. package/dist/agents/skills/gemini-cli/harness-design-system/SKILL.md +10 -0
  3650. package/dist/agents/skills/gemini-cli/harness-design-system/skill.yaml +9 -0
  3651. package/dist/agents/skills/gemini-cli/harness-design-web/SKILL.md +10 -0
  3652. package/dist/agents/skills/gemini-cli/harness-design-web/skill.yaml +7 -0
  3653. package/dist/agents/skills/gemini-cli/harness-diagnostics/SKILL.md +9 -0
  3654. package/dist/agents/skills/gemini-cli/harness-diagnostics/skill.yaml +2 -0
  3655. package/dist/agents/skills/gemini-cli/harness-docs-pipeline/SKILL.md +11 -0
  3656. package/dist/agents/skills/gemini-cli/harness-docs-pipeline/skill.yaml +2 -0
  3657. package/dist/agents/skills/gemini-cli/harness-dx/SKILL.md +10 -0
  3658. package/dist/agents/skills/gemini-cli/harness-dx/skill.yaml +2 -0
  3659. package/dist/agents/skills/gemini-cli/harness-e2e/SKILL.md +9 -0
  3660. package/dist/agents/skills/gemini-cli/harness-e2e/skill.yaml +14 -0
  3661. package/dist/agents/skills/gemini-cli/harness-event-driven/SKILL.md +10 -0
  3662. package/dist/agents/skills/gemini-cli/harness-event-driven/skill.yaml +7 -0
  3663. package/dist/agents/skills/gemini-cli/harness-execution/SKILL.md +9 -0
  3664. package/dist/agents/skills/gemini-cli/harness-execution/skill.yaml +2 -0
  3665. package/dist/agents/skills/gemini-cli/harness-feature-flags/SKILL.md +10 -0
  3666. package/dist/agents/skills/gemini-cli/harness-feature-flags/skill.yaml +2 -0
  3667. package/dist/agents/skills/gemini-cli/harness-git-workflow/SKILL.md +10 -0
  3668. package/dist/agents/skills/gemini-cli/harness-git-workflow/skill.yaml +2 -0
  3669. package/dist/agents/skills/gemini-cli/harness-hotspot-detector/SKILL.md +10 -0
  3670. package/dist/agents/skills/gemini-cli/harness-hotspot-detector/skill.yaml +2 -0
  3671. package/dist/agents/skills/gemini-cli/harness-i18n/SKILL.md +10 -0
  3672. package/dist/agents/skills/gemini-cli/harness-i18n/skill.yaml +2 -0
  3673. package/dist/agents/skills/gemini-cli/harness-i18n-process/SKILL.md +10 -0
  3674. package/dist/agents/skills/gemini-cli/harness-i18n-process/skill.yaml +2 -0
  3675. package/dist/agents/skills/gemini-cli/harness-i18n-workflow/SKILL.md +10 -0
  3676. package/dist/agents/skills/gemini-cli/harness-i18n-workflow/skill.yaml +2 -0
  3677. package/dist/agents/skills/gemini-cli/harness-impact-analysis/SKILL.md +10 -0
  3678. package/dist/agents/skills/gemini-cli/harness-impact-analysis/skill.yaml +2 -0
  3679. package/dist/agents/skills/gemini-cli/harness-incident-response/SKILL.md +10 -0
  3680. package/dist/agents/skills/gemini-cli/harness-incident-response/skill.yaml +2 -0
  3681. package/dist/agents/skills/gemini-cli/harness-infrastructure-as-code/SKILL.md +10 -0
  3682. package/dist/agents/skills/gemini-cli/harness-infrastructure-as-code/skill.yaml +9 -0
  3683. package/dist/agents/skills/gemini-cli/harness-integration-test/SKILL.md +9 -0
  3684. package/dist/agents/skills/gemini-cli/harness-integration-test/skill.yaml +2 -0
  3685. package/dist/agents/skills/gemini-cli/harness-integrity/SKILL.md +10 -0
  3686. package/dist/agents/skills/gemini-cli/harness-integrity/skill.yaml +2 -0
  3687. package/dist/agents/skills/gemini-cli/harness-knowledge-mapper/SKILL.md +9 -0
  3688. package/dist/agents/skills/gemini-cli/harness-knowledge-mapper/skill.yaml +2 -0
  3689. package/dist/agents/skills/gemini-cli/harness-load-testing/SKILL.md +10 -0
  3690. package/dist/agents/skills/gemini-cli/harness-load-testing/skill.yaml +2 -0
  3691. package/dist/agents/skills/gemini-cli/harness-ml-ops/SKILL.md +10 -0
  3692. package/dist/agents/skills/gemini-cli/harness-ml-ops/skill.yaml +5 -0
  3693. package/dist/agents/skills/gemini-cli/harness-mobile-patterns/SKILL.md +10 -0
  3694. package/dist/agents/skills/gemini-cli/harness-mobile-patterns/skill.yaml +12 -0
  3695. package/dist/agents/skills/gemini-cli/harness-mutation-test/SKILL.md +9 -0
  3696. package/dist/agents/skills/gemini-cli/harness-mutation-test/skill.yaml +2 -0
  3697. package/dist/agents/skills/gemini-cli/harness-observability/SKILL.md +10 -0
  3698. package/dist/agents/skills/gemini-cli/harness-observability/skill.yaml +7 -0
  3699. package/dist/agents/skills/gemini-cli/harness-onboarding/SKILL.md +18 -10
  3700. package/dist/agents/skills/gemini-cli/harness-onboarding/skill.yaml +2 -0
  3701. package/dist/agents/skills/gemini-cli/harness-parallel-agents/SKILL.md +9 -0
  3702. package/dist/agents/skills/gemini-cli/harness-parallel-agents/skill.yaml +2 -0
  3703. package/dist/agents/skills/gemini-cli/harness-perf/SKILL.md +11 -0
  3704. package/dist/agents/skills/gemini-cli/harness-perf/skill.yaml +2 -0
  3705. package/dist/agents/skills/gemini-cli/harness-perf-tdd/SKILL.md +10 -0
  3706. package/dist/agents/skills/gemini-cli/harness-perf-tdd/skill.yaml +2 -0
  3707. package/dist/agents/skills/gemini-cli/harness-planning/SKILL.md +10 -0
  3708. package/dist/agents/skills/gemini-cli/harness-planning/skill.yaml +2 -0
  3709. package/dist/agents/skills/gemini-cli/harness-pre-commit-review/SKILL.md +9 -0
  3710. package/dist/agents/skills/gemini-cli/harness-pre-commit-review/skill.yaml +1 -1
  3711. package/dist/agents/skills/gemini-cli/harness-product-spec/SKILL.md +10 -0
  3712. package/dist/agents/skills/gemini-cli/harness-product-spec/skill.yaml +2 -0
  3713. package/dist/agents/skills/gemini-cli/harness-property-test/SKILL.md +10 -0
  3714. package/dist/agents/skills/gemini-cli/harness-property-test/skill.yaml +2 -0
  3715. package/dist/agents/skills/gemini-cli/harness-refactoring/SKILL.md +9 -0
  3716. package/dist/agents/skills/gemini-cli/harness-refactoring/skill.yaml +7 -0
  3717. package/dist/agents/skills/gemini-cli/harness-release-readiness/SKILL.md +27 -0
  3718. package/dist/agents/skills/gemini-cli/harness-release-readiness/skill.yaml +2 -0
  3719. package/dist/agents/skills/gemini-cli/harness-resilience/SKILL.md +10 -0
  3720. package/dist/agents/skills/gemini-cli/harness-resilience/skill.yaml +7 -0
  3721. package/dist/agents/skills/gemini-cli/harness-roadmap/SKILL.md +10 -1
  3722. package/dist/agents/skills/gemini-cli/harness-roadmap/skill.yaml +2 -0
  3723. package/dist/agents/skills/gemini-cli/harness-roadmap-pilot/SKILL.md +8 -0
  3724. package/dist/agents/skills/gemini-cli/harness-roadmap-pilot/skill.yaml +2 -0
  3725. package/dist/agents/skills/gemini-cli/harness-router/SKILL.md +208 -0
  3726. package/dist/agents/skills/gemini-cli/harness-router/skill.yaml +46 -0
  3727. package/dist/agents/skills/gemini-cli/harness-secrets/SKILL.md +10 -0
  3728. package/dist/agents/skills/gemini-cli/harness-secrets/skill.yaml +2 -0
  3729. package/dist/agents/skills/gemini-cli/harness-security-review/SKILL.md +10 -0
  3730. package/dist/agents/skills/gemini-cli/harness-security-review/skill.yaml +7 -0
  3731. package/dist/agents/skills/gemini-cli/harness-security-scan/SKILL.md +5 -15
  3732. package/dist/agents/skills/gemini-cli/harness-security-scan/skill.yaml +2 -0
  3733. package/dist/agents/skills/gemini-cli/harness-skill-authoring/SKILL.md +147 -1
  3734. package/dist/agents/skills/gemini-cli/harness-skill-authoring/skill.yaml +2 -0
  3735. package/dist/agents/skills/gemini-cli/harness-soundness-review/SKILL.md +10 -0
  3736. package/dist/agents/skills/gemini-cli/harness-soundness-review/skill.yaml +2 -0
  3737. package/dist/agents/skills/gemini-cli/harness-sql-review/SKILL.md +10 -0
  3738. package/dist/agents/skills/gemini-cli/harness-sql-review/skill.yaml +9 -0
  3739. package/dist/agents/skills/gemini-cli/harness-state-management/SKILL.md +10 -0
  3740. package/dist/agents/skills/gemini-cli/harness-state-management/skill.yaml +7 -0
  3741. package/dist/agents/skills/gemini-cli/harness-supply-chain-audit/SKILL.md +10 -0
  3742. package/dist/agents/skills/gemini-cli/harness-supply-chain-audit/skill.yaml +2 -0
  3743. package/dist/agents/skills/gemini-cli/harness-tdd/SKILL.md +9 -0
  3744. package/dist/agents/skills/gemini-cli/harness-tdd/skill.yaml +7 -0
  3745. package/dist/agents/skills/gemini-cli/harness-test-advisor/SKILL.md +10 -0
  3746. package/dist/agents/skills/gemini-cli/harness-test-advisor/skill.yaml +2 -0
  3747. package/dist/agents/skills/gemini-cli/harness-test-data/SKILL.md +10 -0
  3748. package/dist/agents/skills/gemini-cli/harness-test-data/skill.yaml +2 -0
  3749. package/dist/agents/skills/gemini-cli/harness-ux-copy/SKILL.md +10 -0
  3750. package/dist/agents/skills/gemini-cli/harness-ux-copy/skill.yaml +2 -0
  3751. package/dist/agents/skills/gemini-cli/harness-verification/SKILL.md +9 -0
  3752. package/dist/agents/skills/gemini-cli/harness-verification/skill.yaml +2 -0
  3753. package/dist/agents/skills/gemini-cli/harness-verify/SKILL.md +10 -0
  3754. package/dist/agents/skills/gemini-cli/harness-verify/skill.yaml +2 -0
  3755. package/dist/agents/skills/gemini-cli/harness-visual-regression/SKILL.md +10 -0
  3756. package/dist/agents/skills/gemini-cli/harness-visual-regression/skill.yaml +6 -0
  3757. package/dist/agents/skills/gemini-cli/initialize-harness-project/SKILL.md +22 -13
  3758. package/dist/agents/skills/gemini-cli/initialize-harness-project/skill.yaml +2 -0
  3759. package/dist/agents/skills/gemini-cli/js-abstract-factory-pattern/SKILL.md +79 -0
  3760. package/dist/agents/skills/gemini-cli/js-abstract-factory-pattern/skill.yaml +35 -0
  3761. package/dist/agents/skills/gemini-cli/js-adapter-pattern/SKILL.md +77 -0
  3762. package/dist/agents/skills/gemini-cli/js-adapter-pattern/skill.yaml +35 -0
  3763. package/dist/agents/skills/gemini-cli/js-bridge-pattern/SKILL.md +90 -0
  3764. package/dist/agents/skills/gemini-cli/js-bridge-pattern/skill.yaml +35 -0
  3765. package/dist/agents/skills/gemini-cli/js-chain-of-responsibility-pattern/SKILL.md +81 -0
  3766. package/dist/agents/skills/gemini-cli/js-chain-of-responsibility-pattern/skill.yaml +35 -0
  3767. package/dist/agents/skills/gemini-cli/js-command-pattern/SKILL.md +81 -0
  3768. package/dist/agents/skills/gemini-cli/js-command-pattern/skill.yaml +36 -0
  3769. package/dist/agents/skills/gemini-cli/js-composite-pattern/SKILL.md +83 -0
  3770. package/dist/agents/skills/gemini-cli/js-composite-pattern/skill.yaml +35 -0
  3771. package/dist/agents/skills/gemini-cli/js-constructor-pattern/SKILL.md +78 -0
  3772. package/dist/agents/skills/gemini-cli/js-constructor-pattern/skill.yaml +36 -0
  3773. package/dist/agents/skills/gemini-cli/js-decorator-pattern/SKILL.md +73 -0
  3774. package/dist/agents/skills/gemini-cli/js-decorator-pattern/skill.yaml +35 -0
  3775. package/dist/agents/skills/gemini-cli/js-dynamic-import/SKILL.md +70 -0
  3776. package/dist/agents/skills/gemini-cli/js-dynamic-import/skill.yaml +36 -0
  3777. package/dist/agents/skills/gemini-cli/js-facade-pattern/SKILL.md +73 -0
  3778. package/dist/agents/skills/gemini-cli/js-facade-pattern/skill.yaml +35 -0
  3779. package/dist/agents/skills/gemini-cli/js-factory-pattern/SKILL.md +74 -0
  3780. package/dist/agents/skills/gemini-cli/js-factory-pattern/skill.yaml +35 -0
  3781. package/dist/agents/skills/gemini-cli/js-flyweight-pattern/SKILL.md +79 -0
  3782. package/dist/agents/skills/gemini-cli/js-flyweight-pattern/skill.yaml +36 -0
  3783. package/dist/agents/skills/gemini-cli/js-iterator-pattern/SKILL.md +78 -0
  3784. package/dist/agents/skills/gemini-cli/js-iterator-pattern/skill.yaml +36 -0
  3785. package/dist/agents/skills/gemini-cli/js-mediator-middleware-pattern/SKILL.md +92 -0
  3786. package/dist/agents/skills/gemini-cli/js-mediator-middleware-pattern/skill.yaml +36 -0
  3787. package/dist/agents/skills/gemini-cli/js-mixin-pattern/SKILL.md +85 -0
  3788. package/dist/agents/skills/gemini-cli/js-mixin-pattern/skill.yaml +35 -0
  3789. package/dist/agents/skills/gemini-cli/js-module-pattern/SKILL.md +75 -0
  3790. package/dist/agents/skills/gemini-cli/js-module-pattern/skill.yaml +36 -0
  3791. package/dist/agents/skills/gemini-cli/js-observer-pattern/SKILL.md +81 -0
  3792. package/dist/agents/skills/gemini-cli/js-observer-pattern/skill.yaml +36 -0
  3793. package/dist/agents/skills/gemini-cli/js-prototype-pattern/SKILL.md +70 -0
  3794. package/dist/agents/skills/gemini-cli/js-prototype-pattern/skill.yaml +35 -0
  3795. package/dist/agents/skills/gemini-cli/js-provider-pattern/SKILL.md +67 -0
  3796. package/dist/agents/skills/gemini-cli/js-provider-pattern/skill.yaml +35 -0
  3797. package/dist/agents/skills/gemini-cli/js-proxy-pattern/SKILL.md +79 -0
  3798. package/dist/agents/skills/gemini-cli/js-proxy-pattern/skill.yaml +36 -0
  3799. package/dist/agents/skills/gemini-cli/js-revealing-module-pattern/SKILL.md +77 -0
  3800. package/dist/agents/skills/gemini-cli/js-revealing-module-pattern/skill.yaml +35 -0
  3801. package/dist/agents/skills/gemini-cli/js-singleton-pattern/SKILL.md +80 -0
  3802. package/dist/agents/skills/gemini-cli/js-singleton-pattern/skill.yaml +35 -0
  3803. package/dist/agents/skills/gemini-cli/js-state-pattern/SKILL.md +90 -0
  3804. package/dist/agents/skills/gemini-cli/js-state-pattern/skill.yaml +35 -0
  3805. package/dist/agents/skills/gemini-cli/js-static-import/SKILL.md +63 -0
  3806. package/dist/agents/skills/gemini-cli/js-static-import/skill.yaml +36 -0
  3807. package/dist/agents/skills/gemini-cli/js-strategy-pattern/SKILL.md +71 -0
  3808. package/dist/agents/skills/gemini-cli/js-strategy-pattern/skill.yaml +35 -0
  3809. package/dist/agents/skills/gemini-cli/js-template-method-pattern/SKILL.md +80 -0
  3810. package/dist/agents/skills/gemini-cli/js-template-method-pattern/skill.yaml +35 -0
  3811. package/dist/agents/skills/gemini-cli/js-visitor-pattern/SKILL.md +85 -0
  3812. package/dist/agents/skills/gemini-cli/js-visitor-pattern/skill.yaml +35 -0
  3813. package/dist/agents/skills/gemini-cli/microservices-api-gateway/SKILL.md +211 -0
  3814. package/dist/agents/skills/gemini-cli/microservices-api-gateway/skill.yaml +40 -0
  3815. package/dist/agents/skills/gemini-cli/microservices-bulkhead-pattern/SKILL.md +215 -0
  3816. package/dist/agents/skills/gemini-cli/microservices-bulkhead-pattern/skill.yaml +39 -0
  3817. package/dist/agents/skills/gemini-cli/microservices-circuit-breaker/SKILL.md +208 -0
  3818. package/dist/agents/skills/gemini-cli/microservices-circuit-breaker/skill.yaml +39 -0
  3819. package/dist/agents/skills/gemini-cli/microservices-config-server/SKILL.md +231 -0
  3820. package/dist/agents/skills/gemini-cli/microservices-config-server/skill.yaml +38 -0
  3821. package/dist/agents/skills/gemini-cli/microservices-cqrs-pattern/SKILL.md +236 -0
  3822. package/dist/agents/skills/gemini-cli/microservices-cqrs-pattern/skill.yaml +39 -0
  3823. package/dist/agents/skills/gemini-cli/microservices-decomposition/SKILL.md +172 -0
  3824. package/dist/agents/skills/gemini-cli/microservices-decomposition/skill.yaml +39 -0
  3825. package/dist/agents/skills/gemini-cli/microservices-distributed-tracing/SKILL.md +222 -0
  3826. package/dist/agents/skills/gemini-cli/microservices-distributed-tracing/skill.yaml +39 -0
  3827. package/dist/agents/skills/gemini-cli/microservices-event-sourcing/SKILL.md +268 -0
  3828. package/dist/agents/skills/gemini-cli/microservices-event-sourcing/skill.yaml +41 -0
  3829. package/dist/agents/skills/gemini-cli/microservices-health-check/SKILL.md +212 -0
  3830. package/dist/agents/skills/gemini-cli/microservices-health-check/skill.yaml +40 -0
  3831. package/dist/agents/skills/gemini-cli/microservices-outbox-pattern/SKILL.md +252 -0
  3832. package/dist/agents/skills/gemini-cli/microservices-outbox-pattern/skill.yaml +40 -0
  3833. package/dist/agents/skills/gemini-cli/microservices-saga-pattern/SKILL.md +196 -0
  3834. package/dist/agents/skills/gemini-cli/microservices-saga-pattern/skill.yaml +40 -0
  3835. package/dist/agents/skills/gemini-cli/microservices-service-discovery/SKILL.md +186 -0
  3836. package/dist/agents/skills/gemini-cli/microservices-service-discovery/skill.yaml +39 -0
  3837. package/dist/agents/skills/gemini-cli/microservices-sidecar-pattern/SKILL.md +187 -0
  3838. package/dist/agents/skills/gemini-cli/microservices-sidecar-pattern/skill.yaml +39 -0
  3839. package/dist/agents/skills/gemini-cli/microservices-strangler-fig/SKILL.md +204 -0
  3840. package/dist/agents/skills/gemini-cli/microservices-strangler-fig/skill.yaml +41 -0
  3841. package/dist/agents/skills/gemini-cli/mobile-animation-patterns/SKILL.md +199 -0
  3842. package/dist/agents/skills/gemini-cli/mobile-animation-patterns/skill.yaml +40 -0
  3843. package/dist/agents/skills/gemini-cli/mobile-deployment-patterns/SKILL.md +262 -0
  3844. package/dist/agents/skills/gemini-cli/mobile-deployment-patterns/skill.yaml +41 -0
  3845. package/dist/agents/skills/gemini-cli/mobile-expo-setup/SKILL.md +194 -0
  3846. package/dist/agents/skills/gemini-cli/mobile-expo-setup/skill.yaml +40 -0
  3847. package/dist/agents/skills/gemini-cli/mobile-flatlist-patterns/SKILL.md +192 -0
  3848. package/dist/agents/skills/gemini-cli/mobile-flatlist-patterns/skill.yaml +39 -0
  3849. package/dist/agents/skills/gemini-cli/mobile-gesture-handling/SKILL.md +207 -0
  3850. package/dist/agents/skills/gemini-cli/mobile-gesture-handling/skill.yaml +40 -0
  3851. package/dist/agents/skills/gemini-cli/mobile-native-modules/SKILL.md +187 -0
  3852. package/dist/agents/skills/gemini-cli/mobile-native-modules/skill.yaml +40 -0
  3853. package/dist/agents/skills/gemini-cli/mobile-navigation-pattern/SKILL.md +227 -0
  3854. package/dist/agents/skills/gemini-cli/mobile-navigation-pattern/skill.yaml +42 -0
  3855. package/dist/agents/skills/gemini-cli/mobile-network-patterns/SKILL.md +274 -0
  3856. package/dist/agents/skills/gemini-cli/mobile-network-patterns/skill.yaml +40 -0
  3857. package/dist/agents/skills/gemini-cli/mobile-performance-patterns/SKILL.md +207 -0
  3858. package/dist/agents/skills/gemini-cli/mobile-performance-patterns/skill.yaml +40 -0
  3859. package/dist/agents/skills/gemini-cli/mobile-push-notifications/SKILL.md +235 -0
  3860. package/dist/agents/skills/gemini-cli/mobile-push-notifications/skill.yaml +40 -0
  3861. package/dist/agents/skills/gemini-cli/mobile-storage-patterns/SKILL.md +235 -0
  3862. package/dist/agents/skills/gemini-cli/mobile-storage-patterns/skill.yaml +40 -0
  3863. package/dist/agents/skills/gemini-cli/mobile-testing-patterns/SKILL.md +246 -0
  3864. package/dist/agents/skills/gemini-cli/mobile-testing-patterns/skill.yaml +41 -0
  3865. package/dist/agents/skills/gemini-cli/nestjs-config-module/SKILL.md +121 -0
  3866. package/dist/agents/skills/gemini-cli/nestjs-config-module/skill.yaml +41 -0
  3867. package/dist/agents/skills/gemini-cli/nestjs-controller-pattern/SKILL.md +93 -0
  3868. package/dist/agents/skills/gemini-cli/nestjs-controller-pattern/skill.yaml +43 -0
  3869. package/dist/agents/skills/gemini-cli/nestjs-dependency-injection/SKILL.md +97 -0
  3870. package/dist/agents/skills/gemini-cli/nestjs-dependency-injection/skill.yaml +41 -0
  3871. package/dist/agents/skills/gemini-cli/nestjs-dto-validation/SKILL.md +133 -0
  3872. package/dist/agents/skills/gemini-cli/nestjs-dto-validation/skill.yaml +42 -0
  3873. package/dist/agents/skills/gemini-cli/nestjs-event-driven/SKILL.md +123 -0
  3874. package/dist/agents/skills/gemini-cli/nestjs-event-driven/skill.yaml +43 -0
  3875. package/dist/agents/skills/gemini-cli/nestjs-exception-filters/SKILL.md +119 -0
  3876. package/dist/agents/skills/gemini-cli/nestjs-exception-filters/skill.yaml +40 -0
  3877. package/dist/agents/skills/gemini-cli/nestjs-graphql-integration/SKILL.md +132 -0
  3878. package/dist/agents/skills/gemini-cli/nestjs-graphql-integration/skill.yaml +42 -0
  3879. package/dist/agents/skills/gemini-cli/nestjs-guards-pattern/SKILL.md +101 -0
  3880. package/dist/agents/skills/gemini-cli/nestjs-guards-pattern/skill.yaml +41 -0
  3881. package/dist/agents/skills/gemini-cli/nestjs-interceptors-pattern/SKILL.md +106 -0
  3882. package/dist/agents/skills/gemini-cli/nestjs-interceptors-pattern/skill.yaml +41 -0
  3883. package/dist/agents/skills/gemini-cli/nestjs-microservices/SKILL.md +132 -0
  3884. package/dist/agents/skills/gemini-cli/nestjs-microservices/skill.yaml +42 -0
  3885. package/dist/agents/skills/gemini-cli/nestjs-middleware-pattern/SKILL.md +104 -0
  3886. package/dist/agents/skills/gemini-cli/nestjs-middleware-pattern/skill.yaml +39 -0
  3887. package/dist/agents/skills/gemini-cli/nestjs-module-pattern/SKILL.md +89 -0
  3888. package/dist/agents/skills/gemini-cli/nestjs-module-pattern/skill.yaml +42 -0
  3889. package/dist/agents/skills/gemini-cli/nestjs-pipes-pattern/SKILL.md +111 -0
  3890. package/dist/agents/skills/gemini-cli/nestjs-pipes-pattern/skill.yaml +40 -0
  3891. package/dist/agents/skills/gemini-cli/nestjs-service-pattern/SKILL.md +83 -0
  3892. package/dist/agents/skills/gemini-cli/nestjs-service-pattern/skill.yaml +39 -0
  3893. package/dist/agents/skills/gemini-cli/nestjs-swagger-integration/SKILL.md +137 -0
  3894. package/dist/agents/skills/gemini-cli/nestjs-swagger-integration/skill.yaml +40 -0
  3895. package/dist/agents/skills/gemini-cli/nestjs-testing-patterns/SKILL.md +130 -0
  3896. package/dist/agents/skills/gemini-cli/nestjs-testing-patterns/skill.yaml +42 -0
  3897. package/dist/agents/skills/gemini-cli/next-app-router/SKILL.md +77 -0
  3898. package/dist/agents/skills/gemini-cli/next-app-router/skill.yaml +44 -0
  3899. package/dist/agents/skills/gemini-cli/next-auth-patterns/SKILL.md +94 -0
  3900. package/dist/agents/skills/gemini-cli/next-auth-patterns/skill.yaml +46 -0
  3901. package/dist/agents/skills/gemini-cli/next-caching-strategies/SKILL.md +83 -0
  3902. package/dist/agents/skills/gemini-cli/next-caching-strategies/skill.yaml +43 -0
  3903. package/dist/agents/skills/gemini-cli/next-data-fetching/SKILL.md +97 -0
  3904. package/dist/agents/skills/gemini-cli/next-data-fetching/skill.yaml +44 -0
  3905. package/dist/agents/skills/gemini-cli/next-deployment-optimization/SKILL.md +92 -0
  3906. package/dist/agents/skills/gemini-cli/next-deployment-optimization/skill.yaml +42 -0
  3907. package/dist/agents/skills/gemini-cli/next-environment-config/SKILL.md +92 -0
  3908. package/dist/agents/skills/gemini-cli/next-environment-config/skill.yaml +43 -0
  3909. package/dist/agents/skills/gemini-cli/next-error-boundaries/SKILL.md +96 -0
  3910. package/dist/agents/skills/gemini-cli/next-error-boundaries/skill.yaml +44 -0
  3911. package/dist/agents/skills/gemini-cli/next-image-optimization/SKILL.md +91 -0
  3912. package/dist/agents/skills/gemini-cli/next-image-optimization/skill.yaml +41 -0
  3913. package/dist/agents/skills/gemini-cli/next-metadata-api/SKILL.md +94 -0
  3914. package/dist/agents/skills/gemini-cli/next-metadata-api/skill.yaml +43 -0
  3915. package/dist/agents/skills/gemini-cli/next-middleware-pattern/SKILL.md +80 -0
  3916. package/dist/agents/skills/gemini-cli/next-middleware-pattern/skill.yaml +43 -0
  3917. package/dist/agents/skills/gemini-cli/next-monorepo-setup/SKILL.md +103 -0
  3918. package/dist/agents/skills/gemini-cli/next-monorepo-setup/skill.yaml +43 -0
  3919. package/dist/agents/skills/gemini-cli/next-parallel-intercepting-routes/SKILL.md +98 -0
  3920. package/dist/agents/skills/gemini-cli/next-parallel-intercepting-routes/skill.yaml +43 -0
  3921. package/dist/agents/skills/gemini-cli/next-route-handlers/SKILL.md +80 -0
  3922. package/dist/agents/skills/gemini-cli/next-route-handlers/skill.yaml +44 -0
  3923. package/dist/agents/skills/gemini-cli/next-server-actions/SKILL.md +97 -0
  3924. package/dist/agents/skills/gemini-cli/next-server-actions/skill.yaml +44 -0
  3925. package/dist/agents/skills/gemini-cli/next-server-components/SKILL.md +82 -0
  3926. package/dist/agents/skills/gemini-cli/next-server-components/skill.yaml +43 -0
  3927. package/dist/agents/skills/gemini-cli/next-static-generation/SKILL.md +75 -0
  3928. package/dist/agents/skills/gemini-cli/next-static-generation/skill.yaml +44 -0
  3929. package/dist/agents/skills/gemini-cli/next-streaming-suspense/SKILL.md +86 -0
  3930. package/dist/agents/skills/gemini-cli/next-streaming-suspense/skill.yaml +43 -0
  3931. package/dist/agents/skills/gemini-cli/next-testing-patterns/SKILL.md +104 -0
  3932. package/dist/agents/skills/gemini-cli/next-testing-patterns/skill.yaml +46 -0
  3933. package/dist/agents/skills/gemini-cli/node-buffer-encoding/SKILL.md +138 -0
  3934. package/dist/agents/skills/gemini-cli/node-buffer-encoding/skill.yaml +39 -0
  3935. package/dist/agents/skills/gemini-cli/node-child-process/SKILL.md +162 -0
  3936. package/dist/agents/skills/gemini-cli/node-child-process/skill.yaml +40 -0
  3937. package/dist/agents/skills/gemini-cli/node-crypto-patterns/SKILL.md +147 -0
  3938. package/dist/agents/skills/gemini-cli/node-crypto-patterns/skill.yaml +41 -0
  3939. package/dist/agents/skills/gemini-cli/node-environment-config/SKILL.md +145 -0
  3940. package/dist/agents/skills/gemini-cli/node-environment-config/skill.yaml +39 -0
  3941. package/dist/agents/skills/gemini-cli/node-error-handling/SKILL.md +183 -0
  3942. package/dist/agents/skills/gemini-cli/node-error-handling/skill.yaml +40 -0
  3943. package/dist/agents/skills/gemini-cli/node-esm-patterns/SKILL.md +149 -0
  3944. package/dist/agents/skills/gemini-cli/node-esm-patterns/skill.yaml +39 -0
  3945. package/dist/agents/skills/gemini-cli/node-event-emitter/SKILL.md +144 -0
  3946. package/dist/agents/skills/gemini-cli/node-event-emitter/skill.yaml +41 -0
  3947. package/dist/agents/skills/gemini-cli/node-express-patterns/SKILL.md +193 -0
  3948. package/dist/agents/skills/gemini-cli/node-express-patterns/skill.yaml +40 -0
  3949. package/dist/agents/skills/gemini-cli/node-fastify-patterns/SKILL.md +200 -0
  3950. package/dist/agents/skills/gemini-cli/node-fastify-patterns/skill.yaml +40 -0
  3951. package/dist/agents/skills/gemini-cli/node-http-server/SKILL.md +159 -0
  3952. package/dist/agents/skills/gemini-cli/node-http-server/skill.yaml +40 -0
  3953. package/dist/agents/skills/gemini-cli/node-path-fs-patterns/SKILL.md +149 -0
  3954. package/dist/agents/skills/gemini-cli/node-path-fs-patterns/skill.yaml +39 -0
  3955. package/dist/agents/skills/gemini-cli/node-performance-profiling/SKILL.md +176 -0
  3956. package/dist/agents/skills/gemini-cli/node-performance-profiling/skill.yaml +39 -0
  3957. package/dist/agents/skills/gemini-cli/node-streams-pattern/SKILL.md +163 -0
  3958. package/dist/agents/skills/gemini-cli/node-streams-pattern/skill.yaml +40 -0
  3959. package/dist/agents/skills/gemini-cli/node-testing-patterns/SKILL.md +205 -0
  3960. package/dist/agents/skills/gemini-cli/node-testing-patterns/skill.yaml +40 -0
  3961. package/dist/agents/skills/gemini-cli/node-worker-threads/SKILL.md +169 -0
  3962. package/dist/agents/skills/gemini-cli/node-worker-threads/skill.yaml +40 -0
  3963. package/dist/agents/skills/gemini-cli/nuxt-auto-imports/SKILL.md +97 -0
  3964. package/dist/agents/skills/gemini-cli/nuxt-auto-imports/skill.yaml +41 -0
  3965. package/dist/agents/skills/gemini-cli/nuxt-composables-pattern/SKILL.md +119 -0
  3966. package/dist/agents/skills/gemini-cli/nuxt-composables-pattern/skill.yaml +41 -0
  3967. package/dist/agents/skills/gemini-cli/nuxt-deployment-config/SKILL.md +209 -0
  3968. package/dist/agents/skills/gemini-cli/nuxt-deployment-config/skill.yaml +43 -0
  3969. package/dist/agents/skills/gemini-cli/nuxt-layouts-pages/SKILL.md +210 -0
  3970. package/dist/agents/skills/gemini-cli/nuxt-layouts-pages/skill.yaml +42 -0
  3971. package/dist/agents/skills/gemini-cli/nuxt-middleware-pattern/SKILL.md +164 -0
  3972. package/dist/agents/skills/gemini-cli/nuxt-middleware-pattern/skill.yaml +41 -0
  3973. package/dist/agents/skills/gemini-cli/nuxt-modules-pattern/SKILL.md +193 -0
  3974. package/dist/agents/skills/gemini-cli/nuxt-modules-pattern/skill.yaml +40 -0
  3975. package/dist/agents/skills/gemini-cli/nuxt-plugins-pattern/SKILL.md +178 -0
  3976. package/dist/agents/skills/gemini-cli/nuxt-plugins-pattern/skill.yaml +40 -0
  3977. package/dist/agents/skills/gemini-cli/nuxt-seo-metadata/SKILL.md +185 -0
  3978. package/dist/agents/skills/gemini-cli/nuxt-seo-metadata/skill.yaml +43 -0
  3979. package/dist/agents/skills/gemini-cli/nuxt-server-routes/SKILL.md +154 -0
  3980. package/dist/agents/skills/gemini-cli/nuxt-server-routes/skill.yaml +41 -0
  3981. package/dist/agents/skills/gemini-cli/nuxt-state-management/SKILL.md +162 -0
  3982. package/dist/agents/skills/gemini-cli/nuxt-state-management/skill.yaml +43 -0
  3983. package/dist/agents/skills/gemini-cli/nuxt-testing-patterns/SKILL.md +203 -0
  3984. package/dist/agents/skills/gemini-cli/nuxt-testing-patterns/skill.yaml +45 -0
  3985. package/dist/agents/skills/gemini-cli/otel-context-propagation/SKILL.md +152 -0
  3986. package/dist/agents/skills/gemini-cli/otel-context-propagation/skill.yaml +39 -0
  3987. package/dist/agents/skills/gemini-cli/otel-custom-instrumentation/SKILL.md +166 -0
  3988. package/dist/agents/skills/gemini-cli/otel-custom-instrumentation/skill.yaml +39 -0
  3989. package/dist/agents/skills/gemini-cli/otel-error-tracking/SKILL.md +163 -0
  3990. package/dist/agents/skills/gemini-cli/otel-error-tracking/skill.yaml +39 -0
  3991. package/dist/agents/skills/gemini-cli/otel-exporter-config/SKILL.md +168 -0
  3992. package/dist/agents/skills/gemini-cli/otel-exporter-config/skill.yaml +39 -0
  3993. package/dist/agents/skills/gemini-cli/otel-logging-pattern/SKILL.md +161 -0
  3994. package/dist/agents/skills/gemini-cli/otel-logging-pattern/skill.yaml +40 -0
  3995. package/dist/agents/skills/gemini-cli/otel-metrics-pattern/SKILL.md +152 -0
  3996. package/dist/agents/skills/gemini-cli/otel-metrics-pattern/skill.yaml +40 -0
  3997. package/dist/agents/skills/gemini-cli/otel-nestjs-integration/SKILL.md +174 -0
  3998. package/dist/agents/skills/gemini-cli/otel-nestjs-integration/skill.yaml +40 -0
  3999. package/dist/agents/skills/gemini-cli/otel-nextjs-integration/SKILL.md +161 -0
  4000. package/dist/agents/skills/gemini-cli/otel-nextjs-integration/skill.yaml +39 -0
  4001. package/dist/agents/skills/gemini-cli/otel-performance-insights/SKILL.md +173 -0
  4002. package/dist/agents/skills/gemini-cli/otel-performance-insights/skill.yaml +40 -0
  4003. package/dist/agents/skills/gemini-cli/otel-sampling-strategies/SKILL.md +162 -0
  4004. package/dist/agents/skills/gemini-cli/otel-sampling-strategies/skill.yaml +38 -0
  4005. package/dist/agents/skills/gemini-cli/otel-sdk-setup/SKILL.md +145 -0
  4006. package/dist/agents/skills/gemini-cli/otel-sdk-setup/skill.yaml +39 -0
  4007. package/dist/agents/skills/gemini-cli/otel-tracing-pattern/SKILL.md +130 -0
  4008. package/dist/agents/skills/gemini-cli/otel-tracing-pattern/skill.yaml +39 -0
  4009. package/dist/agents/skills/gemini-cli/owasp-auth-patterns/SKILL.md +197 -0
  4010. package/dist/agents/skills/gemini-cli/owasp-auth-patterns/skill.yaml +42 -0
  4011. package/dist/agents/skills/gemini-cli/owasp-cryptography/SKILL.md +191 -0
  4012. package/dist/agents/skills/gemini-cli/owasp-cryptography/skill.yaml +42 -0
  4013. package/dist/agents/skills/gemini-cli/owasp-csrf-protection/SKILL.md +175 -0
  4014. package/dist/agents/skills/gemini-cli/owasp-csrf-protection/skill.yaml +42 -0
  4015. package/dist/agents/skills/gemini-cli/owasp-dependency-security/SKILL.md +173 -0
  4016. package/dist/agents/skills/gemini-cli/owasp-dependency-security/skill.yaml +41 -0
  4017. package/dist/agents/skills/gemini-cli/owasp-file-upload-security/SKILL.md +199 -0
  4018. package/dist/agents/skills/gemini-cli/owasp-file-upload-security/skill.yaml +41 -0
  4019. package/dist/agents/skills/gemini-cli/owasp-idor-prevention/SKILL.md +174 -0
  4020. package/dist/agents/skills/gemini-cli/owasp-idor-prevention/skill.yaml +42 -0
  4021. package/dist/agents/skills/gemini-cli/owasp-injection-prevention/SKILL.md +160 -0
  4022. package/dist/agents/skills/gemini-cli/owasp-injection-prevention/skill.yaml +44 -0
  4023. package/dist/agents/skills/gemini-cli/owasp-logging-monitoring/SKILL.md +214 -0
  4024. package/dist/agents/skills/gemini-cli/owasp-logging-monitoring/skill.yaml +41 -0
  4025. package/dist/agents/skills/gemini-cli/owasp-rate-limiting/SKILL.md +215 -0
  4026. package/dist/agents/skills/gemini-cli/owasp-rate-limiting/skill.yaml +40 -0
  4027. package/dist/agents/skills/gemini-cli/owasp-secrets-management/SKILL.md +171 -0
  4028. package/dist/agents/skills/gemini-cli/owasp-secrets-management/skill.yaml +44 -0
  4029. package/dist/agents/skills/gemini-cli/owasp-security-headers/SKILL.md +221 -0
  4030. package/dist/agents/skills/gemini-cli/owasp-security-headers/skill.yaml +40 -0
  4031. package/dist/agents/skills/gemini-cli/owasp-xss-prevention/SKILL.md +174 -0
  4032. package/dist/agents/skills/gemini-cli/owasp-xss-prevention/skill.yaml +42 -0
  4033. package/dist/agents/skills/gemini-cli/prisma-client-queries/SKILL.md +147 -0
  4034. package/dist/agents/skills/gemini-cli/prisma-client-queries/skill.yaml +46 -0
  4035. package/dist/agents/skills/gemini-cli/prisma-filtering-sorting/SKILL.md +157 -0
  4036. package/dist/agents/skills/gemini-cli/prisma-filtering-sorting/skill.yaml +45 -0
  4037. package/dist/agents/skills/gemini-cli/prisma-migrations/SKILL.md +115 -0
  4038. package/dist/agents/skills/gemini-cli/prisma-migrations/skill.yaml +41 -0
  4039. package/dist/agents/skills/gemini-cli/prisma-performance-patterns/SKILL.md +160 -0
  4040. package/dist/agents/skills/gemini-cli/prisma-performance-patterns/skill.yaml +43 -0
  4041. package/dist/agents/skills/gemini-cli/prisma-raw-queries/SKILL.md +125 -0
  4042. package/dist/agents/skills/gemini-cli/prisma-raw-queries/skill.yaml +41 -0
  4043. package/dist/agents/skills/gemini-cli/prisma-relations-pattern/SKILL.md +151 -0
  4044. package/dist/agents/skills/gemini-cli/prisma-relations-pattern/skill.yaml +42 -0
  4045. package/dist/agents/skills/gemini-cli/prisma-schema-design/SKILL.md +108 -0
  4046. package/dist/agents/skills/gemini-cli/prisma-schema-design/skill.yaml +46 -0
  4047. package/dist/agents/skills/gemini-cli/prisma-seeding-pattern/SKILL.md +168 -0
  4048. package/dist/agents/skills/gemini-cli/prisma-seeding-pattern/skill.yaml +41 -0
  4049. package/dist/agents/skills/gemini-cli/prisma-soft-delete/SKILL.md +172 -0
  4050. package/dist/agents/skills/gemini-cli/prisma-soft-delete/skill.yaml +41 -0
  4051. package/dist/agents/skills/gemini-cli/prisma-transactions/SKILL.md +147 -0
  4052. package/dist/agents/skills/gemini-cli/prisma-transactions/skill.yaml +41 -0
  4053. package/dist/agents/skills/gemini-cli/prisma-type-generation/SKILL.md +180 -0
  4054. package/dist/agents/skills/gemini-cli/prisma-type-generation/skill.yaml +42 -0
  4055. package/dist/agents/skills/gemini-cli/react-2026/SKILL.md +86 -0
  4056. package/dist/agents/skills/gemini-cli/react-2026/skill.yaml +39 -0
  4057. package/dist/agents/skills/gemini-cli/react-client-rendering/SKILL.md +60 -0
  4058. package/dist/agents/skills/gemini-cli/react-client-rendering/skill.yaml +37 -0
  4059. package/dist/agents/skills/gemini-cli/react-compound-pattern/SKILL.md +80 -0
  4060. package/dist/agents/skills/gemini-cli/react-compound-pattern/skill.yaml +36 -0
  4061. package/dist/agents/skills/gemini-cli/react-concurrent-ui/SKILL.md +59 -0
  4062. package/dist/agents/skills/gemini-cli/react-concurrent-ui/skill.yaml +36 -0
  4063. package/dist/agents/skills/gemini-cli/react-container-presentational/SKILL.md +76 -0
  4064. package/dist/agents/skills/gemini-cli/react-container-presentational/skill.yaml +36 -0
  4065. package/dist/agents/skills/gemini-cli/react-context-pattern/SKILL.md +75 -0
  4066. package/dist/agents/skills/gemini-cli/react-context-pattern/skill.yaml +37 -0
  4067. package/dist/agents/skills/gemini-cli/react-dynamic-import/SKILL.md +65 -0
  4068. package/dist/agents/skills/gemini-cli/react-dynamic-import/skill.yaml +40 -0
  4069. package/dist/agents/skills/gemini-cli/react-hoc-pattern/SKILL.md +71 -0
  4070. package/dist/agents/skills/gemini-cli/react-hoc-pattern/skill.yaml +35 -0
  4071. package/dist/agents/skills/gemini-cli/react-hooks-pattern/SKILL.md +74 -0
  4072. package/dist/agents/skills/gemini-cli/react-hooks-pattern/skill.yaml +37 -0
  4073. package/dist/agents/skills/gemini-cli/react-islands-pattern/SKILL.md +67 -0
  4074. package/dist/agents/skills/gemini-cli/react-islands-pattern/skill.yaml +39 -0
  4075. package/dist/agents/skills/gemini-cli/react-memoization-pattern/SKILL.md +64 -0
  4076. package/dist/agents/skills/gemini-cli/react-memoization-pattern/skill.yaml +37 -0
  4077. package/dist/agents/skills/gemini-cli/react-progressive-hydration/SKILL.md +74 -0
  4078. package/dist/agents/skills/gemini-cli/react-progressive-hydration/skill.yaml +37 -0
  4079. package/dist/agents/skills/gemini-cli/react-provider-pattern/SKILL.md +72 -0
  4080. package/dist/agents/skills/gemini-cli/react-provider-pattern/skill.yaml +37 -0
  4081. package/dist/agents/skills/gemini-cli/react-render-props-pattern/SKILL.md +73 -0
  4082. package/dist/agents/skills/gemini-cli/react-render-props-pattern/skill.yaml +35 -0
  4083. package/dist/agents/skills/gemini-cli/react-server-components/SKILL.md +81 -0
  4084. package/dist/agents/skills/gemini-cli/react-server-components/skill.yaml +39 -0
  4085. package/dist/agents/skills/gemini-cli/react-server-rendering/SKILL.md +63 -0
  4086. package/dist/agents/skills/gemini-cli/react-server-rendering/skill.yaml +39 -0
  4087. package/dist/agents/skills/gemini-cli/react-state-management-pattern/SKILL.md +72 -0
  4088. package/dist/agents/skills/gemini-cli/react-state-management-pattern/skill.yaml +40 -0
  4089. package/dist/agents/skills/gemini-cli/react-static-import/SKILL.md +61 -0
  4090. package/dist/agents/skills/gemini-cli/react-static-import/skill.yaml +37 -0
  4091. package/dist/agents/skills/gemini-cli/react-suspense-pattern/SKILL.md +62 -0
  4092. package/dist/agents/skills/gemini-cli/react-suspense-pattern/skill.yaml +37 -0
  4093. package/dist/agents/skills/gemini-cli/redux-entity-adapter/SKILL.md +120 -0
  4094. package/dist/agents/skills/gemini-cli/redux-entity-adapter/skill.yaml +39 -0
  4095. package/dist/agents/skills/gemini-cli/redux-listener-middleware/SKILL.md +117 -0
  4096. package/dist/agents/skills/gemini-cli/redux-listener-middleware/skill.yaml +39 -0
  4097. package/dist/agents/skills/gemini-cli/redux-persistence-pattern/SKILL.md +144 -0
  4098. package/dist/agents/skills/gemini-cli/redux-persistence-pattern/skill.yaml +40 -0
  4099. package/dist/agents/skills/gemini-cli/redux-rtk-optimistic/SKILL.md +117 -0
  4100. package/dist/agents/skills/gemini-cli/redux-rtk-optimistic/skill.yaml +39 -0
  4101. package/dist/agents/skills/gemini-cli/redux-rtk-query-endpoints/SKILL.md +131 -0
  4102. package/dist/agents/skills/gemini-cli/redux-rtk-query-endpoints/skill.yaml +40 -0
  4103. package/dist/agents/skills/gemini-cli/redux-rtk-query-setup/SKILL.md +117 -0
  4104. package/dist/agents/skills/gemini-cli/redux-rtk-query-setup/skill.yaml +39 -0
  4105. package/dist/agents/skills/gemini-cli/redux-selectors-pattern/SKILL.md +100 -0
  4106. package/dist/agents/skills/gemini-cli/redux-selectors-pattern/skill.yaml +39 -0
  4107. package/dist/agents/skills/gemini-cli/redux-slice-pattern/SKILL.md +117 -0
  4108. package/dist/agents/skills/gemini-cli/redux-slice-pattern/skill.yaml +39 -0
  4109. package/dist/agents/skills/gemini-cli/redux-store-setup/SKILL.md +103 -0
  4110. package/dist/agents/skills/gemini-cli/redux-store-setup/skill.yaml +39 -0
  4111. package/dist/agents/skills/gemini-cli/redux-testing-patterns/SKILL.md +138 -0
  4112. package/dist/agents/skills/gemini-cli/redux-testing-patterns/skill.yaml +41 -0
  4113. package/dist/agents/skills/gemini-cli/redux-thunk-pattern/SKILL.md +119 -0
  4114. package/dist/agents/skills/gemini-cli/redux-thunk-pattern/skill.yaml +41 -0
  4115. package/dist/agents/skills/gemini-cli/redux-typescript-patterns/SKILL.md +115 -0
  4116. package/dist/agents/skills/gemini-cli/redux-typescript-patterns/skill.yaml +40 -0
  4117. package/dist/agents/skills/gemini-cli/resilience-bulkhead-pattern/SKILL.md +145 -0
  4118. package/dist/agents/skills/gemini-cli/resilience-bulkhead-pattern/skill.yaml +38 -0
  4119. package/dist/agents/skills/gemini-cli/resilience-chaos-testing/SKILL.md +172 -0
  4120. package/dist/agents/skills/gemini-cli/resilience-chaos-testing/skill.yaml +38 -0
  4121. package/dist/agents/skills/gemini-cli/resilience-circuit-breaker/SKILL.md +159 -0
  4122. package/dist/agents/skills/gemini-cli/resilience-circuit-breaker/skill.yaml +39 -0
  4123. package/dist/agents/skills/gemini-cli/resilience-dead-letter/SKILL.md +185 -0
  4124. package/dist/agents/skills/gemini-cli/resilience-dead-letter/skill.yaml +39 -0
  4125. package/dist/agents/skills/gemini-cli/resilience-fallback-pattern/SKILL.md +155 -0
  4126. package/dist/agents/skills/gemini-cli/resilience-fallback-pattern/skill.yaml +38 -0
  4127. package/dist/agents/skills/gemini-cli/resilience-health-checks/SKILL.md +180 -0
  4128. package/dist/agents/skills/gemini-cli/resilience-health-checks/skill.yaml +38 -0
  4129. package/dist/agents/skills/gemini-cli/resilience-idempotency/SKILL.md +167 -0
  4130. package/dist/agents/skills/gemini-cli/resilience-idempotency/skill.yaml +38 -0
  4131. package/dist/agents/skills/gemini-cli/resilience-rate-limiting/SKILL.md +171 -0
  4132. package/dist/agents/skills/gemini-cli/resilience-rate-limiting/skill.yaml +38 -0
  4133. package/dist/agents/skills/gemini-cli/resilience-retry-pattern/SKILL.md +137 -0
  4134. package/dist/agents/skills/gemini-cli/resilience-retry-pattern/skill.yaml +39 -0
  4135. package/dist/agents/skills/gemini-cli/resilience-timeout-pattern/SKILL.md +148 -0
  4136. package/dist/agents/skills/gemini-cli/resilience-timeout-pattern/skill.yaml +38 -0
  4137. package/dist/agents/skills/gemini-cli/state-context-pattern/SKILL.md +143 -0
  4138. package/dist/agents/skills/gemini-cli/state-context-pattern/skill.yaml +38 -0
  4139. package/dist/agents/skills/gemini-cli/state-jotai-atoms/SKILL.md +153 -0
  4140. package/dist/agents/skills/gemini-cli/state-jotai-atoms/skill.yaml +39 -0
  4141. package/dist/agents/skills/gemini-cli/state-selection-patterns/SKILL.md +115 -0
  4142. package/dist/agents/skills/gemini-cli/state-selection-patterns/skill.yaml +39 -0
  4143. package/dist/agents/skills/gemini-cli/state-server-client-sync/SKILL.md +148 -0
  4144. package/dist/agents/skills/gemini-cli/state-server-client-sync/skill.yaml +40 -0
  4145. package/dist/agents/skills/gemini-cli/state-zustand-devtools/SKILL.md +120 -0
  4146. package/dist/agents/skills/gemini-cli/state-zustand-devtools/skill.yaml +38 -0
  4147. package/dist/agents/skills/gemini-cli/state-zustand-immer/SKILL.md +150 -0
  4148. package/dist/agents/skills/gemini-cli/state-zustand-immer/skill.yaml +38 -0
  4149. package/dist/agents/skills/gemini-cli/state-zustand-persist/SKILL.md +148 -0
  4150. package/dist/agents/skills/gemini-cli/state-zustand-persist/skill.yaml +38 -0
  4151. package/dist/agents/skills/gemini-cli/state-zustand-react/SKILL.md +136 -0
  4152. package/dist/agents/skills/gemini-cli/state-zustand-react/skill.yaml +40 -0
  4153. package/dist/agents/skills/gemini-cli/state-zustand-slices/SKILL.md +135 -0
  4154. package/dist/agents/skills/gemini-cli/state-zustand-slices/skill.yaml +39 -0
  4155. package/dist/agents/skills/gemini-cli/state-zustand-store/SKILL.md +123 -0
  4156. package/dist/agents/skills/gemini-cli/state-zustand-store/skill.yaml +39 -0
  4157. package/dist/agents/skills/gemini-cli/svelte-adapter-config/SKILL.md +262 -0
  4158. package/dist/agents/skills/gemini-cli/svelte-adapter-config/skill.yaml +42 -0
  4159. package/dist/agents/skills/gemini-cli/svelte-component-composition/SKILL.md +222 -0
  4160. package/dist/agents/skills/gemini-cli/svelte-component-composition/skill.yaml +41 -0
  4161. package/dist/agents/skills/gemini-cli/svelte-error-pages/SKILL.md +186 -0
  4162. package/dist/agents/skills/gemini-cli/svelte-error-pages/skill.yaml +42 -0
  4163. package/dist/agents/skills/gemini-cli/svelte-form-actions/SKILL.md +230 -0
  4164. package/dist/agents/skills/gemini-cli/svelte-form-actions/skill.yaml +41 -0
  4165. package/dist/agents/skills/gemini-cli/svelte-load-functions/SKILL.md +206 -0
  4166. package/dist/agents/skills/gemini-cli/svelte-load-functions/skill.yaml +44 -0
  4167. package/dist/agents/skills/gemini-cli/svelte-performance-patterns/SKILL.md +218 -0
  4168. package/dist/agents/skills/gemini-cli/svelte-performance-patterns/skill.yaml +43 -0
  4169. package/dist/agents/skills/gemini-cli/svelte-routing-pattern/SKILL.md +203 -0
  4170. package/dist/agents/skills/gemini-cli/svelte-routing-pattern/skill.yaml +43 -0
  4171. package/dist/agents/skills/gemini-cli/svelte-runes-pattern/SKILL.md +204 -0
  4172. package/dist/agents/skills/gemini-cli/svelte-runes-pattern/skill.yaml +43 -0
  4173. package/dist/agents/skills/gemini-cli/svelte-server-hooks/SKILL.md +239 -0
  4174. package/dist/agents/skills/gemini-cli/svelte-server-hooks/skill.yaml +43 -0
  4175. package/dist/agents/skills/gemini-cli/svelte-state-management/SKILL.md +196 -0
  4176. package/dist/agents/skills/gemini-cli/svelte-state-management/skill.yaml +43 -0
  4177. package/dist/agents/skills/gemini-cli/svelte-stores-pattern/SKILL.md +187 -0
  4178. package/dist/agents/skills/gemini-cli/svelte-stores-pattern/skill.yaml +43 -0
  4179. package/dist/agents/skills/gemini-cli/svelte-testing-patterns/SKILL.md +231 -0
  4180. package/dist/agents/skills/gemini-cli/svelte-testing-patterns/skill.yaml +45 -0
  4181. package/dist/agents/skills/gemini-cli/svelte-transitions-animations/SKILL.md +222 -0
  4182. package/dist/agents/skills/gemini-cli/svelte-transitions-animations/skill.yaml +43 -0
  4183. package/dist/agents/skills/gemini-cli/tanstack-cache-management/SKILL.md +108 -0
  4184. package/dist/agents/skills/gemini-cli/tanstack-cache-management/skill.yaml +43 -0
  4185. package/dist/agents/skills/gemini-cli/tanstack-dependent-queries/SKILL.md +108 -0
  4186. package/dist/agents/skills/gemini-cli/tanstack-dependent-queries/skill.yaml +41 -0
  4187. package/dist/agents/skills/gemini-cli/tanstack-devtools/SKILL.md +100 -0
  4188. package/dist/agents/skills/gemini-cli/tanstack-devtools/skill.yaml +43 -0
  4189. package/dist/agents/skills/gemini-cli/tanstack-infinite-queries/SKILL.md +106 -0
  4190. package/dist/agents/skills/gemini-cli/tanstack-infinite-queries/skill.yaml +43 -0
  4191. package/dist/agents/skills/gemini-cli/tanstack-mutation-patterns/SKILL.md +122 -0
  4192. package/dist/agents/skills/gemini-cli/tanstack-mutation-patterns/skill.yaml +43 -0
  4193. package/dist/agents/skills/gemini-cli/tanstack-optimistic-updates/SKILL.md +106 -0
  4194. package/dist/agents/skills/gemini-cli/tanstack-optimistic-updates/skill.yaml +43 -0
  4195. package/dist/agents/skills/gemini-cli/tanstack-prefetching/SKILL.md +106 -0
  4196. package/dist/agents/skills/gemini-cli/tanstack-prefetching/skill.yaml +43 -0
  4197. package/dist/agents/skills/gemini-cli/tanstack-query-invalidation/SKILL.md +95 -0
  4198. package/dist/agents/skills/gemini-cli/tanstack-query-invalidation/skill.yaml +42 -0
  4199. package/dist/agents/skills/gemini-cli/tanstack-query-keys/SKILL.md +94 -0
  4200. package/dist/agents/skills/gemini-cli/tanstack-query-keys/skill.yaml +42 -0
  4201. package/dist/agents/skills/gemini-cli/tanstack-suspense-mode/SKILL.md +96 -0
  4202. package/dist/agents/skills/gemini-cli/tanstack-suspense-mode/skill.yaml +41 -0
  4203. package/dist/agents/skills/gemini-cli/test-accessibility-testing/SKILL.md +201 -0
  4204. package/dist/agents/skills/gemini-cli/test-accessibility-testing/skill.yaml +42 -0
  4205. package/dist/agents/skills/gemini-cli/test-component-react/SKILL.md +173 -0
  4206. package/dist/agents/skills/gemini-cli/test-component-react/skill.yaml +44 -0
  4207. package/dist/agents/skills/gemini-cli/test-component-svelte/SKILL.md +184 -0
  4208. package/dist/agents/skills/gemini-cli/test-component-svelte/skill.yaml +42 -0
  4209. package/dist/agents/skills/gemini-cli/test-contract-testing/SKILL.md +180 -0
  4210. package/dist/agents/skills/gemini-cli/test-contract-testing/skill.yaml +41 -0
  4211. package/dist/agents/skills/gemini-cli/test-coverage-patterns/SKILL.md +165 -0
  4212. package/dist/agents/skills/gemini-cli/test-coverage-patterns/skill.yaml +43 -0
  4213. package/dist/agents/skills/gemini-cli/test-e2e-strategy/SKILL.md +146 -0
  4214. package/dist/agents/skills/gemini-cli/test-e2e-strategy/skill.yaml +43 -0
  4215. package/dist/agents/skills/gemini-cli/test-factory-patterns/SKILL.md +198 -0
  4216. package/dist/agents/skills/gemini-cli/test-factory-patterns/skill.yaml +43 -0
  4217. package/dist/agents/skills/gemini-cli/test-integration-patterns/SKILL.md +202 -0
  4218. package/dist/agents/skills/gemini-cli/test-integration-patterns/skill.yaml +43 -0
  4219. package/dist/agents/skills/gemini-cli/test-mock-patterns/SKILL.md +184 -0
  4220. package/dist/agents/skills/gemini-cli/test-mock-patterns/skill.yaml +44 -0
  4221. package/dist/agents/skills/gemini-cli/test-msw-pattern/SKILL.md +181 -0
  4222. package/dist/agents/skills/gemini-cli/test-msw-pattern/skill.yaml +43 -0
  4223. package/dist/agents/skills/gemini-cli/test-performance-testing/SKILL.md +199 -0
  4224. package/dist/agents/skills/gemini-cli/test-performance-testing/skill.yaml +42 -0
  4225. package/dist/agents/skills/gemini-cli/test-playwright-patterns/SKILL.md +197 -0
  4226. package/dist/agents/skills/gemini-cli/test-playwright-patterns/skill.yaml +43 -0
  4227. package/dist/agents/skills/gemini-cli/test-playwright-setup/SKILL.md +178 -0
  4228. package/dist/agents/skills/gemini-cli/test-playwright-setup/skill.yaml +42 -0
  4229. package/dist/agents/skills/gemini-cli/test-property-based/SKILL.md +172 -0
  4230. package/dist/agents/skills/gemini-cli/test-property-based/skill.yaml +42 -0
  4231. package/dist/agents/skills/gemini-cli/test-snapshot-patterns/SKILL.md +142 -0
  4232. package/dist/agents/skills/gemini-cli/test-snapshot-patterns/skill.yaml +41 -0
  4233. package/dist/agents/skills/gemini-cli/test-tdd-workflow/SKILL.md +185 -0
  4234. package/dist/agents/skills/gemini-cli/test-tdd-workflow/skill.yaml +42 -0
  4235. package/dist/agents/skills/gemini-cli/test-unit-patterns/SKILL.md +209 -0
  4236. package/dist/agents/skills/gemini-cli/test-unit-patterns/skill.yaml +44 -0
  4237. package/dist/agents/skills/gemini-cli/test-vitest-config/SKILL.md +212 -0
  4238. package/dist/agents/skills/gemini-cli/test-vitest-config/skill.yaml +44 -0
  4239. package/dist/agents/skills/gemini-cli/trpc-context-pattern/SKILL.md +190 -0
  4240. package/dist/agents/skills/gemini-cli/trpc-context-pattern/skill.yaml +41 -0
  4241. package/dist/agents/skills/gemini-cli/trpc-error-handling/SKILL.md +132 -0
  4242. package/dist/agents/skills/gemini-cli/trpc-error-handling/skill.yaml +42 -0
  4243. package/dist/agents/skills/gemini-cli/trpc-input-validation/SKILL.md +100 -0
  4244. package/dist/agents/skills/gemini-cli/trpc-input-validation/skill.yaml +42 -0
  4245. package/dist/agents/skills/gemini-cli/trpc-middleware-pattern/SKILL.md +99 -0
  4246. package/dist/agents/skills/gemini-cli/trpc-middleware-pattern/skill.yaml +41 -0
  4247. package/dist/agents/skills/gemini-cli/trpc-nextjs-integration/SKILL.md +203 -0
  4248. package/dist/agents/skills/gemini-cli/trpc-nextjs-integration/skill.yaml +43 -0
  4249. package/dist/agents/skills/gemini-cli/trpc-react-query-integration/SKILL.md +182 -0
  4250. package/dist/agents/skills/gemini-cli/trpc-react-query-integration/skill.yaml +43 -0
  4251. package/dist/agents/skills/gemini-cli/trpc-router-composition/SKILL.md +98 -0
  4252. package/dist/agents/skills/gemini-cli/trpc-router-composition/skill.yaml +42 -0
  4253. package/dist/agents/skills/gemini-cli/trpc-subscription-pattern/SKILL.md +118 -0
  4254. package/dist/agents/skills/gemini-cli/trpc-subscription-pattern/skill.yaml +43 -0
  4255. package/dist/agents/skills/gemini-cli/ts-async-patterns/SKILL.md +193 -0
  4256. package/dist/agents/skills/gemini-cli/ts-async-patterns/skill.yaml +38 -0
  4257. package/dist/agents/skills/gemini-cli/ts-branded-types/SKILL.md +161 -0
  4258. package/dist/agents/skills/gemini-cli/ts-branded-types/skill.yaml +38 -0
  4259. package/dist/agents/skills/gemini-cli/ts-class-patterns/SKILL.md +238 -0
  4260. package/dist/agents/skills/gemini-cli/ts-class-patterns/skill.yaml +38 -0
  4261. package/dist/agents/skills/gemini-cli/ts-conditional-types/SKILL.md +142 -0
  4262. package/dist/agents/skills/gemini-cli/ts-conditional-types/skill.yaml +38 -0
  4263. package/dist/agents/skills/gemini-cli/ts-config-patterns/SKILL.md +190 -0
  4264. package/dist/agents/skills/gemini-cli/ts-config-patterns/skill.yaml +38 -0
  4265. package/dist/agents/skills/gemini-cli/ts-declaration-merging/SKILL.md +187 -0
  4266. package/dist/agents/skills/gemini-cli/ts-declaration-merging/skill.yaml +37 -0
  4267. package/dist/agents/skills/gemini-cli/ts-decorator-patterns/SKILL.md +181 -0
  4268. package/dist/agents/skills/gemini-cli/ts-decorator-patterns/skill.yaml +37 -0
  4269. package/dist/agents/skills/gemini-cli/ts-discriminated-unions/SKILL.md +186 -0
  4270. package/dist/agents/skills/gemini-cli/ts-discriminated-unions/skill.yaml +38 -0
  4271. package/dist/agents/skills/gemini-cli/ts-error-handling-types/SKILL.md +205 -0
  4272. package/dist/agents/skills/gemini-cli/ts-error-handling-types/skill.yaml +38 -0
  4273. package/dist/agents/skills/gemini-cli/ts-generics-pattern/SKILL.md +104 -0
  4274. package/dist/agents/skills/gemini-cli/ts-generics-pattern/skill.yaml +39 -0
  4275. package/dist/agents/skills/gemini-cli/ts-mapped-types/SKILL.md +147 -0
  4276. package/dist/agents/skills/gemini-cli/ts-mapped-types/skill.yaml +38 -0
  4277. package/dist/agents/skills/gemini-cli/ts-module-patterns/SKILL.md +156 -0
  4278. package/dist/agents/skills/gemini-cli/ts-module-patterns/skill.yaml +37 -0
  4279. package/dist/agents/skills/gemini-cli/ts-performance-patterns/SKILL.md +158 -0
  4280. package/dist/agents/skills/gemini-cli/ts-performance-patterns/skill.yaml +37 -0
  4281. package/dist/agents/skills/gemini-cli/ts-satisfies-operator/SKILL.md +151 -0
  4282. package/dist/agents/skills/gemini-cli/ts-satisfies-operator/skill.yaml +38 -0
  4283. package/dist/agents/skills/gemini-cli/ts-strict-mode/SKILL.md +167 -0
  4284. package/dist/agents/skills/gemini-cli/ts-strict-mode/skill.yaml +38 -0
  4285. package/dist/agents/skills/gemini-cli/ts-template-literal-types/SKILL.md +146 -0
  4286. package/dist/agents/skills/gemini-cli/ts-template-literal-types/skill.yaml +38 -0
  4287. package/dist/agents/skills/gemini-cli/ts-testing-types/SKILL.md +166 -0
  4288. package/dist/agents/skills/gemini-cli/ts-testing-types/skill.yaml +38 -0
  4289. package/dist/agents/skills/gemini-cli/ts-type-guards/SKILL.md +168 -0
  4290. package/dist/agents/skills/gemini-cli/ts-type-guards/skill.yaml +39 -0
  4291. package/dist/agents/skills/gemini-cli/ts-utility-types/SKILL.md +119 -0
  4292. package/dist/agents/skills/gemini-cli/ts-utility-types/skill.yaml +43 -0
  4293. package/dist/agents/skills/gemini-cli/ts-zod-integration/SKILL.md +181 -0
  4294. package/dist/agents/skills/gemini-cli/ts-zod-integration/skill.yaml +37 -0
  4295. package/dist/agents/skills/gemini-cli/validate-context-engineering/SKILL.md +9 -0
  4296. package/dist/agents/skills/gemini-cli/validate-context-engineering/skill.yaml +2 -0
  4297. package/dist/agents/skills/gemini-cli/vue-async-components/SKILL.md +67 -0
  4298. package/dist/agents/skills/gemini-cli/vue-async-components/skill.yaml +35 -0
  4299. package/dist/agents/skills/gemini-cli/vue-component-events/SKILL.md +72 -0
  4300. package/dist/agents/skills/gemini-cli/vue-component-events/skill.yaml +35 -0
  4301. package/dist/agents/skills/gemini-cli/vue-composables-pattern/SKILL.md +75 -0
  4302. package/dist/agents/skills/gemini-cli/vue-composables-pattern/skill.yaml +34 -0
  4303. package/dist/agents/skills/gemini-cli/vue-directive-pattern/SKILL.md +66 -0
  4304. package/dist/agents/skills/gemini-cli/vue-directive-pattern/skill.yaml +34 -0
  4305. package/dist/agents/skills/gemini-cli/vue-pinia-pattern/SKILL.md +69 -0
  4306. package/dist/agents/skills/gemini-cli/vue-pinia-pattern/skill.yaml +35 -0
  4307. package/dist/agents/skills/gemini-cli/vue-provide-inject/SKILL.md +66 -0
  4308. package/dist/agents/skills/gemini-cli/vue-provide-inject/skill.yaml +35 -0
  4309. package/dist/agents/skills/gemini-cli/vue-reactive-refs/SKILL.md +67 -0
  4310. package/dist/agents/skills/gemini-cli/vue-reactive-refs/skill.yaml +35 -0
  4311. package/dist/agents/skills/gemini-cli/vue-renderless-components/SKILL.md +69 -0
  4312. package/dist/agents/skills/gemini-cli/vue-renderless-components/skill.yaml +35 -0
  4313. package/dist/agents/skills/gemini-cli/vue-slots-pattern/SKILL.md +72 -0
  4314. package/dist/agents/skills/gemini-cli/vue-slots-pattern/skill.yaml +35 -0
  4315. package/dist/agents/skills/gemini-cli/vue-teleport-pattern/SKILL.md +66 -0
  4316. package/dist/agents/skills/gemini-cli/vue-teleport-pattern/skill.yaml +35 -0
  4317. package/dist/agents/skills/gemini-cli/vue-watchers-pattern/SKILL.md +73 -0
  4318. package/dist/agents/skills/gemini-cli/vue-watchers-pattern/skill.yaml +35 -0
  4319. package/dist/agents/skills/gemini-cli/xstate-actor-pattern/SKILL.md +155 -0
  4320. package/dist/agents/skills/gemini-cli/xstate-actor-pattern/skill.yaml +40 -0
  4321. package/dist/agents/skills/gemini-cli/xstate-guards-actions/SKILL.md +153 -0
  4322. package/dist/agents/skills/gemini-cli/xstate-guards-actions/skill.yaml +41 -0
  4323. package/dist/agents/skills/gemini-cli/xstate-history-states/SKILL.md +123 -0
  4324. package/dist/agents/skills/gemini-cli/xstate-history-states/skill.yaml +39 -0
  4325. package/dist/agents/skills/gemini-cli/xstate-invoke-pattern/SKILL.md +165 -0
  4326. package/dist/agents/skills/gemini-cli/xstate-invoke-pattern/skill.yaml +40 -0
  4327. package/dist/agents/skills/gemini-cli/xstate-machine-definition/SKILL.md +151 -0
  4328. package/dist/agents/skills/gemini-cli/xstate-machine-definition/skill.yaml +40 -0
  4329. package/dist/agents/skills/gemini-cli/xstate-parallel-states/SKILL.md +130 -0
  4330. package/dist/agents/skills/gemini-cli/xstate-parallel-states/skill.yaml +39 -0
  4331. package/dist/agents/skills/gemini-cli/xstate-react-integration/SKILL.md +138 -0
  4332. package/dist/agents/skills/gemini-cli/xstate-react-integration/skill.yaml +39 -0
  4333. package/dist/agents/skills/gemini-cli/xstate-testing-patterns/SKILL.md +173 -0
  4334. package/dist/agents/skills/gemini-cli/xstate-testing-patterns/skill.yaml +39 -0
  4335. package/dist/agents/skills/gemini-cli/xstate-typegen/SKILL.md +168 -0
  4336. package/dist/agents/skills/gemini-cli/xstate-typegen/skill.yaml +39 -0
  4337. package/dist/agents/skills/gemini-cli/xstate-visualization/SKILL.md +124 -0
  4338. package/dist/agents/skills/gemini-cli/xstate-visualization/skill.yaml +39 -0
  4339. package/dist/agents/skills/gemini-cli/zod-array-validation/SKILL.md +160 -0
  4340. package/dist/agents/skills/gemini-cli/zod-array-validation/skill.yaml +42 -0
  4341. package/dist/agents/skills/gemini-cli/zod-async-validation/SKILL.md +205 -0
  4342. package/dist/agents/skills/gemini-cli/zod-async-validation/skill.yaml +40 -0
  4343. package/dist/agents/skills/gemini-cli/zod-error-handling/SKILL.md +206 -0
  4344. package/dist/agents/skills/gemini-cli/zod-error-handling/skill.yaml +41 -0
  4345. package/dist/agents/skills/gemini-cli/zod-infer-types/SKILL.md +192 -0
  4346. package/dist/agents/skills/gemini-cli/zod-infer-types/skill.yaml +41 -0
  4347. package/dist/agents/skills/gemini-cli/zod-nextjs-integration/SKILL.md +232 -0
  4348. package/dist/agents/skills/gemini-cli/zod-nextjs-integration/skill.yaml +42 -0
  4349. package/dist/agents/skills/gemini-cli/zod-object-patterns/SKILL.md +190 -0
  4350. package/dist/agents/skills/gemini-cli/zod-object-patterns/skill.yaml +43 -0
  4351. package/dist/agents/skills/gemini-cli/zod-schema-definition/SKILL.md +170 -0
  4352. package/dist/agents/skills/gemini-cli/zod-schema-definition/skill.yaml +42 -0
  4353. package/dist/agents/skills/gemini-cli/zod-string-validation/SKILL.md +180 -0
  4354. package/dist/agents/skills/gemini-cli/zod-string-validation/skill.yaml +43 -0
  4355. package/dist/agents/skills/gemini-cli/zod-transform-refine/SKILL.md +193 -0
  4356. package/dist/agents/skills/gemini-cli/zod-transform-refine/skill.yaml +42 -0
  4357. package/dist/agents/skills/gemini-cli/zod-union-discriminated/SKILL.md +168 -0
  4358. package/dist/agents/skills/gemini-cli/zod-union-discriminated/skill.yaml +40 -0
  4359. package/dist/agents/skills/tests/schema.ts +16 -1
  4360. package/dist/agents/skills/tests/structure.test.ts +52 -9
  4361. package/dist/agents-md-RP63BO56.js +9 -0
  4362. package/dist/architecture-MCCHZWOK.js +14 -0
  4363. package/dist/assess-project-7HE2Z5PW.js +9 -0
  4364. package/dist/bin/harness-mcp.js +19 -19
  4365. package/dist/bin/harness.js +126 -37
  4366. package/dist/check-phase-gate-JXIRVHTR.js +14 -0
  4367. package/dist/chunk-3ISINLYT.js +76 -0
  4368. package/dist/chunk-3POJUEEZ.js +89 -0
  4369. package/dist/chunk-44DNUOBH.js +187 -0
  4370. package/dist/chunk-46PEKT5G.js +7951 -0
  4371. package/dist/chunk-5LMZA5LZ.js +38 -0
  4372. package/dist/chunk-6B6UN6SG.js +112 -0
  4373. package/dist/chunk-7QYO5UWW.js +62 -0
  4374. package/dist/chunk-ANXOO2HR.js +85 -0
  4375. package/dist/chunk-BH6GUAUS.js +6749 -0
  4376. package/dist/chunk-BKHS7RPB.js +121 -0
  4377. package/dist/chunk-CQ553GZO.js +350 -0
  4378. package/dist/chunk-DSB6O257.js +161 -0
  4379. package/dist/chunk-EKYIKFOO.js +122 -0
  4380. package/dist/chunk-FP53DDB5.js +372 -0
  4381. package/dist/chunk-FVF66DVL.js +293 -0
  4382. package/dist/chunk-HP74FPUJ.js +201 -0
  4383. package/dist/chunk-I4QR3HNH.js +59 -0
  4384. package/dist/chunk-ICPZNX6O.js +199 -0
  4385. package/dist/chunk-LASBAGC6.js +125 -0
  4386. package/dist/chunk-LM5Z2WCA.js +31 -0
  4387. package/dist/chunk-LOUH2LIC.js +67 -0
  4388. package/dist/chunk-LRX6J7IA.js +250 -0
  4389. package/dist/chunk-LVYPPKZI.js +78 -0
  4390. package/dist/chunk-MY5DBCJZ.js +5069 -0
  4391. package/dist/chunk-NV4FPO7J.js +300 -0
  4392. package/dist/chunk-OWH5XSMD.js +103 -0
  4393. package/dist/chunk-Q3XYV5UC.js +27 -0
  4394. package/dist/chunk-R7LB3VJR.js +130 -0
  4395. package/dist/chunk-UKMWY5OJ.js +248 -0
  4396. package/dist/chunk-WPFFEDTO.js +15103 -0
  4397. package/dist/chunk-YDRB55Q4.js +135 -0
  4398. package/dist/chunk-ZOIGL5PP.js +327 -0
  4399. package/dist/ci-workflow-YE7B375K.js +9 -0
  4400. package/dist/create-skill-LTLAAJPC.js +11 -0
  4401. package/dist/dist-27IJJDWG.js +657 -0
  4402. package/dist/dist-666AAZQ6.js +16 -0
  4403. package/dist/dist-M6FBUXZD.js +98 -0
  4404. package/dist/dist-RRMRZRV7.js +18 -0
  4405. package/dist/docs-YAYNHDC3.js +15 -0
  4406. package/dist/engine-TS24YHIT.js +9 -0
  4407. package/dist/entropy-RSH5D63W.js +13 -0
  4408. package/dist/feedback-VGGBOI54.js +18 -0
  4409. package/dist/generate-agent-definitions-PBITSP7C.js +16 -0
  4410. package/dist/glob-helper-SRXMZPKM.js +52 -0
  4411. package/dist/graph-loader-OLSOE537.js +8 -0
  4412. package/dist/index.d.ts +21 -16
  4413. package/dist/index.js +55 -55
  4414. package/dist/loader-HBQNUGAM.js +11 -0
  4415. package/dist/mcp-HZ6CRAZR.js +37 -0
  4416. package/dist/performance-MMIMMNFQ.js +27 -0
  4417. package/dist/review-pipeline-UAPVKI6W.js +9 -0
  4418. package/dist/runner-YYCVNAVF.js +6 -0
  4419. package/dist/runtime-NQNTDQV5.js +10 -0
  4420. package/dist/security-IP5IJTB7.js +9 -0
  4421. package/dist/skill-executor-CS25H7FF.js +8 -0
  4422. package/dist/validate-QLHCVBKE.js +13 -0
  4423. package/dist/validate-cross-check-WQWFMPXJ.js +9 -0
  4424. package/package.json +6 -6
  4425. package/dist/agents-md-FJXDMZPJ.js +0 -9
  4426. package/dist/architecture-FVERI7BQ.js +0 -14
  4427. package/dist/assess-project-UGL5KLBV.js +0 -9
  4428. package/dist/check-phase-gate-C7JPPKMX.js +0 -14
  4429. package/dist/chunk-2PAPHA77.js +0 -125
  4430. package/dist/chunk-6KWBH4EO.js +0 -293
  4431. package/dist/chunk-7DMF3VT5.js +0 -122
  4432. package/dist/chunk-7V5Y2L67.js +0 -62
  4433. package/dist/chunk-7XZSHTYZ.js +0 -103
  4434. package/dist/chunk-AQN7GFKU.js +0 -327
  4435. package/dist/chunk-CJDVBBPB.js +0 -76
  4436. package/dist/chunk-CZEPCYVX.js +0 -293
  4437. package/dist/chunk-DBSOCI3G.js +0 -346
  4438. package/dist/chunk-ERS5EVUZ.js +0 -38
  4439. package/dist/chunk-EUCASOD7.js +0 -4675
  4440. package/dist/chunk-FIAPHX37.js +0 -31
  4441. package/dist/chunk-FNVAW5NG.js +0 -201
  4442. package/dist/chunk-GZKSBLQL.js +0 -73
  4443. package/dist/chunk-H7Y5CKTM.js +0 -27
  4444. package/dist/chunk-HRUCT5YX.js +0 -130
  4445. package/dist/chunk-KIR5PQX5.js +0 -89
  4446. package/dist/chunk-L57RL7MC.js +0 -6164
  4447. package/dist/chunk-LAKMOIU6.js +0 -248
  4448. package/dist/chunk-N5G5QMS3.js +0 -103
  4449. package/dist/chunk-OD3S2NHN.js +0 -52
  4450. package/dist/chunk-QBATHQXU.js +0 -14870
  4451. package/dist/chunk-RQ3AKUJB.js +0 -85
  4452. package/dist/chunk-SD3SQOZ2.js +0 -67
  4453. package/dist/chunk-SE4YPMLH.js +0 -89
  4454. package/dist/chunk-T5QWCVGK.js +0 -167
  4455. package/dist/chunk-TRAPF4IX.js +0 -185
  4456. package/dist/chunk-UJHNGRS6.js +0 -7478
  4457. package/dist/chunk-WKLLNUAT.js +0 -241
  4458. package/dist/chunk-YLN34N65.js +0 -372
  4459. package/dist/chunk-YQ6KC6TE.js +0 -135
  4460. package/dist/chunk-ZLTFDTK7.js +0 -187
  4461. package/dist/ci-workflow-S7VY625R.js +0 -9
  4462. package/dist/create-skill-U3XCFRZN.js +0 -11
  4463. package/dist/dist-DZ63LLUD.js +0 -18
  4464. package/dist/dist-K56VJ4UJ.js +0 -92
  4465. package/dist/dist-LPGVPYOZ.js +0 -655
  4466. package/dist/dist-USY2C5JL.js +0 -16
  4467. package/dist/docs-CGUBALYL.js +0 -15
  4468. package/dist/engine-PEHFAFOT.js +0 -9
  4469. package/dist/entropy-H5OOCI57.js +0 -13
  4470. package/dist/feedback-XTDR7E3R.js +0 -18
  4471. package/dist/generate-agent-definitions-RBI7Z4RY.js +0 -16
  4472. package/dist/glob-helper-R5FXNUPS.js +0 -52
  4473. package/dist/graph-loader-GRXDUWXO.js +0 -8
  4474. package/dist/loader-IOC5L7NL.js +0 -11
  4475. package/dist/mcp-7RPKBGIR.js +0 -37
  4476. package/dist/performance-FSXEQJYB.js +0 -27
  4477. package/dist/review-pipeline-VLKL7NV2.js +0 -9
  4478. package/dist/runner-VMYLHWOC.js +0 -6
  4479. package/dist/runtime-3X2MV6R4.js +0 -10
  4480. package/dist/security-B76X5RL7.js +0 -9
  4481. package/dist/skill-executor-2BZQLHYN.js +0 -8
  4482. package/dist/validate-KN6A2GN3.js +0 -13
  4483. package/dist/validate-cross-check-LITTM24O.js +0 -9
@@ -1,4675 +0,0 @@
1
- // ../graph/dist/index.mjs
2
- import { z } from "zod";
3
- import { readFile, writeFile, mkdir, access } from "fs/promises";
4
- import { join } from "path";
5
- import * as fs from "fs/promises";
6
- import * as path from "path";
7
- import { execFile } from "child_process";
8
- import { promisify } from "util";
9
- import * as path2 from "path";
10
- import * as fs2 from "fs/promises";
11
- import * as path3 from "path";
12
- import * as crypto from "crypto";
13
- import * as fs3 from "fs/promises";
14
- import * as path4 from "path";
15
- import * as fs4 from "fs/promises";
16
- import * as path5 from "path";
17
- import { minimatch } from "minimatch";
18
- import { relative as relative2 } from "path";
19
- import * as fs5 from "fs/promises";
20
- import * as path6 from "path";
21
- var NODE_TYPES = [
22
- // Code
23
- "repository",
24
- "module",
25
- "file",
26
- "class",
27
- "interface",
28
- "function",
29
- "method",
30
- "variable",
31
- // Knowledge
32
- "adr",
33
- "decision",
34
- "learning",
35
- "failure",
36
- "issue",
37
- "document",
38
- "skill",
39
- "conversation",
40
- // VCS
41
- "commit",
42
- "build",
43
- "test_result",
44
- // Observability (future)
45
- "span",
46
- "metric",
47
- "log",
48
- // Structural
49
- "layer",
50
- "pattern",
51
- "constraint",
52
- "violation",
53
- // Design
54
- "design_token",
55
- "aesthetic_intent",
56
- "design_constraint",
57
- // Traceability
58
- "requirement"
59
- ];
60
- var EDGE_TYPES = [
61
- // Code relationships
62
- "contains",
63
- "imports",
64
- "calls",
65
- "implements",
66
- "inherits",
67
- "references",
68
- // Knowledge relationships
69
- "applies_to",
70
- "caused_by",
71
- "resolved_by",
72
- "documents",
73
- "violates",
74
- "specifies",
75
- "decided",
76
- // VCS relationships
77
- "co_changes_with",
78
- "triggered_by",
79
- "failed_in",
80
- // Execution relationships (future)
81
- "executed_by",
82
- "measured_by",
83
- // Design relationships
84
- "uses_token",
85
- "declares_intent",
86
- "violates_design",
87
- "platform_binding",
88
- // Traceability relationships
89
- "requires",
90
- "verified_by",
91
- "tested_by"
92
- ];
93
- var OBSERVABILITY_TYPES = /* @__PURE__ */ new Set(["span", "metric", "log"]);
94
- var CURRENT_SCHEMA_VERSION = 1;
95
- var GraphNodeSchema = z.object({
96
- id: z.string(),
97
- type: z.enum(NODE_TYPES),
98
- name: z.string(),
99
- path: z.string().optional(),
100
- location: z.object({
101
- fileId: z.string(),
102
- startLine: z.number(),
103
- endLine: z.number(),
104
- startColumn: z.number().optional(),
105
- endColumn: z.number().optional()
106
- }).optional(),
107
- content: z.string().optional(),
108
- hash: z.string().optional(),
109
- metadata: z.record(z.unknown()),
110
- embedding: z.array(z.number()).optional(),
111
- lastModified: z.string().optional()
112
- });
113
- var GraphEdgeSchema = z.object({
114
- from: z.string(),
115
- to: z.string(),
116
- type: z.enum(EDGE_TYPES),
117
- confidence: z.number().min(0).max(1).optional(),
118
- metadata: z.record(z.unknown()).optional()
119
- });
120
- async function saveGraph(dirPath, nodes, edges) {
121
- await mkdir(dirPath, { recursive: true });
122
- const graphData = { nodes, edges };
123
- const metadata = {
124
- schemaVersion: CURRENT_SCHEMA_VERSION,
125
- lastScanTimestamp: (/* @__PURE__ */ new Date()).toISOString(),
126
- nodeCount: nodes.length,
127
- edgeCount: edges.length
128
- };
129
- await Promise.all([
130
- writeFile(join(dirPath, "graph.json"), JSON.stringify(graphData, null, 2), "utf-8"),
131
- writeFile(join(dirPath, "metadata.json"), JSON.stringify(metadata, null, 2), "utf-8")
132
- ]);
133
- }
134
- async function loadGraph(dirPath) {
135
- const metaPath = join(dirPath, "metadata.json");
136
- const graphPath = join(dirPath, "graph.json");
137
- try {
138
- await access(metaPath);
139
- await access(graphPath);
140
- } catch {
141
- return null;
142
- }
143
- const metaContent = await readFile(metaPath, "utf-8");
144
- const metadata = JSON.parse(metaContent);
145
- if (metadata.schemaVersion !== CURRENT_SCHEMA_VERSION) {
146
- return null;
147
- }
148
- const graphContent = await readFile(graphPath, "utf-8");
149
- return JSON.parse(graphContent);
150
- }
151
- var POISONED_KEYS = /* @__PURE__ */ new Set(["__proto__", "constructor", "prototype"]);
152
- function safeMerge(target, source) {
153
- for (const key of Object.keys(source)) {
154
- if (!POISONED_KEYS.has(key)) {
155
- target[key] = source[key];
156
- }
157
- }
158
- }
159
- function edgeKey(from, to, type) {
160
- return `${from}\0${to}\0${type}`;
161
- }
162
- function addToIndex(index, key, edge) {
163
- const list = index.get(key);
164
- if (list) {
165
- list.push(edge);
166
- } else {
167
- index.set(key, [edge]);
168
- }
169
- }
170
- function removeFromIndex(index, key, edge) {
171
- const list = index.get(key);
172
- if (!list) return;
173
- const idx = list.indexOf(edge);
174
- if (idx !== -1) list.splice(idx, 1);
175
- if (list.length === 0) index.delete(key);
176
- }
177
- var GraphStore = class {
178
- nodeMap = /* @__PURE__ */ new Map();
179
- edgeMap = /* @__PURE__ */ new Map();
180
- // keyed by from\0to\0type
181
- edgesByFrom = /* @__PURE__ */ new Map();
182
- edgesByTo = /* @__PURE__ */ new Map();
183
- edgesByType = /* @__PURE__ */ new Map();
184
- // --- Node operations ---
185
- addNode(node) {
186
- const existing = this.nodeMap.get(node.id);
187
- if (existing) {
188
- safeMerge(existing, node);
189
- } else {
190
- this.nodeMap.set(node.id, { ...node });
191
- }
192
- }
193
- batchAddNodes(nodes) {
194
- for (const node of nodes) {
195
- this.addNode(node);
196
- }
197
- }
198
- getNode(id) {
199
- const node = this.nodeMap.get(id);
200
- if (!node) return null;
201
- return { ...node };
202
- }
203
- findNodes(query) {
204
- const results = [];
205
- for (const node of this.nodeMap.values()) {
206
- if (query.type !== void 0 && node.type !== query.type) continue;
207
- if (query.name !== void 0 && node.name !== query.name) continue;
208
- if (query.path !== void 0 && node.path !== query.path) continue;
209
- results.push({ ...node });
210
- }
211
- return results;
212
- }
213
- removeNode(id) {
214
- this.nodeMap.delete(id);
215
- const fromEdges = this.edgesByFrom.get(id) ?? [];
216
- const toEdges = this.edgesByTo.get(id) ?? [];
217
- const edgesToRemove = /* @__PURE__ */ new Set([...fromEdges, ...toEdges]);
218
- for (const edge of edgesToRemove) {
219
- this.removeEdgeInternal(edge);
220
- }
221
- }
222
- // --- Edge operations ---
223
- addEdge(edge) {
224
- const key = edgeKey(edge.from, edge.to, edge.type);
225
- const existing = this.edgeMap.get(key);
226
- if (existing) {
227
- if (edge.metadata) {
228
- safeMerge(existing, edge);
229
- }
230
- return;
231
- }
232
- const copy = { ...edge };
233
- this.edgeMap.set(key, copy);
234
- addToIndex(this.edgesByFrom, edge.from, copy);
235
- addToIndex(this.edgesByTo, edge.to, copy);
236
- addToIndex(this.edgesByType, edge.type, copy);
237
- }
238
- batchAddEdges(edges) {
239
- for (const edge of edges) {
240
- this.addEdge(edge);
241
- }
242
- }
243
- getEdges(query) {
244
- let candidates;
245
- if (query.from !== void 0 && query.to !== void 0 && query.type !== void 0) {
246
- const edge = this.edgeMap.get(edgeKey(query.from, query.to, query.type));
247
- return edge ? [{ ...edge }] : [];
248
- } else if (query.from !== void 0) {
249
- candidates = this.edgesByFrom.get(query.from) ?? [];
250
- } else if (query.to !== void 0) {
251
- candidates = this.edgesByTo.get(query.to) ?? [];
252
- } else if (query.type !== void 0) {
253
- candidates = this.edgesByType.get(query.type) ?? [];
254
- } else {
255
- candidates = this.edgeMap.values();
256
- }
257
- const results = [];
258
- for (const edge of candidates) {
259
- if (query.from !== void 0 && edge.from !== query.from) continue;
260
- if (query.to !== void 0 && edge.to !== query.to) continue;
261
- if (query.type !== void 0 && edge.type !== query.type) continue;
262
- results.push({ ...edge });
263
- }
264
- return results;
265
- }
266
- getNeighbors(nodeId, direction = "both") {
267
- const neighborIds = /* @__PURE__ */ new Set();
268
- if (direction === "outbound" || direction === "both") {
269
- const outEdges = this.edgesByFrom.get(nodeId) ?? [];
270
- for (const edge of outEdges) {
271
- neighborIds.add(edge.to);
272
- }
273
- }
274
- if (direction === "inbound" || direction === "both") {
275
- const inEdges = this.edgesByTo.get(nodeId) ?? [];
276
- for (const edge of inEdges) {
277
- neighborIds.add(edge.from);
278
- }
279
- }
280
- const results = [];
281
- for (const nid of neighborIds) {
282
- const node = this.getNode(nid);
283
- if (node) results.push(node);
284
- }
285
- return results;
286
- }
287
- // --- Counts ---
288
- get nodeCount() {
289
- return this.nodeMap.size;
290
- }
291
- get edgeCount() {
292
- return this.edgeMap.size;
293
- }
294
- // --- Clear ---
295
- clear() {
296
- this.nodeMap.clear();
297
- this.edgeMap.clear();
298
- this.edgesByFrom.clear();
299
- this.edgesByTo.clear();
300
- this.edgesByType.clear();
301
- }
302
- // --- Persistence ---
303
- async save(dirPath) {
304
- const allNodes = Array.from(this.nodeMap.values()).map((n) => ({ ...n }));
305
- const allEdges = Array.from(this.edgeMap.values()).map((e) => ({ ...e }));
306
- await saveGraph(dirPath, allNodes, allEdges);
307
- }
308
- async load(dirPath) {
309
- const data = await loadGraph(dirPath);
310
- if (!data) return false;
311
- this.clear();
312
- for (const node of data.nodes) {
313
- this.nodeMap.set(node.id, { ...node });
314
- }
315
- for (const edge of data.edges) {
316
- const copy = { ...edge };
317
- const key = edgeKey(edge.from, edge.to, edge.type);
318
- this.edgeMap.set(key, copy);
319
- addToIndex(this.edgesByFrom, edge.from, copy);
320
- addToIndex(this.edgesByTo, edge.to, copy);
321
- addToIndex(this.edgesByType, edge.type, copy);
322
- }
323
- return true;
324
- }
325
- // --- Internal ---
326
- removeEdgeInternal(edge) {
327
- const key = edgeKey(edge.from, edge.to, edge.type);
328
- this.edgeMap.delete(key);
329
- removeFromIndex(this.edgesByFrom, edge.from, edge);
330
- removeFromIndex(this.edgesByTo, edge.to, edge);
331
- removeFromIndex(this.edgesByType, edge.type, edge);
332
- }
333
- };
334
- function cosineSimilarity(a, b) {
335
- let dotProduct = 0;
336
- let normA = 0;
337
- let normB = 0;
338
- for (let i = 0; i < a.length; i++) {
339
- dotProduct += a[i] * b[i];
340
- normA += a[i] * a[i];
341
- normB += b[i] * b[i];
342
- }
343
- const denominator = Math.sqrt(normA) * Math.sqrt(normB);
344
- return denominator === 0 ? 0 : dotProduct / denominator;
345
- }
346
- var VectorStore = class _VectorStore {
347
- dimensions;
348
- vectors = /* @__PURE__ */ new Map();
349
- constructor(dimensions) {
350
- this.dimensions = dimensions;
351
- }
352
- /** Number of vectors currently stored. */
353
- get size() {
354
- return this.vectors.size;
355
- }
356
- /** Add a vector with the given id. Throws if dimensions do not match. */
357
- add(id, vector) {
358
- if (vector.length !== this.dimensions) {
359
- throw new Error(`Dimension mismatch: expected ${this.dimensions}, got ${vector.length}`);
360
- }
361
- this.vectors.set(id, vector);
362
- }
363
- /** Remove a vector by id. Returns true if the vector existed. */
364
- remove(id) {
365
- return this.vectors.delete(id);
366
- }
367
- /** Check whether a vector with the given id exists. */
368
- has(id) {
369
- return this.vectors.has(id);
370
- }
371
- /** Remove all stored vectors. */
372
- clear() {
373
- this.vectors.clear();
374
- }
375
- /**
376
- * Return the top-K most similar vectors to the query, sorted by descending
377
- * cosine similarity score. If the store contains fewer than topK vectors,
378
- * all available results are returned.
379
- */
380
- search(query, topK) {
381
- if (query.length !== this.dimensions) {
382
- throw new Error(`Dimension mismatch: expected ${this.dimensions}, got ${query.length}`);
383
- }
384
- const results = [];
385
- for (const [id, vector] of this.vectors) {
386
- results.push({ id, score: cosineSimilarity(query, vector) });
387
- }
388
- results.sort((a, b) => b.score - a.score);
389
- return results.slice(0, topK);
390
- }
391
- /** Serialize the store to a plain object for persistence. */
392
- serialize() {
393
- const vectors = [];
394
- for (const [id, vector] of this.vectors) {
395
- vectors.push({ id, vector: [...vector] });
396
- }
397
- return { dimensions: this.dimensions, vectors };
398
- }
399
- /** Deserialize a previously-serialized store. */
400
- static deserialize(data) {
401
- const store = new _VectorStore(data.dimensions);
402
- for (const { id, vector } of data.vectors) {
403
- store.add(id, vector);
404
- }
405
- return store;
406
- }
407
- };
408
- function edgeKey2(e) {
409
- return `${e.from}|${e.to}|${e.type}`;
410
- }
411
- function addEdge(state, edge) {
412
- const key = edgeKey2(edge);
413
- if (!state.edgeSet.has(key)) {
414
- state.edgeSet.add(key);
415
- state.resultEdges.push(edge);
416
- }
417
- }
418
- function shouldPruneNode(neighbor, pruneObservability, params) {
419
- if (pruneObservability && OBSERVABILITY_TYPES.has(neighbor.type)) return true;
420
- if (params.includeTypes && !params.includeTypes.includes(neighbor.type)) return true;
421
- if (params.excludeTypes && params.excludeTypes.includes(neighbor.type)) return true;
422
- return false;
423
- }
424
- function isEdgeExcluded(edge, params) {
425
- return !!(params.includeEdges && !params.includeEdges.includes(edge.type));
426
- }
427
- function processNeighbor(store, edge, neighborId, nextDepth, queue, state, pruneObservability, params) {
428
- if (isEdgeExcluded(edge, params)) return;
429
- if (state.visited.has(neighborId)) {
430
- addEdge(state, edge);
431
- return;
432
- }
433
- const neighbor = store.getNode(neighborId);
434
- if (!neighbor) return;
435
- state.visited.add(neighborId);
436
- if (shouldPruneNode(neighbor, pruneObservability, params)) {
437
- state.pruned++;
438
- return;
439
- }
440
- state.resultNodeMap.set(neighborId, neighbor);
441
- addEdge(state, edge);
442
- queue.push({ id: neighborId, depth: nextDepth });
443
- }
444
- function addCrossEdges(store, state) {
445
- const resultNodeIds = new Set(state.resultNodeMap.keys());
446
- for (const nodeId of resultNodeIds) {
447
- const outEdges = store.getEdges({ from: nodeId });
448
- for (const edge of outEdges) {
449
- if (resultNodeIds.has(edge.to)) {
450
- addEdge(state, edge);
451
- }
452
- }
453
- }
454
- }
455
- var ContextQL = class {
456
- store;
457
- constructor(store) {
458
- this.store = store;
459
- }
460
- execute(params) {
461
- const maxDepth = params.maxDepth ?? 3;
462
- const bidirectional = params.bidirectional ?? false;
463
- const pruneObservability = params.pruneObservability ?? true;
464
- const state = {
465
- visited: /* @__PURE__ */ new Set(),
466
- resultNodeMap: /* @__PURE__ */ new Map(),
467
- resultEdges: [],
468
- edgeSet: /* @__PURE__ */ new Set(),
469
- pruned: 0,
470
- depthReached: 0
471
- };
472
- const queue = [];
473
- this.seedRootNodes(params.rootNodeIds, state, queue);
474
- this.runBFS(queue, maxDepth, bidirectional, pruneObservability, params, state);
475
- addCrossEdges(this.store, state);
476
- return {
477
- nodes: Array.from(state.resultNodeMap.values()),
478
- edges: state.resultEdges,
479
- stats: {
480
- totalTraversed: state.visited.size,
481
- totalReturned: state.resultNodeMap.size,
482
- pruned: state.pruned,
483
- depthReached: state.depthReached
484
- }
485
- };
486
- }
487
- seedRootNodes(rootNodeIds, state, queue) {
488
- for (const rootId of rootNodeIds) {
489
- const node = this.store.getNode(rootId);
490
- if (node) {
491
- state.visited.add(rootId);
492
- state.resultNodeMap.set(rootId, node);
493
- queue.push({ id: rootId, depth: 0 });
494
- }
495
- }
496
- }
497
- runBFS(queue, maxDepth, bidirectional, pruneObservability, params, state) {
498
- let head = 0;
499
- while (head < queue.length) {
500
- const entry = queue[head++];
501
- const { id: currentId, depth } = entry;
502
- if (depth >= maxDepth) continue;
503
- const nextDepth = depth + 1;
504
- if (nextDepth > state.depthReached) state.depthReached = nextDepth;
505
- const allEdges = this.gatherEdges(currentId, bidirectional);
506
- for (const { edge, neighborId } of allEdges) {
507
- processNeighbor(
508
- this.store,
509
- edge,
510
- neighborId,
511
- nextDepth,
512
- queue,
513
- state,
514
- pruneObservability,
515
- params
516
- );
517
- }
518
- }
519
- }
520
- gatherEdges(nodeId, bidirectional) {
521
- const outEdges = this.store.getEdges({ from: nodeId });
522
- const inEdges = bidirectional ? this.store.getEdges({ to: nodeId }) : [];
523
- return [
524
- ...outEdges.map((e) => ({ edge: e, neighborId: e.to })),
525
- ...inEdges.map((e) => ({ edge: e, neighborId: e.from }))
526
- ];
527
- }
528
- };
529
- function project(nodes, spec) {
530
- if (!spec) return nodes.map((n) => ({ ...n }));
531
- return nodes.map((node) => {
532
- const projected = {};
533
- for (const field of spec.fields) {
534
- if (field in node) {
535
- projected[field] = node[field];
536
- }
537
- }
538
- return projected;
539
- });
540
- }
541
- var TEST_TYPES = /* @__PURE__ */ new Set(["test_result"]);
542
- var DOC_TYPES = /* @__PURE__ */ new Set(["adr", "decision", "document", "learning"]);
543
- var CODE_TYPES = /* @__PURE__ */ new Set([
544
- "file",
545
- "module",
546
- "class",
547
- "interface",
548
- "function",
549
- "method",
550
- "variable"
551
- ]);
552
- function groupNodesByImpact(nodes, excludeId) {
553
- const tests = [];
554
- const docs = [];
555
- const code = [];
556
- const other = [];
557
- for (const node of nodes) {
558
- if (excludeId && node.id === excludeId) continue;
559
- if (TEST_TYPES.has(node.type)) {
560
- tests.push(node);
561
- } else if (DOC_TYPES.has(node.type)) {
562
- docs.push(node);
563
- } else if (CODE_TYPES.has(node.type)) {
564
- code.push(node);
565
- } else {
566
- other.push(node);
567
- }
568
- }
569
- return { tests, docs, code, other };
570
- }
571
- var SKIP_METHOD_NAMES = /* @__PURE__ */ new Set(["constructor", "if", "for", "while", "switch"]);
572
- function countBraces(line) {
573
- let net = 0;
574
- for (const ch of line) {
575
- if (ch === "{") net++;
576
- else if (ch === "}") net--;
577
- }
578
- return net;
579
- }
580
- var CodeIngestor = class {
581
- constructor(store) {
582
- this.store = store;
583
- }
584
- store;
585
- async ingest(rootDir) {
586
- const start = Date.now();
587
- const errors = [];
588
- let nodesAdded = 0;
589
- let edgesAdded = 0;
590
- const files = await this.findSourceFiles(rootDir);
591
- const nameToFiles = /* @__PURE__ */ new Map();
592
- const fileContents = /* @__PURE__ */ new Map();
593
- for (const filePath of files) {
594
- try {
595
- const result = await this.processFile(filePath, rootDir, nameToFiles, fileContents);
596
- nodesAdded += result.nodesAdded;
597
- edgesAdded += result.edgesAdded;
598
- } catch (err) {
599
- errors.push(`${filePath}: ${err instanceof Error ? err.message : String(err)}`);
600
- }
601
- }
602
- const callsEdges = this.extractCallsEdges(nameToFiles, fileContents);
603
- for (const edge of callsEdges) {
604
- this.store.addEdge(edge);
605
- edgesAdded++;
606
- }
607
- edgesAdded += this.extractReqAnnotations(fileContents, rootDir);
608
- return {
609
- nodesAdded,
610
- nodesUpdated: 0,
611
- edgesAdded,
612
- edgesUpdated: 0,
613
- errors,
614
- durationMs: Date.now() - start
615
- };
616
- }
617
- async processFile(filePath, rootDir, nameToFiles, fileContents) {
618
- let nodesAdded = 0;
619
- let edgesAdded = 0;
620
- const relativePath = path.relative(rootDir, filePath).replace(/\\/g, "/");
621
- const content = await fs.readFile(filePath, "utf-8");
622
- const stat2 = await fs.stat(filePath);
623
- const fileId = `file:${relativePath}`;
624
- fileContents.set(relativePath, content);
625
- const fileNode = {
626
- id: fileId,
627
- type: "file",
628
- name: path.basename(filePath),
629
- path: relativePath,
630
- metadata: { language: this.detectLanguage(filePath) },
631
- lastModified: stat2.mtime.toISOString()
632
- };
633
- this.store.addNode(fileNode);
634
- nodesAdded++;
635
- const symbols = this.extractSymbols(content, fileId, relativePath);
636
- for (const { node, edge } of symbols) {
637
- this.store.addNode(node);
638
- this.store.addEdge(edge);
639
- nodesAdded++;
640
- edgesAdded++;
641
- this.trackCallable(node, relativePath, nameToFiles);
642
- }
643
- const imports = await this.extractImports(content, fileId, relativePath, rootDir);
644
- for (const edge of imports) {
645
- this.store.addEdge(edge);
646
- edgesAdded++;
647
- }
648
- return { nodesAdded, edgesAdded };
649
- }
650
- trackCallable(node, relativePath, nameToFiles) {
651
- if (node.type !== "function" && node.type !== "method") return;
652
- let files = nameToFiles.get(node.name);
653
- if (!files) {
654
- files = /* @__PURE__ */ new Set();
655
- nameToFiles.set(node.name, files);
656
- }
657
- files.add(relativePath);
658
- }
659
- async findSourceFiles(dir) {
660
- const results = [];
661
- const entries = await fs.readdir(dir, { withFileTypes: true });
662
- for (const entry of entries) {
663
- const fullPath = path.join(dir, entry.name);
664
- if (entry.isDirectory() && entry.name !== "node_modules" && entry.name !== "dist") {
665
- results.push(...await this.findSourceFiles(fullPath));
666
- } else if (entry.isFile() && /\.(ts|tsx|js|jsx)$/.test(entry.name) && !entry.name.endsWith(".d.ts")) {
667
- results.push(fullPath);
668
- }
669
- }
670
- return results;
671
- }
672
- extractSymbols(content, fileId, relativePath) {
673
- const results = [];
674
- const lines = content.split("\n");
675
- const ctx = { className: null, classId: null, insideClass: false, braceDepth: 0 };
676
- for (let i = 0; i < lines.length; i++) {
677
- const line = lines[i];
678
- if (this.tryExtractFunction(line, lines, i, fileId, relativePath, ctx, results)) continue;
679
- if (this.tryExtractClass(line, lines, i, fileId, relativePath, ctx, results)) continue;
680
- if (this.tryExtractInterface(line, lines, i, fileId, relativePath, ctx, results)) continue;
681
- if (this.updateClassContext(line, ctx)) continue;
682
- if (this.tryExtractMethod(line, lines, i, fileId, relativePath, ctx, results)) continue;
683
- if (ctx.insideClass) continue;
684
- this.tryExtractVariable(line, i, fileId, relativePath, results);
685
- }
686
- return results;
687
- }
688
- tryExtractFunction(line, lines, i, fileId, relativePath, ctx, results) {
689
- const fnMatch = line.match(/(?:export\s+)?(?:async\s+)?function\s+(\w+)/);
690
- if (!fnMatch) return false;
691
- const name = fnMatch[1];
692
- const id = `function:${relativePath}:${name}`;
693
- const endLine = this.findClosingBrace(lines, i);
694
- results.push({
695
- node: {
696
- id,
697
- type: "function",
698
- name,
699
- path: relativePath,
700
- location: { fileId, startLine: i + 1, endLine },
701
- metadata: {
702
- exported: line.includes("export"),
703
- cyclomaticComplexity: this.computeCyclomaticComplexity(lines.slice(i, endLine)),
704
- nestingDepth: this.computeMaxNesting(lines.slice(i, endLine)),
705
- lineCount: endLine - i,
706
- parameterCount: this.countParameters(line)
707
- }
708
- },
709
- edge: { from: fileId, to: id, type: "contains" }
710
- });
711
- if (!ctx.insideClass) {
712
- ctx.className = null;
713
- ctx.classId = null;
714
- }
715
- return true;
716
- }
717
- tryExtractClass(line, lines, i, fileId, relativePath, ctx, results) {
718
- const classMatch = line.match(/(?:export\s+)?class\s+(\w+)/);
719
- if (!classMatch) return false;
720
- const name = classMatch[1];
721
- const id = `class:${relativePath}:${name}`;
722
- const endLine = this.findClosingBrace(lines, i);
723
- results.push({
724
- node: {
725
- id,
726
- type: "class",
727
- name,
728
- path: relativePath,
729
- location: { fileId, startLine: i + 1, endLine },
730
- metadata: { exported: line.includes("export") }
731
- },
732
- edge: { from: fileId, to: id, type: "contains" }
733
- });
734
- ctx.className = name;
735
- ctx.classId = id;
736
- ctx.insideClass = true;
737
- ctx.braceDepth = countBraces(line);
738
- return true;
739
- }
740
- tryExtractInterface(line, lines, i, fileId, relativePath, ctx, results) {
741
- const ifaceMatch = line.match(/(?:export\s+)?interface\s+(\w+)/);
742
- if (!ifaceMatch) return false;
743
- const name = ifaceMatch[1];
744
- const id = `interface:${relativePath}:${name}`;
745
- const endLine = this.findClosingBrace(lines, i);
746
- results.push({
747
- node: {
748
- id,
749
- type: "interface",
750
- name,
751
- path: relativePath,
752
- location: { fileId, startLine: i + 1, endLine },
753
- metadata: { exported: line.includes("export") }
754
- },
755
- edge: { from: fileId, to: id, type: "contains" }
756
- });
757
- ctx.className = null;
758
- ctx.classId = null;
759
- ctx.insideClass = false;
760
- return true;
761
- }
762
- /** Update brace tracking; returns true when line is consumed (class ended or tracked). */
763
- updateClassContext(line, ctx) {
764
- if (!ctx.insideClass) return false;
765
- ctx.braceDepth += countBraces(line);
766
- if (ctx.braceDepth <= 0) {
767
- ctx.className = null;
768
- ctx.classId = null;
769
- ctx.insideClass = false;
770
- return true;
771
- }
772
- return false;
773
- }
774
- tryExtractMethod(line, lines, i, fileId, relativePath, ctx, results) {
775
- if (!ctx.insideClass || !ctx.className || !ctx.classId) return false;
776
- const methodMatch = line.match(
777
- /^\s+(?:(?:public|private|protected|readonly|static|abstract)\s+)*(?:async\s+)?(\w+)\s*\(/
778
- );
779
- if (!methodMatch) return false;
780
- const methodName = methodMatch[1];
781
- if (SKIP_METHOD_NAMES.has(methodName)) return false;
782
- const id = `method:${relativePath}:${ctx.className}.${methodName}`;
783
- const endLine = this.findClosingBrace(lines, i);
784
- results.push({
785
- node: {
786
- id,
787
- type: "method",
788
- name: methodName,
789
- path: relativePath,
790
- location: { fileId, startLine: i + 1, endLine },
791
- metadata: {
792
- className: ctx.className,
793
- exported: false,
794
- cyclomaticComplexity: this.computeCyclomaticComplexity(lines.slice(i, endLine)),
795
- nestingDepth: this.computeMaxNesting(lines.slice(i, endLine)),
796
- lineCount: endLine - i,
797
- parameterCount: this.countParameters(line)
798
- }
799
- },
800
- edge: { from: ctx.classId, to: id, type: "contains" }
801
- });
802
- return true;
803
- }
804
- tryExtractVariable(line, i, fileId, relativePath, results) {
805
- const varMatch = line.match(/(?:export\s+)?(?:const|let|var)\s+(\w+)/);
806
- if (!varMatch) return;
807
- const name = varMatch[1];
808
- const id = `variable:${relativePath}:${name}`;
809
- results.push({
810
- node: {
811
- id,
812
- type: "variable",
813
- name,
814
- path: relativePath,
815
- location: { fileId, startLine: i + 1, endLine: i + 1 },
816
- metadata: { exported: line.includes("export") }
817
- },
818
- edge: { from: fileId, to: id, type: "contains" }
819
- });
820
- }
821
- /**
822
- * Find the closing brace for a construct starting at the given line.
823
- * Uses a simple brace-counting heuristic. Returns 1-indexed line number.
824
- */
825
- findClosingBrace(lines, startIndex) {
826
- let depth = 0;
827
- for (let i = startIndex; i < lines.length; i++) {
828
- const line = lines[i];
829
- for (const ch of line) {
830
- if (ch === "{") depth++;
831
- if (ch === "}") depth--;
832
- }
833
- if (depth <= 0 && i > startIndex) {
834
- return i + 1;
835
- }
836
- if (depth === 0 && i === startIndex) {
837
- if (line.includes("{")) {
838
- return i + 1;
839
- }
840
- }
841
- }
842
- return startIndex + 1;
843
- }
844
- /**
845
- * Second pass: scan each file for identifiers matching known callable names,
846
- * then create file-to-file "calls" edges. Uses regex heuristic (not AST).
847
- */
848
- extractCallsEdges(nameToFiles, fileContents) {
849
- const edges = [];
850
- const seen = /* @__PURE__ */ new Set();
851
- for (const [filePath, content] of fileContents) {
852
- const callerFileId = `file:${filePath}`;
853
- const callPattern = /\b([a-zA-Z_$][\w$]*)\s*\(/g;
854
- let match;
855
- while ((match = callPattern.exec(content)) !== null) {
856
- const name = match[1];
857
- const targetFiles = nameToFiles.get(name);
858
- if (!targetFiles) continue;
859
- for (const targetFile of targetFiles) {
860
- if (targetFile === filePath) continue;
861
- const targetFileId = `file:${targetFile}`;
862
- const key = `${callerFileId}|${targetFileId}`;
863
- if (seen.has(key)) continue;
864
- seen.add(key);
865
- edges.push({
866
- from: callerFileId,
867
- to: targetFileId,
868
- type: "calls",
869
- metadata: { confidence: "regex" }
870
- });
871
- }
872
- }
873
- }
874
- return edges;
875
- }
876
- async extractImports(content, fileId, relativePath, rootDir) {
877
- const edges = [];
878
- const importRegex = /import\s+(?:type\s+)?(?:\{[^}]*\}|[\w*]+)\s+from\s+['"]([^'"]+)['"]/g;
879
- let match;
880
- while ((match = importRegex.exec(content)) !== null) {
881
- const importPath = match[1];
882
- if (!importPath.startsWith(".")) continue;
883
- const resolvedPath = await this.resolveImportPath(relativePath, importPath, rootDir);
884
- if (resolvedPath) {
885
- const targetId = `file:${resolvedPath}`;
886
- const isTypeOnly = match[0].includes("import type");
887
- edges.push({
888
- from: fileId,
889
- to: targetId,
890
- type: "imports",
891
- metadata: { importType: isTypeOnly ? "type-only" : "static" }
892
- });
893
- }
894
- }
895
- return edges;
896
- }
897
- async resolveImportPath(fromFile, importPath, rootDir) {
898
- const fromDir = path.dirname(fromFile);
899
- const resolved = path.normalize(path.join(fromDir, importPath)).replace(/\\/g, "/");
900
- const extensions = [".ts", ".tsx", ".js", ".jsx"];
901
- for (const ext of extensions) {
902
- const candidate = resolved.replace(/\.js$/, "") + ext;
903
- const fullPath = path.join(rootDir, candidate);
904
- try {
905
- await fs.access(fullPath);
906
- return candidate;
907
- } catch {
908
- }
909
- }
910
- for (const ext of extensions) {
911
- const candidate = path.join(resolved, `index${ext}`).replace(/\\/g, "/");
912
- const fullPath = path.join(rootDir, candidate);
913
- try {
914
- await fs.access(fullPath);
915
- return candidate;
916
- } catch {
917
- }
918
- }
919
- return null;
920
- }
921
- computeCyclomaticComplexity(lines) {
922
- let complexity = 1;
923
- const decisionPattern = /\b(if|else\s+if|while|for|case)\b|\?\s*[^:?]|&&|\|\||catch\b/g;
924
- for (const line of lines) {
925
- const trimmed = line.trim();
926
- if (trimmed.startsWith("//") || trimmed.startsWith("*")) continue;
927
- const matches = trimmed.match(decisionPattern);
928
- if (matches) complexity += matches.length;
929
- }
930
- return complexity;
931
- }
932
- computeMaxNesting(lines) {
933
- let maxDepth = 0;
934
- let currentDepth = 0;
935
- for (const line of lines) {
936
- const trimmed = line.trim();
937
- if (trimmed.startsWith("//") || trimmed.startsWith("*")) continue;
938
- for (const ch of trimmed) {
939
- if (ch === "{") {
940
- currentDepth++;
941
- if (currentDepth > maxDepth) maxDepth = currentDepth;
942
- } else if (ch === "}") {
943
- currentDepth--;
944
- }
945
- }
946
- }
947
- return Math.max(0, maxDepth - 1);
948
- }
949
- countParameters(declarationLine) {
950
- const parenMatch = declarationLine.match(/\(([^)]*)\)/);
951
- if (!parenMatch || !parenMatch[1].trim()) return 0;
952
- let depth = 0;
953
- let count = 1;
954
- for (const ch of parenMatch[1]) {
955
- if (ch === "<" || ch === "(") depth++;
956
- else if (ch === ">" || ch === ")") depth--;
957
- else if (ch === "," && depth === 0) count++;
958
- }
959
- return count;
960
- }
961
- detectLanguage(filePath) {
962
- if (/\.tsx?$/.test(filePath)) return "typescript";
963
- if (/\.jsx?$/.test(filePath)) return "javascript";
964
- return "unknown";
965
- }
966
- /**
967
- * Scan file contents for @req annotations and create verified_by edges
968
- * linking requirement nodes to the annotated files.
969
- * Format: // @req <feature-name>#<index>
970
- */
971
- extractReqAnnotations(fileContents, rootDir) {
972
- const REQ_TAG = /\/\/\s*@req\s+([\w-]+)#(\d+)/g;
973
- const reqNodes = this.store.findNodes({ type: "requirement" });
974
- let edgesAdded = 0;
975
- for (const [filePath, content] of fileContents) {
976
- let match;
977
- REQ_TAG.lastIndex = 0;
978
- while ((match = REQ_TAG.exec(content)) !== null) {
979
- const featureName = match[1];
980
- const reqIndex = parseInt(match[2], 10);
981
- const reqNode = reqNodes.find(
982
- (n) => n.metadata.featureName === featureName && n.metadata.index === reqIndex
983
- );
984
- if (!reqNode) {
985
- console.warn(
986
- `@req annotation references non-existent requirement: ${featureName}#${reqIndex} in ${filePath}`
987
- );
988
- continue;
989
- }
990
- const relPath = path.relative(rootDir, filePath).replace(/\\/g, "/");
991
- const fileNodeId = `file:${relPath}`;
992
- this.store.addEdge({
993
- from: reqNode.id,
994
- to: fileNodeId,
995
- type: "verified_by",
996
- confidence: 1,
997
- metadata: {
998
- method: "annotation",
999
- tag: `@req ${featureName}#${reqIndex}`,
1000
- confidence: 1
1001
- }
1002
- });
1003
- edgesAdded++;
1004
- }
1005
- }
1006
- return edgesAdded;
1007
- }
1008
- };
1009
- var execFileAsync = promisify(execFile);
1010
- var GitIngestor = class {
1011
- constructor(store, gitRunner) {
1012
- this.store = store;
1013
- this.gitRunner = gitRunner;
1014
- }
1015
- store;
1016
- gitRunner;
1017
- async ingest(rootDir) {
1018
- const start = Date.now();
1019
- const errors = [];
1020
- let nodesAdded = 0;
1021
- let nodesUpdated = 0;
1022
- let edgesAdded = 0;
1023
- let edgesUpdated = 0;
1024
- let output;
1025
- try {
1026
- output = await this.runGit(rootDir, [
1027
- "log",
1028
- "--format=%H|%an|%ae|%aI|%s",
1029
- "--name-only",
1030
- "-n",
1031
- "100"
1032
- ]);
1033
- } catch (err) {
1034
- errors.push(`git log failed: ${err instanceof Error ? err.message : String(err)}`);
1035
- return {
1036
- nodesAdded: 0,
1037
- nodesUpdated: 0,
1038
- edgesAdded: 0,
1039
- edgesUpdated: 0,
1040
- errors,
1041
- durationMs: Date.now() - start
1042
- };
1043
- }
1044
- const commits = this.parseGitLog(output);
1045
- for (const commit of commits) {
1046
- const nodeId = `commit:${commit.shortHash}`;
1047
- this.store.addNode({
1048
- id: nodeId,
1049
- type: "commit",
1050
- name: commit.message,
1051
- metadata: {
1052
- author: commit.author,
1053
- email: commit.email,
1054
- date: commit.date,
1055
- hash: commit.hash
1056
- }
1057
- });
1058
- nodesAdded++;
1059
- for (const file of commit.files) {
1060
- const fileNodeId = `file:${file}`;
1061
- const existingNode = this.store.getNode(fileNodeId);
1062
- if (existingNode) {
1063
- this.store.addEdge({
1064
- from: fileNodeId,
1065
- to: nodeId,
1066
- type: "triggered_by"
1067
- });
1068
- edgesAdded++;
1069
- }
1070
- }
1071
- }
1072
- const coChanges = this.computeCoChanges(commits);
1073
- for (const { fileA, fileB, count } of coChanges) {
1074
- const fileAId = `file:${fileA}`;
1075
- const fileBId = `file:${fileB}`;
1076
- const nodeA = this.store.getNode(fileAId);
1077
- const nodeB = this.store.getNode(fileBId);
1078
- if (nodeA && nodeB) {
1079
- this.store.addEdge({
1080
- from: fileAId,
1081
- to: fileBId,
1082
- type: "co_changes_with",
1083
- metadata: { count }
1084
- });
1085
- edgesAdded++;
1086
- }
1087
- }
1088
- return {
1089
- nodesAdded,
1090
- nodesUpdated,
1091
- edgesAdded,
1092
- edgesUpdated,
1093
- errors,
1094
- durationMs: Date.now() - start
1095
- };
1096
- }
1097
- async runGit(rootDir, args) {
1098
- if (this.gitRunner) {
1099
- return this.gitRunner(rootDir, args);
1100
- }
1101
- const { stdout } = await execFileAsync("git", args, { cwd: rootDir });
1102
- return stdout;
1103
- }
1104
- parseGitLog(output) {
1105
- if (!output.trim()) return [];
1106
- const commits = [];
1107
- const lines = output.split("\n");
1108
- let current = null;
1109
- for (const line of lines) {
1110
- const trimmed = line.trim();
1111
- if (!trimmed) {
1112
- if (current && current.hasFiles) {
1113
- commits.push({
1114
- hash: current.hash,
1115
- shortHash: current.shortHash,
1116
- author: current.author,
1117
- email: current.email,
1118
- date: current.date,
1119
- message: current.message,
1120
- files: current.files
1121
- });
1122
- current = null;
1123
- }
1124
- continue;
1125
- }
1126
- const parts = trimmed.split("|");
1127
- if (parts.length >= 5 && /^[0-9a-f]{7,40}$/.test(parts[0])) {
1128
- if (current) {
1129
- commits.push({
1130
- hash: current.hash,
1131
- shortHash: current.shortHash,
1132
- author: current.author,
1133
- email: current.email,
1134
- date: current.date,
1135
- message: current.message,
1136
- files: current.files
1137
- });
1138
- }
1139
- current = {
1140
- hash: parts[0],
1141
- shortHash: parts[0].substring(0, 7),
1142
- author: parts[1],
1143
- email: parts[2],
1144
- date: parts[3],
1145
- message: parts.slice(4).join("|"),
1146
- // message may contain |
1147
- files: [],
1148
- hasFiles: false
1149
- };
1150
- } else if (current) {
1151
- current.files.push(trimmed);
1152
- current.hasFiles = true;
1153
- }
1154
- }
1155
- if (current) {
1156
- commits.push({
1157
- hash: current.hash,
1158
- shortHash: current.shortHash,
1159
- author: current.author,
1160
- email: current.email,
1161
- date: current.date,
1162
- message: current.message,
1163
- files: current.files
1164
- });
1165
- }
1166
- return commits;
1167
- }
1168
- computeCoChanges(commits) {
1169
- const pairCounts = /* @__PURE__ */ new Map();
1170
- for (const commit of commits) {
1171
- const files = [...commit.files].sort();
1172
- for (let i = 0; i < files.length; i++) {
1173
- for (let j = i + 1; j < files.length; j++) {
1174
- const key = `${files[i]}||${files[j]}`;
1175
- pairCounts.set(key, (pairCounts.get(key) ?? 0) + 1);
1176
- }
1177
- }
1178
- }
1179
- const results = [];
1180
- for (const [key, count] of pairCounts) {
1181
- if (count >= 2) {
1182
- const [fileA, fileB] = key.split("||");
1183
- results.push({ fileA, fileB, count });
1184
- }
1185
- }
1186
- return results;
1187
- }
1188
- };
1189
- var TopologicalLinker = class {
1190
- constructor(store) {
1191
- this.store = store;
1192
- }
1193
- store;
1194
- link() {
1195
- let edgesAdded = 0;
1196
- const files = this.store.findNodes({ type: "file" });
1197
- const directories = /* @__PURE__ */ new Map();
1198
- for (const file of files) {
1199
- if (!file.path) continue;
1200
- const dir = path2.dirname(file.path);
1201
- if (!directories.has(dir)) {
1202
- directories.set(dir, []);
1203
- }
1204
- directories.get(dir).push(file.id);
1205
- }
1206
- for (const [dir, fileIds] of directories) {
1207
- if (fileIds.length < 1) continue;
1208
- const moduleId = `module:${dir}`;
1209
- const moduleName = dir === "." ? "root" : path2.basename(dir);
1210
- this.store.addNode({
1211
- id: moduleId,
1212
- type: "module",
1213
- name: moduleName,
1214
- path: dir,
1215
- metadata: { fileCount: fileIds.length }
1216
- });
1217
- for (const fileId of fileIds) {
1218
- this.store.addEdge({
1219
- from: moduleId,
1220
- to: fileId,
1221
- type: "contains"
1222
- });
1223
- edgesAdded++;
1224
- }
1225
- }
1226
- const cycles = this.detectCycles(files.map((f) => f.id));
1227
- return { edgesAdded, cycles };
1228
- }
1229
- detectCycles(fileIds) {
1230
- const cycles = [];
1231
- const visited = /* @__PURE__ */ new Set();
1232
- const inStack = /* @__PURE__ */ new Set();
1233
- const stack = [];
1234
- const dfs = (nodeId) => {
1235
- if (inStack.has(nodeId)) {
1236
- const cycleStart = stack.indexOf(nodeId);
1237
- if (cycleStart !== -1) {
1238
- cycles.push(stack.slice(cycleStart).concat(nodeId));
1239
- }
1240
- return;
1241
- }
1242
- if (visited.has(nodeId)) return;
1243
- visited.add(nodeId);
1244
- inStack.add(nodeId);
1245
- stack.push(nodeId);
1246
- const importEdges = this.store.getEdges({ from: nodeId, type: "imports" });
1247
- for (const edge of importEdges) {
1248
- dfs(edge.to);
1249
- }
1250
- stack.pop();
1251
- inStack.delete(nodeId);
1252
- };
1253
- for (const fileId of fileIds) {
1254
- if (!visited.has(fileId)) {
1255
- dfs(fileId);
1256
- }
1257
- }
1258
- return cycles;
1259
- }
1260
- };
1261
- function hash(text) {
1262
- return crypto.createHash("sha256").update(text).digest("hex").slice(0, 8);
1263
- }
1264
- function mergeResults(...results) {
1265
- return {
1266
- nodesAdded: results.reduce((s, r) => s + r.nodesAdded, 0),
1267
- nodesUpdated: results.reduce((s, r) => s + r.nodesUpdated, 0),
1268
- edgesAdded: results.reduce((s, r) => s + r.edgesAdded, 0),
1269
- edgesUpdated: results.reduce((s, r) => s + r.edgesUpdated, 0),
1270
- errors: results.flatMap((r) => r.errors),
1271
- durationMs: results.reduce((s, r) => s + r.durationMs, 0)
1272
- };
1273
- }
1274
- function emptyResult(durationMs = 0) {
1275
- return { nodesAdded: 0, nodesUpdated: 0, edgesAdded: 0, edgesUpdated: 0, errors: [], durationMs };
1276
- }
1277
- var CODE_NODE_TYPES = ["file", "function", "class", "method", "interface", "variable"];
1278
- var KnowledgeIngestor = class {
1279
- constructor(store) {
1280
- this.store = store;
1281
- }
1282
- store;
1283
- async ingestADRs(adrDir) {
1284
- const start = Date.now();
1285
- const errors = [];
1286
- let nodesAdded = 0;
1287
- let edgesAdded = 0;
1288
- let files;
1289
- try {
1290
- files = await this.findMarkdownFiles(adrDir);
1291
- } catch {
1292
- return emptyResult(Date.now() - start);
1293
- }
1294
- for (const filePath of files) {
1295
- try {
1296
- const content = await fs2.readFile(filePath, "utf-8");
1297
- const filename = path3.basename(filePath, ".md");
1298
- const titleMatch = content.match(/^#\s+(.+)$/m);
1299
- const title = titleMatch ? titleMatch[1].trim() : filename;
1300
- const dateMatch = content.match(/\*\*Date:\*\*\s*(.+)/);
1301
- const statusMatch = content.match(/\*\*Status:\*\*\s*(.+)/);
1302
- const date = dateMatch ? dateMatch[1].trim() : void 0;
1303
- const status = statusMatch ? statusMatch[1].trim() : void 0;
1304
- const nodeId = `adr:${filename}`;
1305
- this.store.addNode({
1306
- id: nodeId,
1307
- type: "adr",
1308
- name: title,
1309
- path: filePath,
1310
- metadata: { date, status }
1311
- });
1312
- nodesAdded++;
1313
- edgesAdded += this.linkToCode(content, nodeId, "documents");
1314
- } catch (err) {
1315
- errors.push(`${filePath}: ${err instanceof Error ? err.message : String(err)}`);
1316
- }
1317
- }
1318
- return {
1319
- nodesAdded,
1320
- nodesUpdated: 0,
1321
- edgesAdded,
1322
- edgesUpdated: 0,
1323
- errors,
1324
- durationMs: Date.now() - start
1325
- };
1326
- }
1327
- async ingestLearnings(projectPath) {
1328
- const start = Date.now();
1329
- const filePath = path3.join(projectPath, ".harness", "learnings.md");
1330
- let content;
1331
- try {
1332
- content = await fs2.readFile(filePath, "utf-8");
1333
- } catch {
1334
- return emptyResult(Date.now() - start);
1335
- }
1336
- const errors = [];
1337
- let nodesAdded = 0;
1338
- let edgesAdded = 0;
1339
- const lines = content.split("\n");
1340
- let currentDate;
1341
- for (const line of lines) {
1342
- const headingMatch = line.match(/^##\s+(\S+)/);
1343
- if (headingMatch) {
1344
- currentDate = headingMatch[1];
1345
- continue;
1346
- }
1347
- const bulletMatch = line.match(/^-\s+(.+)/);
1348
- if (!bulletMatch) continue;
1349
- const text = bulletMatch[1];
1350
- const skillMatch = text.match(/\[skill:([^\]]+)\]/);
1351
- const outcomeMatch = text.match(/\[outcome:([^\]]+)\]/);
1352
- const skill = skillMatch ? skillMatch[1] : void 0;
1353
- const outcome = outcomeMatch ? outcomeMatch[1] : void 0;
1354
- const nodeId = `learning:${hash(text)}`;
1355
- this.store.addNode({
1356
- id: nodeId,
1357
- type: "learning",
1358
- name: text,
1359
- metadata: { skill, outcome, date: currentDate }
1360
- });
1361
- nodesAdded++;
1362
- edgesAdded += this.linkToCode(text, nodeId, "applies_to");
1363
- }
1364
- return {
1365
- nodesAdded,
1366
- nodesUpdated: 0,
1367
- edgesAdded,
1368
- edgesUpdated: 0,
1369
- errors,
1370
- durationMs: Date.now() - start
1371
- };
1372
- }
1373
- async ingestFailures(projectPath) {
1374
- const start = Date.now();
1375
- const filePath = path3.join(projectPath, ".harness", "failures.md");
1376
- let content;
1377
- try {
1378
- content = await fs2.readFile(filePath, "utf-8");
1379
- } catch {
1380
- return emptyResult(Date.now() - start);
1381
- }
1382
- const errors = [];
1383
- let nodesAdded = 0;
1384
- let edgesAdded = 0;
1385
- const sections = content.split(/^##\s+/m).filter((s) => s.trim());
1386
- for (const section of sections) {
1387
- const dateMatch = section.match(/\*\*Date:\*\*\s*(.+)/);
1388
- const skillMatch = section.match(/\*\*Skill:\*\*\s*(.+)/);
1389
- const typeMatch = section.match(/\*\*Type:\*\*\s*(.+)/);
1390
- const descMatch = section.match(/\*\*Description:\*\*\s*(.+)/);
1391
- const date = dateMatch ? dateMatch[1].trim() : void 0;
1392
- const skill = skillMatch ? skillMatch[1].trim() : void 0;
1393
- const failureType = typeMatch ? typeMatch[1].trim() : void 0;
1394
- const description = descMatch ? descMatch[1].trim() : void 0;
1395
- if (!description) continue;
1396
- const nodeId = `failure:${hash(description)}`;
1397
- this.store.addNode({
1398
- id: nodeId,
1399
- type: "failure",
1400
- name: description,
1401
- metadata: { date, skill, type: failureType }
1402
- });
1403
- nodesAdded++;
1404
- edgesAdded += this.linkToCode(description, nodeId, "caused_by");
1405
- }
1406
- return {
1407
- nodesAdded,
1408
- nodesUpdated: 0,
1409
- edgesAdded,
1410
- edgesUpdated: 0,
1411
- errors,
1412
- durationMs: Date.now() - start
1413
- };
1414
- }
1415
- async ingestAll(projectPath, opts) {
1416
- const start = Date.now();
1417
- const adrDir = opts?.adrDir ?? path3.join(projectPath, "docs", "adr");
1418
- const [adrResult, learningsResult, failuresResult] = await Promise.all([
1419
- this.ingestADRs(adrDir),
1420
- this.ingestLearnings(projectPath),
1421
- this.ingestFailures(projectPath)
1422
- ]);
1423
- const merged = mergeResults(adrResult, learningsResult, failuresResult);
1424
- return { ...merged, durationMs: Date.now() - start };
1425
- }
1426
- linkToCode(content, sourceNodeId, edgeType) {
1427
- let count = 0;
1428
- for (const nodeType of CODE_NODE_TYPES) {
1429
- const codeNodes = this.store.findNodes({ type: nodeType });
1430
- for (const node of codeNodes) {
1431
- let nameMatches = false;
1432
- if (node.name.length >= 3) {
1433
- const escaped = node.name.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
1434
- const namePattern = new RegExp(`\\b${escaped}\\b`, "i");
1435
- nameMatches = namePattern.test(content);
1436
- }
1437
- let pathMatches = false;
1438
- if (node.path && node.path.includes(path3.sep)) {
1439
- pathMatches = content.includes(node.path);
1440
- }
1441
- if (nameMatches || pathMatches) {
1442
- this.store.addEdge({
1443
- from: sourceNodeId,
1444
- to: node.id,
1445
- type: edgeType
1446
- });
1447
- count++;
1448
- }
1449
- }
1450
- }
1451
- return count;
1452
- }
1453
- async findMarkdownFiles(dir) {
1454
- const results = [];
1455
- const entries = await fs2.readdir(dir, { withFileTypes: true });
1456
- for (const entry of entries) {
1457
- const fullPath = path3.join(dir, entry.name);
1458
- if (entry.isDirectory()) {
1459
- results.push(...await this.findMarkdownFiles(fullPath));
1460
- } else if (entry.isFile() && entry.name.endsWith(".md")) {
1461
- results.push(fullPath);
1462
- }
1463
- }
1464
- return results;
1465
- }
1466
- };
1467
- var REQUIREMENT_SECTIONS = [
1468
- "Observable Truths",
1469
- "Success Criteria",
1470
- "Acceptance Criteria"
1471
- ];
1472
- var SECTION_HEADING_RE = /^#{2,3}\s+(.+)$/;
1473
- var NUMBERED_ITEM_RE = /^\s*(\d+)\.\s+(.+)$/;
1474
- function detectEarsPattern(text) {
1475
- const lower = text.toLowerCase();
1476
- if (/^if\b.+\bthen\b.+\bshall not\b/.test(lower)) return "unwanted";
1477
- if (/^when\b/.test(lower)) return "event-driven";
1478
- if (/^while\b/.test(lower)) return "state-driven";
1479
- if (/^where\b/.test(lower)) return "optional";
1480
- if (/^the\s+\w+\s+shall\b/.test(lower)) return "ubiquitous";
1481
- return void 0;
1482
- }
1483
- var CODE_NODE_TYPES2 = ["file", "function", "class", "method", "interface", "variable"];
1484
- var RequirementIngestor = class {
1485
- constructor(store) {
1486
- this.store = store;
1487
- }
1488
- store;
1489
- /**
1490
- * Scan a specs directory for `<feature>/proposal.md` files,
1491
- * extract numbered requirements from recognized sections,
1492
- * and create requirement nodes with convention-based edges.
1493
- */
1494
- async ingestSpecs(specsDir) {
1495
- const start = Date.now();
1496
- const errors = [];
1497
- let nodesAdded = 0;
1498
- let edgesAdded = 0;
1499
- let featureDirs;
1500
- try {
1501
- const entries = await fs3.readdir(specsDir, { withFileTypes: true });
1502
- featureDirs = entries.filter((e) => e.isDirectory()).map((e) => path4.join(specsDir, e.name));
1503
- } catch {
1504
- return emptyResult(Date.now() - start);
1505
- }
1506
- for (const featureDir of featureDirs) {
1507
- const featureName = path4.basename(featureDir);
1508
- const specPath = path4.join(featureDir, "proposal.md").replaceAll("\\", "/");
1509
- let content;
1510
- try {
1511
- content = await fs3.readFile(specPath, "utf-8");
1512
- } catch {
1513
- continue;
1514
- }
1515
- try {
1516
- const specHash = hash(specPath);
1517
- const specNodeId = `file:${specPath}`;
1518
- this.store.addNode({
1519
- id: specNodeId,
1520
- type: "document",
1521
- name: path4.basename(specPath),
1522
- path: specPath,
1523
- metadata: { featureName }
1524
- });
1525
- const requirements = this.extractRequirements(content, specPath, specHash, featureName);
1526
- for (const req of requirements) {
1527
- this.store.addNode(req.node);
1528
- nodesAdded++;
1529
- this.store.addEdge({
1530
- from: req.node.id,
1531
- to: specNodeId,
1532
- type: "specifies"
1533
- });
1534
- edgesAdded++;
1535
- edgesAdded += this.linkByPathPattern(req.node.id, featureName);
1536
- edgesAdded += this.linkByKeywordOverlap(req.node.id, req.node.name);
1537
- }
1538
- } catch (err) {
1539
- errors.push(`${specPath}: ${err instanceof Error ? err.message : String(err)}`);
1540
- }
1541
- }
1542
- return {
1543
- nodesAdded,
1544
- nodesUpdated: 0,
1545
- edgesAdded,
1546
- edgesUpdated: 0,
1547
- errors,
1548
- durationMs: Date.now() - start
1549
- };
1550
- }
1551
- /**
1552
- * Parse markdown content and extract numbered items from recognized sections.
1553
- */
1554
- extractRequirements(content, specPath, specHash, featureName) {
1555
- const lines = content.split("\n");
1556
- const results = [];
1557
- let currentSection;
1558
- let inRequirementSection = false;
1559
- let globalIndex = 0;
1560
- for (let i = 0; i < lines.length; i++) {
1561
- const line = lines[i];
1562
- const headingMatch = line.match(SECTION_HEADING_RE);
1563
- if (headingMatch) {
1564
- const heading = headingMatch[1].trim();
1565
- const isReqSection = REQUIREMENT_SECTIONS.some(
1566
- (s) => heading.toLowerCase() === s.toLowerCase()
1567
- );
1568
- if (isReqSection) {
1569
- currentSection = heading;
1570
- inRequirementSection = true;
1571
- } else {
1572
- inRequirementSection = false;
1573
- }
1574
- continue;
1575
- }
1576
- if (!inRequirementSection) continue;
1577
- const itemMatch = line.match(NUMBERED_ITEM_RE);
1578
- if (!itemMatch) continue;
1579
- const index = parseInt(itemMatch[1], 10);
1580
- const text = itemMatch[2].trim();
1581
- const rawText = line.trim();
1582
- const lineNumber = i + 1;
1583
- globalIndex++;
1584
- const nodeId = `req:${specHash}:${globalIndex}`;
1585
- const earsPattern = detectEarsPattern(text);
1586
- results.push({
1587
- node: {
1588
- id: nodeId,
1589
- type: "requirement",
1590
- name: text,
1591
- path: specPath,
1592
- location: {
1593
- fileId: `file:${specPath}`,
1594
- startLine: lineNumber,
1595
- endLine: lineNumber
1596
- },
1597
- metadata: {
1598
- specPath,
1599
- index,
1600
- section: currentSection,
1601
- rawText,
1602
- earsPattern,
1603
- featureName
1604
- }
1605
- }
1606
- });
1607
- }
1608
- return results;
1609
- }
1610
- /**
1611
- * Convention-based linking: match requirement to code/test files
1612
- * by feature name in their path.
1613
- */
1614
- linkByPathPattern(reqId, featureName) {
1615
- let count = 0;
1616
- const fileNodes = this.store.findNodes({ type: "file" });
1617
- for (const node of fileNodes) {
1618
- if (!node.path) continue;
1619
- const normalizedPath = node.path.replace(/\\/g, "/");
1620
- const isCodeMatch = normalizedPath.includes("packages/") && path4.basename(normalizedPath).includes(featureName);
1621
- const isTestMatch = normalizedPath.includes("/tests/") && // platform-safe
1622
- path4.basename(normalizedPath).includes(featureName);
1623
- if (isCodeMatch && !isTestMatch) {
1624
- this.store.addEdge({
1625
- from: reqId,
1626
- to: node.id,
1627
- type: "requires",
1628
- confidence: 0.5,
1629
- metadata: { method: "convention", matchReason: "path-pattern" }
1630
- });
1631
- count++;
1632
- } else if (isTestMatch) {
1633
- this.store.addEdge({
1634
- from: reqId,
1635
- to: node.id,
1636
- type: "verified_by",
1637
- confidence: 0.5,
1638
- metadata: { method: "convention", matchReason: "path-pattern" }
1639
- });
1640
- count++;
1641
- }
1642
- }
1643
- return count;
1644
- }
1645
- /**
1646
- * Convention-based linking: match requirement text to code nodes
1647
- * by keyword overlap (function/class names appearing in requirement text).
1648
- */
1649
- linkByKeywordOverlap(reqId, reqText) {
1650
- let count = 0;
1651
- for (const nodeType of CODE_NODE_TYPES2) {
1652
- const codeNodes = this.store.findNodes({ type: nodeType });
1653
- for (const node of codeNodes) {
1654
- if (node.name.length < 3) continue;
1655
- const escaped = node.name.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
1656
- const namePattern = new RegExp(`\\b${escaped}\\b`, "i");
1657
- if (namePattern.test(reqText)) {
1658
- const edgeType = node.path?.replace(/\\/g, "/").includes("/tests/") ? "verified_by" : "requires";
1659
- this.store.addEdge({
1660
- from: reqId,
1661
- to: node.id,
1662
- type: edgeType,
1663
- confidence: 0.6,
1664
- metadata: { method: "convention", matchReason: "keyword-overlap" }
1665
- });
1666
- count++;
1667
- }
1668
- }
1669
- }
1670
- return count;
1671
- }
1672
- };
1673
- var CODE_NODE_TYPES3 = ["file", "function", "class", "method", "interface", "variable"];
1674
- var SANITIZE_RULES = [
1675
- // Strip XML/HTML-like instruction tags that could be interpreted as system prompts
1676
- {
1677
- pattern: /<\/?(?:system|instruction|prompt|role|context|tool_call|function_call|assistant|human|user)[^>]*>/gi,
1678
- replacement: ""
1679
- },
1680
- // Strip markdown-style system prompt markers (including trailing space)
1681
- {
1682
- pattern: /^#{1,3}\s*(?:system|instruction|prompt)\s*[::]\s*/gim,
1683
- replacement: ""
1684
- },
1685
- // Strip common injection prefixes
1686
- {
1687
- pattern: /(?:ignore|disregard|forget)\s+(?:all\s+)?(?:previous|prior|above)\s+(?:instructions?|prompts?|context)/gi,
1688
- replacement: "[filtered]"
1689
- },
1690
- // Strip "you are now" re-roling attempts (only when followed by AI/agent role words)
1691
- {
1692
- pattern: /you\s+are\s+now\s+(?:a\s+)?(?:helpful\s+)?(?:an?\s+)?(?:assistant|system|ai|bot|agent|tool)\b/gi,
1693
- replacement: "[filtered]"
1694
- }
1695
- ];
1696
- function sanitizeExternalText(text, maxLength = 2e3) {
1697
- let sanitized = text;
1698
- for (const rule of SANITIZE_RULES) {
1699
- sanitized = sanitized.replace(rule.pattern, rule.replacement);
1700
- }
1701
- if (sanitized.length > maxLength) {
1702
- sanitized = sanitized.slice(0, maxLength) + "\u2026";
1703
- }
1704
- return sanitized;
1705
- }
1706
- function linkToCode(store, content, sourceNodeId, edgeType, options) {
1707
- let edgesCreated = 0;
1708
- for (const type of CODE_NODE_TYPES3) {
1709
- const nodes = store.findNodes({ type });
1710
- for (const node of nodes) {
1711
- if (node.name.length < 3) continue;
1712
- const escaped = node.name.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
1713
- const pattern = new RegExp(`\\b${escaped}\\b`, "i");
1714
- let matched = pattern.test(content);
1715
- if (!matched && options?.checkPaths && node.path) {
1716
- matched = content.includes(node.path);
1717
- }
1718
- if (matched) {
1719
- store.addEdge({ from: sourceNodeId, to: node.id, type: edgeType });
1720
- edgesCreated++;
1721
- }
1722
- }
1723
- }
1724
- return edgesCreated;
1725
- }
1726
- var SyncManager = class {
1727
- constructor(store, graphDir) {
1728
- this.store = store;
1729
- this.metadataPath = path5.join(graphDir, "sync-metadata.json");
1730
- }
1731
- store;
1732
- registrations = /* @__PURE__ */ new Map();
1733
- metadataPath;
1734
- registerConnector(connector, config) {
1735
- this.registrations.set(connector.name, { connector, config });
1736
- }
1737
- async sync(connectorName) {
1738
- const registration = this.registrations.get(connectorName);
1739
- if (!registration) {
1740
- return {
1741
- nodesAdded: 0,
1742
- nodesUpdated: 0,
1743
- edgesAdded: 0,
1744
- edgesUpdated: 0,
1745
- errors: [`Connector "${connectorName}" not registered`],
1746
- durationMs: 0
1747
- };
1748
- }
1749
- const { connector, config } = registration;
1750
- const result = await connector.ingest(this.store, config);
1751
- const metadata = await this.loadMetadata();
1752
- metadata.connectors[connectorName] = {
1753
- lastSyncTimestamp: (/* @__PURE__ */ new Date()).toISOString(),
1754
- lastResult: result
1755
- };
1756
- await this.saveMetadata(metadata);
1757
- return result;
1758
- }
1759
- async syncAll() {
1760
- const combined = {
1761
- nodesAdded: 0,
1762
- nodesUpdated: 0,
1763
- edgesAdded: 0,
1764
- edgesUpdated: 0,
1765
- errors: [],
1766
- durationMs: 0
1767
- };
1768
- for (const [name] of this.registrations) {
1769
- const result = await this.sync(name);
1770
- combined.nodesAdded += result.nodesAdded;
1771
- combined.nodesUpdated += result.nodesUpdated;
1772
- combined.edgesAdded += result.edgesAdded;
1773
- combined.edgesUpdated += result.edgesUpdated;
1774
- combined.errors.push(...result.errors);
1775
- combined.durationMs += result.durationMs;
1776
- }
1777
- return combined;
1778
- }
1779
- async getMetadata() {
1780
- return this.loadMetadata();
1781
- }
1782
- async loadMetadata() {
1783
- try {
1784
- const raw = await fs4.readFile(this.metadataPath, "utf-8");
1785
- return JSON.parse(raw);
1786
- } catch {
1787
- return { connectors: {} };
1788
- }
1789
- }
1790
- async saveMetadata(metadata) {
1791
- await fs4.mkdir(path5.dirname(this.metadataPath), { recursive: true });
1792
- await fs4.writeFile(this.metadataPath, JSON.stringify(metadata, null, 2), "utf-8");
1793
- }
1794
- };
1795
- function buildIngestResult(nodesAdded, edgesAdded, errors, start) {
1796
- return {
1797
- nodesAdded,
1798
- nodesUpdated: 0,
1799
- edgesAdded,
1800
- edgesUpdated: 0,
1801
- errors,
1802
- durationMs: Date.now() - start
1803
- };
1804
- }
1805
- function buildJql(config) {
1806
- const project2 = config.project;
1807
- let jql = project2 ? `project=${project2}` : "";
1808
- const filters = config.filters;
1809
- if (filters?.status?.length) {
1810
- jql += `${jql ? " AND " : ""}status IN (${filters.status.map((s) => `"${s}"`).join(",")})`;
1811
- }
1812
- if (filters?.labels?.length) {
1813
- jql += `${jql ? " AND " : ""}labels IN (${filters.labels.map((l) => `"${l}"`).join(",")})`;
1814
- }
1815
- return jql;
1816
- }
1817
- var JiraConnector = class {
1818
- name = "jira";
1819
- source = "jira";
1820
- httpClient;
1821
- constructor(httpClient) {
1822
- this.httpClient = httpClient ?? ((url, options) => fetch(url, options));
1823
- }
1824
- async ingest(store, config) {
1825
- const start = Date.now();
1826
- let nodesAdded = 0;
1827
- let edgesAdded = 0;
1828
- const apiKeyEnv = config.apiKeyEnv ?? "JIRA_API_KEY";
1829
- const apiKey = process.env[apiKeyEnv];
1830
- if (!apiKey) {
1831
- return buildIngestResult(
1832
- 0,
1833
- 0,
1834
- [`Missing API key: environment variable "${apiKeyEnv}" is not set`],
1835
- start
1836
- );
1837
- }
1838
- const baseUrlEnv = config.baseUrlEnv ?? "JIRA_BASE_URL";
1839
- const baseUrl = process.env[baseUrlEnv];
1840
- if (!baseUrl) {
1841
- return buildIngestResult(
1842
- 0,
1843
- 0,
1844
- [`Missing base URL: environment variable "${baseUrlEnv}" is not set`],
1845
- start
1846
- );
1847
- }
1848
- const jql = buildJql(config);
1849
- const headers = {
1850
- Authorization: `Basic ${apiKey}`,
1851
- "Content-Type": "application/json"
1852
- };
1853
- try {
1854
- let startAt = 0;
1855
- const maxResults = 50;
1856
- let total = Infinity;
1857
- while (startAt < total) {
1858
- const url = `${baseUrl}/rest/api/2/search?jql=${encodeURIComponent(jql)}&startAt=${startAt}&maxResults=${maxResults}`;
1859
- const response = await this.httpClient(url, { headers });
1860
- if (!response.ok) {
1861
- return buildIngestResult(nodesAdded, edgesAdded, ["Jira API request failed"], start);
1862
- }
1863
- const data = await response.json();
1864
- total = data.total;
1865
- for (const issue of data.issues) {
1866
- const counts = this.processIssue(store, issue);
1867
- nodesAdded += counts.nodesAdded;
1868
- edgesAdded += counts.edgesAdded;
1869
- }
1870
- startAt += maxResults;
1871
- }
1872
- } catch (err) {
1873
- return buildIngestResult(
1874
- nodesAdded,
1875
- edgesAdded,
1876
- [`Jira API error: ${err instanceof Error ? err.message : String(err)}`],
1877
- start
1878
- );
1879
- }
1880
- return buildIngestResult(nodesAdded, edgesAdded, [], start);
1881
- }
1882
- processIssue(store, issue) {
1883
- const nodeId = `issue:jira:${issue.key}`;
1884
- store.addNode({
1885
- id: nodeId,
1886
- type: "issue",
1887
- name: sanitizeExternalText(issue.fields.summary, 500),
1888
- metadata: {
1889
- key: issue.key,
1890
- status: issue.fields.status?.name,
1891
- priority: issue.fields.priority?.name,
1892
- assignee: issue.fields.assignee?.displayName,
1893
- labels: issue.fields.labels ?? []
1894
- }
1895
- });
1896
- const searchText = sanitizeExternalText(
1897
- [issue.fields.summary, issue.fields.description ?? ""].join(" ")
1898
- );
1899
- const edgesAdded = linkToCode(store, searchText, nodeId, "applies_to");
1900
- return { nodesAdded: 1, edgesAdded };
1901
- }
1902
- };
1903
- var SlackConnector = class {
1904
- name = "slack";
1905
- source = "slack";
1906
- httpClient;
1907
- constructor(httpClient) {
1908
- this.httpClient = httpClient ?? ((url, options) => fetch(url, options));
1909
- }
1910
- async ingest(store, config) {
1911
- const start = Date.now();
1912
- const errors = [];
1913
- let nodesAdded = 0;
1914
- let edgesAdded = 0;
1915
- const apiKeyEnv = config.apiKeyEnv ?? "SLACK_API_KEY";
1916
- const apiKey = process.env[apiKeyEnv];
1917
- if (!apiKey) {
1918
- return {
1919
- nodesAdded: 0,
1920
- nodesUpdated: 0,
1921
- edgesAdded: 0,
1922
- edgesUpdated: 0,
1923
- errors: [`Missing API key: environment variable "${apiKeyEnv}" is not set`],
1924
- durationMs: Date.now() - start
1925
- };
1926
- }
1927
- const channels = config.channels ?? [];
1928
- const oldest = config.lookbackDays ? String(Math.floor((Date.now() - Number(config.lookbackDays) * 864e5) / 1e3)) : void 0;
1929
- for (const channel of channels) {
1930
- try {
1931
- const result = await this.processChannel(store, channel, apiKey, oldest);
1932
- nodesAdded += result.nodesAdded;
1933
- edgesAdded += result.edgesAdded;
1934
- errors.push(...result.errors);
1935
- } catch (err) {
1936
- errors.push(
1937
- `Slack API error for channel ${channel}: ${err instanceof Error ? err.message : String(err)}`
1938
- );
1939
- }
1940
- }
1941
- return {
1942
- nodesAdded,
1943
- nodesUpdated: 0,
1944
- edgesAdded,
1945
- edgesUpdated: 0,
1946
- errors,
1947
- durationMs: Date.now() - start
1948
- };
1949
- }
1950
- async processChannel(store, channel, apiKey, oldest) {
1951
- const errors = [];
1952
- let nodesAdded = 0;
1953
- let edgesAdded = 0;
1954
- let url = `https://slack.com/api/conversations.history?channel=${encodeURIComponent(channel)}`;
1955
- if (oldest) {
1956
- url += `&oldest=${oldest}`;
1957
- }
1958
- const response = await this.httpClient(url, {
1959
- headers: {
1960
- Authorization: `Bearer ${apiKey}`,
1961
- "Content-Type": "application/json"
1962
- }
1963
- });
1964
- if (!response.ok) {
1965
- return {
1966
- nodesAdded: 0,
1967
- edgesAdded: 0,
1968
- errors: [`Slack API request failed for channel ${channel}`]
1969
- };
1970
- }
1971
- const data = await response.json();
1972
- if (!data.ok) {
1973
- return { nodesAdded: 0, edgesAdded: 0, errors: [`Slack API error for channel ${channel}`] };
1974
- }
1975
- for (const message of data.messages) {
1976
- const nodeId = `conversation:slack:${channel}:${message.ts}`;
1977
- const sanitizedText = sanitizeExternalText(message.text);
1978
- const snippet = sanitizedText.length > 100 ? sanitizedText.slice(0, 100) : sanitizedText;
1979
- store.addNode({
1980
- id: nodeId,
1981
- type: "conversation",
1982
- name: snippet,
1983
- metadata: {
1984
- author: message.user,
1985
- channel,
1986
- timestamp: message.ts
1987
- }
1988
- });
1989
- nodesAdded++;
1990
- edgesAdded += linkToCode(store, sanitizedText, nodeId, "references", {
1991
- checkPaths: true
1992
- });
1993
- }
1994
- return { nodesAdded, edgesAdded, errors };
1995
- }
1996
- };
1997
- var ConfluenceConnector = class {
1998
- name = "confluence";
1999
- source = "confluence";
2000
- httpClient;
2001
- constructor(httpClient) {
2002
- this.httpClient = httpClient ?? ((url, options) => fetch(url, options));
2003
- }
2004
- async ingest(store, config) {
2005
- const start = Date.now();
2006
- const errors = [];
2007
- let nodesAdded = 0;
2008
- let edgesAdded = 0;
2009
- const apiKeyEnv = config.apiKeyEnv ?? "CONFLUENCE_API_KEY";
2010
- const apiKey = process.env[apiKeyEnv];
2011
- if (!apiKey) {
2012
- return {
2013
- nodesAdded: 0,
2014
- nodesUpdated: 0,
2015
- edgesAdded: 0,
2016
- edgesUpdated: 0,
2017
- errors: [`Missing API key: environment variable "${apiKeyEnv}" is not set`],
2018
- durationMs: Date.now() - start
2019
- };
2020
- }
2021
- const baseUrlEnv = config.baseUrlEnv ?? "CONFLUENCE_BASE_URL";
2022
- const baseUrl = process.env[baseUrlEnv] ?? "";
2023
- const spaceKey = config.spaceKey ?? "";
2024
- try {
2025
- const result = await this.fetchAllPages(store, baseUrl, apiKey, spaceKey);
2026
- nodesAdded = result.nodesAdded;
2027
- edgesAdded = result.edgesAdded;
2028
- errors.push(...result.errors);
2029
- } catch (err) {
2030
- errors.push(`Confluence fetch error: ${err instanceof Error ? err.message : String(err)}`);
2031
- }
2032
- return {
2033
- nodesAdded,
2034
- nodesUpdated: 0,
2035
- edgesAdded,
2036
- edgesUpdated: 0,
2037
- errors,
2038
- durationMs: Date.now() - start
2039
- };
2040
- }
2041
- async fetchAllPages(store, baseUrl, apiKey, spaceKey) {
2042
- const errors = [];
2043
- let nodesAdded = 0;
2044
- let edgesAdded = 0;
2045
- let nextUrl = `${baseUrl}/wiki/api/v2/pages?spaceKey=${encodeURIComponent(spaceKey)}&limit=25&body-format=storage`;
2046
- while (nextUrl) {
2047
- const response = await this.httpClient(nextUrl, {
2048
- headers: { Authorization: `Bearer ${apiKey}` }
2049
- });
2050
- if (!response.ok) {
2051
- errors.push(`Confluence API error: status ${response.status}`);
2052
- break;
2053
- }
2054
- const data = await response.json();
2055
- for (const page of data.results) {
2056
- const counts = this.processPage(store, page, spaceKey);
2057
- nodesAdded += counts.nodesAdded;
2058
- edgesAdded += counts.edgesAdded;
2059
- }
2060
- nextUrl = data._links?.next ? `${baseUrl}${data._links.next}` : null;
2061
- }
2062
- return { nodesAdded, edgesAdded, errors };
2063
- }
2064
- processPage(store, page, spaceKey) {
2065
- const nodeId = `confluence:${page.id}`;
2066
- store.addNode({
2067
- id: nodeId,
2068
- type: "document",
2069
- name: sanitizeExternalText(page.title, 500),
2070
- metadata: {
2071
- source: "confluence",
2072
- spaceKey,
2073
- pageId: page.id,
2074
- status: page.status,
2075
- url: page._links?.webui ?? ""
2076
- }
2077
- });
2078
- const text = sanitizeExternalText(`${page.title} ${page.body?.storage?.value ?? ""}`);
2079
- const edgesAdded = linkToCode(store, text, nodeId, "documents");
2080
- return { nodesAdded: 1, edgesAdded };
2081
- }
2082
- };
2083
- var CIConnector = class {
2084
- name = "ci";
2085
- source = "github-actions";
2086
- httpClient;
2087
- constructor(httpClient) {
2088
- this.httpClient = httpClient ?? ((url, options) => fetch(url, options));
2089
- }
2090
- async ingest(store, config) {
2091
- const start = Date.now();
2092
- const errors = [];
2093
- let nodesAdded = 0;
2094
- let edgesAdded = 0;
2095
- const apiKeyEnv = config.apiKeyEnv ?? "GITHUB_TOKEN";
2096
- const apiKey = process.env[apiKeyEnv];
2097
- if (!apiKey) {
2098
- return {
2099
- nodesAdded: 0,
2100
- nodesUpdated: 0,
2101
- edgesAdded: 0,
2102
- edgesUpdated: 0,
2103
- errors: [`Missing API key: environment variable "${apiKeyEnv}" is not set`],
2104
- durationMs: Date.now() - start
2105
- };
2106
- }
2107
- const repo = config.repo ?? "";
2108
- const maxRuns = config.maxRuns ?? 10;
2109
- try {
2110
- const url = `https://api.github.com/repos/${repo}/actions/runs?per_page=${maxRuns}`;
2111
- const response = await this.httpClient(url, {
2112
- headers: { Authorization: `Bearer ${apiKey}`, Accept: "application/vnd.github.v3+json" }
2113
- });
2114
- if (!response.ok) {
2115
- errors.push(`GitHub Actions API error: status ${response.status}`);
2116
- return {
2117
- nodesAdded: 0,
2118
- nodesUpdated: 0,
2119
- edgesAdded: 0,
2120
- edgesUpdated: 0,
2121
- errors,
2122
- durationMs: Date.now() - start
2123
- };
2124
- }
2125
- const data = await response.json();
2126
- for (const run of data.workflow_runs) {
2127
- const buildId = `build:${run.id}`;
2128
- const safeName = sanitizeExternalText(run.name, 200);
2129
- store.addNode({
2130
- id: buildId,
2131
- type: "build",
2132
- name: `${safeName} #${run.id}`,
2133
- metadata: {
2134
- source: "github-actions",
2135
- status: run.status,
2136
- conclusion: run.conclusion,
2137
- branch: run.head_branch,
2138
- sha: run.head_sha,
2139
- url: run.html_url,
2140
- createdAt: run.created_at
2141
- }
2142
- });
2143
- nodesAdded++;
2144
- const commitNode = store.getNode(`commit:${run.head_sha}`);
2145
- if (commitNode) {
2146
- store.addEdge({ from: buildId, to: commitNode.id, type: "triggered_by" });
2147
- edgesAdded++;
2148
- }
2149
- if (run.conclusion === "failure") {
2150
- const testResultId = `test_result:${run.id}`;
2151
- store.addNode({
2152
- id: testResultId,
2153
- type: "test_result",
2154
- name: `Failed: ${safeName} #${run.id}`,
2155
- metadata: {
2156
- source: "github-actions",
2157
- buildId: String(run.id),
2158
- conclusion: "failure",
2159
- branch: run.head_branch,
2160
- sha: run.head_sha
2161
- }
2162
- });
2163
- nodesAdded++;
2164
- store.addEdge({ from: testResultId, to: buildId, type: "failed_in" });
2165
- edgesAdded++;
2166
- }
2167
- }
2168
- } catch (err) {
2169
- errors.push(
2170
- `GitHub Actions fetch error: ${err instanceof Error ? err.message : String(err)}`
2171
- );
2172
- }
2173
- return {
2174
- nodesAdded,
2175
- nodesUpdated: 0,
2176
- edgesAdded,
2177
- edgesUpdated: 0,
2178
- errors,
2179
- durationMs: Date.now() - start
2180
- };
2181
- }
2182
- };
2183
- var STOP_WORDS = /* @__PURE__ */ new Set([
2184
- "the",
2185
- "a",
2186
- "an",
2187
- "is",
2188
- "are",
2189
- "was",
2190
- "were",
2191
- "be",
2192
- "been",
2193
- "being",
2194
- "have",
2195
- "has",
2196
- "had",
2197
- "do",
2198
- "does",
2199
- "did",
2200
- "will",
2201
- "would",
2202
- "could",
2203
- "should",
2204
- "may",
2205
- "might",
2206
- "shall",
2207
- "can",
2208
- "to",
2209
- "of",
2210
- "in",
2211
- "for",
2212
- "on",
2213
- "with",
2214
- "at",
2215
- "by",
2216
- "from",
2217
- "as",
2218
- "into",
2219
- "about",
2220
- "this",
2221
- "that",
2222
- "it",
2223
- "not",
2224
- "but",
2225
- "and",
2226
- "or",
2227
- "if",
2228
- "then",
2229
- "so"
2230
- ]);
2231
- var FusionLayer = class {
2232
- store;
2233
- vectorStore;
2234
- keywordWeight;
2235
- semanticWeight;
2236
- constructor(store, vectorStore, keywordWeight = 0.6, semanticWeight = 0.4) {
2237
- this.store = store;
2238
- this.vectorStore = vectorStore;
2239
- this.keywordWeight = keywordWeight;
2240
- this.semanticWeight = semanticWeight;
2241
- }
2242
- search(query, topK = 10, queryEmbedding) {
2243
- const keywords = this.extractKeywords(query);
2244
- if (keywords.length === 0) {
2245
- return [];
2246
- }
2247
- const allNodes = this.store.findNodes({});
2248
- const semanticScores = /* @__PURE__ */ new Map();
2249
- if (queryEmbedding && this.vectorStore) {
2250
- const vectorResults = this.vectorStore.search(queryEmbedding, allNodes.length);
2251
- for (const vr of vectorResults) {
2252
- semanticScores.set(vr.id, vr.score);
2253
- }
2254
- }
2255
- const hasSemanticScores = semanticScores.size > 0;
2256
- const kwWeight = hasSemanticScores ? this.keywordWeight : 1;
2257
- const semWeight = hasSemanticScores ? this.semanticWeight : 0;
2258
- const results = [];
2259
- for (const node of allNodes) {
2260
- const kwScore = this.keywordScore(keywords, node);
2261
- const semScore = semanticScores.get(node.id) ?? 0;
2262
- const fusedScore = kwWeight * kwScore + semWeight * semScore;
2263
- if (fusedScore > 0) {
2264
- results.push({
2265
- nodeId: node.id,
2266
- node,
2267
- score: fusedScore,
2268
- signals: {
2269
- keyword: kwScore,
2270
- semantic: semScore
2271
- }
2272
- });
2273
- }
2274
- }
2275
- results.sort((a, b) => b.score - a.score);
2276
- return results.slice(0, topK);
2277
- }
2278
- extractKeywords(query) {
2279
- const tokens = query.toLowerCase().split(/[\s\-_.,:;!?()[\]{}"'`/\\|@#$%^&*+=<>~]+/).filter((t) => t.length >= 2).filter((t) => !STOP_WORDS.has(t));
2280
- return [...new Set(tokens)];
2281
- }
2282
- keywordScore(keywords, node) {
2283
- if (keywords.length === 0) return 0;
2284
- let totalScore = 0;
2285
- for (const keyword of keywords) {
2286
- totalScore += this.singleKeywordScore(keyword, node);
2287
- }
2288
- return totalScore / keywords.length;
2289
- }
2290
- singleKeywordScore(keyword, node) {
2291
- const nameLower = node.name.toLowerCase();
2292
- if (nameLower === keyword) {
2293
- return 1;
2294
- }
2295
- if (nameLower.includes(keyword)) {
2296
- return 0.7;
2297
- }
2298
- if (node.path && node.path.toLowerCase().includes(keyword)) {
2299
- return 0.5;
2300
- }
2301
- for (const value of Object.values(node.metadata)) {
2302
- if (typeof value === "string" && value.toLowerCase().includes(keyword)) {
2303
- return 0.3;
2304
- }
2305
- }
2306
- return 0;
2307
- }
2308
- };
2309
- var CODE_NODE_TYPES4 = ["file", "function", "class", "method", "interface", "variable"];
2310
- var GraphEntropyAdapter = class {
2311
- constructor(store) {
2312
- this.store = store;
2313
- }
2314
- store;
2315
- /**
2316
- * Find all `documents` edges and classify them as stale or missing-target.
2317
- *
2318
- * 1. Find all `documents` edges in the graph
2319
- * 2. For each edge, check if the target code node still exists in the store
2320
- * 3. If target doesn't exist -> add to missingTargets
2321
- * 4. If target exists -> compare lastModified timestamps to determine staleness
2322
- */
2323
- computeDriftData() {
2324
- const documentsEdges = this.store.getEdges({ type: "documents" });
2325
- const staleEdges = [];
2326
- const missingTargets = [];
2327
- let freshEdges = 0;
2328
- for (const edge of documentsEdges) {
2329
- const codeNode = this.store.getNode(edge.to);
2330
- if (!codeNode) {
2331
- missingTargets.push(edge.to);
2332
- continue;
2333
- }
2334
- const docNode = this.store.getNode(edge.from);
2335
- const codeLastModified = codeNode.lastModified;
2336
- const docLastModified = docNode?.lastModified;
2337
- if (codeLastModified && docLastModified) {
2338
- if (codeLastModified > docLastModified) {
2339
- staleEdges.push({
2340
- docNodeId: edge.from,
2341
- codeNodeId: edge.to,
2342
- edgeType: edge.type,
2343
- codeLastModified,
2344
- docLastModified
2345
- });
2346
- } else {
2347
- freshEdges++;
2348
- }
2349
- } else {
2350
- staleEdges.push({
2351
- docNodeId: edge.from,
2352
- codeNodeId: edge.to,
2353
- edgeType: edge.type,
2354
- codeLastModified,
2355
- docLastModified
2356
- });
2357
- }
2358
- }
2359
- return { staleEdges, missingTargets, freshEdges };
2360
- }
2361
- /**
2362
- * BFS from entry points to find reachable vs unreachable code nodes.
2363
- *
2364
- * 1. Entry points: file nodes named `index.ts` or with metadata `entryPoint: true`
2365
- * 2. BFS following `imports` and `calls` edges (outbound only)
2366
- * 3. Unreachable = code nodes NOT in visited set
2367
- */
2368
- computeDeadCodeData() {
2369
- const entryPoints = this.findEntryPoints();
2370
- const visited = this.bfsFromEntryPoints(entryPoints);
2371
- const unreachableNodes = this.collectUnreachableNodes(visited);
2372
- return { reachableNodeIds: visited, unreachableNodes, entryPoints };
2373
- }
2374
- findEntryPoints() {
2375
- const entryPoints = [];
2376
- for (const nodeType of CODE_NODE_TYPES4) {
2377
- const nodes = this.store.findNodes({ type: nodeType });
2378
- for (const node of nodes) {
2379
- const isIndexFile = nodeType === "file" && node.name === "index.ts";
2380
- if (isIndexFile || node.metadata?.entryPoint === true) {
2381
- entryPoints.push(node.id);
2382
- }
2383
- }
2384
- }
2385
- return entryPoints;
2386
- }
2387
- bfsFromEntryPoints(entryPoints) {
2388
- const visited = /* @__PURE__ */ new Set();
2389
- const queue = [...entryPoints];
2390
- let head = 0;
2391
- while (head < queue.length) {
2392
- const nodeId = queue[head++];
2393
- if (visited.has(nodeId)) continue;
2394
- visited.add(nodeId);
2395
- this.enqueueOutboundEdges(nodeId, visited, queue);
2396
- }
2397
- return visited;
2398
- }
2399
- enqueueOutboundEdges(nodeId, visited, queue) {
2400
- const edgeTypes = ["imports", "calls", "contains"];
2401
- for (const edgeType of edgeTypes) {
2402
- const edges = this.store.getEdges({ from: nodeId, type: edgeType });
2403
- for (const edge of edges) {
2404
- if (!visited.has(edge.to)) {
2405
- queue.push(edge.to);
2406
- }
2407
- }
2408
- }
2409
- }
2410
- collectUnreachableNodes(visited) {
2411
- const unreachableNodes = [];
2412
- for (const nodeType of CODE_NODE_TYPES4) {
2413
- const nodes = this.store.findNodes({ type: nodeType });
2414
- for (const node of nodes) {
2415
- if (!visited.has(node.id)) {
2416
- unreachableNodes.push({
2417
- id: node.id,
2418
- type: node.type,
2419
- name: node.name,
2420
- path: node.path
2421
- });
2422
- }
2423
- }
2424
- }
2425
- return unreachableNodes;
2426
- }
2427
- /**
2428
- * Count all nodes and edges by type.
2429
- */
2430
- computeSnapshotSummary() {
2431
- const nodesByType = {};
2432
- const edgesByType = {};
2433
- const allNodes = this.store.findNodes({});
2434
- for (const node of allNodes) {
2435
- nodesByType[node.type] = (nodesByType[node.type] ?? 0) + 1;
2436
- }
2437
- const allEdges = this.store.getEdges({});
2438
- for (const edge of allEdges) {
2439
- edgesByType[edge.type] = (edgesByType[edge.type] ?? 0) + 1;
2440
- }
2441
- return {
2442
- nodeCount: this.store.nodeCount,
2443
- edgeCount: this.store.edgeCount,
2444
- nodesByType,
2445
- edgesByType
2446
- };
2447
- }
2448
- };
2449
- var GraphComplexityAdapter = class {
2450
- constructor(store) {
2451
- this.store = store;
2452
- }
2453
- store;
2454
- /**
2455
- * Compute complexity hotspots by combining cyclomatic complexity with change frequency.
2456
- *
2457
- * 1. Find all function and method nodes
2458
- * 2. For each, find the containing file and count commit nodes referencing that file
2459
- * 3. Compute hotspotScore = changeFrequency * cyclomaticComplexity
2460
- * 4. Sort descending by score
2461
- * 5. Compute 95th percentile
2462
- */
2463
- computeComplexityHotspots() {
2464
- const functionNodes = [
2465
- ...this.store.findNodes({ type: "function" }),
2466
- ...this.store.findNodes({ type: "method" })
2467
- ];
2468
- if (functionNodes.length === 0) {
2469
- return { hotspots: [], percentile95Score: 0 };
2470
- }
2471
- const fileChangeFrequency = /* @__PURE__ */ new Map();
2472
- const hotspots = [];
2473
- for (const fnNode of functionNodes) {
2474
- const complexity = fnNode.metadata?.cyclomaticComplexity ?? 1;
2475
- const fileId = this.findContainingFileId(fnNode.id);
2476
- if (!fileId) continue;
2477
- const changeFrequency = this.getChangeFrequency(fileId, fileChangeFrequency);
2478
- const hotspotScore = changeFrequency * complexity;
2479
- const filePath = fnNode.path ?? fileId.replace(/^file:/, "");
2480
- hotspots.push({
2481
- file: filePath,
2482
- function: fnNode.name,
2483
- changeFrequency,
2484
- complexity,
2485
- hotspotScore
2486
- });
2487
- }
2488
- hotspots.sort((a, b) => b.hotspotScore - a.hotspotScore);
2489
- const percentile95Score = this.computePercentile(
2490
- hotspots.map((h) => h.hotspotScore),
2491
- 95
2492
- );
2493
- return { hotspots, percentile95Score };
2494
- }
2495
- /**
2496
- * Walk the 'contains' edges to find the file node that contains a given function/method.
2497
- * For methods, walks through the intermediate class node.
2498
- */
2499
- findContainingFileId(nodeId) {
2500
- const containsEdges = this.store.getEdges({ to: nodeId, type: "contains" });
2501
- for (const edge of containsEdges) {
2502
- const sourceNode = this.store.getNode(edge.from);
2503
- if (sourceNode?.type === "file") return sourceNode.id;
2504
- if (sourceNode?.type === "class") {
2505
- const fileId = this.findParentFileOfClass(sourceNode.id);
2506
- if (fileId) return fileId;
2507
- }
2508
- }
2509
- return void 0;
2510
- }
2511
- findParentFileOfClass(classNodeId) {
2512
- const classContainsEdges = this.store.getEdges({ to: classNodeId, type: "contains" });
2513
- for (const classEdge of classContainsEdges) {
2514
- const parentNode = this.store.getNode(classEdge.from);
2515
- if (parentNode?.type === "file") return parentNode.id;
2516
- }
2517
- return void 0;
2518
- }
2519
- getChangeFrequency(fileId, cache) {
2520
- let freq = cache.get(fileId);
2521
- if (freq === void 0) {
2522
- const referencesEdges = this.store.getEdges({ to: fileId, type: "references" });
2523
- freq = referencesEdges.length;
2524
- cache.set(fileId, freq);
2525
- }
2526
- return freq;
2527
- }
2528
- computePercentile(descendingScores, percentile) {
2529
- if (descendingScores.length === 0) return 0;
2530
- const ascending = [...descendingScores].sort((a, b) => a - b);
2531
- const index = Math.ceil(percentile / 100 * ascending.length) - 1;
2532
- return ascending[Math.min(index, ascending.length - 1)];
2533
- }
2534
- };
2535
- var GraphCouplingAdapter = class {
2536
- constructor(store) {
2537
- this.store = store;
2538
- }
2539
- store;
2540
- /**
2541
- * Compute coupling data for all file nodes in the graph.
2542
- *
2543
- * For each file:
2544
- * - fanOut: number of outbound 'imports' edges
2545
- * - fanIn: number of inbound 'imports' edges from other files
2546
- * - couplingRatio: fanOut / (fanIn + fanOut), rounded to 2 decimals (0 if both are 0)
2547
- * - transitiveDepth: longest chain of outbound 'imports' edges via BFS
2548
- */
2549
- computeCouplingData() {
2550
- const fileNodes = this.store.findNodes({ type: "file" });
2551
- if (fileNodes.length === 0) {
2552
- return { files: [] };
2553
- }
2554
- const files = [];
2555
- for (const node of fileNodes) {
2556
- const fileId = node.id;
2557
- const filePath = node.path ?? node.name;
2558
- const outEdges = this.store.getEdges({ from: fileId, type: "imports" });
2559
- const fanOut = outEdges.length;
2560
- const inEdges = this.store.getEdges({ to: fileId, type: "imports" });
2561
- const fanIn = inEdges.length;
2562
- const total = fanIn + fanOut;
2563
- const couplingRatio = total === 0 ? 0 : Math.round(fanOut / total * 100) / 100;
2564
- const transitiveDepth = this.computeTransitiveDepth(fileId);
2565
- files.push({ file: filePath, fanIn, fanOut, couplingRatio, transitiveDepth });
2566
- }
2567
- return { files };
2568
- }
2569
- /**
2570
- * BFS from a node following outbound 'imports' edges to find the maximum depth.
2571
- */
2572
- computeTransitiveDepth(startId) {
2573
- const visited = /* @__PURE__ */ new Set();
2574
- const queue = [[startId, 0]];
2575
- visited.add(startId);
2576
- let maxDepth = 0;
2577
- let head = 0;
2578
- while (head < queue.length) {
2579
- const [nodeId, depth] = queue[head++];
2580
- if (depth > maxDepth) {
2581
- maxDepth = depth;
2582
- }
2583
- const outEdges = this.store.getEdges({ from: nodeId, type: "imports" });
2584
- for (const edge of outEdges) {
2585
- if (!visited.has(edge.to)) {
2586
- visited.add(edge.to);
2587
- queue.push([edge.to, depth + 1]);
2588
- }
2589
- }
2590
- }
2591
- return maxDepth;
2592
- }
2593
- };
2594
- var DEFAULT_THRESHOLD = 2;
2595
- var DEFAULT_METRICS = [
2596
- "cyclomaticComplexity",
2597
- "fanIn",
2598
- "fanOut",
2599
- "hotspotScore",
2600
- "transitiveDepth"
2601
- ];
2602
- var RECOGNIZED_METRICS = new Set(DEFAULT_METRICS);
2603
- var GraphAnomalyAdapter = class {
2604
- constructor(store) {
2605
- this.store = store;
2606
- }
2607
- store;
2608
- detect(options) {
2609
- const threshold = options?.threshold != null && options.threshold > 0 ? options.threshold : DEFAULT_THRESHOLD;
2610
- const requestedMetrics = options?.metrics ?? [...DEFAULT_METRICS];
2611
- const warnings = [];
2612
- const metricsToAnalyze = [];
2613
- for (const m of requestedMetrics) {
2614
- if (RECOGNIZED_METRICS.has(m)) {
2615
- metricsToAnalyze.push(m);
2616
- } else {
2617
- warnings.push(m);
2618
- }
2619
- }
2620
- const allOutliers = [];
2621
- const analyzedNodeIds = /* @__PURE__ */ new Set();
2622
- const couplingMetrics = ["fanIn", "fanOut", "transitiveDepth"];
2623
- const needsCoupling = metricsToAnalyze.some((m) => couplingMetrics.includes(m));
2624
- const needsComplexity = metricsToAnalyze.includes("hotspotScore");
2625
- const cachedCouplingData = needsCoupling ? new GraphCouplingAdapter(this.store).computeCouplingData() : void 0;
2626
- const cachedHotspotData = needsComplexity ? new GraphComplexityAdapter(this.store).computeComplexityHotspots() : void 0;
2627
- for (const metric of metricsToAnalyze) {
2628
- const entries = this.collectMetricValues(metric, cachedCouplingData, cachedHotspotData);
2629
- for (const e of entries) {
2630
- analyzedNodeIds.add(e.nodeId);
2631
- }
2632
- const outliers = this.computeZScoreOutliers(entries, metric, threshold);
2633
- allOutliers.push(...outliers);
2634
- }
2635
- allOutliers.sort((a, b) => b.zScore - a.zScore);
2636
- const articulationPoints = this.findArticulationPoints();
2637
- const outlierNodeIds = new Set(allOutliers.map((o) => o.nodeId));
2638
- const apNodeIds = new Set(articulationPoints.map((ap) => ap.nodeId));
2639
- const overlapping = [...outlierNodeIds].filter((id) => apNodeIds.has(id));
2640
- return {
2641
- statisticalOutliers: allOutliers,
2642
- articulationPoints,
2643
- overlapping,
2644
- summary: {
2645
- totalNodesAnalyzed: analyzedNodeIds.size,
2646
- outlierCount: allOutliers.length,
2647
- articulationPointCount: articulationPoints.length,
2648
- overlapCount: overlapping.length,
2649
- metricsAnalyzed: metricsToAnalyze,
2650
- warnings,
2651
- threshold
2652
- }
2653
- };
2654
- }
2655
- collectMetricValues(metric, cachedCouplingData, cachedHotspotData) {
2656
- const entries = [];
2657
- if (metric === "cyclomaticComplexity") {
2658
- const functionNodes = [
2659
- ...this.store.findNodes({ type: "function" }),
2660
- ...this.store.findNodes({ type: "method" })
2661
- ];
2662
- for (const node of functionNodes) {
2663
- const cc = node.metadata?.cyclomaticComplexity;
2664
- if (typeof cc === "number") {
2665
- entries.push({
2666
- nodeId: node.id,
2667
- nodeName: node.name,
2668
- nodePath: node.path,
2669
- nodeType: node.type,
2670
- value: cc
2671
- });
2672
- }
2673
- }
2674
- } else if (metric === "fanIn" || metric === "fanOut" || metric === "transitiveDepth") {
2675
- const couplingData = cachedCouplingData ?? new GraphCouplingAdapter(this.store).computeCouplingData();
2676
- const fileNodes = this.store.findNodes({ type: "file" });
2677
- for (const fileData of couplingData.files) {
2678
- const fileNode = fileNodes.find((n) => (n.path ?? n.name) === fileData.file);
2679
- if (!fileNode) continue;
2680
- entries.push({
2681
- nodeId: fileNode.id,
2682
- nodeName: fileNode.name,
2683
- nodePath: fileNode.path,
2684
- nodeType: "file",
2685
- value: fileData[metric]
2686
- });
2687
- }
2688
- } else if (metric === "hotspotScore") {
2689
- const hotspots = cachedHotspotData ?? new GraphComplexityAdapter(this.store).computeComplexityHotspots();
2690
- const functionNodes = [
2691
- ...this.store.findNodes({ type: "function" }),
2692
- ...this.store.findNodes({ type: "method" })
2693
- ];
2694
- for (const h of hotspots.hotspots) {
2695
- const fnNode = functionNodes.find(
2696
- (n) => n.name === h.function && (n.path ?? "") === (h.file ?? "")
2697
- );
2698
- if (!fnNode) continue;
2699
- entries.push({
2700
- nodeId: fnNode.id,
2701
- nodeName: fnNode.name,
2702
- nodePath: fnNode.path,
2703
- nodeType: fnNode.type,
2704
- value: h.hotspotScore
2705
- });
2706
- }
2707
- }
2708
- return entries;
2709
- }
2710
- computeZScoreOutliers(entries, metric, threshold) {
2711
- if (entries.length === 0) return [];
2712
- const values = entries.map((e) => e.value);
2713
- const mean = values.reduce((sum, v) => sum + v, 0) / values.length;
2714
- const variance = values.reduce((sum, v) => sum + (v - mean) ** 2, 0) / values.length;
2715
- const stdDev = Math.sqrt(variance);
2716
- if (stdDev === 0) return [];
2717
- const outliers = [];
2718
- for (const entry of entries) {
2719
- const zScore = Math.abs(entry.value - mean) / stdDev;
2720
- if (zScore > threshold) {
2721
- outliers.push({
2722
- nodeId: entry.nodeId,
2723
- nodeName: entry.nodeName,
2724
- nodePath: entry.nodePath,
2725
- nodeType: entry.nodeType,
2726
- metric,
2727
- value: entry.value,
2728
- zScore,
2729
- mean,
2730
- stdDev
2731
- });
2732
- }
2733
- }
2734
- return outliers;
2735
- }
2736
- findArticulationPoints() {
2737
- const fileNodes = this.store.findNodes({ type: "file" });
2738
- if (fileNodes.length === 0) return [];
2739
- const nodeMap = /* @__PURE__ */ new Map();
2740
- const adj = /* @__PURE__ */ new Map();
2741
- for (const node of fileNodes) {
2742
- nodeMap.set(node.id, { name: node.name, path: node.path });
2743
- adj.set(node.id, /* @__PURE__ */ new Set());
2744
- }
2745
- const importEdges = this.store.getEdges({ type: "imports" });
2746
- for (const edge of importEdges) {
2747
- if (adj.has(edge.from) && adj.has(edge.to)) {
2748
- adj.get(edge.from).add(edge.to);
2749
- adj.get(edge.to).add(edge.from);
2750
- }
2751
- }
2752
- const disc = /* @__PURE__ */ new Map();
2753
- const low = /* @__PURE__ */ new Map();
2754
- const parent = /* @__PURE__ */ new Map();
2755
- const apSet = /* @__PURE__ */ new Set();
2756
- let timer = 0;
2757
- const dfs = (u) => {
2758
- disc.set(u, timer);
2759
- low.set(u, timer);
2760
- timer++;
2761
- let children = 0;
2762
- for (const v of adj.get(u)) {
2763
- if (!disc.has(v)) {
2764
- children++;
2765
- parent.set(v, u);
2766
- dfs(v);
2767
- low.set(u, Math.min(low.get(u), low.get(v)));
2768
- if (parent.get(u) === null && children > 1) {
2769
- apSet.add(u);
2770
- }
2771
- if (parent.get(u) !== null && low.get(v) >= disc.get(u)) {
2772
- apSet.add(u);
2773
- }
2774
- } else if (v !== parent.get(u)) {
2775
- low.set(u, Math.min(low.get(u), disc.get(v)));
2776
- }
2777
- }
2778
- };
2779
- for (const nodeId of adj.keys()) {
2780
- if (!disc.has(nodeId)) {
2781
- parent.set(nodeId, null);
2782
- dfs(nodeId);
2783
- }
2784
- }
2785
- const results = [];
2786
- for (const apId of apSet) {
2787
- const { components, dependentCount } = this.computeRemovalImpact(apId, adj);
2788
- const info = nodeMap.get(apId);
2789
- results.push({
2790
- nodeId: apId,
2791
- nodeName: info.name,
2792
- nodePath: info.path,
2793
- componentsIfRemoved: components,
2794
- dependentCount
2795
- });
2796
- }
2797
- results.sort((a, b) => b.dependentCount - a.dependentCount);
2798
- return results;
2799
- }
2800
- computeRemovalImpact(removedId, adj) {
2801
- const visited = /* @__PURE__ */ new Set();
2802
- visited.add(removedId);
2803
- const componentSizes = [];
2804
- for (const nodeId of adj.keys()) {
2805
- if (visited.has(nodeId)) continue;
2806
- const queue = [nodeId];
2807
- visited.add(nodeId);
2808
- let size = 0;
2809
- let head = 0;
2810
- while (head < queue.length) {
2811
- const current = queue[head++];
2812
- size++;
2813
- for (const neighbor of adj.get(current)) {
2814
- if (!visited.has(neighbor)) {
2815
- visited.add(neighbor);
2816
- queue.push(neighbor);
2817
- }
2818
- }
2819
- }
2820
- componentSizes.push(size);
2821
- }
2822
- const components = componentSizes.length;
2823
- if (componentSizes.length <= 1) {
2824
- return { components, dependentCount: 0 };
2825
- }
2826
- const maxSize = Math.max(...componentSizes);
2827
- const dependentCount = componentSizes.reduce((sum, s) => sum + s, 0) - maxSize;
2828
- return { components, dependentCount };
2829
- }
2830
- };
2831
- var INTENTS = ["impact", "find", "relationships", "explain", "anomaly"];
2832
- var SIGNAL_WEIGHTS = {
2833
- keyword: 0.35,
2834
- questionWord: 0.2,
2835
- verbPattern: 0.45
2836
- };
2837
- var INTENT_SIGNALS = {
2838
- impact: {
2839
- keywords: [
2840
- "break",
2841
- "affect",
2842
- "impact",
2843
- "change",
2844
- "depend",
2845
- "blast",
2846
- "radius",
2847
- "risk",
2848
- "delete",
2849
- "remove"
2850
- ],
2851
- questionWords: ["what", "if"],
2852
- verbPatterns: [
2853
- /what\s+(breaks|happens|is affected)/,
2854
- /if\s+i\s+(change|modify|remove|delete)/,
2855
- /blast\s+radius/,
2856
- /what\s+(depend|relies)/
2857
- ]
2858
- },
2859
- find: {
2860
- keywords: ["find", "where", "locate", "search", "list", "all", "every"],
2861
- questionWords: ["where"],
2862
- verbPatterns: [
2863
- /where\s+is/,
2864
- /find\s+(the|all|every)/,
2865
- /show\s+me/,
2866
- /show\s+(all|every|the)/,
2867
- /locate\s+/,
2868
- /list\s+(all|every|the)/
2869
- ]
2870
- },
2871
- relationships: {
2872
- keywords: [
2873
- "connect",
2874
- "call",
2875
- "import",
2876
- "use",
2877
- "depend",
2878
- "link",
2879
- "neighbor",
2880
- "caller",
2881
- "callee"
2882
- ],
2883
- questionWords: ["what", "who"],
2884
- verbPatterns: [/connects?\s+to/, /depends?\s+on/, /\bcalls?\b/, /\bimports?\b/]
2885
- },
2886
- explain: {
2887
- keywords: ["describe", "explain", "tell", "about", "overview", "summary", "work"],
2888
- questionWords: ["what", "how"],
2889
- verbPatterns: [
2890
- /what\s+is\s+\w/,
2891
- /describe\s+/,
2892
- /tell\s+me\s+about/,
2893
- /how\s+does/,
2894
- /overview\s+of/,
2895
- /give\s+me\s+/
2896
- ]
2897
- },
2898
- anomaly: {
2899
- keywords: [
2900
- "wrong",
2901
- "problem",
2902
- "anomaly",
2903
- "smell",
2904
- "issue",
2905
- "outlier",
2906
- "hotspot",
2907
- "suspicious",
2908
- "risk"
2909
- ],
2910
- questionWords: ["what"],
2911
- verbPatterns: [
2912
- /what.*(wrong|problem|smell)/,
2913
- /find.*(issue|anomal|problem)/,
2914
- /code\s+smell/,
2915
- /suspicious/,
2916
- /hotspot/
2917
- ]
2918
- }
2919
- };
2920
- var IntentClassifier = class {
2921
- /**
2922
- * Classify a natural language question into an intent.
2923
- *
2924
- * @param question - The natural language question to classify
2925
- * @returns ClassificationResult with intent, confidence, and per-signal scores
2926
- */
2927
- classify(question) {
2928
- const normalized = question.toLowerCase().trim();
2929
- const scores = [];
2930
- for (const intent of INTENTS) {
2931
- const signals = this.scoreIntent(normalized, INTENT_SIGNALS[intent]);
2932
- const confidence = this.combineSignals(signals);
2933
- scores.push({ intent, confidence, signals });
2934
- }
2935
- scores.sort((a, b) => b.confidence - a.confidence);
2936
- const best = scores[0];
2937
- return {
2938
- intent: best.intent,
2939
- confidence: best.confidence,
2940
- signals: best.signals
2941
- };
2942
- }
2943
- /**
2944
- * Score individual signals for an intent against the normalized query.
2945
- */
2946
- scoreIntent(normalized, signalSet) {
2947
- return {
2948
- keyword: this.scoreKeywords(normalized, signalSet.keywords),
2949
- questionWord: this.scoreQuestionWord(normalized, signalSet.questionWords),
2950
- verbPattern: this.scoreVerbPatterns(normalized, signalSet.verbPatterns)
2951
- };
2952
- }
2953
- /**
2954
- * Score keyword signal: uses word-stem matching (checks if any word in the
2955
- * query starts with the keyword). Saturates at 2 matches to avoid penalizing
2956
- * intents with many keywords when only a few appear in the query.
2957
- */
2958
- scoreKeywords(normalized, keywords) {
2959
- if (keywords.length === 0) return 0;
2960
- const words = normalized.split(/\s+/);
2961
- let matched = 0;
2962
- for (const keyword of keywords) {
2963
- if (words.some((w) => w.startsWith(keyword))) {
2964
- matched++;
2965
- }
2966
- }
2967
- return Math.min(matched / 2, 1);
2968
- }
2969
- /**
2970
- * Score question-word signal: 1.0 if the query starts with a matching
2971
- * question word, 0 otherwise.
2972
- */
2973
- scoreQuestionWord(normalized, questionWords) {
2974
- const firstWord = normalized.split(/\s+/)[0] ?? "";
2975
- return questionWords.includes(firstWord) ? 1 : 0;
2976
- }
2977
- /**
2978
- * Score verb-pattern signal: any matching pattern yields a strong score.
2979
- * Multiple matches increase score but saturate quickly.
2980
- */
2981
- scoreVerbPatterns(normalized, patterns) {
2982
- if (patterns.length === 0) return 0;
2983
- let matched = 0;
2984
- for (const pattern of patterns) {
2985
- if (pattern.test(normalized)) {
2986
- matched++;
2987
- }
2988
- }
2989
- return matched === 0 ? 0 : Math.min(0.6 + matched * 0.2, 1);
2990
- }
2991
- /**
2992
- * Combine individual signal scores into a single confidence score
2993
- * using additive weighted scoring. Each signal contributes weight * score,
2994
- * and the total weights sum to 1.0 so the result is naturally bounded [0, 1].
2995
- */
2996
- combineSignals(signals) {
2997
- let total = 0;
2998
- for (const key of Object.keys(signals)) {
2999
- const weight = SIGNAL_WEIGHTS[key];
3000
- total += signals[key] * weight;
3001
- }
3002
- return total;
3003
- }
3004
- };
3005
- var INTENT_KEYWORDS = /* @__PURE__ */ new Set([
3006
- // impact
3007
- "break",
3008
- "breaks",
3009
- "affect",
3010
- "affects",
3011
- "affected",
3012
- "impact",
3013
- "change",
3014
- "depend",
3015
- "depends",
3016
- "blast",
3017
- "radius",
3018
- "risk",
3019
- "delete",
3020
- "remove",
3021
- "modify",
3022
- "happens",
3023
- // find
3024
- "find",
3025
- "where",
3026
- "locate",
3027
- "search",
3028
- "list",
3029
- "all",
3030
- "every",
3031
- "show",
3032
- // relationships
3033
- "connect",
3034
- "connects",
3035
- "call",
3036
- "calls",
3037
- "import",
3038
- "imports",
3039
- "use",
3040
- "uses",
3041
- "link",
3042
- "neighbor",
3043
- "caller",
3044
- "callers",
3045
- "callee",
3046
- "callees",
3047
- // explain
3048
- "describe",
3049
- "explain",
3050
- "tell",
3051
- "about",
3052
- "overview",
3053
- "summary",
3054
- "work",
3055
- "works",
3056
- // anomaly
3057
- "wrong",
3058
- "problem",
3059
- "problems",
3060
- "anomaly",
3061
- "anomalies",
3062
- "smell",
3063
- "smells",
3064
- "issue",
3065
- "issues",
3066
- "outlier",
3067
- "hotspot",
3068
- "hotspots",
3069
- "suspicious"
3070
- ]);
3071
- var STOP_WORDS2 = /* @__PURE__ */ new Set([
3072
- "a",
3073
- "an",
3074
- "the",
3075
- "is",
3076
- "are",
3077
- "was",
3078
- "were",
3079
- "be",
3080
- "been",
3081
- "being",
3082
- "have",
3083
- "has",
3084
- "had",
3085
- "do",
3086
- "does",
3087
- "did",
3088
- "will",
3089
- "would",
3090
- "could",
3091
- "should",
3092
- "may",
3093
- "might",
3094
- "shall",
3095
- "can",
3096
- "need",
3097
- "must",
3098
- "i",
3099
- "me",
3100
- "my",
3101
- "we",
3102
- "our",
3103
- "you",
3104
- "your",
3105
- "he",
3106
- "she",
3107
- "it",
3108
- "its",
3109
- "they",
3110
- "them",
3111
- "their",
3112
- "this",
3113
- "that",
3114
- "these",
3115
- "those",
3116
- "and",
3117
- "or",
3118
- "but",
3119
- "if",
3120
- "then",
3121
- "else",
3122
- "when",
3123
- "while",
3124
- "for",
3125
- "of",
3126
- "at",
3127
- "by",
3128
- "to",
3129
- "in",
3130
- "on",
3131
- "with",
3132
- "from",
3133
- "up",
3134
- "out",
3135
- "not",
3136
- "no",
3137
- "nor",
3138
- "so",
3139
- "too",
3140
- "very",
3141
- "just",
3142
- "also",
3143
- "what",
3144
- "who",
3145
- "how",
3146
- "which",
3147
- "where",
3148
- "why",
3149
- "there",
3150
- "here",
3151
- "any",
3152
- "some",
3153
- "each",
3154
- "than",
3155
- "like",
3156
- "get",
3157
- "give",
3158
- "go",
3159
- "make",
3160
- "see",
3161
- "know",
3162
- "take"
3163
- ]);
3164
- var PASCAL_OR_CAMEL_RE = /\b([A-Z][a-z]+[A-Za-z]*[a-z][A-Za-z]*|[a-z]+[A-Z][A-Za-z]*)\b/g;
3165
- var FILE_PATH_RE = /(?:\.\/|[a-zA-Z0-9_-]+\/)[a-zA-Z0-9_\-./]+\.[a-zA-Z]{1,10}/g;
3166
- var QUOTED_RE = /["']([^"']+)["']/g;
3167
- function isSkippableWord(cleaned, allConsumed) {
3168
- if (allConsumed.has(cleaned)) return true;
3169
- const lower = cleaned.toLowerCase();
3170
- if (STOP_WORDS2.has(lower)) return true;
3171
- if (INTENT_KEYWORDS.has(lower)) return true;
3172
- if (cleaned === cleaned.toUpperCase() && /^[A-Z]+$/.test(cleaned)) return true;
3173
- return false;
3174
- }
3175
- function buildConsumedSet(quotedConsumed, casingConsumed, pathConsumed) {
3176
- const quotedWords = /* @__PURE__ */ new Set();
3177
- for (const q of quotedConsumed) {
3178
- for (const w of q.split(/\s+/)) {
3179
- if (w.length > 0) quotedWords.add(w);
3180
- }
3181
- }
3182
- return /* @__PURE__ */ new Set([...quotedConsumed, ...quotedWords, ...casingConsumed, ...pathConsumed]);
3183
- }
3184
- var EntityExtractor = class {
3185
- /**
3186
- * Extract candidate entity mentions from a natural language query.
3187
- *
3188
- * @param query - The natural language query to extract entities from
3189
- * @returns Array of raw entity strings in priority order, deduplicated
3190
- */
3191
- extract(query) {
3192
- const trimmed = query.trim();
3193
- if (trimmed.length === 0) return [];
3194
- const seen = /* @__PURE__ */ new Set();
3195
- const result = [];
3196
- const add = (entity) => {
3197
- if (!seen.has(entity)) {
3198
- seen.add(entity);
3199
- result.push(entity);
3200
- }
3201
- };
3202
- const quotedConsumed = /* @__PURE__ */ new Set();
3203
- for (const match of trimmed.matchAll(QUOTED_RE)) {
3204
- const inner = match[1].trim();
3205
- if (inner.length > 0) {
3206
- add(inner);
3207
- quotedConsumed.add(inner);
3208
- }
3209
- }
3210
- const casingConsumed = /* @__PURE__ */ new Set();
3211
- for (const match of trimmed.matchAll(PASCAL_OR_CAMEL_RE)) {
3212
- const token = match[0];
3213
- if (!quotedConsumed.has(token)) {
3214
- add(token);
3215
- casingConsumed.add(token);
3216
- }
3217
- }
3218
- const pathConsumed = /* @__PURE__ */ new Set();
3219
- for (const match of trimmed.matchAll(FILE_PATH_RE)) {
3220
- const path7 = match[0];
3221
- add(path7);
3222
- pathConsumed.add(path7);
3223
- }
3224
- const allConsumed = buildConsumedSet(quotedConsumed, casingConsumed, pathConsumed);
3225
- const words = trimmed.split(/\s+/);
3226
- for (const raw of words) {
3227
- const cleaned = raw.replace(/^[^a-zA-Z0-9]+|[^a-zA-Z0-9]+$/g, "");
3228
- if (cleaned.length === 0) continue;
3229
- if (isSkippableWord(cleaned, allConsumed)) continue;
3230
- add(cleaned);
3231
- }
3232
- return result;
3233
- }
3234
- };
3235
- var EntityResolver = class {
3236
- store;
3237
- fusion;
3238
- constructor(store, fusion) {
3239
- this.store = store;
3240
- this.fusion = fusion;
3241
- }
3242
- /**
3243
- * Resolve an array of raw entity strings to graph nodes.
3244
- *
3245
- * @param raws - Raw entity strings from EntityExtractor
3246
- * @returns Array of ResolvedEntity for each successfully resolved raw string
3247
- */
3248
- resolve(raws) {
3249
- const results = [];
3250
- for (const raw of raws) {
3251
- const resolved = this.resolveOne(raw);
3252
- if (resolved !== void 0) {
3253
- results.push(resolved);
3254
- }
3255
- }
3256
- return results;
3257
- }
3258
- resolveOne(raw) {
3259
- const exactMatches = this.store.findNodes({ name: raw });
3260
- if (exactMatches.length > 0) {
3261
- const node = exactMatches[0];
3262
- return {
3263
- raw,
3264
- nodeId: node.id,
3265
- node,
3266
- confidence: 1,
3267
- method: "exact"
3268
- };
3269
- }
3270
- if (this.fusion) {
3271
- const fusionResults = this.fusion.search(raw, 5);
3272
- if (fusionResults.length > 0 && fusionResults[0].score > 0.5) {
3273
- const top = fusionResults[0];
3274
- return {
3275
- raw,
3276
- nodeId: top.nodeId,
3277
- node: top.node,
3278
- confidence: top.score,
3279
- method: "fusion"
3280
- };
3281
- }
3282
- }
3283
- if (raw.length < 3) return void 0;
3284
- const isPathLike = raw.includes("/");
3285
- const fileNodes = this.store.findNodes({ type: "file" });
3286
- for (const node of fileNodes) {
3287
- if (!node.path) continue;
3288
- if (isPathLike && node.path.includes(raw)) {
3289
- return { raw, nodeId: node.id, node, confidence: 0.6, method: "path" };
3290
- }
3291
- const basename5 = node.path.split("/").pop() ?? "";
3292
- if (basename5.includes(raw)) {
3293
- return { raw, nodeId: node.id, node, confidence: 0.6, method: "path" };
3294
- }
3295
- if (raw.length >= 4 && node.path.includes(raw)) {
3296
- return { raw, nodeId: node.id, node, confidence: 0.6, method: "path" };
3297
- }
3298
- }
3299
- return void 0;
3300
- }
3301
- };
3302
- var ResponseFormatter = class {
3303
- /**
3304
- * Format graph operation results into a human-readable summary.
3305
- *
3306
- * @param intent - The classified intent
3307
- * @param entities - Resolved entities from the query
3308
- * @param data - Raw result data (shape varies per intent)
3309
- * @param query - Original natural language query (optional)
3310
- * @returns Human-readable summary string
3311
- */
3312
- format(intent, entities, data, query) {
3313
- if (data === null || data === void 0) {
3314
- return "No results found.";
3315
- }
3316
- const firstEntity = entities[0];
3317
- const entityName = firstEntity?.raw ?? "the target";
3318
- switch (intent) {
3319
- case "impact":
3320
- return this.formatImpact(entityName, data);
3321
- case "find":
3322
- return this.formatFind(data, query);
3323
- case "relationships":
3324
- return this.formatRelationships(entityName, entities, data);
3325
- case "explain":
3326
- return this.formatExplain(entityName, entities, data);
3327
- case "anomaly":
3328
- return this.formatAnomaly(data);
3329
- default:
3330
- return `Processed results for "${entityName}".`;
3331
- }
3332
- }
3333
- formatImpact(entityName, data) {
3334
- const d = data;
3335
- const code = this.safeArrayLength(d?.code);
3336
- const tests = this.safeArrayLength(d?.tests);
3337
- const docs = this.safeArrayLength(d?.docs);
3338
- return `Changing **${entityName}** affects ${this.p(code, "code file")}, ${this.p(tests, "test")}, and ${this.p(docs, "doc")}.`;
3339
- }
3340
- formatFind(data, query) {
3341
- const count = Array.isArray(data) ? data.length : 0;
3342
- if (query) {
3343
- return `Found ${this.p(count, "match", "matches")} for "${query}".`;
3344
- }
3345
- return `Found ${this.p(count, "match", "matches")}.`;
3346
- }
3347
- formatRelationships(entityName, entities, data) {
3348
- const d = data;
3349
- const edges = Array.isArray(d?.edges) ? d.edges : [];
3350
- const firstEntity = entities[0];
3351
- const rootId = firstEntity?.nodeId ?? "";
3352
- let outbound = 0;
3353
- let inbound = 0;
3354
- for (const edge of edges) {
3355
- if (edge.from === rootId) outbound++;
3356
- if (edge.to === rootId) inbound++;
3357
- }
3358
- return `**${entityName}** has ${outbound} outbound and ${inbound} inbound relationships.`;
3359
- }
3360
- formatExplain(entityName, entities, data) {
3361
- const d = data;
3362
- const context = Array.isArray(d?.context) ? d.context : [];
3363
- const firstEntity = entities[0];
3364
- const nodeType = firstEntity?.node.type ?? "node";
3365
- const path7 = firstEntity?.node.path ?? "unknown";
3366
- let neighborCount = 0;
3367
- const firstContext = context[0];
3368
- if (firstContext && Array.isArray(firstContext.nodes)) {
3369
- neighborCount = firstContext.nodes.length;
3370
- }
3371
- return `**${entityName}** is a ${nodeType} at \`${path7}\`. Connected to ${neighborCount} nodes.`;
3372
- }
3373
- formatAnomaly(data) {
3374
- const d = data;
3375
- const outliers = Array.isArray(d?.statisticalOutliers) ? d.statisticalOutliers : [];
3376
- const artPoints = Array.isArray(d?.articulationPoints) ? d.articulationPoints : [];
3377
- const count = outliers.length + artPoints.length;
3378
- if (count === 0) {
3379
- return "Found 0 anomalies.";
3380
- }
3381
- const topItems = [
3382
- ...outliers.slice(0, 2).map((o) => o.nodeId ?? "unknown outlier"),
3383
- ...artPoints.slice(0, 1).map((a) => a.nodeId ?? "unknown bottleneck")
3384
- ].join(", ");
3385
- return `Found ${this.p(count, "anomaly", "anomalies")}: ${topItems}.`;
3386
- }
3387
- safeArrayLength(value) {
3388
- return Array.isArray(value) ? value.length : 0;
3389
- }
3390
- p(count, singular, plural) {
3391
- const word = count === 1 ? singular : plural ?? singular + "s";
3392
- return `${count} ${word}`;
3393
- }
3394
- };
3395
- var ENTITY_REQUIRED_INTENTS = /* @__PURE__ */ new Set(["impact", "relationships", "explain"]);
3396
- var classifier = new IntentClassifier();
3397
- var extractor = new EntityExtractor();
3398
- var formatter = new ResponseFormatter();
3399
- async function askGraph(store, question) {
3400
- const fusion = new FusionLayer(store);
3401
- const resolver = new EntityResolver(store, fusion);
3402
- const classification = classifier.classify(question);
3403
- if (classification.confidence < 0.3) {
3404
- return {
3405
- intent: classification.intent,
3406
- intentConfidence: classification.confidence,
3407
- entities: [],
3408
- summary: "I'm not sure what you're asking. Try rephrasing your question.",
3409
- data: null,
3410
- suggestions: [
3411
- 'Try "what breaks if I change <name>?" for impact analysis',
3412
- 'Try "where is <name>?" to find entities',
3413
- 'Try "what calls <name>?" for relationships',
3414
- 'Try "what is <name>?" for explanations',
3415
- 'Try "what looks wrong?" for anomaly detection'
3416
- ]
3417
- };
3418
- }
3419
- const rawEntities = extractor.extract(question);
3420
- const entities = resolver.resolve(rawEntities);
3421
- if (ENTITY_REQUIRED_INTENTS.has(classification.intent) && entities.length === 0) {
3422
- return {
3423
- intent: classification.intent,
3424
- intentConfidence: classification.confidence,
3425
- entities: [],
3426
- summary: "Could not find any matching nodes in the graph for your query. Try using exact class names, function names, or file paths.",
3427
- data: null
3428
- };
3429
- }
3430
- let data;
3431
- try {
3432
- data = executeOperation(store, classification.intent, entities, question, fusion);
3433
- } catch (err) {
3434
- return {
3435
- intent: classification.intent,
3436
- intentConfidence: classification.confidence,
3437
- entities,
3438
- summary: `An error occurred while querying the graph: ${err instanceof Error ? err.message : String(err)}`,
3439
- data: null
3440
- };
3441
- }
3442
- const summary = formatter.format(classification.intent, entities, data, question);
3443
- return {
3444
- intent: classification.intent,
3445
- intentConfidence: classification.confidence,
3446
- entities,
3447
- summary,
3448
- data
3449
- };
3450
- }
3451
- function executeOperation(store, intent, entities, question, fusion) {
3452
- const cql = new ContextQL(store);
3453
- switch (intent) {
3454
- case "impact": {
3455
- const rootId = entities[0].nodeId;
3456
- const result = cql.execute({
3457
- rootNodeIds: [rootId],
3458
- bidirectional: true,
3459
- maxDepth: 3
3460
- });
3461
- return groupNodesByImpact(result.nodes, rootId);
3462
- }
3463
- case "find": {
3464
- return fusion.search(question, 10);
3465
- }
3466
- case "relationships": {
3467
- const rootId = entities[0].nodeId;
3468
- const result = cql.execute({
3469
- rootNodeIds: [rootId],
3470
- bidirectional: true,
3471
- maxDepth: 1
3472
- });
3473
- return { nodes: result.nodes, edges: result.edges };
3474
- }
3475
- case "explain": {
3476
- const searchResults = fusion.search(question, 10);
3477
- const contextBlocks = [];
3478
- const rootIds = entities.length > 0 ? [entities[0].nodeId] : searchResults.slice(0, 3).map((r) => r.nodeId);
3479
- for (const rootId of rootIds) {
3480
- const expanded = cql.execute({
3481
- rootNodeIds: [rootId],
3482
- maxDepth: 2
3483
- });
3484
- const matchingResult = searchResults.find((r) => r.nodeId === rootId);
3485
- contextBlocks.push({
3486
- rootNode: rootId,
3487
- score: matchingResult?.score ?? 1,
3488
- nodes: expanded.nodes,
3489
- edges: expanded.edges
3490
- });
3491
- }
3492
- return { searchResults, context: contextBlocks };
3493
- }
3494
- case "anomaly": {
3495
- const adapter = new GraphAnomalyAdapter(store);
3496
- return adapter.detect();
3497
- }
3498
- default:
3499
- return null;
3500
- }
3501
- }
3502
- var PHASE_NODE_TYPES = {
3503
- implement: ["file", "function", "class", "method", "interface", "variable"],
3504
- review: ["adr", "document", "learning", "commit"],
3505
- debug: ["failure", "learning", "function", "method"],
3506
- plan: ["adr", "document", "module", "layer"]
3507
- };
3508
- var CODE_NODE_TYPES5 = /* @__PURE__ */ new Set([
3509
- "file",
3510
- "function",
3511
- "class",
3512
- "interface",
3513
- "method",
3514
- "variable"
3515
- ]);
3516
- function estimateNodeTokens(node) {
3517
- let chars = (node.name?.length ?? 0) + (node.path?.length ?? 0) + (node.type?.length ?? 0);
3518
- if (node.metadata) {
3519
- chars += JSON.stringify(node.metadata).length;
3520
- }
3521
- return Math.ceil(chars / 4);
3522
- }
3523
- var Assembler = class {
3524
- store;
3525
- vectorStore;
3526
- fusionLayer;
3527
- constructor(store, vectorStore) {
3528
- this.store = store;
3529
- this.vectorStore = vectorStore;
3530
- }
3531
- getFusionLayer() {
3532
- if (!this.fusionLayer) {
3533
- this.fusionLayer = new FusionLayer(this.store, this.vectorStore);
3534
- }
3535
- return this.fusionLayer;
3536
- }
3537
- /**
3538
- * Assemble context relevant to an intent string within a token budget.
3539
- */
3540
- assembleContext(intent, tokenBudget = 4e3) {
3541
- const fusion = this.getFusionLayer();
3542
- const topResults = fusion.search(intent, 10);
3543
- if (topResults.length === 0) {
3544
- return { nodes: [], edges: [], tokenEstimate: 0, intent, truncated: false };
3545
- }
3546
- const { nodeMap, collectedEdges, nodeScores } = this.expandSearchResults(topResults);
3547
- const sortedNodes = Array.from(nodeMap.values()).sort((a, b) => {
3548
- return (nodeScores.get(b.id) ?? 0) - (nodeScores.get(a.id) ?? 0);
3549
- });
3550
- const { keptNodes, tokenEstimate, truncated } = this.truncateToFit(sortedNodes, tokenBudget);
3551
- const keptNodeIds = new Set(keptNodes.map((n) => n.id));
3552
- const keptEdges = collectedEdges.filter(
3553
- (e) => keptNodeIds.has(e.from) && keptNodeIds.has(e.to)
3554
- );
3555
- return { nodes: keptNodes, edges: keptEdges, tokenEstimate, intent, truncated };
3556
- }
3557
- expandSearchResults(topResults) {
3558
- const contextQL = new ContextQL(this.store);
3559
- const nodeMap = /* @__PURE__ */ new Map();
3560
- const edgeSet = /* @__PURE__ */ new Set();
3561
- const collectedEdges = [];
3562
- const nodeScores = /* @__PURE__ */ new Map();
3563
- for (const result of topResults) {
3564
- nodeScores.set(result.nodeId, result.score);
3565
- const expanded = contextQL.execute({
3566
- rootNodeIds: [result.nodeId],
3567
- maxDepth: 2
3568
- });
3569
- for (const node of expanded.nodes) {
3570
- if (!nodeMap.has(node.id)) {
3571
- nodeMap.set(node.id, node);
3572
- if (!nodeScores.has(node.id)) {
3573
- nodeScores.set(node.id, result.score * 0.5);
3574
- }
3575
- }
3576
- }
3577
- for (const edge of expanded.edges) {
3578
- const key = `${edge.from}|${edge.to}|${edge.type}`;
3579
- if (!edgeSet.has(key)) {
3580
- edgeSet.add(key);
3581
- collectedEdges.push(edge);
3582
- }
3583
- }
3584
- }
3585
- return { nodeMap, collectedEdges, nodeScores };
3586
- }
3587
- truncateToFit(sortedNodes, tokenBudget) {
3588
- let tokenEstimate = 0;
3589
- const keptNodes = [];
3590
- let truncated = false;
3591
- for (const node of sortedNodes) {
3592
- const nodeTokens = estimateNodeTokens(node);
3593
- if (tokenEstimate + nodeTokens > tokenBudget && keptNodes.length > 0) {
3594
- truncated = true;
3595
- break;
3596
- }
3597
- tokenEstimate += nodeTokens;
3598
- keptNodes.push(node);
3599
- }
3600
- return { keptNodes, tokenEstimate, truncated };
3601
- }
3602
- /**
3603
- * Compute a token budget allocation across node types.
3604
- */
3605
- computeBudget(totalTokens, phase) {
3606
- const allNodes = this.store.findNodes({});
3607
- const typeCounts = {};
3608
- for (const node of allNodes) {
3609
- typeCounts[node.type] = (typeCounts[node.type] ?? 0) + 1;
3610
- }
3611
- const density = {};
3612
- const moduleNodes = this.store.findNodes({ type: "module" });
3613
- for (const mod of moduleNodes) {
3614
- const outEdges = this.store.getEdges({ from: mod.id });
3615
- const inEdges = this.store.getEdges({ to: mod.id });
3616
- density[mod.name] = outEdges.length + inEdges.length;
3617
- }
3618
- const boostTypes = phase ? PHASE_NODE_TYPES[phase] : void 0;
3619
- const boostFactor = 2;
3620
- let weightedTotal = 0;
3621
- const weights = {};
3622
- for (const [type, count] of Object.entries(typeCounts)) {
3623
- const isBoosted = boostTypes?.includes(type);
3624
- const weight = count * (isBoosted ? boostFactor : 1);
3625
- weights[type] = weight;
3626
- weightedTotal += weight;
3627
- }
3628
- const allocations = {};
3629
- if (weightedTotal > 0) {
3630
- let allocated = 0;
3631
- const types = Object.keys(weights);
3632
- for (let i = 0; i < types.length; i++) {
3633
- const type = types[i];
3634
- if (i === types.length - 1) {
3635
- allocations[type] = totalTokens - allocated;
3636
- } else {
3637
- const share = Math.round(weights[type] / weightedTotal * totalTokens);
3638
- allocations[type] = share;
3639
- allocated += share;
3640
- }
3641
- }
3642
- }
3643
- return { total: totalTokens, allocations, density };
3644
- }
3645
- /**
3646
- * Filter graph nodes relevant to a development phase.
3647
- */
3648
- filterForPhase(phase) {
3649
- const nodeTypes = PHASE_NODE_TYPES[phase];
3650
- if (!nodeTypes) {
3651
- console.warn(
3652
- `[harness] Unknown phase "${phase}" in filterForPhase. Returning all code nodes.`
3653
- );
3654
- }
3655
- const relevantTypes = nodeTypes ?? PHASE_NODE_TYPES["implement"] ?? [];
3656
- const nodes = [];
3657
- const filePathSet = /* @__PURE__ */ new Set();
3658
- for (const type of relevantTypes) {
3659
- const found = this.store.findNodes({ type });
3660
- for (const node of found) {
3661
- nodes.push(node);
3662
- if (node.path) {
3663
- filePathSet.add(node.path);
3664
- }
3665
- }
3666
- }
3667
- return {
3668
- phase,
3669
- nodes,
3670
- filePaths: Array.from(filePathSet)
3671
- };
3672
- }
3673
- /**
3674
- * Generate a markdown repository map from graph structure.
3675
- */
3676
- generateMap() {
3677
- const moduleNodes = this.store.findNodes({ type: "module" });
3678
- const modulesWithEdgeCount = moduleNodes.map((mod) => {
3679
- const outEdges = this.store.getEdges({ from: mod.id });
3680
- const inEdges = this.store.getEdges({ to: mod.id });
3681
- return { module: mod, edgeCount: outEdges.length + inEdges.length };
3682
- });
3683
- modulesWithEdgeCount.sort((a, b) => b.edgeCount - a.edgeCount);
3684
- const lines = ["# Repository Structure", ""];
3685
- if (modulesWithEdgeCount.length > 0) {
3686
- lines.push("## Modules", "");
3687
- for (const { module: mod, edgeCount } of modulesWithEdgeCount) {
3688
- lines.push(`### ${mod.name} (${edgeCount} connections)`);
3689
- lines.push("");
3690
- const containsEdges = this.store.getEdges({ from: mod.id, type: "contains" });
3691
- for (const edge of containsEdges) {
3692
- const fileNode = this.store.getNode(edge.to);
3693
- if (fileNode && fileNode.type === "file") {
3694
- const symbolEdges = this.store.getEdges({ from: fileNode.id, type: "contains" });
3695
- lines.push(`- ${fileNode.path ?? fileNode.name} (${symbolEdges.length} symbols)`);
3696
- }
3697
- }
3698
- lines.push("");
3699
- }
3700
- }
3701
- const fileNodes = this.store.findNodes({ type: "file" });
3702
- const nonBarrelFiles = fileNodes.filter((n) => !n.name.startsWith("index."));
3703
- const filesWithOutDegree = nonBarrelFiles.map((f) => {
3704
- const outEdges = this.store.getEdges({ from: f.id });
3705
- return { file: f, outDegree: outEdges.length };
3706
- });
3707
- filesWithOutDegree.sort((a, b) => b.outDegree - a.outDegree);
3708
- const entryPoints = filesWithOutDegree.filter((f) => f.outDegree > 0).slice(0, 5);
3709
- if (entryPoints.length > 0) {
3710
- lines.push("## Entry Points", "");
3711
- for (const { file, outDegree } of entryPoints) {
3712
- lines.push(`- ${file.path ?? file.name} (${outDegree} outbound edges)`);
3713
- }
3714
- lines.push("");
3715
- }
3716
- return lines.join("\n");
3717
- }
3718
- /**
3719
- * Check documentation coverage of code nodes.
3720
- */
3721
- checkCoverage() {
3722
- const codeNodes = [];
3723
- for (const type of CODE_NODE_TYPES5) {
3724
- codeNodes.push(...this.store.findNodes({ type }));
3725
- }
3726
- const documented = [];
3727
- const undocumented = [];
3728
- for (const node of codeNodes) {
3729
- const documentsEdges = this.store.getEdges({ to: node.id, type: "documents" });
3730
- if (documentsEdges.length > 0) {
3731
- documented.push(node.id);
3732
- } else {
3733
- undocumented.push(node.id);
3734
- }
3735
- }
3736
- const totalCodeNodes = codeNodes.length;
3737
- const coveragePercentage = totalCodeNodes > 0 ? documented.length / totalCodeNodes * 100 : 0;
3738
- return {
3739
- documented,
3740
- undocumented,
3741
- coveragePercentage,
3742
- totalCodeNodes
3743
- };
3744
- }
3745
- };
3746
- function queryTraceability(store, options) {
3747
- const allRequirements = store.findNodes({ type: "requirement" });
3748
- const filtered = allRequirements.filter((node) => {
3749
- if (options?.specPath && node.metadata?.specPath !== options.specPath) return false;
3750
- if (options?.featureName && node.metadata?.featureName !== options.featureName) return false;
3751
- return true;
3752
- });
3753
- if (filtered.length === 0) return [];
3754
- const groups = /* @__PURE__ */ new Map();
3755
- for (const req of filtered) {
3756
- const meta = req.metadata;
3757
- const specPath = meta?.specPath ?? "";
3758
- const featureName = meta?.featureName ?? "";
3759
- const key = `${specPath}\0${featureName}`;
3760
- const list = groups.get(key);
3761
- if (list) {
3762
- list.push(req);
3763
- } else {
3764
- groups.set(key, [req]);
3765
- }
3766
- }
3767
- const results = [];
3768
- for (const [, reqs] of groups) {
3769
- const firstReq = reqs[0];
3770
- const firstMeta = firstReq.metadata;
3771
- const specPath = firstMeta?.specPath ?? "";
3772
- const featureName = firstMeta?.featureName ?? "";
3773
- const requirements = [];
3774
- for (const req of reqs) {
3775
- const requiresEdges = store.getEdges({ from: req.id, type: "requires" });
3776
- const codeFiles = requiresEdges.map((edge) => {
3777
- const targetNode = store.getNode(edge.to);
3778
- return {
3779
- path: targetNode?.path ?? edge.to,
3780
- confidence: edge.confidence ?? edge.metadata?.confidence ?? 0,
3781
- method: edge.metadata?.method ?? "convention"
3782
- };
3783
- });
3784
- const verifiedByEdges = store.getEdges({ from: req.id, type: "verified_by" });
3785
- const testFiles = verifiedByEdges.map((edge) => {
3786
- const targetNode = store.getNode(edge.to);
3787
- return {
3788
- path: targetNode?.path ?? edge.to,
3789
- confidence: edge.confidence ?? edge.metadata?.confidence ?? 0,
3790
- method: edge.metadata?.method ?? "convention"
3791
- };
3792
- });
3793
- const hasCode = codeFiles.length > 0;
3794
- const hasTests = testFiles.length > 0;
3795
- const status = hasCode && hasTests ? "full" : hasCode ? "code-only" : hasTests ? "test-only" : "none";
3796
- const allConfidences = [
3797
- ...codeFiles.map((f) => f.confidence),
3798
- ...testFiles.map((f) => f.confidence)
3799
- ];
3800
- const maxConfidence = allConfidences.length > 0 ? Math.max(...allConfidences) : 0;
3801
- requirements.push({
3802
- requirementId: req.id,
3803
- requirementName: req.name,
3804
- index: req.metadata?.index ?? 0,
3805
- codeFiles,
3806
- testFiles,
3807
- status,
3808
- maxConfidence
3809
- });
3810
- }
3811
- requirements.sort((a, b) => a.index - b.index);
3812
- const total = requirements.length;
3813
- const withCode = requirements.filter((r) => r.codeFiles.length > 0).length;
3814
- const withTests = requirements.filter((r) => r.testFiles.length > 0).length;
3815
- const fullyTraced = requirements.filter((r) => r.status === "full").length;
3816
- const untraceable = requirements.filter((r) => r.status === "none").length;
3817
- const coveragePercent = total > 0 ? Math.round(fullyTraced / total * 100) : 0;
3818
- results.push({
3819
- specPath,
3820
- featureName,
3821
- requirements,
3822
- summary: { total, withCode, withTests, fullyTraced, untraceable, coveragePercent }
3823
- });
3824
- }
3825
- return results;
3826
- }
3827
- var GraphConstraintAdapter = class {
3828
- constructor(store) {
3829
- this.store = store;
3830
- }
3831
- store;
3832
- computeDependencyGraph() {
3833
- const fileNodes = this.store.findNodes({ type: "file" });
3834
- const nodes = fileNodes.map((n) => n.path ?? n.id);
3835
- const importsEdges = this.store.getEdges({ type: "imports" });
3836
- const edges = importsEdges.map((e) => {
3837
- const fromNode = this.store.getNode(e.from);
3838
- const toNode = this.store.getNode(e.to);
3839
- const fromPath = fromNode?.path ?? e.from;
3840
- const toPath = toNode?.path ?? e.to;
3841
- const importType = e.metadata?.importType ?? "static";
3842
- const line = e.metadata?.line ?? 0;
3843
- return { from: fromPath, to: toPath, importType, line };
3844
- });
3845
- return { nodes, edges };
3846
- }
3847
- computeLayerViolations(layers, rootDir) {
3848
- const { edges } = this.computeDependencyGraph();
3849
- const violations = [];
3850
- for (const edge of edges) {
3851
- const fromRelative = relative2(rootDir, edge.from).replaceAll("\\", "/");
3852
- const toRelative = relative2(rootDir, edge.to).replaceAll("\\", "/");
3853
- const fromLayer = this.resolveLayer(fromRelative, layers);
3854
- const toLayer = this.resolveLayer(toRelative, layers);
3855
- if (!fromLayer || !toLayer) continue;
3856
- if (fromLayer.name === toLayer.name) continue;
3857
- if (!fromLayer.allowedDependencies.includes(toLayer.name)) {
3858
- violations.push({
3859
- file: edge.from,
3860
- imports: edge.to,
3861
- fromLayer: fromLayer.name,
3862
- toLayer: toLayer.name,
3863
- reason: "WRONG_LAYER",
3864
- line: edge.line
3865
- });
3866
- }
3867
- }
3868
- return violations;
3869
- }
3870
- resolveLayer(filePath, layers) {
3871
- for (const layer of layers) {
3872
- for (const pattern of layer.patterns) {
3873
- if (minimatch(filePath, pattern)) {
3874
- return layer;
3875
- }
3876
- }
3877
- }
3878
- return void 0;
3879
- }
3880
- };
3881
- function isDTCGToken(obj) {
3882
- return typeof obj === "object" && obj !== null && "$value" in obj && "$type" in obj;
3883
- }
3884
- async function readFileOrNull(filePath) {
3885
- try {
3886
- return await fs5.readFile(filePath, "utf-8");
3887
- } catch {
3888
- return null;
3889
- }
3890
- }
3891
- function parseJsonOrError(content, filePath) {
3892
- try {
3893
- return { data: JSON.parse(content) };
3894
- } catch (err) {
3895
- return {
3896
- error: `Failed to parse ${filePath}: ${err instanceof Error ? err.message : String(err)}`
3897
- };
3898
- }
3899
- }
3900
- function walkDTCGTokens(store, obj, groupPath, topGroup, tokensPath) {
3901
- let count = 0;
3902
- for (const [key, value] of Object.entries(obj)) {
3903
- if (key.startsWith("$")) continue;
3904
- if (isDTCGToken(value)) {
3905
- const tokenPath = [...groupPath, key].join(".");
3906
- store.addNode({
3907
- id: `design_token:${tokenPath}`,
3908
- type: "design_token",
3909
- name: tokenPath,
3910
- path: tokensPath,
3911
- metadata: {
3912
- tokenType: value.$type,
3913
- value: value.$value,
3914
- group: topGroup || groupPath[0] || key,
3915
- ...value.$description ? { description: value.$description } : {}
3916
- }
3917
- });
3918
- count++;
3919
- } else if (typeof value === "object" && value !== null) {
3920
- count += walkDTCGTokens(
3921
- store,
3922
- value,
3923
- [...groupPath, key],
3924
- topGroup || key,
3925
- tokensPath
3926
- );
3927
- }
3928
- }
3929
- return count;
3930
- }
3931
- function parseAestheticDirection(content) {
3932
- const extract = (pattern) => {
3933
- const m = content.match(pattern);
3934
- return m ? m[1].trim() : void 0;
3935
- };
3936
- const result = {};
3937
- const style = extract(/\*\*Style:\*\*\s*(.+)/);
3938
- if (style !== void 0) result.style = style;
3939
- const tone = extract(/\*\*Tone:\*\*\s*(.+)/);
3940
- if (tone !== void 0) result.tone = tone;
3941
- const differentiator = extract(/\*\*Differentiator:\*\*\s*(.+)/);
3942
- if (differentiator !== void 0) result.differentiator = differentiator;
3943
- const strictness = extract(/^level:\s*(strict|standard|permissive)\s*$/m);
3944
- if (strictness !== void 0) result.strictness = strictness;
3945
- return result;
3946
- }
3947
- function parseAntiPatterns(content) {
3948
- const lines = content.split("\n");
3949
- const patterns = [];
3950
- let inSection = false;
3951
- for (const line of lines) {
3952
- if (/^##\s+Anti-Patterns/i.test(line)) {
3953
- inSection = true;
3954
- continue;
3955
- }
3956
- if (inSection && /^##\s+/.test(line)) {
3957
- break;
3958
- }
3959
- if (inSection) {
3960
- const bulletMatch = line.match(/^-\s+(.+)/);
3961
- if (bulletMatch) {
3962
- patterns.push(bulletMatch[1].trim());
3963
- }
3964
- }
3965
- }
3966
- return patterns;
3967
- }
3968
- var DesignIngestor = class {
3969
- constructor(store) {
3970
- this.store = store;
3971
- }
3972
- store;
3973
- async ingestTokens(tokensPath) {
3974
- const start = Date.now();
3975
- const content = await readFileOrNull(tokensPath);
3976
- if (content === null) return emptyResult(Date.now() - start);
3977
- const parsed = parseJsonOrError(content, tokensPath);
3978
- if ("error" in parsed) {
3979
- return { ...emptyResult(Date.now() - start), errors: [parsed.error] };
3980
- }
3981
- const nodesAdded = walkDTCGTokens(this.store, parsed.data, [], "", tokensPath);
3982
- return {
3983
- nodesAdded,
3984
- nodesUpdated: 0,
3985
- edgesAdded: 0,
3986
- edgesUpdated: 0,
3987
- errors: [],
3988
- durationMs: Date.now() - start
3989
- };
3990
- }
3991
- async ingestDesignIntent(designPath) {
3992
- const start = Date.now();
3993
- const content = await readFileOrNull(designPath);
3994
- if (content === null) return emptyResult(Date.now() - start);
3995
- let nodesAdded = 0;
3996
- const direction = parseAestheticDirection(content);
3997
- const metadata = {};
3998
- if (direction.style) metadata.style = direction.style;
3999
- if (direction.tone) metadata.tone = direction.tone;
4000
- if (direction.differentiator) metadata.differentiator = direction.differentiator;
4001
- if (direction.strictness) metadata.strictness = direction.strictness;
4002
- this.store.addNode({
4003
- id: "aesthetic_intent:project",
4004
- type: "aesthetic_intent",
4005
- name: "project",
4006
- path: designPath,
4007
- metadata
4008
- });
4009
- nodesAdded++;
4010
- for (const text of parseAntiPatterns(content)) {
4011
- this.store.addNode({
4012
- id: `design_constraint:${hash(text)}`,
4013
- type: "design_constraint",
4014
- name: text,
4015
- path: designPath,
4016
- metadata: { rule: text, severity: "warn", scope: "project" }
4017
- });
4018
- nodesAdded++;
4019
- }
4020
- return {
4021
- nodesAdded,
4022
- nodesUpdated: 0,
4023
- edgesAdded: 0,
4024
- edgesUpdated: 0,
4025
- errors: [],
4026
- durationMs: Date.now() - start
4027
- };
4028
- }
4029
- async ingestAll(designDir) {
4030
- const start = Date.now();
4031
- const [tokensResult, intentResult] = await Promise.all([
4032
- this.ingestTokens(path6.join(designDir, "tokens.json")),
4033
- this.ingestDesignIntent(path6.join(designDir, "DESIGN.md"))
4034
- ]);
4035
- const merged = mergeResults(tokensResult, intentResult);
4036
- return { ...merged, durationMs: Date.now() - start };
4037
- }
4038
- };
4039
- var DesignConstraintAdapter = class {
4040
- constructor(store) {
4041
- this.store = store;
4042
- }
4043
- store;
4044
- checkForHardcodedColors(source, file, strictness) {
4045
- const severity = this.mapSeverity(strictness);
4046
- const tokenNodes = this.store.findNodes({ type: "design_token" });
4047
- const colorValues = /* @__PURE__ */ new Set();
4048
- for (const node of tokenNodes) {
4049
- if (node.metadata.tokenType === "color" && typeof node.metadata.value === "string") {
4050
- colorValues.add(node.metadata.value.toLowerCase());
4051
- }
4052
- }
4053
- const hexPattern = /#[0-9a-fA-F]{3,8}\b/g;
4054
- const violations = [];
4055
- let match;
4056
- while ((match = hexPattern.exec(source)) !== null) {
4057
- const hexValue = match[0];
4058
- if (!colorValues.has(hexValue.toLowerCase())) {
4059
- violations.push({
4060
- code: "DESIGN-001",
4061
- file,
4062
- message: `Hardcoded color ${hexValue} is not in the design token set`,
4063
- severity,
4064
- value: hexValue
4065
- });
4066
- }
4067
- }
4068
- return violations;
4069
- }
4070
- checkForHardcodedFonts(source, file, strictness) {
4071
- const severity = this.mapSeverity(strictness);
4072
- const tokenNodes = this.store.findNodes({ type: "design_token" });
4073
- const fontFamilies = /* @__PURE__ */ new Set();
4074
- for (const node of tokenNodes) {
4075
- if (node.metadata.tokenType === "typography") {
4076
- const value = node.metadata.value;
4077
- if (typeof value === "object" && value !== null && "fontFamily" in value) {
4078
- fontFamilies.add(value.fontFamily.toLowerCase());
4079
- }
4080
- }
4081
- }
4082
- const fontPatterns = [/fontFamily:\s*['"]([^'"]+)['"]/g, /font-family:\s*['"]([^'"]+)['"]/g];
4083
- const violations = [];
4084
- const seen = /* @__PURE__ */ new Set();
4085
- for (const pattern of fontPatterns) {
4086
- let match;
4087
- while ((match = pattern.exec(source)) !== null) {
4088
- const fontName = match[1];
4089
- if (seen.has(fontName.toLowerCase())) continue;
4090
- seen.add(fontName.toLowerCase());
4091
- if (!fontFamilies.has(fontName.toLowerCase())) {
4092
- violations.push({
4093
- code: "DESIGN-002",
4094
- file,
4095
- message: `Hardcoded font family "${fontName}" is not in the design token set`,
4096
- severity,
4097
- value: fontName
4098
- });
4099
- }
4100
- }
4101
- }
4102
- return violations;
4103
- }
4104
- checkAll(source, file, strictness) {
4105
- return [
4106
- ...this.checkForHardcodedColors(source, file, strictness),
4107
- ...this.checkForHardcodedFonts(source, file, strictness)
4108
- ];
4109
- }
4110
- mapSeverity(strictness = "standard") {
4111
- switch (strictness) {
4112
- case "permissive":
4113
- return "info";
4114
- case "standard":
4115
- return "warn";
4116
- case "strict":
4117
- return "error";
4118
- }
4119
- }
4120
- };
4121
- var GraphFeedbackAdapter = class {
4122
- constructor(store) {
4123
- this.store = store;
4124
- }
4125
- store;
4126
- computeImpactData(changedFiles) {
4127
- const affectedTests = [];
4128
- const affectedDocs = [];
4129
- let impactScope = 0;
4130
- for (const filePath of changedFiles) {
4131
- const fileNodes = this.store.findNodes({ path: filePath });
4132
- if (fileNodes.length === 0) continue;
4133
- const fileNode = fileNodes[0];
4134
- const inboundImports = this.store.getEdges({ to: fileNode.id, type: "imports" });
4135
- for (const edge of inboundImports) {
4136
- const importerNode = this.store.getNode(edge.from);
4137
- if (importerNode?.path && /test/i.test(importerNode.path)) {
4138
- affectedTests.push({
4139
- testFile: importerNode.path,
4140
- coversFile: filePath
4141
- });
4142
- }
4143
- impactScope++;
4144
- }
4145
- const docsEdges = this.store.getEdges({ to: fileNode.id, type: "documents" });
4146
- for (const edge of docsEdges) {
4147
- const docNode = this.store.getNode(edge.from);
4148
- if (docNode) {
4149
- affectedDocs.push({
4150
- docFile: docNode.path ?? docNode.name,
4151
- documentsFile: filePath
4152
- });
4153
- }
4154
- }
4155
- }
4156
- return { affectedTests, affectedDocs, impactScope };
4157
- }
4158
- computeHarnessCheckData() {
4159
- const nodeCount = this.store.nodeCount;
4160
- const edgeCount = this.store.edgeCount;
4161
- const violatesEdges = this.store.getEdges({ type: "violates" });
4162
- const constraintViolations = violatesEdges.length;
4163
- const fileNodes = this.store.findNodes({ type: "file" });
4164
- let undocumentedFiles = 0;
4165
- for (const node of fileNodes) {
4166
- const docsEdges = this.store.getEdges({ to: node.id, type: "documents" });
4167
- if (docsEdges.length === 0) {
4168
- undocumentedFiles++;
4169
- }
4170
- }
4171
- let unreachableNodes = 0;
4172
- for (const node of fileNodes) {
4173
- const inboundImports = this.store.getEdges({ to: node.id, type: "imports" });
4174
- if (inboundImports.length === 0) {
4175
- const isEntryPoint = node.name === "index.ts" || node.path !== void 0 && node.path.endsWith("/index.ts") || node.metadata?.entryPoint === true;
4176
- if (!isEntryPoint) {
4177
- unreachableNodes++;
4178
- }
4179
- }
4180
- }
4181
- return {
4182
- graphExists: true,
4183
- nodeCount,
4184
- edgeCount,
4185
- constraintViolations,
4186
- undocumentedFiles,
4187
- unreachableNodes
4188
- };
4189
- }
4190
- };
4191
- var DEFAULT_EDGE_TYPES = ["imports", "calls", "references"];
4192
- var TaskIndependenceAnalyzer = class {
4193
- store;
4194
- constructor(store) {
4195
- this.store = store;
4196
- }
4197
- analyze(params) {
4198
- const { tasks } = params;
4199
- const depth = params.depth ?? 1;
4200
- const edgeTypes = params.edgeTypes ?? DEFAULT_EDGE_TYPES;
4201
- this.validate(tasks);
4202
- const useGraph = this.store != null && depth > 0;
4203
- const analysisLevel = useGraph ? "graph-expanded" : "file-only";
4204
- const originalFiles = /* @__PURE__ */ new Map();
4205
- const expandedFiles = /* @__PURE__ */ new Map();
4206
- for (const task of tasks) {
4207
- const origSet = new Set(task.files);
4208
- originalFiles.set(task.id, origSet);
4209
- if (useGraph) {
4210
- const expanded = this.expandViaGraph(task.files, depth, edgeTypes);
4211
- expandedFiles.set(task.id, expanded);
4212
- } else {
4213
- expandedFiles.set(task.id, /* @__PURE__ */ new Map());
4214
- }
4215
- }
4216
- const taskIds = tasks.map((t) => t.id);
4217
- const pairs = [];
4218
- for (let i = 0; i < taskIds.length; i++) {
4219
- for (let j = i + 1; j < taskIds.length; j++) {
4220
- const idA = taskIds[i];
4221
- const idB = taskIds[j];
4222
- const pair = this.computePairOverlap(
4223
- idA,
4224
- idB,
4225
- originalFiles.get(idA),
4226
- originalFiles.get(idB),
4227
- expandedFiles.get(idA),
4228
- expandedFiles.get(idB)
4229
- );
4230
- pairs.push(pair);
4231
- }
4232
- }
4233
- const groups = this.buildGroups(taskIds, pairs);
4234
- const verdict = this.generateVerdict(taskIds, groups, analysisLevel);
4235
- return {
4236
- tasks: taskIds,
4237
- analysisLevel,
4238
- depth,
4239
- pairs,
4240
- groups,
4241
- verdict
4242
- };
4243
- }
4244
- // --- Private methods ---
4245
- validate(tasks) {
4246
- if (tasks.length < 2) {
4247
- throw new Error("At least 2 tasks are required for independence analysis");
4248
- }
4249
- const seenIds = /* @__PURE__ */ new Set();
4250
- for (const task of tasks) {
4251
- if (seenIds.has(task.id)) {
4252
- throw new Error(`Duplicate task ID: "${task.id}"`);
4253
- }
4254
- seenIds.add(task.id);
4255
- if (task.files.length === 0) {
4256
- throw new Error(`Task "${task.id}" has an empty files array`);
4257
- }
4258
- }
4259
- }
4260
- expandViaGraph(files, depth, edgeTypes) {
4261
- const result = /* @__PURE__ */ new Map();
4262
- const store = this.store;
4263
- const cql = new ContextQL(store);
4264
- const fileSet = new Set(files);
4265
- for (const file of files) {
4266
- const nodeId = `file:${file}`;
4267
- const node = store.getNode(nodeId);
4268
- if (!node) continue;
4269
- const queryResult = cql.execute({
4270
- rootNodeIds: [nodeId],
4271
- maxDepth: depth,
4272
- includeEdges: edgeTypes,
4273
- includeTypes: ["file"]
4274
- });
4275
- for (const n of queryResult.nodes) {
4276
- const path7 = n.path ?? n.id.replace(/^file:/, "");
4277
- if (!fileSet.has(path7)) {
4278
- if (!result.has(path7)) {
4279
- result.set(path7, file);
4280
- }
4281
- }
4282
- }
4283
- }
4284
- return result;
4285
- }
4286
- computePairOverlap(idA, idB, origA, origB, expandedA, expandedB) {
4287
- const overlaps = [];
4288
- for (const file of origA) {
4289
- if (origB.has(file)) {
4290
- overlaps.push({ file, type: "direct" });
4291
- }
4292
- }
4293
- const directFiles = new Set(overlaps.map((o) => o.file));
4294
- const transitiveFiles = /* @__PURE__ */ new Set();
4295
- for (const [file, via] of expandedA) {
4296
- if (origB.has(file) && !directFiles.has(file) && !transitiveFiles.has(file)) {
4297
- transitiveFiles.add(file);
4298
- overlaps.push({ file, type: "transitive", via });
4299
- }
4300
- }
4301
- for (const [file, via] of expandedB) {
4302
- if (origA.has(file) && !directFiles.has(file) && !transitiveFiles.has(file)) {
4303
- transitiveFiles.add(file);
4304
- overlaps.push({ file, type: "transitive", via });
4305
- }
4306
- }
4307
- for (const [file, viaA] of expandedA) {
4308
- if (expandedB.has(file) && !directFiles.has(file) && !transitiveFiles.has(file)) {
4309
- transitiveFiles.add(file);
4310
- overlaps.push({ file, type: "transitive", via: viaA });
4311
- }
4312
- }
4313
- return {
4314
- taskA: idA,
4315
- taskB: idB,
4316
- independent: overlaps.length === 0,
4317
- overlaps
4318
- };
4319
- }
4320
- buildGroups(taskIds, pairs) {
4321
- const parent = /* @__PURE__ */ new Map();
4322
- const rank = /* @__PURE__ */ new Map();
4323
- for (const id of taskIds) {
4324
- parent.set(id, id);
4325
- rank.set(id, 0);
4326
- }
4327
- const find = (x) => {
4328
- let root = x;
4329
- while (parent.get(root) !== root) {
4330
- root = parent.get(root);
4331
- }
4332
- let current = x;
4333
- while (current !== root) {
4334
- const next = parent.get(current);
4335
- parent.set(current, root);
4336
- current = next;
4337
- }
4338
- return root;
4339
- };
4340
- const union = (a, b) => {
4341
- const rootA = find(a);
4342
- const rootB = find(b);
4343
- if (rootA === rootB) return;
4344
- const rankA = rank.get(rootA);
4345
- const rankB = rank.get(rootB);
4346
- if (rankA < rankB) {
4347
- parent.set(rootA, rootB);
4348
- } else if (rankA > rankB) {
4349
- parent.set(rootB, rootA);
4350
- } else {
4351
- parent.set(rootB, rootA);
4352
- rank.set(rootA, rankA + 1);
4353
- }
4354
- };
4355
- for (const pair of pairs) {
4356
- if (!pair.independent) {
4357
- union(pair.taskA, pair.taskB);
4358
- }
4359
- }
4360
- const groupMap = /* @__PURE__ */ new Map();
4361
- for (const id of taskIds) {
4362
- const root = find(id);
4363
- if (!groupMap.has(root)) {
4364
- groupMap.set(root, []);
4365
- }
4366
- groupMap.get(root).push(id);
4367
- }
4368
- return Array.from(groupMap.values());
4369
- }
4370
- generateVerdict(taskIds, groups, analysisLevel) {
4371
- const total = taskIds.length;
4372
- const groupCount = groups.length;
4373
- let verdict;
4374
- if (groupCount === 1) {
4375
- verdict = `All ${total} tasks conflict \u2014 must run serially.`;
4376
- } else if (groupCount === total) {
4377
- verdict = `All ${total} tasks are independent \u2014 can all run in parallel.`;
4378
- } else {
4379
- verdict = `${total} tasks form ${groupCount} independent groups \u2014 ${groupCount} parallel waves possible.`;
4380
- }
4381
- if (analysisLevel === "file-only") {
4382
- verdict += " Graph unavailable \u2014 transitive dependencies not checked.";
4383
- }
4384
- return verdict;
4385
- }
4386
- };
4387
- var ConflictPredictor = class {
4388
- store;
4389
- constructor(store) {
4390
- this.store = store;
4391
- }
4392
- predict(params) {
4393
- const analyzer = new TaskIndependenceAnalyzer(this.store);
4394
- const result = analyzer.analyze(params);
4395
- const churnMap = /* @__PURE__ */ new Map();
4396
- const couplingMap = /* @__PURE__ */ new Map();
4397
- let churnThreshold = Infinity;
4398
- let couplingThreshold = Infinity;
4399
- if (this.store != null) {
4400
- const complexityResult = new GraphComplexityAdapter(this.store).computeComplexityHotspots();
4401
- for (const hotspot of complexityResult.hotspots) {
4402
- const existing = churnMap.get(hotspot.file);
4403
- if (existing === void 0 || hotspot.changeFrequency > existing) {
4404
- churnMap.set(hotspot.file, hotspot.changeFrequency);
4405
- }
4406
- }
4407
- const couplingResult = new GraphCouplingAdapter(this.store).computeCouplingData();
4408
- for (const fileData of couplingResult.files) {
4409
- couplingMap.set(fileData.file, fileData.fanIn + fileData.fanOut);
4410
- }
4411
- churnThreshold = this.computePercentile(Array.from(churnMap.values()), 80);
4412
- couplingThreshold = this.computePercentile(Array.from(couplingMap.values()), 80);
4413
- }
4414
- const conflicts = [];
4415
- for (const pair of result.pairs) {
4416
- if (pair.independent) continue;
4417
- const { severity, reason, mitigation } = this.classifyPair(
4418
- pair.taskA,
4419
- pair.taskB,
4420
- pair.overlaps,
4421
- churnMap,
4422
- couplingMap,
4423
- churnThreshold,
4424
- couplingThreshold
4425
- );
4426
- conflicts.push({
4427
- taskA: pair.taskA,
4428
- taskB: pair.taskB,
4429
- severity,
4430
- reason,
4431
- mitigation,
4432
- overlaps: pair.overlaps
4433
- });
4434
- }
4435
- const taskIds = result.tasks;
4436
- const groups = this.buildHighSeverityGroups(taskIds, conflicts);
4437
- const regrouped = !this.groupsEqual(result.groups, groups);
4438
- let highCount = 0;
4439
- let mediumCount = 0;
4440
- let lowCount = 0;
4441
- for (const c of conflicts) {
4442
- if (c.severity === "high") highCount++;
4443
- else if (c.severity === "medium") mediumCount++;
4444
- else lowCount++;
4445
- }
4446
- const verdict = this.generateVerdict(
4447
- taskIds,
4448
- groups,
4449
- result.analysisLevel,
4450
- highCount,
4451
- mediumCount,
4452
- lowCount,
4453
- regrouped
4454
- );
4455
- return {
4456
- tasks: taskIds,
4457
- analysisLevel: result.analysisLevel,
4458
- depth: result.depth,
4459
- conflicts,
4460
- groups,
4461
- summary: {
4462
- high: highCount,
4463
- medium: mediumCount,
4464
- low: lowCount,
4465
- regrouped
4466
- },
4467
- verdict
4468
- };
4469
- }
4470
- // --- Private helpers ---
4471
- classifyPair(taskA, taskB, overlaps, churnMap, couplingMap, churnThreshold, couplingThreshold) {
4472
- let maxSeverity = "low";
4473
- let primaryReason = "";
4474
- let primaryMitigation = "";
4475
- for (const overlap of overlaps) {
4476
- let overlapSeverity;
4477
- let reason;
4478
- let mitigation;
4479
- if (overlap.type === "direct") {
4480
- overlapSeverity = "high";
4481
- reason = `Both tasks write to ${overlap.file}`;
4482
- mitigation = `Serialize: run ${taskA} before ${taskB}`;
4483
- } else {
4484
- const churn = churnMap.get(overlap.file);
4485
- const coupling = couplingMap.get(overlap.file);
4486
- const via = overlap.via ?? "unknown";
4487
- if (churn !== void 0 && churn >= churnThreshold && churnThreshold !== Infinity) {
4488
- overlapSeverity = "medium";
4489
- reason = `Transitive overlap on high-churn file ${overlap.file} (via ${via})`;
4490
- mitigation = `Review: ${overlap.file} changes frequently \u2014 coordinate edits between ${taskA} and ${taskB}`;
4491
- } else if (coupling !== void 0 && coupling >= couplingThreshold && couplingThreshold !== Infinity) {
4492
- overlapSeverity = "medium";
4493
- reason = `Transitive overlap on highly-coupled file ${overlap.file} (via ${via})`;
4494
- mitigation = `Review: ${overlap.file} has high coupling \u2014 coordinate edits between ${taskA} and ${taskB}`;
4495
- } else {
4496
- overlapSeverity = "low";
4497
- reason = `Transitive overlap on ${overlap.file} (via ${via}) \u2014 low risk`;
4498
- mitigation = `Info: transitive overlap unlikely to cause conflicts`;
4499
- }
4500
- }
4501
- if (this.severityRank(overlapSeverity) > this.severityRank(maxSeverity)) {
4502
- maxSeverity = overlapSeverity;
4503
- primaryReason = reason;
4504
- primaryMitigation = mitigation;
4505
- } else if (primaryReason === "") {
4506
- primaryReason = reason;
4507
- primaryMitigation = mitigation;
4508
- }
4509
- }
4510
- return { severity: maxSeverity, reason: primaryReason, mitigation: primaryMitigation };
4511
- }
4512
- severityRank(severity) {
4513
- switch (severity) {
4514
- case "high":
4515
- return 3;
4516
- case "medium":
4517
- return 2;
4518
- case "low":
4519
- return 1;
4520
- }
4521
- }
4522
- computePercentile(values, percentile) {
4523
- if (values.length === 0) return Infinity;
4524
- const sorted = [...values].sort((a, b) => a - b);
4525
- const index = Math.ceil(percentile / 100 * sorted.length) - 1;
4526
- return sorted[Math.min(index, sorted.length - 1)];
4527
- }
4528
- buildHighSeverityGroups(taskIds, conflicts) {
4529
- const parent = /* @__PURE__ */ new Map();
4530
- const rank = /* @__PURE__ */ new Map();
4531
- for (const id of taskIds) {
4532
- parent.set(id, id);
4533
- rank.set(id, 0);
4534
- }
4535
- const find = (x) => {
4536
- let root = x;
4537
- while (parent.get(root) !== root) {
4538
- root = parent.get(root);
4539
- }
4540
- let current = x;
4541
- while (current !== root) {
4542
- const next = parent.get(current);
4543
- parent.set(current, root);
4544
- current = next;
4545
- }
4546
- return root;
4547
- };
4548
- const union = (a, b) => {
4549
- const rootA = find(a);
4550
- const rootB = find(b);
4551
- if (rootA === rootB) return;
4552
- const rankA = rank.get(rootA);
4553
- const rankB = rank.get(rootB);
4554
- if (rankA < rankB) {
4555
- parent.set(rootA, rootB);
4556
- } else if (rankA > rankB) {
4557
- parent.set(rootB, rootA);
4558
- } else {
4559
- parent.set(rootB, rootA);
4560
- rank.set(rootA, rankA + 1);
4561
- }
4562
- };
4563
- for (const conflict of conflicts) {
4564
- if (conflict.severity === "high") {
4565
- union(conflict.taskA, conflict.taskB);
4566
- }
4567
- }
4568
- const groupMap = /* @__PURE__ */ new Map();
4569
- for (const id of taskIds) {
4570
- const root = find(id);
4571
- let group = groupMap.get(root);
4572
- if (group === void 0) {
4573
- group = [];
4574
- groupMap.set(root, group);
4575
- }
4576
- group.push(id);
4577
- }
4578
- return Array.from(groupMap.values());
4579
- }
4580
- groupsEqual(a, b) {
4581
- if (a.length !== b.length) return false;
4582
- const normalize2 = (groups) => groups.map((g) => [...g].sort()).sort((x, y) => {
4583
- const xFirst = x[0];
4584
- const yFirst = y[0];
4585
- return xFirst.localeCompare(yFirst);
4586
- });
4587
- const normA = normalize2(a);
4588
- const normB = normalize2(b);
4589
- for (let i = 0; i < normA.length; i++) {
4590
- const groupA = normA[i];
4591
- const groupB = normB[i];
4592
- if (groupA.length !== groupB.length) return false;
4593
- for (let j = 0; j < groupA.length; j++) {
4594
- if (groupA[j] !== groupB[j]) return false;
4595
- }
4596
- }
4597
- return true;
4598
- }
4599
- generateVerdict(taskIds, groups, analysisLevel, highCount, mediumCount, lowCount, regrouped) {
4600
- const total = taskIds.length;
4601
- const groupCount = groups.length;
4602
- const parts = [];
4603
- const conflictParts = [];
4604
- if (highCount > 0) conflictParts.push(`${highCount} high`);
4605
- if (mediumCount > 0) conflictParts.push(`${mediumCount} medium`);
4606
- if (lowCount > 0) conflictParts.push(`${lowCount} low`);
4607
- if (conflictParts.length === 0) {
4608
- parts.push(`${total} tasks have no conflicts \u2014 can all run in parallel.`);
4609
- } else {
4610
- parts.push(`${total} tasks have ${conflictParts.join(", ")} severity conflicts.`);
4611
- }
4612
- if (groupCount === 1) {
4613
- parts.push(`All tasks must run serially.`);
4614
- } else if (groupCount === total) {
4615
- parts.push(`${groupCount} parallel groups (all independent).`);
4616
- } else {
4617
- parts.push(`${groupCount} parallel groups possible.`);
4618
- }
4619
- if (regrouped) {
4620
- parts.push(`Tasks were regrouped due to high-severity conflicts.`);
4621
- }
4622
- if (analysisLevel === "file-only") {
4623
- parts.push(`Graph unavailable \u2014 severity based on file overlaps only.`);
4624
- }
4625
- return parts.join(" ");
4626
- }
4627
- };
4628
- var VERSION = "0.2.0";
4629
-
4630
- export {
4631
- NODE_TYPES,
4632
- EDGE_TYPES,
4633
- OBSERVABILITY_TYPES,
4634
- CURRENT_SCHEMA_VERSION,
4635
- GraphNodeSchema,
4636
- GraphEdgeSchema,
4637
- saveGraph,
4638
- loadGraph,
4639
- GraphStore,
4640
- VectorStore,
4641
- ContextQL,
4642
- project,
4643
- groupNodesByImpact,
4644
- CodeIngestor,
4645
- GitIngestor,
4646
- TopologicalLinker,
4647
- KnowledgeIngestor,
4648
- RequirementIngestor,
4649
- linkToCode,
4650
- SyncManager,
4651
- JiraConnector,
4652
- SlackConnector,
4653
- ConfluenceConnector,
4654
- CIConnector,
4655
- FusionLayer,
4656
- GraphEntropyAdapter,
4657
- GraphComplexityAdapter,
4658
- GraphCouplingAdapter,
4659
- GraphAnomalyAdapter,
4660
- INTENTS,
4661
- IntentClassifier,
4662
- EntityExtractor,
4663
- EntityResolver,
4664
- ResponseFormatter,
4665
- askGraph,
4666
- Assembler,
4667
- queryTraceability,
4668
- GraphConstraintAdapter,
4669
- DesignIngestor,
4670
- DesignConstraintAdapter,
4671
- GraphFeedbackAdapter,
4672
- TaskIndependenceAnalyzer,
4673
- ConflictPredictor,
4674
- VERSION
4675
- };