@hivehub/rulebook 1.2.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 (379) hide show
  1. package/LICENSE +191 -0
  2. package/README.md +539 -0
  3. package/dist/agents/claude-code.d.ts +69 -0
  4. package/dist/agents/claude-code.d.ts.map +1 -0
  5. package/dist/agents/claude-code.js +180 -0
  6. package/dist/agents/claude-code.js.map +1 -0
  7. package/dist/agents/cursor-agent.d.ts +184 -0
  8. package/dist/agents/cursor-agent.d.ts.map +1 -0
  9. package/dist/agents/cursor-agent.js +299 -0
  10. package/dist/agents/cursor-agent.js.map +1 -0
  11. package/dist/agents/gemini-cli.d.ts +69 -0
  12. package/dist/agents/gemini-cli.d.ts.map +1 -0
  13. package/dist/agents/gemini-cli.js +180 -0
  14. package/dist/agents/gemini-cli.js.map +1 -0
  15. package/dist/cli/commands.d.ts +57 -0
  16. package/dist/cli/commands.d.ts.map +1 -0
  17. package/dist/cli/commands.js +1370 -0
  18. package/dist/cli/commands.js.map +1 -0
  19. package/dist/cli/docs-prompts.d.ts +3 -0
  20. package/dist/cli/docs-prompts.d.ts.map +1 -0
  21. package/dist/cli/docs-prompts.js +45 -0
  22. package/dist/cli/docs-prompts.js.map +1 -0
  23. package/dist/cli/prompts.d.ts +6 -0
  24. package/dist/cli/prompts.d.ts.map +1 -0
  25. package/dist/cli/prompts.js +376 -0
  26. package/dist/cli/prompts.js.map +1 -0
  27. package/dist/core/agent-manager.d.ts +89 -0
  28. package/dist/core/agent-manager.d.ts.map +1 -0
  29. package/dist/core/agent-manager.js +546 -0
  30. package/dist/core/agent-manager.js.map +1 -0
  31. package/dist/core/auto-fixer.d.ts +14 -0
  32. package/dist/core/auto-fixer.d.ts.map +1 -0
  33. package/dist/core/auto-fixer.js +207 -0
  34. package/dist/core/auto-fixer.js.map +1 -0
  35. package/dist/core/changelog-generator.d.ts +44 -0
  36. package/dist/core/changelog-generator.d.ts.map +1 -0
  37. package/dist/core/changelog-generator.js +222 -0
  38. package/dist/core/changelog-generator.js.map +1 -0
  39. package/dist/core/cli-bridge.d.ts +113 -0
  40. package/dist/core/cli-bridge.d.ts.map +1 -0
  41. package/dist/core/cli-bridge.js +1094 -0
  42. package/dist/core/cli-bridge.js.map +1 -0
  43. package/dist/core/config-manager.d.ts +65 -0
  44. package/dist/core/config-manager.d.ts.map +1 -0
  45. package/dist/core/config-manager.js +266 -0
  46. package/dist/core/config-manager.js.map +1 -0
  47. package/dist/core/coverage-checker.d.ts +14 -0
  48. package/dist/core/coverage-checker.d.ts.map +1 -0
  49. package/dist/core/coverage-checker.js +176 -0
  50. package/dist/core/coverage-checker.js.map +1 -0
  51. package/dist/core/custom-templates.d.ts +27 -0
  52. package/dist/core/custom-templates.d.ts.map +1 -0
  53. package/dist/core/custom-templates.js +122 -0
  54. package/dist/core/custom-templates.js.map +1 -0
  55. package/dist/core/dependency-checker.d.ts +21 -0
  56. package/dist/core/dependency-checker.d.ts.map +1 -0
  57. package/dist/core/dependency-checker.js +247 -0
  58. package/dist/core/dependency-checker.js.map +1 -0
  59. package/dist/core/detector.d.ts +3 -0
  60. package/dist/core/detector.d.ts.map +1 -0
  61. package/dist/core/detector.js +1443 -0
  62. package/dist/core/detector.js.map +1 -0
  63. package/dist/core/docs-generator.d.ts +9 -0
  64. package/dist/core/docs-generator.d.ts.map +1 -0
  65. package/dist/core/docs-generator.js +531 -0
  66. package/dist/core/docs-generator.js.map +1 -0
  67. package/dist/core/generator.d.ts +16 -0
  68. package/dist/core/generator.d.ts.map +1 -0
  69. package/dist/core/generator.js +561 -0
  70. package/dist/core/generator.js.map +1 -0
  71. package/dist/core/gitignore-generator.d.ts +13 -0
  72. package/dist/core/gitignore-generator.d.ts.map +1 -0
  73. package/dist/core/gitignore-generator.js +307 -0
  74. package/dist/core/gitignore-generator.js.map +1 -0
  75. package/dist/core/health-scorer.d.ts +22 -0
  76. package/dist/core/health-scorer.d.ts.map +1 -0
  77. package/dist/core/health-scorer.js +395 -0
  78. package/dist/core/health-scorer.js.map +1 -0
  79. package/dist/core/logger.d.ts +116 -0
  80. package/dist/core/logger.d.ts.map +1 -0
  81. package/dist/core/logger.js +289 -0
  82. package/dist/core/logger.js.map +1 -0
  83. package/dist/core/merger.d.ts +6 -0
  84. package/dist/core/merger.d.ts.map +1 -0
  85. package/dist/core/merger.js +131 -0
  86. package/dist/core/merger.js.map +1 -0
  87. package/dist/core/migrator.d.ts +19 -0
  88. package/dist/core/migrator.d.ts.map +1 -0
  89. package/dist/core/migrator.js +102 -0
  90. package/dist/core/migrator.js.map +1 -0
  91. package/dist/core/minimal-scaffolder.d.ts +8 -0
  92. package/dist/core/minimal-scaffolder.d.ts.map +1 -0
  93. package/dist/core/minimal-scaffolder.js +51 -0
  94. package/dist/core/minimal-scaffolder.js.map +1 -0
  95. package/dist/core/modern-console-new.d.ts +81 -0
  96. package/dist/core/modern-console-new.d.ts.map +1 -0
  97. package/dist/core/modern-console-new.js +340 -0
  98. package/dist/core/modern-console-new.js.map +1 -0
  99. package/dist/core/modern-console.d.ts +99 -0
  100. package/dist/core/modern-console.d.ts.map +1 -0
  101. package/dist/core/modern-console.js +568 -0
  102. package/dist/core/modern-console.js.map +1 -0
  103. package/dist/core/openspec-manager.d.ts +133 -0
  104. package/dist/core/openspec-manager.d.ts.map +1 -0
  105. package/dist/core/openspec-manager.js +605 -0
  106. package/dist/core/openspec-manager.js.map +1 -0
  107. package/dist/core/openspec-migrator.d.ts +27 -0
  108. package/dist/core/openspec-migrator.d.ts.map +1 -0
  109. package/dist/core/openspec-migrator.js +255 -0
  110. package/dist/core/openspec-migrator.js.map +1 -0
  111. package/dist/core/task-manager.d.ts +65 -0
  112. package/dist/core/task-manager.d.ts.map +1 -0
  113. package/dist/core/task-manager.js +318 -0
  114. package/dist/core/task-manager.js.map +1 -0
  115. package/dist/core/test-task-manager.d.ts +49 -0
  116. package/dist/core/test-task-manager.d.ts.map +1 -0
  117. package/dist/core/test-task-manager.js +121 -0
  118. package/dist/core/test-task-manager.js.map +1 -0
  119. package/dist/core/validator.d.ts +21 -0
  120. package/dist/core/validator.d.ts.map +1 -0
  121. package/dist/core/validator.js +177 -0
  122. package/dist/core/validator.js.map +1 -0
  123. package/dist/core/version-bumper.d.ts +19 -0
  124. package/dist/core/version-bumper.d.ts.map +1 -0
  125. package/dist/core/version-bumper.js +180 -0
  126. package/dist/core/version-bumper.js.map +1 -0
  127. package/dist/core/watcher.d.ts +9 -0
  128. package/dist/core/watcher.d.ts.map +1 -0
  129. package/dist/core/watcher.js +22 -0
  130. package/dist/core/watcher.js.map +1 -0
  131. package/dist/core/workflow-generator.d.ts +10 -0
  132. package/dist/core/workflow-generator.d.ts.map +1 -0
  133. package/dist/core/workflow-generator.js +279 -0
  134. package/dist/core/workflow-generator.js.map +1 -0
  135. package/dist/index.d.ts +3 -0
  136. package/dist/index.d.ts.map +1 -0
  137. package/dist/index.js +159 -0
  138. package/dist/index.js.map +1 -0
  139. package/dist/mcp/handlers/archive-task.d.ts +17 -0
  140. package/dist/mcp/handlers/archive-task.d.ts.map +1 -0
  141. package/dist/mcp/handlers/archive-task.js +36 -0
  142. package/dist/mcp/handlers/archive-task.js.map +1 -0
  143. package/dist/mcp/handlers/create-task.d.ts +17 -0
  144. package/dist/mcp/handlers/create-task.d.ts.map +1 -0
  145. package/dist/mcp/handlers/create-task.js +56 -0
  146. package/dist/mcp/handlers/create-task.js.map +1 -0
  147. package/dist/mcp/handlers/list-tasks.d.ts +22 -0
  148. package/dist/mcp/handlers/list-tasks.d.ts.map +1 -0
  149. package/dist/mcp/handlers/list-tasks.js +42 -0
  150. package/dist/mcp/handlers/list-tasks.js.map +1 -0
  151. package/dist/mcp/handlers/show-task.d.ts +25 -0
  152. package/dist/mcp/handlers/show-task.d.ts.map +1 -0
  153. package/dist/mcp/handlers/show-task.js +43 -0
  154. package/dist/mcp/handlers/show-task.js.map +1 -0
  155. package/dist/mcp/handlers/update-task.d.ts +17 -0
  156. package/dist/mcp/handlers/update-task.d.ts.map +1 -0
  157. package/dist/mcp/handlers/update-task.js +35 -0
  158. package/dist/mcp/handlers/update-task.js.map +1 -0
  159. package/dist/mcp/handlers/validate-task.d.ts +15 -0
  160. package/dist/mcp/handlers/validate-task.d.ts.map +1 -0
  161. package/dist/mcp/handlers/validate-task.js +27 -0
  162. package/dist/mcp/handlers/validate-task.js.map +1 -0
  163. package/dist/mcp/rulebook-config.d.ts +22 -0
  164. package/dist/mcp/rulebook-config.d.ts.map +1 -0
  165. package/dist/mcp/rulebook-config.js +65 -0
  166. package/dist/mcp/rulebook-config.js.map +1 -0
  167. package/dist/mcp/rulebook-server.d.ts +4 -0
  168. package/dist/mcp/rulebook-server.d.ts.map +1 -0
  169. package/dist/mcp/rulebook-server.js +246 -0
  170. package/dist/mcp/rulebook-server.js.map +1 -0
  171. package/dist/types.d.ts +190 -0
  172. package/dist/types.d.ts.map +1 -0
  173. package/dist/types.js +2 -0
  174. package/dist/types.js.map +1 -0
  175. package/dist/utils/file-system.d.ts +9 -0
  176. package/dist/utils/file-system.d.ts.map +1 -0
  177. package/dist/utils/file-system.js +51 -0
  178. package/dist/utils/file-system.js.map +1 -0
  179. package/dist/utils/git-hooks.d.ts +8 -0
  180. package/dist/utils/git-hooks.d.ts.map +1 -0
  181. package/dist/utils/git-hooks.js +440 -0
  182. package/dist/utils/git-hooks.js.map +1 -0
  183. package/dist/utils/rulesignore.d.ts +9 -0
  184. package/dist/utils/rulesignore.d.ts.map +1 -0
  185. package/dist/utils/rulesignore.js +42 -0
  186. package/dist/utils/rulesignore.js.map +1 -0
  187. package/package.json +106 -0
  188. package/templates/cli/AIDER.md +49 -0
  189. package/templates/cli/AMAZON_Q.md +25 -0
  190. package/templates/cli/AUGGIE.md +32 -0
  191. package/templates/cli/CLAUDE.md +32 -0
  192. package/templates/cli/CLAUDE_CODE.md +35 -0
  193. package/templates/cli/CLINE.md +32 -0
  194. package/templates/cli/CODEBUDDY.md +20 -0
  195. package/templates/cli/CODEIUM.md +20 -0
  196. package/templates/cli/CODEX.md +21 -0
  197. package/templates/cli/CONTINUE.md +34 -0
  198. package/templates/cli/CURSOR_CLI.md +28 -0
  199. package/templates/cli/FACTORY.md +18 -0
  200. package/templates/cli/GEMINI.md +35 -0
  201. package/templates/cli/KILOCODE.md +18 -0
  202. package/templates/cli/OPENCODE.md +18 -0
  203. package/templates/cli/_GENERIC_TEMPLATE.md +29 -0
  204. package/templates/commands/rulebook-task-apply.md +67 -0
  205. package/templates/commands/rulebook-task-archive.md +70 -0
  206. package/templates/commands/rulebook-task-create.md +93 -0
  207. package/templates/commands/rulebook-task-list.md +42 -0
  208. package/templates/commands/rulebook-task-show.md +52 -0
  209. package/templates/commands/rulebook-task-validate.md +53 -0
  210. package/templates/core/AGENT_AUTOMATION.md +184 -0
  211. package/templates/core/DAG.md +304 -0
  212. package/templates/core/DOCUMENTATION_RULES.md +37 -0
  213. package/templates/core/QUALITY_ENFORCEMENT.md +68 -0
  214. package/templates/core/RULEBOOK.md +1874 -0
  215. package/templates/frameworks/ANGULAR.md +36 -0
  216. package/templates/frameworks/DJANGO.md +83 -0
  217. package/templates/frameworks/ELECTRON.md +147 -0
  218. package/templates/frameworks/FLASK.md +38 -0
  219. package/templates/frameworks/FLUTTER.md +55 -0
  220. package/templates/frameworks/JQUERY.md +32 -0
  221. package/templates/frameworks/LARAVEL.md +38 -0
  222. package/templates/frameworks/NESTJS.md +43 -0
  223. package/templates/frameworks/NEXTJS.md +127 -0
  224. package/templates/frameworks/NUXT.md +40 -0
  225. package/templates/frameworks/RAILS.md +66 -0
  226. package/templates/frameworks/REACT.md +38 -0
  227. package/templates/frameworks/REACT_NATIVE.md +47 -0
  228. package/templates/frameworks/SPRING.md +39 -0
  229. package/templates/frameworks/SYMFONY.md +36 -0
  230. package/templates/frameworks/VUE.md +36 -0
  231. package/templates/frameworks/ZEND.md +35 -0
  232. package/templates/git/CI_CD_PATTERNS.md +661 -0
  233. package/templates/git/GITHUB_ACTIONS.md +728 -0
  234. package/templates/git/GITLAB_CI.md +730 -0
  235. package/templates/git/GIT_WORKFLOW.md +1157 -0
  236. package/templates/git/SECRETS_MANAGEMENT.md +585 -0
  237. package/templates/hooks/COMMIT_MSG.md +530 -0
  238. package/templates/hooks/POST_CHECKOUT.md +546 -0
  239. package/templates/hooks/PREPARE_COMMIT_MSG.md +619 -0
  240. package/templates/hooks/PRE_COMMIT.md +414 -0
  241. package/templates/hooks/PRE_PUSH.md +601 -0
  242. package/templates/hooks/csharp-pre-commit.sh +23 -0
  243. package/templates/hooks/csharp-pre-push.sh +23 -0
  244. package/templates/hooks/dart-pre-commit.sh +30 -0
  245. package/templates/hooks/dart-pre-push.sh +25 -0
  246. package/templates/hooks/elixir-pre-commit.sh +32 -0
  247. package/templates/hooks/elixir-pre-push.sh +31 -0
  248. package/templates/hooks/erlang-pre-commit.sh +30 -0
  249. package/templates/hooks/erlang-pre-push.sh +37 -0
  250. package/templates/hooks/go-pre-commit.sh +40 -0
  251. package/templates/hooks/go-pre-push.sh +31 -0
  252. package/templates/hooks/haskell-pre-commit.sh +41 -0
  253. package/templates/hooks/haskell-pre-push.sh +37 -0
  254. package/templates/hooks/java-pre-commit.sh +34 -0
  255. package/templates/hooks/java-pre-push.sh +24 -0
  256. package/templates/hooks/kotlin-pre-commit.sh +32 -0
  257. package/templates/hooks/kotlin-pre-push.sh +16 -0
  258. package/templates/hooks/php-pre-commit.sh +36 -0
  259. package/templates/hooks/php-pre-push.sh +26 -0
  260. package/templates/hooks/python-pre-commit.sh +51 -0
  261. package/templates/hooks/python-pre-push.sh +25 -0
  262. package/templates/hooks/ruby-pre-commit.sh +33 -0
  263. package/templates/hooks/ruby-pre-push.sh +32 -0
  264. package/templates/hooks/rust-pre-commit.sh +30 -0
  265. package/templates/hooks/rust-pre-push.sh +30 -0
  266. package/templates/hooks/scala-pre-commit.sh +32 -0
  267. package/templates/hooks/scala-pre-push.sh +24 -0
  268. package/templates/hooks/swift-pre-commit.sh +25 -0
  269. package/templates/hooks/swift-pre-push.sh +23 -0
  270. package/templates/hooks/typescript-pre-commit.sh +37 -0
  271. package/templates/hooks/typescript-pre-push.sh +36 -0
  272. package/templates/ides/COPILOT.md +37 -0
  273. package/templates/ides/CURSOR.md +43 -0
  274. package/templates/ides/JETBRAINS_AI.md +35 -0
  275. package/templates/ides/REPLIT.md +36 -0
  276. package/templates/ides/TABNINE.md +29 -0
  277. package/templates/ides/VSCODE.md +40 -0
  278. package/templates/ides/WINDSURF.md +36 -0
  279. package/templates/ides/ZED.md +32 -0
  280. package/templates/languages/ADA.md +58 -0
  281. package/templates/languages/C.md +333 -0
  282. package/templates/languages/CPP.md +743 -0
  283. package/templates/languages/CSHARP.md +417 -0
  284. package/templates/languages/DART.md +332 -0
  285. package/templates/languages/ELIXIR.md +454 -0
  286. package/templates/languages/ERLANG.md +361 -0
  287. package/templates/languages/GO.md +645 -0
  288. package/templates/languages/HASKELL.md +177 -0
  289. package/templates/languages/JAVA.md +607 -0
  290. package/templates/languages/JAVASCRIPT.md +631 -0
  291. package/templates/languages/JULIA.md +97 -0
  292. package/templates/languages/KOTLIN.md +511 -0
  293. package/templates/languages/LISP.md +100 -0
  294. package/templates/languages/LUA.md +74 -0
  295. package/templates/languages/OBJECTIVEC.md +90 -0
  296. package/templates/languages/PHP.md +416 -0
  297. package/templates/languages/PYTHON.md +682 -0
  298. package/templates/languages/R.md +350 -0
  299. package/templates/languages/RUBY.md +421 -0
  300. package/templates/languages/RUST.md +477 -0
  301. package/templates/languages/SAS.md +73 -0
  302. package/templates/languages/SCALA.md +348 -0
  303. package/templates/languages/SOLIDITY.md +580 -0
  304. package/templates/languages/SQL.md +137 -0
  305. package/templates/languages/SWIFT.md +466 -0
  306. package/templates/languages/TYPESCRIPT.md +591 -0
  307. package/templates/languages/ZIG.md +265 -0
  308. package/templates/modules/ATLASSIAN.md +255 -0
  309. package/templates/modules/CONTEXT7.md +54 -0
  310. package/templates/modules/FIGMA.md +267 -0
  311. package/templates/modules/GITHUB_MCP.md +64 -0
  312. package/templates/modules/GRAFANA.md +328 -0
  313. package/templates/modules/NOTION.md +247 -0
  314. package/templates/modules/PLAYWRIGHT.md +90 -0
  315. package/templates/modules/RULEBOOK_MCP.md +156 -0
  316. package/templates/modules/SERENA.md +337 -0
  317. package/templates/modules/SUPABASE.md +223 -0
  318. package/templates/modules/SYNAP.md +69 -0
  319. package/templates/modules/VECTORIZER.md +63 -0
  320. package/templates/services/AZURE_BLOB.md +184 -0
  321. package/templates/services/CASSANDRA.md +239 -0
  322. package/templates/services/DYNAMODB.md +308 -0
  323. package/templates/services/ELASTICSEARCH.md +347 -0
  324. package/templates/services/GCS.md +178 -0
  325. package/templates/services/INFLUXDB.md +265 -0
  326. package/templates/services/KAFKA.md +341 -0
  327. package/templates/services/MARIADB.md +183 -0
  328. package/templates/services/MEMCACHED.md +242 -0
  329. package/templates/services/MINIO.md +201 -0
  330. package/templates/services/MONGODB.md +268 -0
  331. package/templates/services/MYSQL.md +358 -0
  332. package/templates/services/NEO4J.md +247 -0
  333. package/templates/services/ORACLE.md +290 -0
  334. package/templates/services/POSTGRESQL.md +326 -0
  335. package/templates/services/RABBITMQ.md +286 -0
  336. package/templates/services/REDIS.md +292 -0
  337. package/templates/services/S3.md +298 -0
  338. package/templates/services/SQLITE.md +294 -0
  339. package/templates/services/SQLSERVER.md +294 -0
  340. package/templates/workflows/codespell.yml +31 -0
  341. package/templates/workflows/cpp-lint.yml +47 -0
  342. package/templates/workflows/cpp-publish.yml +119 -0
  343. package/templates/workflows/cpp-test.yml +77 -0
  344. package/templates/workflows/dotnet-lint.yml +29 -0
  345. package/templates/workflows/dotnet-publish.yml +40 -0
  346. package/templates/workflows/dotnet-test.yml +41 -0
  347. package/templates/workflows/elixir-lint.yml +45 -0
  348. package/templates/workflows/elixir-publish.yml +49 -0
  349. package/templates/workflows/elixir-test.yml +54 -0
  350. package/templates/workflows/erlang-lint.yml +47 -0
  351. package/templates/workflows/erlang-test.yml +62 -0
  352. package/templates/workflows/go-lint.yml +39 -0
  353. package/templates/workflows/go-publish.yml +95 -0
  354. package/templates/workflows/go-test.yml +59 -0
  355. package/templates/workflows/java-lint.yml +60 -0
  356. package/templates/workflows/java-publish.yml +120 -0
  357. package/templates/workflows/java-test.yml +85 -0
  358. package/templates/workflows/kotlin-lint.yml +34 -0
  359. package/templates/workflows/kotlin-publish.yml +56 -0
  360. package/templates/workflows/kotlin-test.yml +48 -0
  361. package/templates/workflows/php-lint.yml +39 -0
  362. package/templates/workflows/php-publish.yml +50 -0
  363. package/templates/workflows/php-test.yml +54 -0
  364. package/templates/workflows/python-lint.yml +47 -0
  365. package/templates/workflows/python-publish.yml +91 -0
  366. package/templates/workflows/python-test.yml +59 -0
  367. package/templates/workflows/rust-lint.yml +54 -0
  368. package/templates/workflows/rust-publish.yml +66 -0
  369. package/templates/workflows/rust-test.yml +75 -0
  370. package/templates/workflows/solidity-lint.yml +41 -0
  371. package/templates/workflows/solidity-test.yml +47 -0
  372. package/templates/workflows/swift-lint.yml +32 -0
  373. package/templates/workflows/swift-publish.yml +58 -0
  374. package/templates/workflows/swift-test.yml +44 -0
  375. package/templates/workflows/typescript-lint.yml +61 -0
  376. package/templates/workflows/typescript-publish.yml +60 -0
  377. package/templates/workflows/typescript-test.yml +73 -0
  378. package/templates/workflows/zig-lint.yml +27 -0
  379. package/templates/workflows/zig-test.yml +40 -0
