oh-my-agent-commandcode 0.0.0-stage → 20.38.4

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 (334) hide show
  1. package/README.md +35 -2
  2. package/filter-test-output.sh +52 -0
  3. package/mods/oma.ts +347 -0
  4. package/package.json +30 -4
  5. package/skills/_shared/conditional/experiment-ledger.md +28 -0
  6. package/skills/_shared/conditional/exploration-loop.md +22 -0
  7. package/skills/_shared/conditional/quality-score.md +33 -0
  8. package/skills/_shared/core/anti-ai-prose.md +191 -0
  9. package/skills/_shared/core/api-contracts/README.md +28 -0
  10. package/skills/_shared/core/api-contracts/template.md +90 -0
  11. package/skills/_shared/core/clarification-protocol.md +23 -0
  12. package/skills/_shared/core/code-intelligence.md +46 -0
  13. package/skills/_shared/core/collaboration-policy.md +28 -0
  14. package/skills/_shared/core/common-checklist.md +28 -0
  15. package/skills/_shared/core/context-budget.md +22 -0
  16. package/skills/_shared/core/context-loading.md +34 -0
  17. package/skills/_shared/core/difficulty-guide.md +26 -0
  18. package/skills/_shared/core/execution-policy.md +31 -0
  19. package/skills/_shared/core/lessons-learned.md +33 -0
  20. package/skills/_shared/core/prompt-structure.md +18 -0
  21. package/skills/_shared/core/quality-principles.md +11 -0
  22. package/skills/_shared/core/session-metrics.md +35 -0
  23. package/skills/_shared/core/skill-routing.md +39 -0
  24. package/skills/_shared/core/test-approach.md +54 -0
  25. package/skills/_shared/core/vendor-detection.md +52 -0
  26. package/skills/_shared/runtime/memory-protocol.md +118 -0
  27. package/skills/_shared/runtime/result-contract.md +64 -0
  28. package/skills/_shared/ui-interaction-quality.md +133 -0
  29. package/skills/oma-academic-writing/SKILL.md +181 -0
  30. package/skills/oma-academic-writing/resources/abstract-guide.md +51 -0
  31. package/skills/oma-academic-writing/resources/academic-verb-tiers.md +42 -0
  32. package/skills/oma-academic-writing/resources/anti-ai-checklist.md +52 -0
  33. package/skills/oma-academic-writing/resources/hedging-guide.md +132 -0
  34. package/skills/oma-academic-writing/resources/sentence-structure-reference.md +151 -0
  35. package/skills/oma-architecture/SKILL.md +203 -0
  36. package/skills/oma-architecture/resources/api-evolution.md +41 -0
  37. package/skills/oma-architecture/resources/checklist.md +42 -0
  38. package/skills/oma-architecture/resources/execution-protocol.md +115 -0
  39. package/skills/oma-architecture/resources/methodology-selection.md +92 -0
  40. package/skills/oma-architecture/resources/migration-patterns.md +28 -0
  41. package/skills/oma-architecture/resources/output-templates.md +111 -0
  42. package/skills/oma-architecture/resources/stakeholder-synthesis.md +80 -0
  43. package/skills/oma-backend/SKILL.md +202 -0
  44. package/skills/oma-backend/resources/checklist.md +45 -0
  45. package/skills/oma-backend/resources/error-playbook.md +97 -0
  46. package/skills/oma-backend/resources/execution-protocol.md +39 -0
  47. package/skills/oma-backend/resources/orm-reference.md +61 -0
  48. package/skills/oma-backend/variants/node/api-template.ts +315 -0
  49. package/skills/oma-backend/variants/node/snippets.md +475 -0
  50. package/skills/oma-backend/variants/node/stack.yaml +21 -0
  51. package/skills/oma-backend/variants/node/tech-stack.md +33 -0
  52. package/skills/oma-backend/variants/python/api-template.py +378 -0
  53. package/skills/oma-backend/variants/python/snippets.md +199 -0
  54. package/skills/oma-backend/variants/python/stack.yaml +18 -0
  55. package/skills/oma-backend/variants/python/tech-stack.md +45 -0
  56. package/skills/oma-backend/variants/rust/api-template.rs +635 -0
  57. package/skills/oma-backend/variants/rust/snippets.md +471 -0
  58. package/skills/oma-backend/variants/rust/stack.yaml +20 -0
  59. package/skills/oma-backend/variants/rust/tech-stack.md +36 -0
  60. package/skills/oma-backend/variants/stack.schema.json +73 -0
  61. package/skills/oma-brainstorm/SKILL.md +166 -0
  62. package/skills/oma-brainstorm/resources/triz-lite.md +117 -0
  63. package/skills/oma-coordination/SKILL.md +171 -0
  64. package/skills/oma-db/SKILL.md +201 -0
  65. package/skills/oma-db/resources/anti-patterns.md +177 -0
  66. package/skills/oma-db/resources/checklist.md +67 -0
  67. package/skills/oma-db/resources/document-templates.md +107 -0
  68. package/skills/oma-db/resources/error-playbook.md +50 -0
  69. package/skills/oma-db/resources/examples.md +170 -0
  70. package/skills/oma-db/resources/execution-protocol.md +127 -0
  71. package/skills/oma-db/resources/iso-controls.md +98 -0
  72. package/skills/oma-db/resources/migration-playbook.md +93 -0
  73. package/skills/oma-db/resources/query-tuning.md +57 -0
  74. package/skills/oma-db/resources/vector-db.md +159 -0
  75. package/skills/oma-debug/SKILL.md +146 -0
  76. package/skills/oma-debug/resources/bug-report-template.md +327 -0
  77. package/skills/oma-debug/resources/checklist.md +31 -0
  78. package/skills/oma-debug/resources/common-patterns.md +734 -0
  79. package/skills/oma-debug/resources/debugging-checklist.md +364 -0
  80. package/skills/oma-debug/resources/error-playbook.md +94 -0
  81. package/skills/oma-debug/resources/execution-protocol.md +40 -0
  82. package/skills/oma-design/SKILL.md +135 -0
  83. package/skills/oma-design/resources/asset-strategy.md +34 -0
  84. package/skills/oma-design/resources/checklist.md +63 -0
  85. package/skills/oma-design/resources/data-grid.md +48 -0
  86. package/skills/oma-design/resources/design-md-spec.md +107 -0
  87. package/skills/oma-design/resources/design-tokens.md +53 -0
  88. package/skills/oma-design/resources/error-playbook.md +18 -0
  89. package/skills/oma-design/resources/execution-protocol.md +95 -0
  90. package/skills/oma-design/resources/external-design-skills.md +130 -0
  91. package/skills/oma-design/resources/getdesign-fetcher.md +104 -0
  92. package/skills/oma-design/resources/product-interface-review.md +59 -0
  93. package/skills/oma-design/resources/redesign-protocol.md +52 -0
  94. package/skills/oma-design/resources/stitch-integration.md +244 -0
  95. package/skills/oma-dev-workflow/SKILL.md +375 -0
  96. package/skills/oma-dev-workflow/resources/affected-checks.py +58 -0
  97. package/skills/oma-dev-workflow/resources/api-workflows.md +58 -0
  98. package/skills/oma-dev-workflow/resources/database-patterns.md +107 -0
  99. package/skills/oma-dev-workflow/resources/i18n-patterns.md +63 -0
  100. package/skills/oma-dev-workflow/resources/release-coordination.md +240 -0
  101. package/skills/oma-dev-workflow/resources/tooling-profiles.md +217 -0
  102. package/skills/oma-dev-workflow/resources/troubleshooting.md +78 -0
  103. package/skills/oma-dev-workflow/resources/validation-pipeline.md +246 -0
  104. package/skills/oma-docs/SKILL.md +77 -0
  105. package/skills/oma-docs/resources/commands.md +76 -0
  106. package/skills/oma-explanation/SKILL.md +212 -0
  107. package/skills/oma-explanation/resources/document-structure.md +115 -0
  108. package/skills/oma-explanation/resources/draft-format.md +199 -0
  109. package/skills/oma-explanation/resources/html-contract.md +102 -0
  110. package/skills/oma-frontend/SKILL.md +227 -0
  111. package/skills/oma-frontend/resources/angular-rules.md +110 -0
  112. package/skills/oma-frontend/resources/checklist.md +76 -0
  113. package/skills/oma-frontend/resources/error-playbook.md +125 -0
  114. package/skills/oma-frontend/resources/execution-protocol.md +46 -0
  115. package/skills/oma-frontend/resources/snippets.md +354 -0
  116. package/skills/oma-frontend/resources/specialized-visual-implementation.md +193 -0
  117. package/skills/oma-frontend/resources/tailwind-rules.md +83 -0
  118. package/skills/oma-frontend/resources/tech-stack.md +156 -0
  119. package/skills/oma-hwp/SKILL.md +166 -0
  120. package/skills/oma-hwp/config/hwp-config.yaml +35 -0
  121. package/skills/oma-hwp/resources/balanced-tables.ts +39 -0
  122. package/skills/oma-hwp/resources/execution-protocol.md +145 -0
  123. package/skills/oma-hwp/resources/flatten-tables.ts +101 -0
  124. package/skills/oma-hwp/resources/package.json +13 -0
  125. package/skills/oma-hwp/resources/troubleshooting.md +70 -0
  126. package/skills/oma-hwp/resources/tsconfig.json +10 -0
  127. package/skills/oma-hwp/resources/turndown-plugin-gfm.d.ts +9 -0
  128. package/skills/oma-image/SKILL.md +142 -0
  129. package/skills/oma-image/config/image-config.yaml +70 -0
  130. package/skills/oma-image/resources/checklist.md +18 -0
  131. package/skills/oma-image/resources/execution-protocol.md +117 -0
  132. package/skills/oma-image/resources/invocation.md +105 -0
  133. package/skills/oma-image/resources/prompt-tips.md +71 -0
  134. package/skills/oma-image/resources/vendor-matrix.md +90 -0
  135. package/skills/oma-market/SKILL.md +142 -0
  136. package/skills/oma-market/resources/checklist.md +12 -0
  137. package/skills/oma-market/resources/error-playbook.md +12 -0
  138. package/skills/oma-market/resources/execution-protocol.md +60 -0
  139. package/skills/oma-market/resources/frameworks/pestel.md +101 -0
  140. package/skills/oma-market/resources/frameworks/porters-5f.md +90 -0
  141. package/skills/oma-market/resources/frameworks/swot.md +61 -0
  142. package/skills/oma-market/resources/intent-rules.md +35 -0
  143. package/skills/oma-market/resources/output-laws.md +53 -0
  144. package/skills/oma-mobile/SKILL.md +168 -0
  145. package/skills/oma-mobile/resources/checklist.md +77 -0
  146. package/skills/oma-mobile/resources/error-playbook.md +198 -0
  147. package/skills/oma-mobile/resources/execution-protocol.md +47 -0
  148. package/skills/oma-mobile/resources/screen-template.dart +331 -0
  149. package/skills/oma-mobile/resources/screen-template.swift +239 -0
  150. package/skills/oma-mobile/resources/screen-template.tsx +179 -0
  151. package/skills/oma-mobile/resources/tech-stack.md +69 -0
  152. package/skills/oma-mobile/variants/README.md +45 -0
  153. package/skills/oma-mobile/variants/flutter/api-template.dart +461 -0
  154. package/skills/oma-mobile/variants/flutter/snippets.md +1353 -0
  155. package/skills/oma-mobile/variants/flutter/stack.yaml +21 -0
  156. package/skills/oma-mobile/variants/flutter/tech-stack.md +201 -0
  157. package/skills/oma-mobile/variants/kotlin-android/api-template.kt +182 -0
  158. package/skills/oma-mobile/variants/kotlin-android/snippets.md +871 -0
  159. package/skills/oma-mobile/variants/kotlin-android/stack.yaml +32 -0
  160. package/skills/oma-mobile/variants/kotlin-android/tech-stack.md +159 -0
  161. package/skills/oma-mobile/variants/react-native/api-template.ts +531 -0
  162. package/skills/oma-mobile/variants/react-native/snippets.md +1014 -0
  163. package/skills/oma-mobile/variants/react-native/stack.yaml +22 -0
  164. package/skills/oma-mobile/variants/react-native/tech-stack.md +192 -0
  165. package/skills/oma-mobile/variants/stack.schema.json +68 -0
  166. package/skills/oma-mobile/variants/swift-ios/api-template.swift +165 -0
  167. package/skills/oma-mobile/variants/swift-ios/snippets.md +1028 -0
  168. package/skills/oma-mobile/variants/swift-ios/stack.yaml +25 -0
  169. package/skills/oma-mobile/variants/swift-ios/tech-stack.md +174 -0
  170. package/skills/oma-observability/SKILL.md +225 -0
  171. package/skills/oma-observability/resources/anti-patterns.md +555 -0
  172. package/skills/oma-observability/resources/boundaries/cross-application.md +348 -0
  173. package/skills/oma-observability/resources/boundaries/multi-tenant.md +290 -0
  174. package/skills/oma-observability/resources/boundaries/release.md +372 -0
  175. package/skills/oma-observability/resources/boundaries/slo.md +225 -0
  176. package/skills/oma-observability/resources/checklist.md +123 -0
  177. package/skills/oma-observability/resources/examples.md +448 -0
  178. package/skills/oma-observability/resources/execution-protocol.md +166 -0
  179. package/skills/oma-observability/resources/incident-forensics.md +348 -0
  180. package/skills/oma-observability/resources/intent-rules.md +307 -0
  181. package/skills/oma-observability/resources/layers/L3-network.md +281 -0
  182. package/skills/oma-observability/resources/layers/L4-transport.md +299 -0
  183. package/skills/oma-observability/resources/layers/L7-application/crash-analytics.md +359 -0
  184. package/skills/oma-observability/resources/layers/L7-application/mobile-rum.md +278 -0
  185. package/skills/oma-observability/resources/layers/L7-application/waf.md +246 -0
  186. package/skills/oma-observability/resources/layers/L7-application/web-rum.md +350 -0
  187. package/skills/oma-observability/resources/layers/mesh.md +368 -0
  188. package/skills/oma-observability/resources/matrix.md +177 -0
  189. package/skills/oma-observability/resources/meta-observability.md +605 -0
  190. package/skills/oma-observability/resources/observability-as-code.md +666 -0
  191. package/skills/oma-observability/resources/signals/audit.md +310 -0
  192. package/skills/oma-observability/resources/signals/cost.md +303 -0
  193. package/skills/oma-observability/resources/signals/logs.md +263 -0
  194. package/skills/oma-observability/resources/signals/metrics.md +478 -0
  195. package/skills/oma-observability/resources/signals/privacy.md +351 -0
  196. package/skills/oma-observability/resources/signals/profiles.md +245 -0
  197. package/skills/oma-observability/resources/signals/traces.md +360 -0
  198. package/skills/oma-observability/resources/standards.md +214 -0
  199. package/skills/oma-observability/resources/transport/collector-topology.md +308 -0
  200. package/skills/oma-observability/resources/transport/otlp-grpc-vs-http.md +256 -0
  201. package/skills/oma-observability/resources/transport/sampling-recipes.md +297 -0
  202. package/skills/oma-observability/resources/transport/udp-statsd-mtu.md +167 -0
  203. package/skills/oma-observability/resources/vendor-categories.md +352 -0
  204. package/skills/oma-orchestration/SKILL.md +302 -0
  205. package/skills/oma-orchestration/config/cli-config.yaml +92 -0
  206. package/skills/oma-orchestration/resources/memory-schema.md +232 -0
  207. package/skills/oma-orchestration/resources/subagent-prompt-template.md +30 -0
  208. package/skills/oma-orchestration/scripts/parallel-run.sh +6 -0
  209. package/skills/oma-orchestration/scripts/spawn-agent.sh +5 -0
  210. package/skills/oma-orchestration/scripts/verify.sh +20 -0
  211. package/skills/oma-orchestration/templates/backend-task.md +19 -0
  212. package/skills/oma-orchestration/templates/debug-task.md +16 -0
  213. package/skills/oma-orchestration/templates/frontend-task.md +18 -0
  214. package/skills/oma-orchestration/templates/mobile-task.md +18 -0
  215. package/skills/oma-orchestration/templates/qa-task.md +16 -0
  216. package/skills/oma-orchestration/templates/tasks-example.yaml +15 -0
  217. package/skills/oma-pdf/SKILL.md +162 -0
  218. package/skills/oma-pdf/config/pdf-config.yaml +27 -0
  219. package/skills/oma-pdf/resources/execution-protocol.md +127 -0
  220. package/skills/oma-pm/SKILL.md +157 -0
  221. package/skills/oma-pm/resources/error-playbook.md +75 -0
  222. package/skills/oma-pm/resources/examples.md +439 -0
  223. package/skills/oma-pm/resources/execution-protocol.md +62 -0
  224. package/skills/oma-pm/resources/iso-planning.md +110 -0
  225. package/skills/oma-pm/resources/plan-phase-protocol.md +66 -0
  226. package/skills/oma-pm/resources/task-template.json +86 -0
  227. package/skills/oma-qa/SKILL.md +141 -0
  228. package/skills/oma-qa/resources/checklist.md +339 -0
  229. package/skills/oma-qa/resources/error-playbook.md +98 -0
  230. package/skills/oma-qa/resources/execution-protocol.md +169 -0
  231. package/skills/oma-qa/resources/iso-quality.md +82 -0
  232. package/skills/oma-qa/resources/verify-ship-protocol.md +116 -0
  233. package/skills/oma-recap/SKILL.md +245 -0
  234. package/skills/oma-recap/resources/output-formats.md +83 -0
  235. package/skills/oma-refactor/SKILL.md +184 -0
  236. package/skills/oma-refactor/resources/definition.md +108 -0
  237. package/skills/oma-refactor/resources/governance.md +33 -0
  238. package/skills/oma-refactor/resources/hotspots.py +44 -0
  239. package/skills/oma-refactor/resources/measurement.md +93 -0
  240. package/skills/oma-scholar/SKILL.md +276 -0
  241. package/skills/oma-scholar/config/scholar-config.yaml +79 -0
  242. package/skills/oma-scholar/resources/api-endpoints.md +174 -0
  243. package/skills/oma-scholar/resources/checklist.md +92 -0
  244. package/skills/oma-scholar/resources/execution-protocol.md +224 -0
  245. package/skills/oma-scholar/resources/fallback-providers.md +143 -0
  246. package/skills/oma-scholar/resources/setup-openalex.md +85 -0
  247. package/skills/oma-scholar/resources/sidecar-spec.md +341 -0
  248. package/skills/oma-scholar/resources/upstream-spec-cache.md +972 -0
  249. package/skills/oma-scm/SKILL.md +103 -0
  250. package/skills/oma-scm/resources/cm-operations.md +56 -0
  251. package/skills/oma-scm/resources/codeowners-playbook.md +45 -0
  252. package/skills/oma-scm/resources/conventional-commits.md +108 -0
  253. package/skills/oma-scm/resources/merge-risk.md +76 -0
  254. package/skills/oma-scm/resources/onboarding-risk-signals.md +71 -0
  255. package/skills/oma-search/SKILL.md +125 -0
  256. package/skills/oma-search/resources/checklist.md +36 -0
  257. package/skills/oma-search/resources/error-playbook.md +66 -0
  258. package/skills/oma-search/resources/examples.md +80 -0
  259. package/skills/oma-search/resources/execution-protocol.md +86 -0
  260. package/skills/oma-search/resources/intent-rules.md +47 -0
  261. package/skills/oma-search/resources/trust-registry.md +53 -0
  262. package/skills/oma-security/SKILL.md +172 -0
  263. package/skills/oma-security/resources/artex.md +108 -0
  264. package/skills/oma-security/resources/ci.md +134 -0
  265. package/skills/oma-security/resources/cisco-source.md +108 -0
  266. package/skills/oma-security/resources/deepsec-config.md +45 -0
  267. package/skills/oma-security/resources/deepsec-matchers.md +35 -0
  268. package/skills/oma-security/resources/deepsec-scanning.md +45 -0
  269. package/skills/oma-security/resources/deepsec-setup.md +41 -0
  270. package/skills/oma-security/resources/findings-contract.md +408 -0
  271. package/skills/oma-security/resources/mcp-scanning.md +122 -0
  272. package/skills/oma-security/resources/skill-scanning.md +106 -0
  273. package/skills/oma-security/resources/validation.md +71 -0
  274. package/skills/oma-skill-creation/SKILL.md +84 -0
  275. package/skills/oma-skill-creation/resources/prompt-evaluation.md +36 -0
  276. package/skills/oma-skill-creation/resources/ssl-lite-template.md +108 -0
  277. package/skills/oma-skill-creation/resources/validation-checklist.md +101 -0
  278. package/skills/oma-slide/SKILL.md +277 -0
  279. package/skills/oma-slide/resources/animation-patterns.md +245 -0
  280. package/skills/oma-slide/resources/assets/deck-stage.js +514 -0
  281. package/skills/oma-slide/resources/assets/viewport-base.css +257 -0
  282. package/skills/oma-slide/resources/canva-integration.md +203 -0
  283. package/skills/oma-slide/resources/checklist.md +46 -0
  284. package/skills/oma-slide/resources/design-doctrine.md +260 -0
  285. package/skills/oma-slide/resources/fixed-stage.md +232 -0
  286. package/skills/oma-slide/resources/generation-protocol.md +393 -0
  287. package/skills/oma-slide/resources/native-pptx.md +84 -0
  288. package/skills/oma-slide/resources/selection-index.json +461 -0
  289. package/skills/oma-slide/resources/style-presets.LICENSE +10 -0
  290. package/skills/oma-slide/resources/style-presets.md +520 -0
  291. package/skills/oma-tf-infra/SKILL.md +201 -0
  292. package/skills/oma-tf-infra/resources/checklist.md +53 -0
  293. package/skills/oma-tf-infra/resources/cost-optimization.md +574 -0
  294. package/skills/oma-tf-infra/resources/error-playbook.md +68 -0
  295. package/skills/oma-tf-infra/resources/examples.md +38 -0
  296. package/skills/oma-tf-infra/resources/execution-protocol.md +129 -0
  297. package/skills/oma-tf-infra/resources/iso-42001-infra.md +229 -0
  298. package/skills/oma-tf-infra/resources/multi-cloud-examples.md +241 -0
  299. package/skills/oma-tf-infra/resources/policy-testing-examples.md +332 -0
  300. package/skills/oma-translation/SKILL.md +229 -0
  301. package/skills/oma-translation/resources/anti-ai-patterns.md +104 -0
  302. package/skills/oma-translation/resources/lang/_template.md +73 -0
  303. package/skills/oma-translation/resources/lang/en.md +123 -0
  304. package/skills/oma-translation/resources/lang/ja.md +274 -0
  305. package/skills/oma-translation/resources/lang/ko.md +228 -0
  306. package/skills/oma-translation/resources/lang/zh.md +285 -0
  307. package/skills/oma-translation/resources/style-skills.md +104 -0
  308. package/skills/oma-translation/resources/translation-rubric.md +126 -0
  309. package/skills/oma-video/SKILL.md +229 -0
  310. package/skills/oma-video/config/video-config.yaml +60 -0
  311. package/skills/oma-video/resources/checklist.md +26 -0
  312. package/skills/oma-video/resources/execution-protocol.md +122 -0
  313. package/skills/oma-video/resources/existing-media.md +185 -0
  314. package/skills/oma-video/resources/hyperframes-authoring/README.md +44 -0
  315. package/skills/oma-video/resources/hyperframes-authoring/demo.md +31 -0
  316. package/skills/oma-video/resources/hyperframes-authoring/explainer.md +10 -0
  317. package/skills/oma-video/resources/hyperframes-authoring/shorts.md +10 -0
  318. package/skills/oma-video/resources/motion-principles.md +81 -0
  319. package/skills/oma-video/resources/mpt/driver.py +301 -0
  320. package/skills/oma-video/resources/prompt-tips.md +75 -0
  321. package/skills/oma-video/resources/script-schema.md +81 -0
  322. package/skills/oma-video/resources/sound-design.md +127 -0
  323. package/skills/oma-video/resources/strudel/package.json +11 -0
  324. package/skills/oma-video/resources/strudel/page.html +87 -0
  325. package/skills/oma-video/resources/strudel/render.mjs +295 -0
  326. package/skills/oma-video/resources/vendor-matrix.md +124 -0
  327. package/skills/oma-voice/SKILL.md +249 -0
  328. package/skills/oma-voice/config/voice-config.yaml +30 -0
  329. package/skills/oma-voice/resources/audio-processing.md +119 -0
  330. package/skills/oma-voice/resources/checklist.md +47 -0
  331. package/skills/oma-voice/resources/execution-protocol.md +215 -0
  332. package/skills/oma-voice/resources/prompt-tips.md +43 -0
  333. package/skills/oma-voice/resources/voice-matrix.md +51 -0
  334. package/skills/oma-voice/resources/voicestudio.md +87 -0
