@hivehub/rulebook 5.5.1 → 5.7.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 (342) hide show
  1. package/.claude/commands/rulebook-learn-capture.md +41 -48
  2. package/.claude/commands/rulebook-learn-list.md +13 -13
  3. package/README.md +332 -394
  4. package/dist/cli/commands/context-intelligence.d.ts +0 -1
  5. package/dist/cli/commands/context-intelligence.d.ts.map +1 -1
  6. package/dist/cli/commands/context-intelligence.js +12 -33
  7. package/dist/cli/commands/context-intelligence.js.map +1 -1
  8. package/dist/cli/commands/index.d.ts +4 -7
  9. package/dist/cli/commands/index.d.ts.map +1 -1
  10. package/dist/cli/commands/index.js +4 -7
  11. package/dist/cli/commands/index.js.map +1 -1
  12. package/dist/cli/commands/init.d.ts.map +1 -1
  13. package/dist/cli/commands/init.js +40 -81
  14. package/dist/cli/commands/init.js.map +1 -1
  15. package/dist/cli/commands/mcp.d.ts +0 -1
  16. package/dist/cli/commands/mcp.d.ts.map +1 -1
  17. package/dist/cli/commands/mcp.js +1 -7
  18. package/dist/cli/commands/mcp.js.map +1 -1
  19. package/dist/cli/commands/memory.d.ts +7 -1
  20. package/dist/cli/commands/memory.d.ts.map +1 -1
  21. package/dist/cli/commands/memory.js +51 -57
  22. package/dist/cli/commands/memory.js.map +1 -1
  23. package/dist/cli/commands/misc.d.ts +1 -15
  24. package/dist/cli/commands/misc.d.ts.map +1 -1
  25. package/dist/cli/commands/misc.js +36 -215
  26. package/dist/cli/commands/misc.js.map +1 -1
  27. package/dist/cli/commands/plans.d.ts +0 -6
  28. package/dist/cli/commands/plans.d.ts.map +1 -1
  29. package/dist/cli/commands/plans.js +9 -77
  30. package/dist/cli/commands/plans.js.map +1 -1
  31. package/dist/cli/commands/skills.js +6 -6
  32. package/dist/cli/commands/skills.js.map +1 -1
  33. package/dist/cli/commands/task.js +4 -4
  34. package/dist/cli/commands/task.js.map +1 -1
  35. package/dist/cli/commands/update.d.ts.map +1 -1
  36. package/dist/cli/commands/update.js +122 -52
  37. package/dist/cli/commands/update.js.map +1 -1
  38. package/dist/cli/prompts.d.ts.map +1 -1
  39. package/dist/cli/prompts.js +1 -78
  40. package/dist/cli/prompts.js.map +1 -1
  41. package/dist/core/claude/claude-mcp.d.ts +59 -0
  42. package/dist/core/claude/claude-mcp.d.ts.map +1 -0
  43. package/dist/core/claude/claude-mcp.js +220 -0
  44. package/dist/core/claude/claude-mcp.js.map +1 -0
  45. package/dist/core/claude/claude-md-generator.d.ts +52 -0
  46. package/dist/core/claude/claude-md-generator.d.ts.map +1 -0
  47. package/dist/core/claude/claude-md-generator.js +104 -0
  48. package/dist/core/claude/claude-md-generator.js.map +1 -0
  49. package/dist/core/claude/claude-settings-manager.d.ts +44 -0
  50. package/dist/core/claude/claude-settings-manager.d.ts.map +1 -0
  51. package/dist/core/claude/claude-settings-manager.js +194 -0
  52. package/dist/core/claude/claude-settings-manager.js.map +1 -0
  53. package/dist/core/claude-settings-manager.d.ts.map +1 -1
  54. package/dist/core/claude-settings-manager.js +9 -3
  55. package/dist/core/claude-settings-manager.js.map +1 -1
  56. package/dist/core/console/cli-bridge.d.ts +113 -0
  57. package/dist/core/console/cli-bridge.d.ts.map +1 -0
  58. package/dist/core/console/cli-bridge.js +1094 -0
  59. package/dist/core/console/cli-bridge.js.map +1 -0
  60. package/dist/core/detect/detector.d.ts +35 -0
  61. package/dist/core/detect/detector.d.ts.map +1 -0
  62. package/dist/core/detect/detector.js +541 -0
  63. package/dist/core/detect/detector.js.map +1 -0
  64. package/dist/core/docs/docs-generator.d.ts +9 -0
  65. package/dist/core/docs/docs-generator.d.ts.map +1 -0
  66. package/dist/core/docs/docs-generator.js +531 -0
  67. package/dist/core/docs/docs-generator.js.map +1 -0
  68. package/dist/core/docs/mcp-reference-generator.d.ts +13 -0
  69. package/dist/core/docs/mcp-reference-generator.d.ts.map +1 -0
  70. package/dist/core/docs/mcp-reference-generator.js +66 -0
  71. package/dist/core/docs/mcp-reference-generator.js.map +1 -0
  72. package/dist/core/generators/generator.d.ts +54 -0
  73. package/dist/core/generators/generator.d.ts.map +1 -0
  74. package/dist/core/generators/generator.js +1041 -0
  75. package/dist/core/generators/generator.js.map +1 -0
  76. package/dist/core/generators/gitignore-generator.d.ts +13 -0
  77. package/dist/core/generators/gitignore-generator.d.ts.map +1 -0
  78. package/dist/core/generators/gitignore-generator.js +307 -0
  79. package/dist/core/generators/gitignore-generator.js.map +1 -0
  80. package/dist/core/generators/minimal-scaffolder.d.ts +8 -0
  81. package/dist/core/generators/minimal-scaffolder.d.ts.map +1 -0
  82. package/dist/core/generators/minimal-scaffolder.js +51 -0
  83. package/dist/core/generators/minimal-scaffolder.js.map +1 -0
  84. package/dist/core/generators/rules-generator.d.ts +73 -0
  85. package/dist/core/generators/rules-generator.d.ts.map +1 -0
  86. package/dist/core/generators/rules-generator.js +202 -0
  87. package/dist/core/generators/rules-generator.js.map +1 -0
  88. package/dist/core/generators/workflow-generator.d.ts +15 -0
  89. package/dist/core/generators/workflow-generator.d.ts.map +1 -0
  90. package/dist/core/generators/workflow-generator.js +390 -0
  91. package/dist/core/generators/workflow-generator.js.map +1 -0
  92. package/dist/core/ide/multi-tool-generator.d.ts +59 -0
  93. package/dist/core/ide/multi-tool-generator.d.ts.map +1 -0
  94. package/dist/core/ide/multi-tool-generator.js +157 -0
  95. package/dist/core/ide/multi-tool-generator.js.map +1 -0
  96. package/dist/core/ide/opencode-generator.d.ts +72 -0
  97. package/dist/core/ide/opencode-generator.d.ts.map +1 -0
  98. package/dist/core/ide/opencode-generator.js +450 -0
  99. package/dist/core/ide/opencode-generator.js.map +1 -0
  100. package/dist/core/merger.d.ts +1 -1
  101. package/dist/core/merger.d.ts.map +1 -1
  102. package/dist/core/merger.js +5 -5
  103. package/dist/core/merger.js.map +1 -1
  104. package/dist/core/migrator.d.ts +0 -1
  105. package/dist/core/migrator.d.ts.map +1 -1
  106. package/dist/core/migrator.js +4 -29
  107. package/dist/core/migrator.js.map +1 -1
  108. package/dist/core/quality/coverage-checker.d.ts +14 -0
  109. package/dist/core/quality/coverage-checker.d.ts.map +1 -0
  110. package/dist/core/quality/coverage-checker.js +176 -0
  111. package/dist/core/quality/coverage-checker.js.map +1 -0
  112. package/dist/core/quality/dependency-checker.d.ts +21 -0
  113. package/dist/core/quality/dependency-checker.d.ts.map +1 -0
  114. package/dist/core/quality/dependency-checker.js +247 -0
  115. package/dist/core/quality/dependency-checker.js.map +1 -0
  116. package/dist/core/quality/doctor.d.ts +19 -0
  117. package/dist/core/quality/doctor.d.ts.map +1 -0
  118. package/dist/core/quality/doctor.js +163 -0
  119. package/dist/core/quality/doctor.js.map +1 -0
  120. package/dist/core/quality/validator.d.ts +21 -0
  121. package/dist/core/quality/validator.d.ts.map +1 -0
  122. package/dist/core/quality/validator.js +177 -0
  123. package/dist/core/quality/validator.js.map +1 -0
  124. package/dist/core/ralph-scripts.d.ts.map +1 -1
  125. package/dist/core/ralph-scripts.js +7 -6
  126. package/dist/core/ralph-scripts.js.map +1 -1
  127. package/dist/core/skills/skills-manager.d.ts +126 -0
  128. package/dist/core/skills/skills-manager.d.ts.map +1 -0
  129. package/dist/core/skills/skills-manager.js +630 -0
  130. package/dist/core/skills/skills-manager.js.map +1 -0
  131. package/dist/core/state/config-manager.d.ts +86 -0
  132. package/dist/core/state/config-manager.d.ts.map +1 -0
  133. package/dist/core/state/config-manager.js +562 -0
  134. package/dist/core/state/config-manager.js.map +1 -0
  135. package/dist/core/state/override-manager.d.ts +23 -0
  136. package/dist/core/state/override-manager.d.ts.map +1 -0
  137. package/dist/core/state/override-manager.js +82 -0
  138. package/dist/core/state/override-manager.js.map +1 -0
  139. package/dist/core/state/state-writer.d.ts +34 -0
  140. package/dist/core/state/state-writer.d.ts.map +1 -0
  141. package/dist/core/state/state-writer.js +78 -0
  142. package/dist/core/state/state-writer.js.map +1 -0
  143. package/dist/core/state/version-bumper.d.ts +19 -0
  144. package/dist/core/state/version-bumper.d.ts.map +1 -0
  145. package/dist/core/state/version-bumper.js +180 -0
  146. package/dist/core/state/version-bumper.js.map +1 -0
  147. package/dist/core/tasks/decision-manager.d.ts +25 -0
  148. package/dist/core/tasks/decision-manager.d.ts.map +1 -0
  149. package/dist/core/tasks/decision-manager.js +183 -0
  150. package/dist/core/tasks/decision-manager.js.map +1 -0
  151. package/dist/core/tasks/knowledge-manager.d.ts +24 -0
  152. package/dist/core/tasks/knowledge-manager.d.ts.map +1 -0
  153. package/dist/core/tasks/knowledge-manager.js +173 -0
  154. package/dist/core/tasks/knowledge-manager.js.map +1 -0
  155. package/dist/core/tasks/learn-manager.d.ts +27 -0
  156. package/dist/core/tasks/learn-manager.d.ts.map +1 -0
  157. package/dist/core/tasks/learn-manager.js +121 -0
  158. package/dist/core/tasks/learn-manager.js.map +1 -0
  159. package/dist/core/tasks/plans-manager.d.ts +46 -0
  160. package/dist/core/tasks/plans-manager.d.ts.map +1 -0
  161. package/dist/core/tasks/plans-manager.js +158 -0
  162. package/dist/core/tasks/plans-manager.js.map +1 -0
  163. package/dist/core/tasks/task-manager.d.ts +127 -0
  164. package/dist/core/tasks/task-manager.d.ts.map +1 -0
  165. package/dist/core/tasks/task-manager.js +607 -0
  166. package/dist/core/tasks/task-manager.js.map +1 -0
  167. package/dist/core/workspace/project-worker.d.ts +6 -6
  168. package/dist/core/workspace/project-worker.d.ts.map +1 -1
  169. package/dist/core/workspace/project-worker.js +6 -6
  170. package/dist/core/workspace/project-worker.js.map +1 -1
  171. package/dist/index.d.ts +1 -1
  172. package/dist/index.d.ts.map +1 -1
  173. package/dist/index.js +19 -176
  174. package/dist/index.js.map +1 -1
  175. package/dist/mcp/rulebook-server.d.ts.map +1 -1
  176. package/dist/mcp/rulebook-server.js +16 -960
  177. package/dist/mcp/rulebook-server.js.map +1 -1
  178. package/dist/memory/file-search.d.ts +43 -0
  179. package/dist/memory/file-search.d.ts.map +1 -0
  180. package/dist/memory/file-search.js +228 -0
  181. package/dist/memory/file-search.js.map +1 -0
  182. package/dist/memory/file-store.d.ts +99 -0
  183. package/dist/memory/file-store.d.ts.map +1 -0
  184. package/dist/memory/file-store.js +615 -0
  185. package/dist/memory/file-store.js.map +1 -0
  186. package/dist/memory/legacy-migrator.d.ts +27 -0
  187. package/dist/memory/legacy-migrator.d.ts.map +1 -0
  188. package/dist/memory/legacy-migrator.js +185 -0
  189. package/dist/memory/legacy-migrator.js.map +1 -0
  190. package/dist/memory/memory-manager.d.ts +25 -24
  191. package/dist/memory/memory-manager.d.ts.map +1 -1
  192. package/dist/memory/memory-manager.js +97 -140
  193. package/dist/memory/memory-manager.js.map +1 -1
  194. package/dist/memory/memory-types.d.ts +1 -1
  195. package/dist/memory/memory-types.d.ts.map +1 -1
  196. package/dist/types.d.ts +8 -119
  197. package/dist/types.d.ts.map +1 -1
  198. package/dist/utils/file-system.d.ts +22 -0
  199. package/dist/utils/file-system.d.ts.map +1 -1
  200. package/dist/utils/file-system.js +31 -0
  201. package/dist/utils/file-system.js.map +1 -1
  202. package/dist/utils/git-hooks.d.ts.map +1 -1
  203. package/dist/utils/git-hooks.js +3 -2
  204. package/dist/utils/git-hooks.js.map +1 -1
  205. package/package.json +2 -6
  206. package/templates/agents/context-intelligence.md +50 -52
  207. package/templates/cli/OPENCODE.md +85 -18
  208. package/templates/commands/rulebook-learn-capture.md +41 -48
  209. package/templates/commands/rulebook-learn-list.md +13 -13
  210. package/templates/core/AGENTS_LEAN.md +0 -14
  211. package/templates/hooks/check-context-and-handoff.sh +74 -76
  212. package/templates/hooks/enforce-pre-tool.sh +70 -0
  213. package/templates/hooks/enforce-team-for-background-agents.sh +55 -55
  214. package/templates/hooks/on-compact-reinject.sh +34 -34
  215. package/templates/hooks/resume-from-handoff.sh +61 -61
  216. package/templates/hooks/terse-activate.sh +197 -197
  217. package/templates/hooks/terse-mode-tracker.sh +190 -187
  218. package/templates/ides/OPENCODE.md +63 -0
  219. package/templates/skills/cli/opencode/SKILL.md +82 -28
  220. package/.claude/commands/ralph-config.md +0 -112
  221. package/.claude/commands/ralph-history.md +0 -110
  222. package/.claude/commands/ralph-init.md +0 -72
  223. package/.claude/commands/ralph-pause-resume.md +0 -105
  224. package/.claude/commands/ralph-run.md +0 -101
  225. package/.claude/commands/ralph-status.md +0 -76
  226. package/templates/core/RALPH.md +0 -471
  227. package/templates/frameworks/ANGULAR.md +0 -36
  228. package/templates/frameworks/DJANGO.md +0 -83
  229. package/templates/frameworks/ELECTRON.md +0 -147
  230. package/templates/frameworks/FLASK.md +0 -38
  231. package/templates/frameworks/FLUTTER.md +0 -55
  232. package/templates/frameworks/JQUERY.md +0 -32
  233. package/templates/frameworks/LARAVEL.md +0 -38
  234. package/templates/frameworks/NESTJS.md +0 -43
  235. package/templates/frameworks/NEXTJS.md +0 -127
  236. package/templates/frameworks/NUXT.md +0 -40
  237. package/templates/frameworks/RAILS.md +0 -66
  238. package/templates/frameworks/REACT.md +0 -38
  239. package/templates/frameworks/REACT_NATIVE.md +0 -47
  240. package/templates/frameworks/SPRING.md +0 -39
  241. package/templates/frameworks/SYMFONY.md +0 -36
  242. package/templates/frameworks/VUE.md +0 -36
  243. package/templates/frameworks/ZEND.md +0 -35
  244. package/templates/hooks/enforce-mcp-for-tasks.sh +0 -31
  245. package/templates/hooks/enforce-no-deferred.sh +0 -21
  246. package/templates/hooks/enforce-no-shortcuts.sh +0 -31
  247. package/templates/ides/COPILOT.md +0 -37
  248. package/templates/ides/CURSOR.md +0 -43
  249. package/templates/ides/JETBRAINS_AI.md +0 -35
  250. package/templates/ides/REPLIT.md +0 -36
  251. package/templates/ides/TABNINE.md +0 -29
  252. package/templates/ides/VSCODE.md +0 -40
  253. package/templates/ides/WINDSURF.md +0 -36
  254. package/templates/ides/ZED.md +0 -32
  255. package/templates/ides/cursor-mdc/go.mdc +0 -24
  256. package/templates/ides/cursor-mdc/python.mdc +0 -24
  257. package/templates/ides/cursor-mdc/quality.mdc +0 -25
  258. package/templates/ides/cursor-mdc/ralph.mdc +0 -39
  259. package/templates/ides/cursor-mdc/rulebook.mdc +0 -38
  260. package/templates/ides/cursor-mdc/rust.mdc +0 -24
  261. package/templates/ides/cursor-mdc/typescript.mdc +0 -25
  262. package/templates/ralph/ralph-history.bat +0 -4
  263. package/templates/ralph/ralph-history.sh +0 -5
  264. package/templates/ralph/ralph-init.bat +0 -5
  265. package/templates/ralph/ralph-init.sh +0 -5
  266. package/templates/ralph/ralph-pause.bat +0 -5
  267. package/templates/ralph/ralph-pause.sh +0 -5
  268. package/templates/ralph/ralph-run.bat +0 -5
  269. package/templates/ralph/ralph-run.sh +0 -5
  270. package/templates/ralph/ralph-status.bat +0 -4
  271. package/templates/ralph/ralph-status.sh +0 -5
  272. package/templates/services/AZURE_BLOB.md +0 -184
  273. package/templates/services/CASSANDRA.md +0 -239
  274. package/templates/services/DATADOG.md +0 -26
  275. package/templates/services/DOCKER.md +0 -124
  276. package/templates/services/DOCKER_COMPOSE.md +0 -168
  277. package/templates/services/DYNAMODB.md +0 -308
  278. package/templates/services/ELASTICSEARCH.md +0 -347
  279. package/templates/services/GCS.md +0 -178
  280. package/templates/services/HELM.md +0 -194
  281. package/templates/services/INFLUXDB.md +0 -265
  282. package/templates/services/KAFKA.md +0 -341
  283. package/templates/services/KUBERNETES.md +0 -208
  284. package/templates/services/MARIADB.md +0 -183
  285. package/templates/services/MEMCACHED.md +0 -242
  286. package/templates/services/MINIO.md +0 -201
  287. package/templates/services/MONGODB.md +0 -268
  288. package/templates/services/MYSQL.md +0 -358
  289. package/templates/services/NEO4J.md +0 -247
  290. package/templates/services/OPENTELEMETRY.md +0 -25
  291. package/templates/services/ORACLE.md +0 -290
  292. package/templates/services/PINO.md +0 -24
  293. package/templates/services/POSTGRESQL.md +0 -326
  294. package/templates/services/PROMETHEUS.md +0 -33
  295. package/templates/services/RABBITMQ.md +0 -286
  296. package/templates/services/REDIS.md +0 -292
  297. package/templates/services/S3.md +0 -298
  298. package/templates/services/SENTRY.md +0 -23
  299. package/templates/services/SQLITE.md +0 -294
  300. package/templates/services/SQLSERVER.md +0 -294
  301. package/templates/services/WINSTON.md +0 -30
  302. package/templates/skills/frameworks/angular/SKILL.md +0 -46
  303. package/templates/skills/frameworks/django/SKILL.md +0 -93
  304. package/templates/skills/frameworks/electron/SKILL.md +0 -157
  305. package/templates/skills/frameworks/flask/SKILL.md +0 -48
  306. package/templates/skills/frameworks/flutter/SKILL.md +0 -65
  307. package/templates/skills/frameworks/jquery/SKILL.md +0 -42
  308. package/templates/skills/frameworks/laravel/SKILL.md +0 -48
  309. package/templates/skills/frameworks/nestjs/SKILL.md +0 -53
  310. package/templates/skills/frameworks/nextjs/SKILL.md +0 -137
  311. package/templates/skills/frameworks/nuxt/SKILL.md +0 -50
  312. package/templates/skills/frameworks/rails/SKILL.md +0 -76
  313. package/templates/skills/frameworks/react/SKILL.md +0 -48
  314. package/templates/skills/frameworks/react-native/SKILL.md +0 -57
  315. package/templates/skills/frameworks/spring/SKILL.md +0 -49
  316. package/templates/skills/frameworks/symfony/SKILL.md +0 -46
  317. package/templates/skills/frameworks/vue/SKILL.md +0 -46
  318. package/templates/skills/frameworks/zend/SKILL.md +0 -45
  319. package/templates/skills/services/azure-blob/SKILL.md +0 -194
  320. package/templates/skills/services/cassandra/SKILL.md +0 -249
  321. package/templates/skills/services/dynamodb/SKILL.md +0 -318
  322. package/templates/skills/services/elasticsearch/SKILL.md +0 -357
  323. package/templates/skills/services/gcs/SKILL.md +0 -188
  324. package/templates/skills/services/influxdb/SKILL.md +0 -275
  325. package/templates/skills/services/kafka/SKILL.md +0 -351
  326. package/templates/skills/services/mariadb/SKILL.md +0 -193
  327. package/templates/skills/services/memcached/SKILL.md +0 -252
  328. package/templates/skills/services/minio/SKILL.md +0 -211
  329. package/templates/skills/services/mongodb/SKILL.md +0 -278
  330. package/templates/skills/services/mysql/SKILL.md +0 -368
  331. package/templates/skills/services/neo4j/SKILL.md +0 -257
  332. package/templates/skills/services/oracle/SKILL.md +0 -300
  333. package/templates/skills/services/postgresql/SKILL.md +0 -336
  334. package/templates/skills/services/rabbitmq/SKILL.md +0 -296
  335. package/templates/skills/services/redis/SKILL.md +0 -302
  336. package/templates/skills/services/s3/SKILL.md +0 -308
  337. package/templates/skills/services/sqlite/SKILL.md +0 -304
  338. package/templates/skills/services/sqlserver/SKILL.md +0 -304
  339. package/templates/skills/workflows/ralph/SETUP.md +0 -228
  340. package/templates/skills/workflows/ralph/SKILL.md +0 -309
  341. package/templates/skills/workflows/ralph/install.sh +0 -87
  342. package/templates/skills/workflows/ralph/manifest.json +0 -158
