@ruaruababa/vibe-kit 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (462) hide show
  1. package/CATALOG.md +317 -0
  2. package/README.md +121 -0
  3. package/aliases.json +65 -0
  4. package/bin/vibe.js +2 -0
  5. package/bundles.json +265 -0
  6. package/catalog.json +1560 -0
  7. package/dist/antigravity-skills/bin/cli.js +438 -0
  8. package/dist/antigravity-skills/lib/skill-utils.js +158 -0
  9. package/dist/antigravity-skills/scripts/build-catalog.js +305 -0
  10. package/dist/antigravity-skills/scripts/normalize-frontmatter.js +144 -0
  11. package/dist/antigravity-skills/scripts/validate-skills.js +230 -0
  12. package/dist/bin/vibe.js +2 -0
  13. package/dist/dist/src/cli/index.js +26 -0
  14. package/dist/lib/skill-utils.js +158 -0
  15. package/dist/scripts/build-catalog.js +50 -0
  16. package/dist/scripts/normalize-frontmatter.js +144 -0
  17. package/dist/scripts/validate-skills.js +56 -0
  18. package/dist/src/cli/index.js +146 -0
  19. package/dist/src/types/index.js +13 -0
  20. package/dist/src/utils/fs.js +1 -0
  21. package/package.json +43 -0
  22. package/skills/accessibility-compliance-accessibility-audit/SKILL.md +42 -0
  23. package/skills/accessibility-compliance-accessibility-audit/resources/implementation-playbook.md +502 -0
  24. package/skills/agent-orchestration-improve-agent/SKILL.md +349 -0
  25. package/skills/agent-orchestration-multi-agent-optimize/SKILL.md +239 -0
  26. package/skills/agent-orchestrator/SKILL.md +24 -0
  27. package/skills/ai-engineer/SKILL.md +171 -0
  28. package/skills/airflow-dag-patterns/SKILL.md +41 -0
  29. package/skills/airflow-dag-patterns/resources/implementation-playbook.md +509 -0
  30. package/skills/angular-migration/SKILL.md +428 -0
  31. package/skills/anti-reversing-techniques/SKILL.md +42 -0
  32. package/skills/anti-reversing-techniques/resources/implementation-playbook.md +539 -0
  33. package/skills/api-design-principles/SKILL.md +37 -0
  34. package/skills/api-design-principles/assets/api-design-checklist.md +155 -0
  35. package/skills/api-design-principles/assets/rest-api-template.py +182 -0
  36. package/skills/api-design-principles/references/graphql-schema-design.md +583 -0
  37. package/skills/api-design-principles/references/rest-best-practices.md +408 -0
  38. package/skills/api-design-principles/resources/implementation-playbook.md +513 -0
  39. package/skills/api-documenter/SKILL.md +184 -0
  40. package/skills/api-testing-observability-api-mock/SKILL.md +46 -0
  41. package/skills/api-testing-observability-api-mock/resources/implementation-playbook.md +1327 -0
  42. package/skills/application-performance-performance-optimization/SKILL.md +154 -0
  43. package/skills/architect-review/SKILL.md +174 -0
  44. package/skills/architecture-decision-records/SKILL.md +441 -0
  45. package/skills/architecture-patterns/SKILL.md +37 -0
  46. package/skills/architecture-patterns/resources/implementation-playbook.md +479 -0
  47. package/skills/arm-cortex-expert/SKILL.md +306 -0
  48. package/skills/async-python-patterns/SKILL.md +39 -0
  49. package/skills/async-python-patterns/resources/implementation-playbook.md +678 -0
  50. package/skills/attack-tree-construction/SKILL.md +38 -0
  51. package/skills/attack-tree-construction/resources/implementation-playbook.md +671 -0
  52. package/skills/auth-implementation-patterns/SKILL.md +39 -0
  53. package/skills/auth-implementation-patterns/resources/implementation-playbook.md +618 -0
  54. package/skills/backend-architect/SKILL.md +333 -0
  55. package/skills/backend-development-feature-development/SKILL.md +180 -0
  56. package/skills/backend-security-coder/SKILL.md +156 -0
  57. package/skills/backtesting-frameworks/SKILL.md +39 -0
  58. package/skills/backtesting-frameworks/resources/implementation-playbook.md +647 -0
  59. package/skills/bash-defensive-patterns/SKILL.md +43 -0
  60. package/skills/bash-defensive-patterns/resources/implementation-playbook.md +517 -0
  61. package/skills/bash-pro/SKILL.md +310 -0
  62. package/skills/bats-testing-patterns/SKILL.md +34 -0
  63. package/skills/bats-testing-patterns/resources/implementation-playbook.md +614 -0
  64. package/skills/bazel-build-optimization/SKILL.md +397 -0
  65. package/skills/billing-automation/SKILL.md +42 -0
  66. package/skills/billing-automation/resources/implementation-playbook.md +544 -0
  67. package/skills/binary-analysis-patterns/SKILL.md +450 -0
  68. package/skills/blockchain-developer/SKILL.md +208 -0
  69. package/skills/business-analyst/SKILL.md +182 -0
  70. package/skills/c-pro/SKILL.md +56 -0
  71. package/skills/c4-architecture-c4-architecture/SKILL.md +389 -0
  72. package/skills/c4-code/SKILL.md +244 -0
  73. package/skills/c4-component/SKILL.md +153 -0
  74. package/skills/c4-container/SKILL.md +171 -0
  75. package/skills/c4-context/SKILL.md +150 -0
  76. package/skills/changelog-automation/SKILL.md +38 -0
  77. package/skills/changelog-automation/resources/implementation-playbook.md +538 -0
  78. package/skills/cicd-automation-workflow-automate/SKILL.md +51 -0
  79. package/skills/cicd-automation-workflow-automate/resources/implementation-playbook.md +1333 -0
  80. package/skills/clean-markdown/SKILL.md +23 -0
  81. package/skills/cloud-architect/SKILL.md +135 -0
  82. package/skills/code-documentation-code-explain/SKILL.md +46 -0
  83. package/skills/code-documentation-code-explain/resources/implementation-playbook.md +802 -0
  84. package/skills/code-documentation-doc-generate/SKILL.md +48 -0
  85. package/skills/code-documentation-doc-generate/resources/implementation-playbook.md +640 -0
  86. package/skills/code-refactoring-context-restore/SKILL.md +179 -0
  87. package/skills/code-refactoring-refactor-clean/SKILL.md +51 -0
  88. package/skills/code-refactoring-refactor-clean/resources/implementation-playbook.md +879 -0
  89. package/skills/code-refactoring-tech-debt/SKILL.md +386 -0
  90. package/skills/code-review-ai-ai-review/SKILL.md +450 -0
  91. package/skills/code-review-excellence/SKILL.md +40 -0
  92. package/skills/code-review-excellence/resources/implementation-playbook.md +515 -0
  93. package/skills/code-reviewer/SKILL.md +178 -0
  94. package/skills/codebase-cleanup-deps-audit/SKILL.md +51 -0
  95. package/skills/codebase-cleanup-deps-audit/resources/implementation-playbook.md +766 -0
  96. package/skills/codebase-cleanup-refactor-clean/SKILL.md +51 -0
  97. package/skills/codebase-cleanup-refactor-clean/resources/implementation-playbook.md +879 -0
  98. package/skills/codebase-cleanup-tech-debt/SKILL.md +386 -0
  99. package/skills/competitive-landscape/SKILL.md +34 -0
  100. package/skills/competitive-landscape/resources/implementation-playbook.md +494 -0
  101. package/skills/comprehensive-review-full-review/SKILL.md +146 -0
  102. package/skills/comprehensive-review-pr-enhance/SKILL.md +46 -0
  103. package/skills/comprehensive-review-pr-enhance/resources/implementation-playbook.md +691 -0
  104. package/skills/conductor-implement/SKILL.md +388 -0
  105. package/skills/conductor-manage/SKILL.md +39 -0
  106. package/skills/conductor-manage/resources/implementation-playbook.md +1120 -0
  107. package/skills/conductor-new-track/SKILL.md +433 -0
  108. package/skills/conductor-revert/SKILL.md +372 -0
  109. package/skills/conductor-setup/SKILL.md +426 -0
  110. package/skills/conductor-status/SKILL.md +338 -0
  111. package/skills/conductor-validator/SKILL.md +62 -0
  112. package/skills/content-marketer/SKILL.md +170 -0
  113. package/skills/context-driven-development/SKILL.md +400 -0
  114. package/skills/context-management-context-restore/SKILL.md +179 -0
  115. package/skills/context-management-context-save/SKILL.md +177 -0
  116. package/skills/context-manager/SKILL.md +185 -0
  117. package/skills/cost-optimization/SKILL.md +286 -0
  118. package/skills/cpp-pro/SKILL.md +59 -0
  119. package/skills/cqrs-implementation/SKILL.md +35 -0
  120. package/skills/cqrs-implementation/resources/implementation-playbook.md +540 -0
  121. package/skills/csharp-pro/SKILL.md +59 -0
  122. package/skills/customer-support/SKILL.md +170 -0
  123. package/skills/data-engineer/SKILL.md +224 -0
  124. package/skills/data-engineering-data-driven-feature/SKILL.md +182 -0
  125. package/skills/data-engineering-data-pipeline/SKILL.md +201 -0
  126. package/skills/data-quality-frameworks/SKILL.md +40 -0
  127. package/skills/data-quality-frameworks/resources/implementation-playbook.md +573 -0
  128. package/skills/data-scientist/SKILL.md +199 -0
  129. package/skills/data-storytelling/SKILL.md +465 -0
  130. package/skills/database-admin/SKILL.md +165 -0
  131. package/skills/database-architect/SKILL.md +268 -0
  132. package/skills/database-cloud-optimization-cost-optimize/SKILL.md +44 -0
  133. package/skills/database-cloud-optimization-cost-optimize/resources/implementation-playbook.md +1441 -0
  134. package/skills/database-migration/SKILL.md +436 -0
  135. package/skills/database-migrations-migration-observability/SKILL.md +420 -0
  136. package/skills/database-migrations-sql-migrations/SKILL.md +53 -0
  137. package/skills/database-migrations-sql-migrations/resources/implementation-playbook.md +499 -0
  138. package/skills/database-optimizer/SKILL.md +167 -0
  139. package/skills/dbt-transformation-patterns/SKILL.md +34 -0
  140. package/skills/dbt-transformation-patterns/resources/implementation-playbook.md +547 -0
  141. package/skills/debugger/SKILL.md +49 -0
  142. package/skills/debugging-strategies/SKILL.md +34 -0
  143. package/skills/debugging-strategies/resources/implementation-playbook.md +511 -0
  144. package/skills/debugging-toolkit-smart-debug/SKILL.md +197 -0
  145. package/skills/defi-protocol-templates/SKILL.md +466 -0
  146. package/skills/dependency-management-deps-audit/SKILL.md +44 -0
  147. package/skills/dependency-management-deps-audit/resources/implementation-playbook.md +766 -0
  148. package/skills/dependency-upgrade/SKILL.md +421 -0
  149. package/skills/deployment-engineer/SKILL.md +170 -0
  150. package/skills/deployment-pipeline-design/SKILL.md +371 -0
  151. package/skills/deployment-validation-config-validate/SKILL.md +496 -0
  152. package/skills/devops-troubleshooter/SKILL.md +161 -0
  153. package/skills/distributed-debugging-debug-trace/SKILL.md +44 -0
  154. package/skills/distributed-debugging-debug-trace/resources/implementation-playbook.md +1307 -0
  155. package/skills/distributed-tracing/SKILL.md +450 -0
  156. package/skills/django-pro/SKILL.md +180 -0
  157. package/skills/docs-architect/SKILL.md +98 -0
  158. package/skills/documentation-generation-doc-generate/SKILL.md +48 -0
  159. package/skills/documentation-generation-doc-generate/resources/implementation-playbook.md +640 -0
  160. package/skills/dotnet-architect/SKILL.md +197 -0
  161. package/skills/dotnet-backend-patterns/SKILL.md +37 -0
  162. package/skills/dotnet-backend-patterns/assets/repository-template.cs +523 -0
  163. package/skills/dotnet-backend-patterns/assets/service-template.cs +336 -0
  164. package/skills/dotnet-backend-patterns/references/dapper-patterns.md +544 -0
  165. package/skills/dotnet-backend-patterns/references/ef-core-best-practices.md +355 -0
  166. package/skills/dotnet-backend-patterns/resources/implementation-playbook.md +799 -0
  167. package/skills/dummy-skill/SKILL.md +5 -0
  168. package/skills/dx-optimizer/SKILL.md +83 -0
  169. package/skills/e2e-testing-patterns/SKILL.md +41 -0
  170. package/skills/e2e-testing-patterns/resources/implementation-playbook.md +531 -0
  171. package/skills/elixir-pro/SKILL.md +59 -0
  172. package/skills/embedding-strategies/SKILL.md +491 -0
  173. package/skills/employment-contract-templates/SKILL.md +39 -0
  174. package/skills/employment-contract-templates/resources/implementation-playbook.md +493 -0
  175. package/skills/error-debugging-error-analysis/SKILL.md +47 -0
  176. package/skills/error-debugging-error-analysis/resources/implementation-playbook.md +1143 -0
  177. package/skills/error-debugging-error-trace/SKILL.md +43 -0
  178. package/skills/error-debugging-error-trace/resources/implementation-playbook.md +1361 -0
  179. package/skills/error-debugging-multi-agent-review/SKILL.md +216 -0
  180. package/skills/error-detective/SKILL.md +53 -0
  181. package/skills/error-diagnostics-error-analysis/SKILL.md +47 -0
  182. package/skills/error-diagnostics-error-analysis/resources/implementation-playbook.md +1143 -0
  183. package/skills/error-diagnostics-error-trace/SKILL.md +48 -0
  184. package/skills/error-diagnostics-error-trace/resources/implementation-playbook.md +1371 -0
  185. package/skills/error-diagnostics-smart-debug/SKILL.md +197 -0
  186. package/skills/error-handling-patterns/SKILL.md +35 -0
  187. package/skills/error-handling-patterns/resources/implementation-playbook.md +635 -0
  188. package/skills/event-sourcing-architect/SKILL.md +58 -0
  189. package/skills/event-store-design/SKILL.md +449 -0
  190. package/skills/fastapi-pro/SKILL.md +192 -0
  191. package/skills/fastapi-templates/SKILL.md +32 -0
  192. package/skills/fastapi-templates/resources/implementation-playbook.md +566 -0
  193. package/skills/final-test/SKILL.md +5 -0
  194. package/skills/firmware-analyst/SKILL.md +320 -0
  195. package/skills/flutter-expert/SKILL.md +200 -0
  196. package/skills/framework-migration-code-migrate/SKILL.md +48 -0
  197. package/skills/framework-migration-code-migrate/resources/implementation-playbook.md +1052 -0
  198. package/skills/framework-migration-deps-upgrade/SKILL.md +48 -0
  199. package/skills/framework-migration-deps-upgrade/resources/implementation-playbook.md +755 -0
  200. package/skills/framework-migration-legacy-modernize/SKILL.md +132 -0
  201. package/skills/frontend-developer/SKILL.md +171 -0
  202. package/skills/frontend-mobile-development-component-scaffold/SKILL.md +403 -0
  203. package/skills/frontend-mobile-security-xss-scan/SKILL.md +322 -0
  204. package/skills/frontend-security-coder/SKILL.md +170 -0
  205. package/skills/full-stack-orchestration-full-stack-feature/SKILL.md +135 -0
  206. package/skills/gdpr-data-handling/SKILL.md +33 -0
  207. package/skills/gdpr-data-handling/resources/implementation-playbook.md +615 -0
  208. package/skills/git-advanced-workflows/SKILL.md +412 -0
  209. package/skills/git-pr-workflows-git-workflow/SKILL.md +140 -0
  210. package/skills/git-pr-workflows-onboard/SKILL.md +416 -0
  211. package/skills/git-pr-workflows-pr-enhance/SKILL.md +48 -0
  212. package/skills/git-pr-workflows-pr-enhance/resources/implementation-playbook.md +701 -0
  213. package/skills/github-actions-templates/SKILL.md +345 -0
  214. package/skills/gitlab-ci-patterns/SKILL.md +283 -0
  215. package/skills/gitops-workflow/SKILL.md +303 -0
  216. package/skills/gitops-workflow/references/argocd-setup.md +134 -0
  217. package/skills/gitops-workflow/references/sync-policies.md +131 -0
  218. package/skills/go-concurrency-patterns/SKILL.md +33 -0
  219. package/skills/go-concurrency-patterns/resources/implementation-playbook.md +654 -0
  220. package/skills/godot-gdscript-patterns/SKILL.md +33 -0
  221. package/skills/godot-gdscript-patterns/resources/implementation-playbook.md +804 -0
  222. package/skills/golang-pro/SKILL.md +179 -0
  223. package/skills/grafana-dashboards/SKILL.md +381 -0
  224. package/skills/graphql-architect/SKILL.md +182 -0
  225. package/skills/haskell-pro/SKILL.md +56 -0
  226. package/skills/helm-chart-scaffolding/SKILL.md +34 -0
  227. package/skills/helm-chart-scaffolding/assets/Chart.yaml.template +42 -0
  228. package/skills/helm-chart-scaffolding/assets/values.yaml.template +185 -0
  229. package/skills/helm-chart-scaffolding/references/chart-structure.md +500 -0
  230. package/skills/helm-chart-scaffolding/resources/implementation-playbook.md +543 -0
  231. package/skills/helm-chart-scaffolding/scripts/validate-chart.sh +244 -0
  232. package/skills/hr-pro/SKILL.md +126 -0
  233. package/skills/hybrid-cloud-architect/SKILL.md +168 -0
  234. package/skills/hybrid-cloud-networking/SKILL.md +238 -0
  235. package/skills/hybrid-search-implementation/SKILL.md +32 -0
  236. package/skills/hybrid-search-implementation/resources/implementation-playbook.md +567 -0
  237. package/skills/incident-responder/SKILL.md +213 -0
  238. package/skills/incident-response-incident-response/SKILL.md +168 -0
  239. package/skills/incident-response-smart-fix/SKILL.md +29 -0
  240. package/skills/incident-response-smart-fix/resources/implementation-playbook.md +838 -0
  241. package/skills/incident-runbook-templates/SKILL.md +395 -0
  242. package/skills/ios-developer/SKILL.md +219 -0
  243. package/skills/istio-traffic-management/SKILL.md +337 -0
  244. package/skills/java-pro/SKILL.md +177 -0
  245. package/skills/javascript-pro/SKILL.md +57 -0
  246. package/skills/javascript-testing-patterns/SKILL.md +35 -0
  247. package/skills/javascript-testing-patterns/resources/implementation-playbook.md +1024 -0
  248. package/skills/javascript-typescript-typescript-scaffold/SKILL.md +361 -0
  249. package/skills/julia-pro/SKILL.md +209 -0
  250. package/skills/k8s-manifest-generator/SKILL.md +35 -0
  251. package/skills/k8s-manifest-generator/assets/configmap-template.yaml +296 -0
  252. package/skills/k8s-manifest-generator/assets/deployment-template.yaml +203 -0
  253. package/skills/k8s-manifest-generator/assets/service-template.yaml +171 -0
  254. package/skills/k8s-manifest-generator/references/deployment-spec.md +753 -0
  255. package/skills/k8s-manifest-generator/references/service-spec.md +724 -0
  256. package/skills/k8s-manifest-generator/resources/implementation-playbook.md +510 -0
  257. package/skills/k8s-security-policies/SKILL.md +346 -0
  258. package/skills/k8s-security-policies/assets/network-policy-template.yaml +177 -0
  259. package/skills/k8s-security-policies/references/rbac-patterns.md +187 -0
  260. package/skills/kpi-dashboard-design/SKILL.md +440 -0
  261. package/skills/kubernetes-architect/SKILL.md +170 -0
  262. package/skills/langchain-architecture/SKILL.md +350 -0
  263. package/skills/legacy-modernizer/SKILL.md +53 -0
  264. package/skills/legal-advisor/SKILL.md +70 -0
  265. package/skills/linkerd-patterns/SKILL.md +321 -0
  266. package/skills/llm-application-dev-ai-assistant/SKILL.md +35 -0
  267. package/skills/llm-application-dev-ai-assistant/resources/implementation-playbook.md +1236 -0
  268. package/skills/llm-application-dev-langchain-agent/SKILL.md +246 -0
  269. package/skills/llm-application-dev-prompt-optimize/SKILL.md +37 -0
  270. package/skills/llm-application-dev-prompt-optimize/resources/implementation-playbook.md +591 -0
  271. package/skills/llm-evaluation/SKILL.md +483 -0
  272. package/skills/machine-learning-ops-ml-pipeline/SKILL.md +314 -0
  273. package/skills/malware-analyst/SKILL.md +247 -0
  274. package/skills/market-sizing-analysis/SKILL.md +425 -0
  275. package/skills/market-sizing-analysis/examples/saas-market-sizing.md +349 -0
  276. package/skills/market-sizing-analysis/references/data-sources.md +360 -0
  277. package/skills/memory-forensics/SKILL.md +491 -0
  278. package/skills/memory-safety-patterns/SKILL.md +33 -0
  279. package/skills/memory-safety-patterns/resources/implementation-playbook.md +603 -0
  280. package/skills/mermaid-expert/SKILL.md +59 -0
  281. package/skills/microservices-patterns/SKILL.md +35 -0
  282. package/skills/microservices-patterns/resources/implementation-playbook.md +607 -0
  283. package/skills/minecraft-bukkit-pro/SKILL.md +126 -0
  284. package/skills/ml-engineer/SKILL.md +168 -0
  285. package/skills/ml-pipeline-workflow/SKILL.md +257 -0
  286. package/skills/mlops-engineer/SKILL.md +219 -0
  287. package/skills/mobile-developer/SKILL.md +205 -0
  288. package/skills/mobile-security-coder/SKILL.md +184 -0
  289. package/skills/modern-javascript-patterns/SKILL.md +35 -0
  290. package/skills/modern-javascript-patterns/resources/implementation-playbook.md +910 -0
  291. package/skills/monorepo-architect/SKILL.md +61 -0
  292. package/skills/monorepo-management/SKILL.md +35 -0
  293. package/skills/monorepo-management/resources/implementation-playbook.md +621 -0
  294. package/skills/mtls-configuration/SKILL.md +359 -0
  295. package/skills/multi-cloud-architecture/SKILL.md +189 -0
  296. package/skills/multi-platform-apps-multi-platform/SKILL.md +203 -0
  297. package/skills/network-engineer/SKILL.md +169 -0
  298. package/skills/nextjs-app-router-patterns/SKILL.md +33 -0
  299. package/skills/nextjs-app-router-patterns/resources/implementation-playbook.md +543 -0
  300. package/skills/nft-standards/SKILL.md +395 -0
  301. package/skills/node-expert/SKILL.md +23 -0
  302. package/skills/nodejs-backend-patterns/SKILL.md +35 -0
  303. package/skills/nodejs-backend-patterns/resources/implementation-playbook.md +1019 -0
  304. package/skills/nx-workspace-patterns/SKILL.md +464 -0
  305. package/skills/observability-engineer/SKILL.md +237 -0
  306. package/skills/observability-monitoring-monitor-setup/SKILL.md +48 -0
  307. package/skills/observability-monitoring-monitor-setup/resources/implementation-playbook.md +505 -0
  308. package/skills/observability-monitoring-slo-implement/SKILL.md +43 -0
  309. package/skills/observability-monitoring-slo-implement/resources/implementation-playbook.md +1077 -0
  310. package/skills/on-call-handoff-patterns/SKILL.md +453 -0
  311. package/skills/openapi-spec-generation/SKILL.md +33 -0
  312. package/skills/openapi-spec-generation/resources/implementation-playbook.md +1027 -0
  313. package/skills/payment-integration/SKILL.md +77 -0
  314. package/skills/paypal-integration/SKILL.md +479 -0
  315. package/skills/pci-compliance/SKILL.md +478 -0
  316. package/skills/performance-engineer/SKILL.md +180 -0
  317. package/skills/performance-testing-review-ai-review/SKILL.md +450 -0
  318. package/skills/performance-testing-review-multi-agent-review/SKILL.md +216 -0
  319. package/skills/php-pro/SKILL.md +63 -0
  320. package/skills/posix-shell-pro/SKILL.md +304 -0
  321. package/skills/postgresql/SKILL.md +230 -0
  322. package/skills/postmortem-writing/SKILL.md +386 -0
  323. package/skills/projection-patterns/SKILL.md +33 -0
  324. package/skills/projection-patterns/resources/implementation-playbook.md +501 -0
  325. package/skills/prometheus-configuration/SKILL.md +404 -0
  326. package/skills/prompt-engineer/SKILL.md +272 -0
  327. package/skills/prompt-engineering-patterns/SKILL.md +213 -0
  328. package/skills/prompt-engineering-patterns/assets/few-shot-examples.json +106 -0
  329. package/skills/prompt-engineering-patterns/assets/prompt-template-library.md +246 -0
  330. package/skills/prompt-engineering-patterns/references/chain-of-thought.md +399 -0
  331. package/skills/prompt-engineering-patterns/references/few-shot-learning.md +369 -0
  332. package/skills/prompt-engineering-patterns/references/prompt-optimization.md +414 -0
  333. package/skills/prompt-engineering-patterns/references/prompt-templates.md +470 -0
  334. package/skills/prompt-engineering-patterns/references/system-prompts.md +189 -0
  335. package/skills/prompt-engineering-patterns/scripts/optimize-prompt.py +279 -0
  336. package/skills/protocol-reverse-engineering/SKILL.md +29 -0
  337. package/skills/protocol-reverse-engineering/resources/implementation-playbook.md +509 -0
  338. package/skills/python-development-python-scaffold/SKILL.md +331 -0
  339. package/skills/python-packaging/SKILL.md +36 -0
  340. package/skills/python-packaging/resources/implementation-playbook.md +869 -0
  341. package/skills/python-performance-optimization/SKILL.md +36 -0
  342. package/skills/python-performance-optimization/resources/implementation-playbook.md +868 -0
  343. package/skills/python-pro/SKILL.md +158 -0
  344. package/skills/python-testing-patterns/SKILL.md +37 -0
  345. package/skills/python-testing-patterns/resources/implementation-playbook.md +906 -0
  346. package/skills/quant-analyst/SKILL.md +53 -0
  347. package/skills/rag-implementation/SKILL.md +421 -0
  348. package/skills/react-modernization/SKILL.md +34 -0
  349. package/skills/react-modernization/resources/implementation-playbook.md +512 -0
  350. package/skills/react-native-architecture/SKILL.md +33 -0
  351. package/skills/react-native-architecture/resources/implementation-playbook.md +670 -0
  352. package/skills/react-state-management/SKILL.md +441 -0
  353. package/skills/reference-builder/SKILL.md +188 -0
  354. package/skills/reverse-engineer/SKILL.md +173 -0
  355. package/skills/risk-manager/SKILL.md +61 -0
  356. package/skills/risk-metrics-calculation/SKILL.md +33 -0
  357. package/skills/risk-metrics-calculation/resources/implementation-playbook.md +554 -0
  358. package/skills/ruby-pro/SKILL.md +56 -0
  359. package/skills/rust-async-patterns/SKILL.md +33 -0
  360. package/skills/rust-async-patterns/resources/implementation-playbook.md +516 -0
  361. package/skills/rust-pro/SKILL.md +178 -0
  362. package/skills/saga-orchestration/SKILL.md +496 -0
  363. package/skills/sales-automator/SKILL.md +55 -0
  364. package/skills/sast-configuration/SKILL.md +212 -0
  365. package/skills/scala-pro/SKILL.md +82 -0
  366. package/skills/screen-reader-testing/SKILL.md +33 -0
  367. package/skills/screen-reader-testing/resources/implementation-playbook.md +544 -0
  368. package/skills/search-specialist/SKILL.md +80 -0
  369. package/skills/secrets-management/SKILL.md +364 -0
  370. package/skills/security-auditor/SKILL.md +169 -0
  371. package/skills/security-compliance-compliance-check/SKILL.md +55 -0
  372. package/skills/security-compliance-compliance-check/resources/implementation-playbook.md +963 -0
  373. package/skills/security-requirement-extraction/SKILL.md +33 -0
  374. package/skills/security-requirement-extraction/resources/implementation-playbook.md +676 -0
  375. package/skills/security-scanning-security-dependencies/SKILL.md +43 -0
  376. package/skills/security-scanning-security-dependencies/resources/implementation-playbook.md +544 -0
  377. package/skills/security-scanning-security-hardening/SKILL.md +147 -0
  378. package/skills/security-scanning-security-sast/SKILL.md +495 -0
  379. package/skills/seo-authority-builder/SKILL.md +136 -0
  380. package/skills/seo-cannibalization-detector/SKILL.md +123 -0
  381. package/skills/seo-content-auditor/SKILL.md +83 -0
  382. package/skills/seo-content-planner/SKILL.md +108 -0
  383. package/skills/seo-content-refresher/SKILL.md +118 -0
  384. package/skills/seo-content-writer/SKILL.md +96 -0
  385. package/skills/seo-keyword-strategist/SKILL.md +95 -0
  386. package/skills/seo-meta-optimizer/SKILL.md +92 -0
  387. package/skills/seo-snippet-hunter/SKILL.md +114 -0
  388. package/skills/seo-structure-architect/SKILL.md +108 -0
  389. package/skills/service-mesh-expert/SKILL.md +58 -0
  390. package/skills/service-mesh-observability/SKILL.md +395 -0
  391. package/skills/shellcheck-configuration/SKILL.md +466 -0
  392. package/skills/similarity-search-patterns/SKILL.md +33 -0
  393. package/skills/similarity-search-patterns/resources/implementation-playbook.md +557 -0
  394. package/skills/slo-implementation/SKILL.md +341 -0
  395. package/skills/solidity-security/SKILL.md +34 -0
  396. package/skills/solidity-security/resources/implementation-playbook.md +524 -0
  397. package/skills/spark-optimization/SKILL.md +427 -0
  398. package/skills/sql-optimization-patterns/SKILL.md +35 -0
  399. package/skills/sql-optimization-patterns/resources/implementation-playbook.md +504 -0
  400. package/skills/sql-pro/SKILL.md +173 -0
  401. package/skills/startup-analyst/SKILL.md +328 -0
  402. package/skills/startup-business-analyst-business-case/SKILL.md +487 -0
  403. package/skills/startup-business-analyst-financial-projections/SKILL.md +353 -0
  404. package/skills/startup-business-analyst-market-opportunity/SKILL.md +240 -0
  405. package/skills/startup-financial-modeling/SKILL.md +467 -0
  406. package/skills/startup-metrics-framework/SKILL.md +34 -0
  407. package/skills/startup-metrics-framework/resources/implementation-playbook.md +500 -0
  408. package/skills/stride-analysis-patterns/SKILL.md +33 -0
  409. package/skills/stride-analysis-patterns/resources/implementation-playbook.md +655 -0
  410. package/skills/stripe-integration/SKILL.md +454 -0
  411. package/skills/systems-programming-rust-project/SKILL.md +440 -0
  412. package/skills/tailwind-design-system/SKILL.md +33 -0
  413. package/skills/tailwind-design-system/resources/implementation-playbook.md +665 -0
  414. package/skills/tdd-orchestrator/SKILL.md +205 -0
  415. package/skills/tdd-workflows-tdd-cycle/SKILL.md +221 -0
  416. package/skills/tdd-workflows-tdd-green/SKILL.md +73 -0
  417. package/skills/tdd-workflows-tdd-green/resources/implementation-playbook.md +870 -0
  418. package/skills/tdd-workflows-tdd-red/SKILL.md +164 -0
  419. package/skills/tdd-workflows-tdd-refactor/SKILL.md +187 -0
  420. package/skills/team-collaboration-issue/SKILL.md +37 -0
  421. package/skills/team-collaboration-issue/resources/implementation-playbook.md +640 -0
  422. package/skills/team-collaboration-standup-notes/SKILL.md +44 -0
  423. package/skills/team-collaboration-standup-notes/resources/implementation-playbook.md +768 -0
  424. package/skills/team-composition-analysis/SKILL.md +413 -0
  425. package/skills/temporal-python-pro/SKILL.md +370 -0
  426. package/skills/temporal-python-testing/SKILL.md +170 -0
  427. package/skills/temporal-python-testing/resources/integration-testing.md +455 -0
  428. package/skills/temporal-python-testing/resources/local-setup.md +553 -0
  429. package/skills/temporal-python-testing/resources/replay-testing.md +462 -0
  430. package/skills/temporal-python-testing/resources/unit-testing.md +328 -0
  431. package/skills/terraform-module-library/SKILL.md +261 -0
  432. package/skills/terraform-module-library/references/aws-modules.md +63 -0
  433. package/skills/terraform-specialist/SKILL.md +166 -0
  434. package/skills/test-automator/SKILL.md +224 -0
  435. package/skills/threat-mitigation-mapping/SKILL.md +33 -0
  436. package/skills/threat-mitigation-mapping/resources/implementation-playbook.md +744 -0
  437. package/skills/threat-modeling-expert/SKILL.md +60 -0
  438. package/skills/track-management/SKILL.md +38 -0
  439. package/skills/track-management/resources/implementation-playbook.md +591 -0
  440. package/skills/turborepo-caching/SKILL.md +419 -0
  441. package/skills/tutorial-engineer/SKILL.md +139 -0
  442. package/skills/typescript-advanced-types/SKILL.md +35 -0
  443. package/skills/typescript-advanced-types/resources/implementation-playbook.md +716 -0
  444. package/skills/typescript-pro/SKILL.md +55 -0
  445. package/skills/ui-minimal/SKILL.md +23 -0
  446. package/skills/ui-ux-designer/SKILL.md +209 -0
  447. package/skills/ui-visual-validator/SKILL.md +214 -0
  448. package/skills/unit-testing-test-generate/SKILL.md +319 -0
  449. package/skills/unity-developer/SKILL.md +230 -0
  450. package/skills/unity-ecs-patterns/SKILL.md +33 -0
  451. package/skills/unity-ecs-patterns/resources/implementation-playbook.md +625 -0
  452. package/skills/uv-package-manager/SKILL.md +37 -0
  453. package/skills/uv-package-manager/resources/implementation-playbook.md +830 -0
  454. package/skills/vector-database-engineer/SKILL.md +60 -0
  455. package/skills/vector-index-tuning/SKILL.md +42 -0
  456. package/skills/vector-index-tuning/resources/implementation-playbook.md +507 -0
  457. package/skills/wcag-audit-patterns/SKILL.md +41 -0
  458. package/skills/wcag-audit-patterns/resources/implementation-playbook.md +541 -0
  459. package/skills/web3-testing/SKILL.md +427 -0
  460. package/skills/workflow-orchestration-patterns/SKILL.md +333 -0
  461. package/skills/workflow-patterns/SKILL.md +38 -0
  462. package/skills/workflow-patterns/resources/implementation-playbook.md +621 -0