@@ -0,0 +1,308 @@
1
+ ---
2
+ otel_spec: "1.x (stable API/SDK)"
3
+ tools:
4
+ - "OTel Operator: v1beta1"
5
+ - "Fluent Bit: CNCF Graduated"
6
+ - "OTel Collector: v0.122.x"
7
+ ---
8
+
9
+ # Collector Topology: Deployment Modes and Kubernetes Patterns
10
+
11
+
12
+ ---
13
+
14
+ ## 1. Four Deployment Modes (OTel Operator `Spec.Mode`)
15
+
16
+ The OpenTelemetry Operator manages collectors via the `OpenTelemetryCollector` CRD at **v1beta1** (beta stability as of 2025). The `spec.mode` field controls the deployment strategy.
17
+
18
+ | Mode | Kubernetes Kind | Replicas | Typical Use Case |
19
+ |------|----------------|----------|-----------------|
20
+ | `deployment` | Deployment | 1..N | Gateway, tail sampling, aggregation |
21
+ | `daemonset` | DaemonSet | 1 per node | Node-level metrics, log collection |
22
+ | `statefulset` | StatefulSet | 1..N | Ordered, persistent-volume workloads |
23
+ | `sidecar` | injected container | 1 per pod | Serverless (Fargate, Cloud Run), isolation |
24
+
25
+ **`Deployment` (default; Gateway use case)**
26
+ Runs as a standard Kubernetes Deployment. Suitable for centralized processing: batching, tail sampling, exporters to backend. Scales horizontally but cannot access node-local resources (e.g., `/var/log`, `/proc`). Source: [OTel Collector Deployment docs](https://opentelemetry.io/docs/collector/deployment/).
27
+
28
+ **`DaemonSet` (Agent use case; one per node)**
29
+ Guarantees exactly one collector pod per node. Required for receivers that must run on the host: `hostmetrics`, `filelog`, `kubeletstats`. Accesses node filesystem and network namespaces directly.
30
+
31
+ **`StatefulSet` (specialized)**
32
+ Useful when collectors need stable network identity or persistent volumes (e.g., Write-Ahead Log for durability). Uncommon; prefer Deployment unless stable pod identity is mandatory.
33
+
34
+ **`Sidecar` (one per pod)**
35
+ Injected by the operator via pod annotation (`sidecar.opentelemetry.io/inject: "true"`). Runs in the same pod as the application. See Section 3 for when sidecar is appropriate.
36
+
37
+ > CRD stability note: `OpenTelemetryCollector` v1beta1 is beta; `Instrumentation` CRD is also v1beta1. GA graduation is tracked in [opentelemetry-operator](https://github.com/open-telemetry/opentelemetry-operator) releases.
38
+
39
+ ---
40
+
41
+ ## 2. 2026 Recommended Pattern: Two-Tier Hybrid
42
+
43
+ The standard production pattern for Kubernetes clusters is a two-tier architecture separating node-level collection from centralized processing.
44
+
45
+ ```
46
+ App Pod(s)
47
+ │ OTLP gRPC/HTTP
48
+ ▼
49
+ DaemonSet Agent (1 per node)
50
+ - hostmetrics / filelog / kubeletstats receivers
51
+ - memory_limiter and k8sattributes enrichment
52
+ - traces: loadbalancing exporter, routing_key: traceID
53
+ │ consistent traceID hash to individual gateway replicas
54
+ │ metrics/logs may use their separately configured normal load balancing
55
+ ▼
56
+ Deployment Gateway (N tail-sampler replicas, per-pod discovery)
57
+ - memory_limiter → tail_sampling → batch
58
+ - backend exporter
59
+ │ OTLP / vendor protocol
60
+ ▼
61
+ Observability Backend (e.g., Grafana Cloud, Jaeger, Prometheus)
62
+ ```
63
+
64
+ Do not send traces through an ordinary ClusterIP/load balancer before independent
65
+ tail samplers. It can split one trace across replicas. The traceID-aware exporter
66
+ must be upstream of those samplers; an exporter after sampling cannot recover
67
+ trace completeness. Resolve individual sampler replicas (for example via a
68
+ headless Service), and validate late-span behavior during membership changes.
69
+
70
+ **Agent layer responsibilities** (must be per-host):
71
+ - `hostmetrics` receiver: CPU, memory, disk, network from `/proc`, `/sys`
72
+ - `filelog` receiver: container log files from `/var/log/pods/`
73
+ - `k8sattributes` processor: enriches spans/metrics with pod, namespace, node labels
74
+ - `kubeletstats` receiver: pod/container resource metrics via Kubelet API
75
+
76
+ **Gateway layer responsibilities**:
77
+ - `batch` processor: reduce export RPCs, improve compression
78
+ - `tail_sampling` processor: evaluate complete traces before sampling decision
79
+ - Backend exporter: send the gateway's already-sampled traces to the selected backend. Put `loadbalancing` upstream of any further independent tail-sampler tier, not after the only sampler.
80
+ - `memory_limiter` processor: prevent OOM under backpressure
81
+
82
+ Example agent `OpenTelemetryCollector` manifest snippet for host metrics/logs only (traces additionally require an OTLP receiver and the traceID-aware `loadbalancing` exporter described above and in §6):
83
+
84
+ ```yaml
85
+ apiVersion: opentelemetry.io/v1beta1
86
+ kind: OpenTelemetryCollector
87
+ metadata:
88
+ name: otel-agent
89
+ spec:
90
+ mode: daemonset
91
+ config:
92
+ receivers:
93
+ hostmetrics:
94
+ collection_interval: 30s
95
+ scrapers:
96
+ cpu: {}
97
+ memory: {}
98
+ filesystem: {}
99
+ filelog:
100
+ include: [/var/log/pods/*/*/*.log]
101
+ include_file_path: true
102
+ kubeletstats:
103
+ collection_interval: 20s
104
+ auth_type: serviceAccount
105
+ processors:
106
+ k8sattributes:
107
+ passthrough: false
108
+ extract:
109
+ metadata: [k8s.pod.name, k8s.namespace.name, k8s.node.name]
110
+ memory_limiter:
111
+ limit_mib: 400
112
+ check_interval: 1s
113
+ exporters:
114
+ otlp:
115
+ endpoint: otel-gateway:4317
116
+ service:
117
+ pipelines:
118
+ metrics:
119
+ receivers: [hostmetrics, kubeletstats]
120
+ processors: [memory_limiter, k8sattributes]
121
+ exporters: [otlp]
122
+ logs:
123
+ receivers: [filelog]
124
+ processors: [memory_limiter, k8sattributes]
125
+ exporters: [otlp]
126
+ ```
127
+
128
+ ---
129
+
130
+ ## 3. When to Use Sidecar (NOT Default)
131
+
132
+ Sidecar mode is **not recommended for standard Kubernetes nodes**. Use it only when DaemonSet is unavailable or per-pod isolation is a hard requirement.
133
+
134
+ | Condition | Use Sidecar? | Reason |
135
+ |-----------|-------------|--------|
136
+ | AWS Fargate | Yes | DaemonSet not supported on Fargate nodes |
137
+ | GCP Cloud Run | Yes | No DaemonSet concept; sidecar containers supported |
138
+ | Strong per-pod isolation | Yes | Compliance or security boundary per workload |
139
+ | Multi-tenant pod separation | Yes | Each tenant's data must not cross pod boundaries |
140
+ | Standard Kubernetes nodes | No | N collectors for N pods; cost scales linearly |
141
+ | Tail sampling requirement | No | Trace spans split across pods; sampler sees incomplete traces |
142
+
143
+ > Warning: Enabling sidecar injection on standard Kubernetes creates one collector instance per application pod. For a 100-pod deployment, this is 100 collectors. CPU and memory costs multiply accordingly. Always prefer DaemonSet on regular nodes.
144
+
145
+ ---
146
+
147
+ ## 4. Collector Component Placement Reference
148
+
149
+ Source: [OTel Kubernetes Collector Components](https://opentelemetry.io/docs/platforms/kubernetes/collector/components/)
150
+
151
+ | Receiver / Processor | Preferred Mode | Notes |
152
+ |---------------------|---------------|-------|
153
+ | `kubeletstats` receiver | DaemonSet | Requires access to Kubelet API per node |
154
+ | `filelog` receiver | DaemonSet | Reads `/var/log/pods/` on each node |
155
+ | `hostmetrics` receiver | DaemonSet | Reads `/proc`, `/sys`; host-only access |
156
+ | `k8sattributes` processor | DaemonSet or Gateway | On agent: enriches at source; on gateway: enriches late |
157
+ | `prometheus` receiver | Deployment (with caveats) | No automatic horizontal scaling for scrape target distribution; use sharding manually |
158
+ | `tail_sampling` processor | Deployment (Gateway) | Requires complete trace; combine with `loadbalancing` exporter |
159
+ | `batch` processor | Both | Tuned independently per tier |
160
+ | `memory_limiter` processor | Both (mandatory) | Always include; prevents OOM under traffic spikes |
161
+
162
+ > Prometheus scraping caveat: When multiple gateway replicas each run `prometheus` receiver, scrape targets are duplicated across replicas causing duplicate metrics. Use target allocator (`spec.targetAllocator`) provided by the OTel Operator to distribute scrape targets across replicas.
163
+
164
+ ---
165
+
166
+ ## 5. Container Runtime Observability Integration
167
+
168
+ **containerd and CRI-O**
169
+
170
+ Both runtimes expose metrics and events relevant to infrastructure observability:
171
+ - Image pull duration and failure rates
172
+ - Container start/stop lifecycle events
173
+ - Runtime panic or OOM kill events
174
+
175
+ Integration approaches:
176
+ - `hostmetrics` receiver with `process` scraper captures container process CPU/memory
177
+ - containerd exposes metrics via its built-in Prometheus endpoint (default `:1338/metrics`)
178
+ - CRI-O exposes metrics via `:9537/metrics`; scrape with `prometheus` receiver on the DaemonSet agent
179
+
180
+ **cAdvisor integration**
181
+
182
+ cAdvisor runs as part of the Kubelet on each node and exposes per-container CPU, memory, filesystem, and network metrics.
183
+
184
+ ```yaml
185
+ # Scrape cAdvisor via kubeletstats receiver (preferred)
186
+ receivers:
187
+ kubeletstats:
188
+ collection_interval: 20s
189
+ auth_type: serviceAccount
190
+ endpoint: "https://${env:K8S_NODE_IP}:10250"
191
+ insecure_skip_verify: true
192
+ metric_groups: [container, pod, node]
193
+ ```
194
+
195
+ **Pod and container attribute enrichment**
196
+
197
+ The `k8sattributes` processor queries the Kubernetes API to attach resource attributes to all telemetry:
198
+
199
+ ```yaml
200
+ processors:
201
+ k8sattributes:
202
+ auth_type: serviceAccount
203
+ passthrough: false
204
+ extract:
205
+ metadata:
206
+ - k8s.pod.name
207
+ - k8s.pod.uid
208
+ - k8s.deployment.name
209
+ - k8s.namespace.name
210
+ - k8s.node.name
211
+ - k8s.container.name
212
+ labels:
213
+ - tag_name: app.label.version
214
+ key: app.kubernetes.io/version
215
+ from: pod
216
+ pod_association:
217
+ - sources:
218
+ - from: resource_attribute
219
+ name: k8s.pod.ip
220
+ ```
221
+
222
+ ---
223
+
224
+ ## 6. High-Throughput Gateway Scaling
225
+
226
+ For high-volume environments, the gateway tier must scale to avoid becoming a bottleneck.
227
+
228
+ **Horizontal scaling with consistent hashing**
229
+
230
+ Tail sampling requires that all spans for a given `trace_id` reach the same collector replica. Use `loadbalancing` exporter in a first-tier gateway to route traces consistently:
231
+
232
+ ```yaml
233
+ exporters:
234
+ loadbalancing:
235
+ protocol:
236
+ otlp:
237
+ tls:
238
+ insecure: true
239
+ resolver:
240
+ k8s:
241
+ service: otel-tail-sampler-headless
242
+ ports: [4317]
243
+ routing_key: traceID # consistent hash on trace_id
244
+ ```
245
+
246
+ **Two-tier gateway pattern for tail sampling**
247
+
248
+ ```
249
+ DaemonSet Agents
250
+ │
251
+ ▼
252
+ Gateway Tier-1 (Deployment, 3+ replicas)
253
+ loadbalancing exporter → consistent hash by trace_id
254
+ │
255
+ ▼
256
+ Gateway Tier-2 (Deployment, 3+ replicas)
257
+ tail_sampling processor
258
+ batch + memory_limiter
259
+ │
260
+ ▼
261
+ Backend
262
+ ```
263
+
264
+ Tier-1 only routes; Tier-2 owns sampling decisions. This prevents trace fragmentation across replicas.
265
+
266
+ ---
267
+
268
+ ## 7. Federated / Multi-Cluster
269
+
270
+ For multi-cluster and multi-region deployments:
271
+
272
+ ```
273
+ Cluster A (Region US) Cluster B (Region EU)
274
+ DaemonSet Agents DaemonSet Agents
275
+ │ │
276
+ Regional Gateway Regional Gateway
277
+ (edge aggregation) (edge aggregation)
278
+ │ │
279
+ └──────────┬────────────────────┘
280
+ ▼
281
+ Central Gateway (single region or multi-region active-active)
282
+ │
283
+ Backend
284
+ ```
285
+
286
+ Key considerations:
287
+ - **Cross-cloud egress cost**: Exporting telemetry across cloud providers or regions incurs data transfer charges. Evaluate sampling aggressively at the regional edge to reduce egress volume before forwarding to the central gateway.
288
+ - **Network latency**: Tail sampling decision wait (typically 30s) must account for cross-region span arrival delay. Increase `decision_wait` accordingly.
289
+ - **Authentication**: Use workload identity / OIDC per cluster; avoid static credentials for cross-cluster OTLP export.
290
+
291
+ ---
292
+
293
+ ## 8. Anti-Patterns
294
+
295
+ | Anti-Pattern | Why It Fails | Correct Approach |
296
+ |-------------|-------------|-----------------|
297
+ | Sidecar collectors on standard Kubernetes nodes | One collector per pod; CPU/memory cost scales with pod count | Use DaemonSet agent per node |
298
+ | Tail sampling in sidecar | Sidecar sees only spans from its pod; trace is incomplete across services | Run tail_sampling in gateway tier only |
299
+ | Single gateway replica | No high availability; single point of failure under load | Minimum 2-3 replicas; use PodDisruptionBudget |
300
+ | Missing `memory_limiter` processor | OOM kill under traffic spikes or backpressure from backend | Always add memory_limiter as first processor in every pipeline |
301
+ | Prometheus receiver on multiple replicas without target allocator | Duplicate scrapes = duplicate metrics in backend | Use OTel Operator target allocator for Prometheus receiver |
302
+ | Skipping `loadbalancing` exporter before tail sampler | Spans for same trace land on different replicas; sampling decision is wrong | Always pair tail_sampling with loadbalancing exporter upstream |
303
+
304
+ ## References
305
+
306
+ - https://opentelemetry.io/docs/platforms/kubernetes/collector/components/
307
+ - https://github.com/open-telemetry/opentelemetry-operator
308
+ - https://opentelemetry.io/docs/collector/deployment/
@@ -0,0 +1,256 @@
1
+ ---
2
+ otel_spec: "1.x (stable API/SDK)"
3
+ ---
4
+
5
+ # OTLP Transport: gRPC vs HTTP Decision Guide
6
+
7
+ ## 1. OTLP Basics
8
+
9
+ The OpenTelemetry Protocol (OTLP) uses a single Protobuf schema for traces, metrics, and logs.
10
+ It defines three wire formats over two transports:
11
+
12
+ | Transport | Content-Type | Port (default) |
13
+ |----------------|------------------------------------|----------------|
14
+ | gRPC | `application/grpc` | **4317** |
15
+ | HTTP/Protobuf | `application/x-protobuf` | **4318** |
16
+ | HTTP/JSON | `application/json` | **4318** |
17
+
18
+ All three formats carry identical semantic data. Transport choice is an operational decision.
19
+
20
+ Sources:
21
+ - OTLP specification: opentelemetry.io/docs/specs/otlp/
22
+ - Collector configuration: opentelemetry.io/docs/collector/configuration/
23
+ - OTLP receiver README: github.com/open-telemetry/opentelemetry-collector (receiver/otlpreceiver)
24
+
25
+ ---
26
+
27
+ ## 2. Decision Tree
28
+
29
+ ```
30
+ Is the sender a browser or a runtime without gRPC support?
31
+ YES → HTTP/protobuf (port 4318) — smallest payload, wide compatibility
32
+ HTTP/JSON if debugging or if protobuf encoding unavailable
33
+
34
+ NO → Does a corporate proxy or layer-7 firewall sit between sender and collector?
35
+ YES → HTTP (port 4318); proxies handle HTTP/1.1 and HTTP/2 cleartext reliably
36
+ Confirm with: curl -v http://<collector>:4318/v1/traces
37
+
38
+ NO → Is traffic internal to a Kubernetes cluster (pod-to-pod)?
39
+ YES → gRPC (port 4317): multiplexed streams, lower per-RPC overhead,
40
+ native health checking via grpc_health_probe
41
+ Use headless Service or client-side LB (see section 6)
42
+
43
+ NO → Is volume high (>50 K spans/sec) or latency critical?
44
+ YES → gRPC + gzip compression
45
+ NO → Either transport works; prefer gRPC for consistency
46
+ ```
47
+
48
+ | Axis | Recommended transport | Reason |
49
+ |---------------------------|-----------------------|-------------------------------------------------|
50
+ | Browser / Electron | HTTP/JSON or HTTP/protobuf | No gRPC-Web support in standard fetch API |
51
+ | k8s pod-to-pod | gRPC 4317 | Multiplexing, streaming, native health check |
52
+ | Corporate proxy / firewall| HTTP 4318 | Proxies often terminate gRPC streams early |
53
+ | VPN with deep inspection | HTTP 4318 | gRPC ALPN negotiation blocked by some DPI |
54
+ | High-volume batch | gRPC + gzip | Header compression (HPACK), stream reuse |
55
+ | IoT / constrained device | HTTP/JSON | Simpler implementation, no Protobuf required |
56
+
57
+ ---
58
+
59
+ ## 3. Port Conventions
60
+
61
+ | Port | Protocol | Notes |
62
+ |------|----------|--------------------------------------------------------|
63
+ | 4317 | gRPC | IANA-registered; TLS optional (recommended in prod) |
64
+ | 4318 | HTTP | IANA-registered; paths `/v1/traces`, `/v1/metrics`, `/v1/logs` |
65
+
66
+ Do not expose either port to the public internet without TLS and authentication.
67
+
68
+ ---
69
+
70
+ ## 4. Server-Side Tuning (Collector Receiver)
71
+
72
+ ### 4.1 gRPC Receiver
73
+
74
+ ```yaml
75
+ receivers:
76
+ otlp:
77
+ protocols:
78
+ grpc:
79
+ endpoint: "0.0.0.0:4317"
80
+ max_recv_msg_size_mib: 16 # default 4 MiB; raise for large trace batches
81
+ max_concurrent_streams: 100 # per-connection stream limit
82
+ read_buffer_size: 524288 # 512 KiB per stream
83
+ keepalive:
84
+ server_parameters:
85
+ time: 30s # ping interval when idle
86
+ timeout: 5s # wait before closing unresponsive connection
87
+ enforcement_policy:
88
+ min_time: 10s # reject client pings faster than this
89
+ permit_without_stream: true
90
+ ```
91
+
92
+ ### 4.2 HTTP Receiver
93
+
94
+ ```yaml
95
+ receivers:
96
+ otlp:
97
+ protocols:
98
+ http:
99
+ endpoint: "0.0.0.0:4318"
100
+ max_request_body_size: 16777216 # 16 MiB; matches gRPC max_recv_msg_size_mib
101
+ include_metadata: true # forward request headers as resource attributes
102
+ cors:
103
+ allowed_origins: ["https://app.example.com"]
104
+ allowed_headers: ["*"]
105
+ ```
106
+
107
+ ### 4.3 Memory Limiter (Required)
108
+
109
+ Place `memory_limiter` first in every pipeline; it back-pressures receivers before OOM.
110
+
111
+ ```yaml
112
+ processors:
113
+ memory_limiter:
114
+ check_interval: 1s
115
+ limit_mib: 512
116
+ spike_limit_mib: 128 # refuse new data when usage > limit_mib - spike_limit_mib
117
+
118
+ batch:
119
+ send_batch_size: 8192
120
+ send_batch_max_size: 16384
121
+ timeout: 5s
122
+
123
+ service:
124
+ pipelines:
125
+ traces:
126
+ receivers: [otlp]
127
+ processors: [memory_limiter, batch]
128
+ exporters: [otlp/tier2]
129
+ ```
130
+
131
+ ---
132
+
133
+ ## 5. Client-Side Tuning (Exporter)
134
+
135
+ ### 5.1 Compression
136
+
137
+ gzip is the default and should remain enabled (typically 70–85% payload reduction).
138
+ Do not disable it unless your TLS offload device double-compresses.
139
+
140
+ ```yaml
141
+ exporters:
142
+ otlp:
143
+ endpoint: "collector:4317"
144
+ compression: gzip # gzip | zstd | none
145
+ tls:
146
+ insecure: false
147
+ ca_file: /etc/ssl/certs/ca.crt
148
+ ```
149
+
150
+ ### 5.2 Sending Queue and Retry
151
+
152
+ ```yaml
153
+ exporters:
154
+ otlp:
155
+ endpoint: "collector:4317"
156
+ compression: gzip
157
+ sending_queue:
158
+ enabled: true
159
+ num_consumers: 10
160
+ queue_size: 5000
161
+ storage: file_storage/otlp_queue # persist queue to disk across restarts
162
+ retry_on_failure:
163
+ enabled: true
164
+ initial_interval: 5s
165
+ max_interval: 30s
166
+ max_elapsed_time: 300s # give up after 5 min total
167
+ ```
168
+
169
+ **OTLP retry semantics** (opentelemetry.io/docs/specs/otlp/): `RESOURCE_EXHAUSTED` returns
170
+ `RetryInfo.retry_delay`; honor it. `UNAVAILABLE` → exponential backoff. `INVALID_ARGUMENT` →
171
+ permanent failure, do not retry.
172
+
173
+ ### 5.3 Persistent Queue Extension
174
+
175
+ ```yaml
176
+ extensions:
177
+ file_storage/otlp_queue:
178
+ directory: /var/otel/queue
179
+ timeout: 10s
180
+ compaction:
181
+ on_start: true
182
+ rebound_needed_threshold_mib: 100
183
+ ```
184
+
185
+ ---
186
+
187
+ ## 6. Load Balancing
188
+
189
+ gRPC uses long-lived HTTP/2 connections, defeating L4 round-robin. Use client-side LB.
190
+
191
+ **Two-tier pattern** (recommended for tail sampling):
192
+
193
+ ```
194
+ [SDK exporters]
195
+ | gRPC 4317
196
+ v
197
+ [Tier-1: loadbalancingexporter] ← routes by traceID for consistent routing
198
+ | gRPC 4317
199
+ v
200
+ [Tier-2: tailsamplingprocessor] ← sees full trace before sampling decision
201
+ | OTLP
202
+ v
203
+ [Backend / storage]
204
+ ```
205
+
206
+ ```yaml
207
+ exporters:
208
+ loadbalancing:
209
+ protocol:
210
+ otlp:
211
+ tls:
212
+ insecure: false
213
+ timeout: 5s
214
+ resolver:
215
+ dns:
216
+ hostname: otel-collector-tier2-headless.monitoring.svc.cluster.local
217
+ port: 4317
218
+ interval: 5s
219
+ timeout: 1s
220
+ ```
221
+
222
+ For Kubernetes: use a headless Service (`clusterIP: None`) for Tier-2. The `loadbalancingexporter`
223
+ resolves DNS and maintains one gRPC connection per pod.
224
+
225
+ ---
226
+
227
+ ## 7. Security: TLS and mTLS
228
+
229
+ ### Collector Receiver (server-side)
230
+
231
+ ```yaml
232
+ receivers:
233
+ otlp:
234
+ protocols:
235
+ grpc:
236
+ endpoint: "0.0.0.0:4317"
237
+ tls:
238
+ cert_file: /etc/ssl/certs/collector.crt
239
+ key_file: /etc/ssl/private/collector.key
240
+ client_ca_file: /etc/ssl/certs/ca.crt # enforce mTLS
241
+ ```
242
+
243
+ ### Exporter (client-side)
244
+
245
+ ```yaml
246
+ exporters:
247
+ otlp:
248
+ endpoint: "collector:4317"
249
+ tls:
250
+ ca_file: /etc/ssl/certs/ca.crt
251
+ cert_file: /etc/ssl/certs/client.crt # mTLS client cert
252
+ key_file: /etc/ssl/private/client.key
253
+ ```
254
+
255
+ For Kubernetes workloads, use cert-manager to auto-rotate TLS credentials (90-day TTL).
256
+ Use SPIFFE/SPIRE for zero-touch mTLS in multi-cluster scenarios.