@@ -1,347 +0,0 @@
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
-
@@ -1,178 +0,0 @@
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
-
@@ -1,194 +0,0 @@
1
- <!-- HELM:START -->
2
- # Helm Instructions
3
-
4
- **CRITICAL**: Follow these Helm best practices for Kubernetes package management.
5
-
6
- ## Chart Structure
7
-
8
- ```
9
- charts/<name>/
10
- ├── Chart.yaml # Chart metadata (required)
11
- ├── values.yaml # Default values (required)
12
- ├── templates/ # Kubernetes manifests
13
- │ ├── deployment.yaml
14
- │ ├── service.yaml
15
- │ ├── ingress.yaml
16
- │ ├── configmap.yaml
17
- │ ├── secret.yaml
18
- │ ├── hpa.yaml
19
- │ ├── _helpers.tpl # Template helpers
20
- │ ├── NOTES.txt # Post-install notes
21
- │ └── tests/
22
- │ └── test-connection.yaml
23
- ├── charts/ # Chart dependencies
24
- └── .helmignore # Files to exclude from packaging
25
- ```
26
-
27
- ## Chart.yaml Requirements
28
-
29
- ```yaml
30
- apiVersion: v2
31
- name: my-app
32
- description: A Helm chart for my application
33
- type: application
34
- version: 1.0.0 # Chart version (bump on every change)
35
- appVersion: "1.0.0" # Application version (keep in sync)
36
- maintainers:
37
- - name: team-name
38
- email: team@example.com
39
- dependencies:
40
- - name: postgresql
41
- version: "12.x.x"
42
- repository: "https://charts.bitnami.com/bitnami"
43
- condition: postgresql.enabled
44
- ```
45
-
46
- ## values.yaml Requirements
47
-
48
- - Document every value with a comment
49
- - Set sensible production defaults
50
- - Never hardcode image tags
51
-
52
- ```yaml
53
- # -- Number of replicas
54
- replicaCount: 3
55
-
56
- image:
57
- # -- Container image repository
58
- repository: my-registry/my-app
59
- # -- Image pull policy
60
- pullPolicy: IfNotPresent
61
- # -- Image tag (defaults to chart appVersion)
62
- tag: ""
63
-
64
- # -- Resource requests and limits
65
- resources:
66
- requests:
67
- memory: "128Mi"
68
- cpu: "100m"
69
- limits:
70
- memory: "512Mi"
71
- cpu: "500m"
72
-
73
- # -- Enable/disable autoscaling
74
- autoscaling:
75
- enabled: true
76
- minReplicas: 2
77
- maxReplicas: 10
78
- targetCPUUtilizationPercentage: 80
79
-
80
- # -- Service configuration
81
- service:
82
- type: ClusterIP
83
- port: 80
84
-
85
- # -- Ingress configuration
86
- ingress:
87
- enabled: false
88
- className: ""
89
- annotations: {}
90
- hosts:
91
- - host: my-app.example.com
92
- paths:
93
- - path: /
94
- pathType: ImplementationSpecific
95
- ```
96
-
97
- ## Template Best Practices
98
-
99
- ### _helpers.tpl
100
- Define reusable template fragments:
101
- ```yaml
102
- {{- define "chart.fullname" -}}
103
- {{- if .Values.fullnameOverride }}
104
- {{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
105
- {{- else }}
106
- {{- $name := default .Chart.Name .Values.nameOverride }}
107
- {{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
108
- {{- end }}
109
- {{- end }}
110
-
111
- {{- define "chart.labels" -}}
112
- helm.sh/chart: {{ include "chart.chart" . }}
113
- app.kubernetes.io/name: {{ include "chart.name" . }}
114
- app.kubernetes.io/instance: {{ .Release.Name }}
115
- app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
116
- app.kubernetes.io/managed-by: {{ .Release.Service }}
117
- {{- end }}
118
-
119
- {{- define "chart.selectorLabels" -}}
120
- app.kubernetes.io/name: {{ include "chart.name" . }}
121
- app.kubernetes.io/instance: {{ .Release.Name }}
122
- {{- end }}
123
- ```
124
-
125
- ### Template Patterns
126
- - Use `{{ include "chart.fullname" . }}` for consistent naming
127
- - Always add labels: `{{ include "chart.labels" . | nindent 4 }}`
128
- - Use `{{ .Values.x | default "fallback" }}` for optional values
129
- - Use `{{- with .Values.x }}` blocks for conditional sections
130
- - Quote all string values: `{{ .Values.image.tag | quote }}`
131
-
132
- ## Versioning
133
-
134
- - Bump `Chart.yaml` version on every change (semver: MAJOR.MINOR.PATCH)
135
- - Keep `appVersion` in sync with the application version
136
- - Use `helm dependency update` after changing dependencies
137
- - Tag releases in version control matching chart version
138
-
139
- ## Linting and Validation
140
-
141
- Run these checks before every commit:
142
- ```bash
143
- # Lint the chart
144
- helm lint charts/my-app/
145
-
146
- # Render templates locally
147
- helm template my-release charts/my-app/ --values values-dev.yaml
148
-
149
- # Validate rendered templates
150
- helm template my-release charts/my-app/ | kubeval --strict
151
-
152
- # Dry-run against cluster
153
- helm install my-release charts/my-app/ --dry-run --debug
154
- ```
155
-
156
- ## Common Patterns
157
-
158
- ### Environment-Specific Values
159
- ```bash
160
- # Development
161
- helm install my-app charts/my-app/ -f values-dev.yaml
162
-
163
- # Staging
164
- helm install my-app charts/my-app/ -f values-staging.yaml
165
-
166
- # Production
167
- helm install my-app charts/my-app/ -f values-prod.yaml
168
- ```
169
-
170
- ### Secrets Management
171
- ```yaml
172
- # Use external-secrets or sealed-secrets
173
- # Never store plaintext secrets in values.yaml
174
- externalSecrets:
175
- enabled: true
176
- secretStore: aws-secrets-manager
177
- data:
178
- - secretKey: DATABASE_URL
179
- remoteRef:
180
- key: /myapp/database-url
181
- ```
182
-
183
- ## Best Practices
184
-
185
- - Use `helm create` to scaffold new charts with best-practice defaults
186
- - Include chart tests in `templates/tests/`
187
- - Document all values in `values.yaml` with comments
188
- - Use `.helmignore` to exclude development files from chart packages
189
- - Pin dependency versions (avoid `*` or floating ranges)
190
- - Use `helm diff` plugin to preview changes before upgrading
191
- - Store charts in a Helm repository (ChartMuseum, Harbor, OCI registry)
192
- - Run `helm lint` in CI/CD pipeline
193
-
194
- <!-- HELM:END -->