@@ -0,0 +1,567 @@
1
+ # Hybrid Search Implementation Implementation Playbook
2
+
3
+ This file contains detailed patterns, checklists, and code samples referenced by the skill.
4
+
5
+ # Hybrid Search Implementation
6
+
7
+ Patterns for combining vector similarity and keyword-based search.
8
+
9
+ ## When to Use This Skill
10
+
11
+ - Building RAG systems with improved recall
12
+ - Combining semantic understanding with exact matching
13
+ - Handling queries with specific terms (names, codes)
14
+ - Improving search for domain-specific vocabulary
15
+ - When pure vector search misses keyword matches
16
+
17
+ ## Core Concepts
18
+
19
+ ### 1. Hybrid Search Architecture
20
+
21
+ ```
22
+ Query → ┬─► Vector Search ──► Candidates ─┐
23
+ │ │
24
+ └─► Keyword Search ─► Candidates ─┴─► Fusion ─► Results
25
+ ```
26
+
27
+ ### 2. Fusion Methods
28
+
29
+ | Method | Description | Best For |
30
+ |--------|-------------|----------|
31
+ | **RRF** | Reciprocal Rank Fusion | General purpose |
32
+ | **Linear** | Weighted sum of scores | Tunable balance |
33
+ | **Cross-encoder** | Rerank with neural model | Highest quality |
34
+ | **Cascade** | Filter then rerank | Efficiency |
35
+
36
+ ## Templates
37
+
38
+ ### Template 1: Reciprocal Rank Fusion
39
+
40
+ ```python
41
+ from typing import List, Dict, Tuple
42
+ from collections import defaultdict
43
+
44
+ def reciprocal_rank_fusion(
45
+ result_lists: List[List[Tuple[str, float]]],
46
+ k: int = 60,
47
+ weights: List[float] = None
48
+ ) -> List[Tuple[str, float]]:
49
+ """
50
+ Combine multiple ranked lists using RRF.
51
+
52
+ Args:
53
+ result_lists: List of (doc_id, score) tuples per search method
54
+ k: RRF constant (higher = more weight to lower ranks)
55
+ weights: Optional weights per result list
56
+
57
+ Returns:
58
+ Fused ranking as (doc_id, score) tuples
59
+ """
60
+ if weights is None:
61
+ weights = [1.0] * len(result_lists)
62
+
63
+ scores = defaultdict(float)
64
+
65
+ for result_list, weight in zip(result_lists, weights):
66
+ for rank, (doc_id, _) in enumerate(result_list):
67
+ # RRF formula: 1 / (k + rank)
68
+ scores[doc_id] += weight * (1.0 / (k + rank + 1))
69
+
70
+ # Sort by fused score
71
+ return sorted(scores.items(), key=lambda x: x[1], reverse=True)
72
+
73
+
74
+ def linear_combination(
75
+ vector_results: List[Tuple[str, float]],
76
+ keyword_results: List[Tuple[str, float]],
77
+ alpha: float = 0.5
78
+ ) -> List[Tuple[str, float]]:
79
+ """
80
+ Combine results with linear interpolation.
81
+
82
+ Args:
83
+ vector_results: (doc_id, similarity_score) from vector search
84
+ keyword_results: (doc_id, bm25_score) from keyword search
85
+ alpha: Weight for vector search (1-alpha for keyword)
86
+ """
87
+ # Normalize scores to [0, 1]
88
+ def normalize(results):
89
+ if not results:
90
+ return {}
91
+ scores = [s for _, s in results]
92
+ min_s, max_s = min(scores), max(scores)
93
+ range_s = max_s - min_s if max_s != min_s else 1
94
+ return {doc_id: (score - min_s) / range_s for doc_id, score in results}
95
+
96
+ vector_scores = normalize(vector_results)
97
+ keyword_scores = normalize(keyword_results)
98
+
99
+ # Combine
100
+ all_docs = set(vector_scores.keys()) | set(keyword_scores.keys())
101
+ combined = {}
102
+
103
+ for doc_id in all_docs:
104
+ v_score = vector_scores.get(doc_id, 0)
105
+ k_score = keyword_scores.get(doc_id, 0)
106
+ combined[doc_id] = alpha * v_score + (1 - alpha) * k_score
107
+
108
+ return sorted(combined.items(), key=lambda x: x[1], reverse=True)
109
+ ```
110
+
111
+ ### Template 2: PostgreSQL Hybrid Search
112
+
113
+ ```python
114
+ import asyncpg
115
+ from typing import List, Dict, Optional
116
+ import numpy as np
117
+
118
+ class PostgresHybridSearch:
119
+ """Hybrid search with pgvector and full-text search."""
120
+
121
+ def __init__(self, pool: asyncpg.Pool):
122
+ self.pool = pool
123
+
124
+ async def setup_schema(self):
125
+ """Create tables and indexes."""
126
+ async with self.pool.acquire() as conn:
127
+ await conn.execute("""
128
+ CREATE EXTENSION IF NOT EXISTS vector;
129
+
130
+ CREATE TABLE IF NOT EXISTS documents (
131
+ id TEXT PRIMARY KEY,
132
+ content TEXT NOT NULL,
133
+ embedding vector(1536),
134
+ metadata JSONB DEFAULT '{}',
135
+ ts_content tsvector GENERATED ALWAYS AS (
136
+ to_tsvector('english', content)
137
+ ) STORED
138
+ );
139
+
140
+ -- Vector index (HNSW)
141
+ CREATE INDEX IF NOT EXISTS documents_embedding_idx
142
+ ON documents USING hnsw (embedding vector_cosine_ops);
143
+
144
+ -- Full-text index (GIN)
145
+ CREATE INDEX IF NOT EXISTS documents_fts_idx
146
+ ON documents USING gin (ts_content);
147
+ """)
148
+
149
+ async def hybrid_search(
150
+ self,
151
+ query: str,
152
+ query_embedding: List[float],
153
+ limit: int = 10,
154
+ vector_weight: float = 0.5,
155
+ filter_metadata: Optional[Dict] = None
156
+ ) -> List[Dict]:
157
+ """
158
+ Perform hybrid search combining vector and full-text.
159
+
160
+ Uses RRF fusion for combining results.
161
+ """
162
+ async with self.pool.acquire() as conn:
163
+ # Build filter clause
164
+ where_clause = "1=1"
165
+ params = [query_embedding, query, limit * 3]
166
+
167
+ if filter_metadata:
168
+ for key, value in filter_metadata.items():
169
+ params.append(value)
170
+ where_clause += f" AND metadata->>'{key}' = ${len(params)}"
171
+
172
+ results = await conn.fetch(f"""
173
+ WITH vector_search AS (
174
+ SELECT
175
+ id,
176
+ content,
177
+ metadata,
178
+ ROW_NUMBER() OVER (ORDER BY embedding <=> $1::vector) as vector_rank,
179
+ 1 - (embedding <=> $1::vector) as vector_score
180
+ FROM documents
181
+ WHERE {where_clause}
182
+ ORDER BY embedding <=> $1::vector
183
+ LIMIT $3
184
+ ),
185
+ keyword_search AS (
186
+ SELECT
187
+ id,
188
+ content,
189
+ metadata,
190
+ ROW_NUMBER() OVER (ORDER BY ts_rank(ts_content, websearch_to_tsquery('english', $2)) DESC) as keyword_rank,
191
+ ts_rank(ts_content, websearch_to_tsquery('english', $2)) as keyword_score
192
+ FROM documents
193
+ WHERE ts_content @@ websearch_to_tsquery('english', $2)
194
+ AND {where_clause}
195
+ ORDER BY ts_rank(ts_content, websearch_to_tsquery('english', $2)) DESC
196
+ LIMIT $3
197
+ )
198
+ SELECT
199
+ COALESCE(v.id, k.id) as id,
200
+ COALESCE(v.content, k.content) as content,
201
+ COALESCE(v.metadata, k.metadata) as metadata,
202
+ v.vector_score,
203
+ k.keyword_score,
204
+ -- RRF fusion
205
+ COALESCE(1.0 / (60 + v.vector_rank), 0) * $4::float +
206
+ COALESCE(1.0 / (60 + k.keyword_rank), 0) * (1 - $4::float) as rrf_score
207
+ FROM vector_search v
208
+ FULL OUTER JOIN keyword_search k ON v.id = k.id
209
+ ORDER BY rrf_score DESC
210
+ LIMIT $3 / 3
211
+ """, *params, vector_weight)
212
+
213
+ return [dict(row) for row in results]
214
+
215
+ async def search_with_rerank(
216
+ self,
217
+ query: str,
218
+ query_embedding: List[float],
219
+ limit: int = 10,
220
+ rerank_candidates: int = 50
221
+ ) -> List[Dict]:
222
+ """Hybrid search with cross-encoder reranking."""
223
+ from sentence_transformers import CrossEncoder
224
+
225
+ # Get candidates
226
+ candidates = await self.hybrid_search(
227
+ query, query_embedding, limit=rerank_candidates
228
+ )
229
+
230
+ if not candidates:
231
+ return []
232
+
233
+ # Rerank with cross-encoder
234
+ model = CrossEncoder('cross-encoder/ms-marco-MiniLM-L-6-v2')
235
+
236
+ pairs = [(query, c["content"]) for c in candidates]
237
+ scores = model.predict(pairs)
238
+
239
+ for candidate, score in zip(candidates, scores):
240
+ candidate["rerank_score"] = float(score)
241
+
242
+ # Sort by rerank score and return top results
243
+ reranked = sorted(candidates, key=lambda x: x["rerank_score"], reverse=True)
244
+ return reranked[:limit]
245
+ ```
246
+
247
+ ### Template 3: Elasticsearch Hybrid Search
248
+
249
+ ```python
250
+ from elasticsearch import Elasticsearch
251
+ from typing import List, Dict, Optional
252
+
253
+ class ElasticsearchHybridSearch:
254
+ """Hybrid search with Elasticsearch and dense vectors."""
255
+
256
+ def __init__(
257
+ self,
258
+ es_client: Elasticsearch,
259
+ index_name: str = "documents"
260
+ ):
261
+ self.es = es_client
262
+ self.index_name = index_name
263
+
264
+ def create_index(self, vector_dims: int = 1536):
265
+ """Create index with dense vector and text fields."""
266
+ mapping = {
267
+ "mappings": {
268
+ "properties": {
269
+ "content": {
270
+ "type": "text",
271
+ "analyzer": "english"
272
+ },
273
+ "embedding": {
274
+ "type": "dense_vector",
275
+ "dims": vector_dims,
276
+ "index": True,
277
+ "similarity": "cosine"
278
+ },
279
+ "metadata": {
280
+ "type": "object",
281
+ "enabled": True
282
+ }
283
+ }
284
+ }
285
+ }
286
+ self.es.indices.create(index=self.index_name, body=mapping, ignore=400)
287
+
288
+ def hybrid_search(
289
+ self,
290
+ query: str,
291
+ query_embedding: List[float],
292
+ limit: int = 10,
293
+ boost_vector: float = 1.0,
294
+ boost_text: float = 1.0,
295
+ filter: Optional[Dict] = None
296
+ ) -> List[Dict]:
297
+ """
298
+ Hybrid search using Elasticsearch's built-in capabilities.
299
+ """
300
+ # Build the hybrid query
301
+ search_body = {
302
+ "size": limit,
303
+ "query": {
304
+ "bool": {
305
+ "should": [
306
+ # Vector search (kNN)
307
+ {
308
+ "script_score": {
309
+ "query": {"match_all": {}},
310
+ "script": {
311
+ "source": f"cosineSimilarity(params.query_vector, 'embedding') * {boost_vector} + 1.0",
312
+ "params": {"query_vector": query_embedding}
313
+ }
314
+ }
315
+ },
316
+ # Text search (BM25)
317
+ {
318
+ "match": {
319
+ "content": {
320
+ "query": query,
321
+ "boost": boost_text
322
+ }
323
+ }
324
+ }
325
+ ],
326
+ "minimum_should_match": 1
327
+ }
328
+ }
329
+ }
330
+
331
+ # Add filter if provided
332
+ if filter:
333
+ search_body["query"]["bool"]["filter"] = filter
334
+
335
+ response = self.es.search(index=self.index_name, body=search_body)
336
+
337
+ return [
338
+ {
339
+ "id": hit["_id"],
340
+ "content": hit["_source"]["content"],
341
+ "metadata": hit["_source"].get("metadata", {}),
342
+ "score": hit["_score"]
343
+ }
344
+ for hit in response["hits"]["hits"]
345
+ ]
346
+
347
+ def hybrid_search_rrf(
348
+ self,
349
+ query: str,
350
+ query_embedding: List[float],
351
+ limit: int = 10,
352
+ window_size: int = 100
353
+ ) -> List[Dict]:
354
+ """
355
+ Hybrid search using Elasticsearch 8.x RRF.
356
+ """
357
+ search_body = {
358
+ "size": limit,
359
+ "sub_searches": [
360
+ {
361
+ "query": {
362
+ "match": {
363
+ "content": query
364
+ }
365
+ }
366
+ },
367
+ {
368
+ "query": {
369
+ "knn": {
370
+ "field": "embedding",
371
+ "query_vector": query_embedding,
372
+ "k": window_size,
373
+ "num_candidates": window_size * 2
374
+ }
375
+ }
376
+ }
377
+ ],
378
+ "rank": {
379
+ "rrf": {
380
+ "window_size": window_size,
381
+ "rank_constant": 60
382
+ }
383
+ }
384
+ }
385
+
386
+ response = self.es.search(index=self.index_name, body=search_body)
387
+
388
+ return [
389
+ {
390
+ "id": hit["_id"],
391
+ "content": hit["_source"]["content"],
392
+ "score": hit["_score"]
393
+ }
394
+ for hit in response["hits"]["hits"]
395
+ ]
396
+ ```
397
+
398
+ ### Template 4: Custom Hybrid RAG Pipeline
399
+
400
+ ```python
401
+ from typing import List, Dict, Optional, Callable
402
+ from dataclasses import dataclass
403
+
404
+ @dataclass
405
+ class SearchResult:
406
+ id: str
407
+ content: str
408
+ score: float
409
+ source: str # "vector", "keyword", "hybrid"
410
+ metadata: Dict = None
411
+
412
+
413
+ class HybridRAGPipeline:
414
+ """Complete hybrid search pipeline for RAG."""
415
+
416
+ def __init__(
417
+ self,
418
+ vector_store,
419
+ keyword_store,
420
+ embedder,
421
+ reranker=None,
422
+ fusion_method: str = "rrf",
423
+ vector_weight: float = 0.5
424
+ ):
425
+ self.vector_store = vector_store
426
+ self.keyword_store = keyword_store
427
+ self.embedder = embedder
428
+ self.reranker = reranker
429
+ self.fusion_method = fusion_method
430
+ self.vector_weight = vector_weight
431
+
432
+ async def search(
433
+ self,
434
+ query: str,
435
+ top_k: int = 10,
436
+ filter: Optional[Dict] = None,
437
+ use_rerank: bool = True
438
+ ) -> List[SearchResult]:
439
+ """Execute hybrid search pipeline."""
440
+
441
+ # Step 1: Get query embedding
442
+ query_embedding = self.embedder.embed(query)
443
+
444
+ # Step 2: Execute parallel searches
445
+ vector_results, keyword_results = await asyncio.gather(
446
+ self._vector_search(query_embedding, top_k * 3, filter),
447
+ self._keyword_search(query, top_k * 3, filter)
448
+ )
449
+
450
+ # Step 3: Fuse results
451
+ if self.fusion_method == "rrf":
452
+ fused = self._rrf_fusion(vector_results, keyword_results)
453
+ else:
454
+ fused = self._linear_fusion(vector_results, keyword_results)
455
+
456
+ # Step 4: Rerank if enabled
457
+ if use_rerank and self.reranker:
458
+ fused = await self._rerank(query, fused[:top_k * 2])
459
+
460
+ return fused[:top_k]
461
+
462
+ async def _vector_search(
463
+ self,
464
+ embedding: List[float],
465
+ limit: int,
466
+ filter: Dict
467
+ ) -> List[SearchResult]:
468
+ results = await self.vector_store.search(embedding, limit, filter)
469
+ return [
470
+ SearchResult(
471
+ id=r["id"],
472
+ content=r["content"],
473
+ score=r["score"],
474
+ source="vector",
475
+ metadata=r.get("metadata")
476
+ )
477
+ for r in results
478
+ ]
479
+
480
+ async def _keyword_search(
481
+ self,
482
+ query: str,
483
+ limit: int,
484
+ filter: Dict
485
+ ) -> List[SearchResult]:
486
+ results = await self.keyword_store.search(query, limit, filter)
487
+ return [
488
+ SearchResult(
489
+ id=r["id"],
490
+ content=r["content"],
491
+ score=r["score"],
492
+ source="keyword",
493
+ metadata=r.get("metadata")
494
+ )
495
+ for r in results
496
+ ]
497
+
498
+ def _rrf_fusion(
499
+ self,
500
+ vector_results: List[SearchResult],
501
+ keyword_results: List[SearchResult]
502
+ ) -> List[SearchResult]:
503
+ """Fuse with RRF."""
504
+ k = 60
505
+ scores = {}
506
+ content_map = {}
507
+
508
+ for rank, result in enumerate(vector_results):
509
+ scores[result.id] = scores.get(result.id, 0) + 1 / (k + rank + 1)
510
+ content_map[result.id] = result
511
+
512
+ for rank, result in enumerate(keyword_results):
513
+ scores[result.id] = scores.get(result.id, 0) + 1 / (k + rank + 1)
514
+ if result.id not in content_map:
515
+ content_map[result.id] = result
516
+
517
+ sorted_ids = sorted(scores.keys(), key=lambda x: scores[x], reverse=True)
518
+
519
+ return [
520
+ SearchResult(
521
+ id=doc_id,
522
+ content=content_map[doc_id].content,
523
+ score=scores[doc_id],
524
+ source="hybrid",
525
+ metadata=content_map[doc_id].metadata
526
+ )
527
+ for doc_id in sorted_ids
528
+ ]
529
+
530
+ async def _rerank(
531
+ self,
532
+ query: str,
533
+ results: List[SearchResult]
534
+ ) -> List[SearchResult]:
535
+ """Rerank with cross-encoder."""
536
+ if not results:
537
+ return results
538
+
539
+ pairs = [(query, r.content) for r in results]
540
+ scores = self.reranker.predict(pairs)
541
+
542
+ for result, score in zip(results, scores):
543
+ result.score = float(score)
544
+
545
+ return sorted(results, key=lambda x: x.score, reverse=True)
546
+ ```
547
+
548
+ ## Best Practices
549
+
550
+ ### Do's
551
+ - **Tune weights empirically** - Test on your data
552
+ - **Use RRF for simplicity** - Works well without tuning
553
+ - **Add reranking** - Significant quality improvement
554
+ - **Log both scores** - Helps with debugging
555
+ - **A/B test** - Measure real user impact
556
+
557
+ ### Don'ts
558
+ - **Don't assume one size fits all** - Different queries need different weights
559
+ - **Don't skip keyword search** - Handles exact matches better
560
+ - **Don't over-fetch** - Balance recall vs latency
561
+ - **Don't ignore edge cases** - Empty results, single word queries
562
+
563
+ ## Resources
564
+
565
+ - [RRF Paper](https://plg.uwaterloo.ca/~gvcormac/cormacksigir09-rrf.pdf)
566
+ - [Vespa Hybrid Search](https://blog.vespa.ai/improving-text-ranking-with-few-shot-prompting/)
567
+ - [Cohere Rerank](https://docs.cohere.com/docs/reranking)