@@ -0,0 +1,347 @@
1
+ <!-- ELASTICSEARCH:START -->
2
+ # Elasticsearch Search Instructions
3
+
4
+ **CRITICAL**: Use Elasticsearch for full-text search, log aggregation, and real-time analytics with distributed architecture.
5
+
6
+ ## Core Features
7
+
8
+ ### Connection
9
+ ```typescript
10
+ // Using @elastic/elasticsearch
11
+ import { Client } from '@elastic/elasticsearch'
12
+
13
+ const client = new Client({
14
+ node: process.env.ELASTICSEARCH_URL || 'http://localhost:9200',
15
+ auth: {
16
+ username: process.env.ELASTICSEARCH_USER || 'elastic',
17
+ password: process.env.ELASTICSEARCH_PASSWORD || '',
18
+ },
19
+ maxRetries: 5,
20
+ requestTimeout: 60000,
21
+ sniffOnStart: true,
22
+ sniffInterval: 30000,
23
+ })
24
+ ```
25
+
26
+ ### Index Operations
27
+ ```typescript
28
+ // Create index
29
+ await client.indices.create({
30
+ index: 'users',
31
+ body: {
32
+ mappings: {
33
+ properties: {
34
+ name: { type: 'text' },
35
+ email: { type: 'keyword' },
36
+ age: { type: 'integer' },
37
+ createdAt: { type: 'date' },
38
+ },
39
+ },
40
+ settings: {
41
+ number_of_shards: 1,
42
+ number_of_replicas: 1,
43
+ },
44
+ },
45
+ })
46
+
47
+ // Delete index
48
+ await client.indices.delete({ index: 'users' })
49
+
50
+ // Check if index exists
51
+ const exists = await client.indices.exists({ index: 'users' })
52
+ ```
53
+
54
+ ### Document Operations
55
+ ```typescript
56
+ // Index document
57
+ await client.index({
58
+ index: 'users',
59
+ id: '1',
60
+ body: {
61
+ name: 'John Doe',
62
+ email: 'john@example.com',
63
+ age: 30,
64
+ createdAt: new Date(),
65
+ },
66
+ })
67
+
68
+ // Get document
69
+ const result = await client.get({
70
+ index: 'users',
71
+ id: '1',
72
+ })
73
+
74
+ // Update document
75
+ await client.update({
76
+ index: 'users',
77
+ id: '1',
78
+ body: {
79
+ doc: {
80
+ age: 31,
81
+ },
82
+ },
83
+ })
84
+
85
+ // Delete document
86
+ await client.delete({
87
+ index: 'users',
88
+ id: '1',
89
+ })
90
+
91
+ // Bulk operations
92
+ await client.bulk({
93
+ body: [
94
+ { index: { _index: 'users', _id: '1' } },
95
+ { name: 'User 1', email: 'user1@example.com' },
96
+ { index: { _index: 'users', _id: '2' } },
97
+ { name: 'User 2', email: 'user2@example.com' },
98
+ ],
99
+ })
100
+ ```
101
+
102
+ ### Search Operations
103
+ ```typescript
104
+ // Simple search
105
+ const result = await client.search({
106
+ index: 'users',
107
+ body: {
108
+ query: {
109
+ match: {
110
+ name: 'John',
111
+ },
112
+ },
113
+ },
114
+ })
115
+
116
+ // Multi-match search
117
+ const result = await client.search({
118
+ index: 'users',
119
+ body: {
120
+ query: {
121
+ multi_match: {
122
+ query: 'search term',
123
+ fields: ['name^2', 'email'], // name has 2x boost
124
+ },
125
+ },
126
+ },
127
+ })
128
+
129
+ // Bool query (AND/OR/NOT)
130
+ const result = await client.search({
131
+ index: 'users',
132
+ body: {
133
+ query: {
134
+ bool: {
135
+ must: [
136
+ { match: { name: 'John' } },
137
+ { range: { age: { gte: 18, lte: 65 } } },
138
+ ],
139
+ must_not: [
140
+ { term: { status: 'inactive' } },
141
+ ],
142
+ should: [
143
+ { match: { tags: 'premium' } },
144
+ ],
145
+ minimum_should_match: 1,
146
+ },
147
+ },
148
+ },
149
+ })
150
+
151
+ // Aggregations
152
+ const result = await client.search({
153
+ index: 'users',
154
+ body: {
155
+ aggs: {
156
+ age_groups: {
157
+ range: {
158
+ field: 'age',
159
+ ranges: [
160
+ { to: 25 },
161
+ { from: 25, to: 50 },
162
+ { from: 50 },
163
+ ],
164
+ },
165
+ },
166
+ avg_age: {
167
+ avg: { field: 'age' },
168
+ },
169
+ },
170
+ },
171
+ })
172
+ ```
173
+
174
+ ## Common Patterns
175
+
176
+ ### Full-Text Search
177
+ ```typescript
178
+ async function searchUsers(query: string, filters?: any) {
179
+ const must: any[] = [
180
+ {
181
+ multi_match: {
182
+ query,
183
+ fields: ['name^2', 'email'],
184
+ fuzziness: 'AUTO',
185
+ },
186
+ },
187
+ ]
188
+
189
+ if (filters) {
190
+ if (filters.age) {
191
+ must.push({ range: { age: filters.age } })
192
+ }
193
+ if (filters.status) {
194
+ must.push({ term: { status: filters.status } })
195
+ }
196
+ }
197
+
198
+ const result = await client.search({
199
+ index: 'users',
200
+ body: {
201
+ query: {
202
+ bool: {
203
+ must,
204
+ },
205
+ },
206
+ highlight: {
207
+ fields: {
208
+ name: {},
209
+ email: {},
210
+ },
211
+ },
212
+ },
213
+ })
214
+
215
+ return result.body.hits.hits.map(hit => ({
216
+ ...hit._source,
217
+ score: hit._score,
218
+ highlights: hit.highlight,
219
+ }))
220
+ }
221
+ ```
222
+
223
+ ### Auto-complete
224
+ ```typescript
225
+ // Create index with completion suggester
226
+ await client.indices.create({
227
+ index: 'suggestions',
228
+ body: {
229
+ mappings: {
230
+ properties: {
231
+ name: {
232
+ type: 'text',
233
+ fields: {
234
+ suggest: {
235
+ type: 'completion',
236
+ },
237
+ },
238
+ },
239
+ },
240
+ },
241
+ },
242
+ })
243
+
244
+ // Search with suggestions
245
+ const result = await client.search({
246
+ index: 'suggestions',
247
+ body: {
248
+ suggest: {
249
+ name_suggest: {
250
+ prefix: 'joh',
251
+ completion: {
252
+ field: 'name.suggest',
253
+ },
254
+ },
255
+ },
256
+ },
257
+ })
258
+ ```
259
+
260
+ ## Best Practices
261
+
262
+ ✅ **DO:**
263
+ - Use appropriate field types (text vs keyword)
264
+ - Create indexes with proper mappings
265
+ - Use bulk API for multiple operations
266
+ - Implement proper error handling
267
+ - Use aliases for zero-downtime reindexing
268
+ - Monitor cluster health
269
+ - Use appropriate shard and replica counts
270
+ - Implement search result pagination
271
+ - Use filters for exact matches (faster than queries)
272
+ - Enable slow query logging
273
+
274
+ ❌ **DON'T:**
275
+ - Store large binary data (use external storage)
276
+ - Use too many shards (1 per 10-50GB)
277
+ - Skip mapping definitions
278
+ - Ignore cluster health
279
+ - Hardcode connection strings
280
+ - Use wildcard queries in production
281
+ - Skip error handling
282
+ - Ignore query performance
283
+ - Store sensitive data without encryption
284
+ - Use default refresh interval for real-time needs
285
+
286
+ ## Configuration
287
+
288
+ ### Environment Variables
289
+ ```bash
290
+ ELASTICSEARCH_URL=http://localhost:9200
291
+ ELASTICSEARCH_USER=elastic
292
+ ELASTICSEARCH_PASSWORD=securepassword
293
+ ```
294
+
295
+ ### Docker Compose
296
+ ```yaml
297
+ services:
298
+ elasticsearch:
299
+ image: docker.elastic.co/elasticsearch/elasticsearch:8.11.0
300
+ environment:
301
+ - discovery.type=single-node
302
+ - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
303
+ - xpack.security.enabled=false
304
+ ports:
305
+ - "9200:9200"
306
+ volumes:
307
+ - elasticsearch_data:/usr/share/elasticsearch/data
308
+ healthcheck:
309
+ test: ["CMD-SHELL", "curl -f http://localhost:9200/_cluster/health || exit 1"]
310
+ interval: 30s
311
+ timeout: 10s
312
+ retries: 5
313
+
314
+ volumes:
315
+ elasticsearch_data:
316
+ ```
317
+
318
+ ## Integration with Development
319
+
320
+ ### Testing
321
+ ```typescript
322
+ // Use test index
323
+ const testIndex = 'test_users'
324
+
325
+ beforeEach(async () => {
326
+ await client.indices.create({ index: testIndex })
327
+ })
328
+
329
+ afterEach(async () => {
330
+ await client.indices.delete({ index: testIndex })
331
+ })
332
+ ```
333
+
334
+ ### Health Checks
335
+ ```typescript
336
+ async function checkElasticsearchHealth(): Promise<boolean> {
337
+ try {
338
+ const response = await client.cluster.health()
339
+ return response.body.status !== 'red'
340
+ } catch {
341
+ return false
342
+ }
343
+ }
344
+ ```
345
+
346
+ <!-- ELASTICSEARCH:END -->
347
+
@@ -0,0 +1,178 @@
1
+ <!-- GCS:START -->
2
+ # Google Cloud Storage Instructions
3
+
4
+ **CRITICAL**: Use Google Cloud Storage for object storage, file uploads, static assets, and backup storage in GCP.
5
+
6
+ ## Core Features
7
+
8
+ ### Connection
9
+ ```typescript
10
+ // Using @google-cloud/storage
11
+ import { Storage } from '@google-cloud/storage'
12
+
13
+ const storage = new Storage({
14
+ projectId: process.env.GCP_PROJECT_ID,
15
+ keyFilename: process.env.GCP_KEY_FILE, // Path to service account key
16
+ // Or use credentials object
17
+ credentials: {
18
+ client_email: process.env.GCP_CLIENT_EMAIL,
19
+ private_key: process.env.GCP_PRIVATE_KEY?.replace(/\\n/g, '\n'),
20
+ },
21
+ })
22
+
23
+ const bucket = storage.bucket(process.env.GCS_BUCKET_NAME || 'my-bucket')
24
+ ```
25
+
26
+ ### Basic Operations
27
+ ```typescript
28
+ // Upload file
29
+ const file = bucket.file('path/to/file.jpg')
30
+ await file.save(fileBuffer, {
31
+ metadata: {
32
+ contentType: 'image/jpeg',
33
+ metadata: {
34
+ userId: '123',
35
+ originalName: 'photo.jpg',
36
+ },
37
+ },
38
+ })
39
+
40
+ // Download file
41
+ const [fileContent] = await file.download()
42
+
43
+ // Delete file
44
+ await file.delete()
45
+
46
+ // List files
47
+ const [files] = await bucket.getFiles({
48
+ prefix: 'uploads/',
49
+ maxResults: 100,
50
+ })
51
+ ```
52
+
53
+ ### Advanced Features
54
+ ```typescript
55
+ // Generate signed URL
56
+ const [url] = await file.getSignedUrl({
57
+ action: 'read',
58
+ expires: Date.now() + 3600 * 1000, // 1 hour
59
+ })
60
+
61
+ // Generate signed URL for upload
62
+ const [uploadUrl] = await file.getSignedUrl({
63
+ action: 'write',
64
+ expires: Date.now() + 3600 * 1000,
65
+ contentType: 'image/jpeg',
66
+ })
67
+
68
+ // Copy file
69
+ const sourceFile = bucket.file('source/file.jpg')
70
+ const destFile = bucket.file('dest/file.jpg')
71
+ await sourceFile.copy(destFile)
72
+
73
+ // Set metadata
74
+ await file.setMetadata({
75
+ metadata: {
76
+ category: 'profile',
77
+ uploadedBy: 'user-123',
78
+ },
79
+ })
80
+
81
+ // Get metadata
82
+ const [metadata] = await file.getMetadata()
83
+ console.log(metadata.contentType, metadata.size, metadata.metadata)
84
+ ```
85
+
86
+ ## Common Patterns
87
+
88
+ ### File Upload Handler
89
+ ```typescript
90
+ async function uploadFile(file: Buffer, filename: string, userId: string) {
91
+ const filePath = `users/${userId}/${Date.now()}-${filename}`
92
+ const file = bucket.file(filePath)
93
+
94
+ await file.save(file, {
95
+ metadata: {
96
+ contentType: getContentType(filename),
97
+ metadata: {
98
+ userId,
99
+ originalName: filename,
100
+ uploadedAt: new Date().toISOString(),
101
+ },
102
+ },
103
+ })
104
+
105
+ await file.makePublic() // Or use signed URLs
106
+
107
+ return {
108
+ filePath,
109
+ publicUrl: file.publicUrl(),
110
+ }
111
+ }
112
+ ```
113
+
114
+ ### Temporary Access URL
115
+ ```typescript
116
+ async function generateTemporaryUrl(filePath: string, expiresInMinutes: number = 60) {
117
+ const file = bucket.file(filePath)
118
+ const [url] = await file.getSignedUrl({
119
+ action: 'read',
120
+ expires: Date.now() + expiresInMinutes * 60 * 1000,
121
+ })
122
+ return url
123
+ }
124
+ ```
125
+
126
+ ## Best Practices
127
+
128
+ ✅ **DO:**
129
+ - Use appropriate storage classes (Standard, Nearline, Coldline, Archive)
130
+ - Set blob metadata for organization
131
+ - Use signed URLs for temporary access
132
+ - Implement proper error handling
133
+ - Use appropriate content types
134
+ - Enable versioning for important data
135
+ - Monitor storage usage and costs
136
+ - Use lifecycle management policies
137
+ - Implement retry logic
138
+ - Use service account credentials
139
+
140
+ ❌ **DON'T:**
141
+ - Store sensitive data without encryption
142
+ - Make files public unnecessarily
143
+ - Hardcode credentials
144
+ - Ignore error handling
145
+ - Skip content-type validation
146
+ - Ignore lifecycle policies
147
+ - Skip access logging
148
+ - Use default permissions
149
+ - Ignore cost optimization
150
+ - Store large files without chunking
151
+
152
+ ## Configuration
153
+
154
+ ### Environment Variables
155
+ ```bash
156
+ GCP_PROJECT_ID=my-project
157
+ GCP_KEY_FILE=/path/to/service-account-key.json
158
+ GCP_CLIENT_EMAIL=service-account@project.iam.gserviceaccount.com
159
+ GCP_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\n..."
160
+ GCS_BUCKET_NAME=my-bucket
161
+ ```
162
+
163
+ ### Service Account Key
164
+ ```json
165
+ {
166
+ "type": "service_account",
167
+ "project_id": "my-project",
168
+ "private_key_id": "...",
169
+ "private_key": "-----BEGIN PRIVATE KEY-----\n...",
170
+ "client_email": "service-account@project.iam.gserviceaccount.com",
171
+ "client_id": "...",
172
+ "auth_uri": "https://accounts.google.com/o/oauth2/auth",
173
+ "token_uri": "https://oauth2.googleapis.com/token"
174
+ }
175
+ ```
176
+
177
+ <!-- GCS:END -->
178
+