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

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,360 @@
1
+ ---
2
+ otel_spec: "1.x (stable API/SDK)"
3
+ otel_semconv: "1.43.0 (2026-07)"
4
+ specs:
5
+ - "W3C Trace Context: Level 1 Recommendation 2020-02-06"
6
+ ---
7
+
8
+ # Distributed Traces Signal
9
+
10
+ ## 1. Scope
11
+
12
+ Traces are the "T" in MELT+P; the correlation backbone of distributed observability. A single trace links every span produced by every service that participated in one request, job, or message.
13
+
14
+ Covers: OTel span data model, SpanKind, W3C Trace Context, DB patterns (N+1, slow query, pool exhaustion, `db.*` Stable), messaging patterns (Kafka, Flink, Spark, DLQ, `messaging.*`), RPC (`rpc.*` RC), sampling, backends, exemplars, baggage security.
15
+
16
+ Cross-references:
17
+ - `../boundaries/cross-application.md`: propagator matrix per cloud and mesh vendor
18
+ - `../layers/mesh.md`: zero-code auto-instrumentation; propagator headers
19
+
20
+ ---
21
+
22
+ ## 2. OTel Span Data Model (Stable)
23
+
24
+ Source: <https://opentelemetry.io/docs/specs/otel/trace/api/>
25
+
26
+ Every span carries the following fields:
27
+
28
+ | Field | Type | Description |
29
+ |-------|------|-------------|
30
+ | `TraceId` | 16-byte hex | Globally unique identifier for the entire trace |
31
+ | `SpanId` | 8-byte hex | Unique identifier for this span |
32
+ | `ParentSpanId` | 8-byte hex | SpanId of the parent; absent for root spans |
33
+ | `Name` | string | Operation name (e.g., `HTTP GET /api/orders`) |
34
+ | `Kind` | enum | SpanKind; see table below |
35
+ | `StartTime` | timestamp | Monotonic clock at span start |
36
+ | `EndTime` | timestamp | Monotonic clock at span end |
37
+ | `Attributes` | key-value map | Semantic convention attributes describing the operation |
38
+ | `Events` | list | Timestamped structured log records within the span |
39
+ | `Links` | list | References to other spans (used for async messaging) |
40
+ | `Status` | enum + string | `UNSET`, `OK`, or `ERROR` with optional description |
41
+
42
+ ### SpanKind
43
+
44
+ SpanKind describes the role of the span in the larger distributed operation. Backends use it to render topology maps and assign latency accountability.
45
+
46
+ | SpanKind | Role | Typical origin |
47
+ |----------|------|----------------|
48
+ | `INTERNAL` | Default; in-process operation with no network boundary | Business logic, cache lookup, CPU computation |
49
+ | `SERVER` | Incoming synchronous request handled by this service | HTTP server, gRPC server handler |
50
+ | `CLIENT` | Outgoing synchronous call from this service to another | HTTP client, DB driver, gRPC stub |
51
+ | `PRODUCER` | Async message sent to a queue or topic | Kafka producer, RabbitMQ publisher |
52
+ | `CONSUMER` | Async message received from a queue or topic | Kafka consumer, worker pulling from queue |
53
+
54
+ Rule of thumb: sync RPC produces a `CLIENT`+`SERVER` pair sharing the same `TraceId`. Async messaging produces a `PRODUCER`+`CONSUMER` pair connected by a span link (not parent-child), because the two operations run independently.
55
+
56
+ ---
57
+
58
+ ## 3. W3C Trace Context Propagation
59
+
60
+ Source: <https://www.w3.org/TR/trace-context/>
61
+
62
+ ### Header format
63
+
64
+ ```
65
+ traceparent: 00-<trace-id>-<span-id>-<flags>
66
+ ```
67
+
68
+ - `00`: version (currently always `00`)
69
+ - `<trace-id>`: 32 hex chars (128-bit TraceId)
70
+ - `<span-id>`: 16 hex chars (64-bit SpanId of the sending span)
71
+ - `<flags>`: 8-bit flags; `01` = sampled, `00` = not sampled
72
+
73
+ Example:
74
+
75
+ ```
76
+ traceparent: 00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01
77
+ tracestate: vendor1=abc123,vendor2=xyz789
78
+ ```
79
+
80
+ `tracestate` carries vendor-specific opaque state as a comma-separated `key=value` list forwarded unchanged by intermediaries that do not own the key.
81
+
82
+ ### Propagation rules
83
+
84
+ - **Inject** `traceparent` on every outbound HTTP/gRPC call; **extract** at every inbound call before creating the root span.
85
+ - Stripping `traceparent` silently is anti-pattern #1 in `../anti-patterns.md`.
86
+ - Cross-cloud/mesh vendor header bridging: `../boundaries/cross-application.md §Propagators`.
87
+ - Mesh-injected headers (Envoy, Linkerd): `../layers/mesh.md §Propagator headers`.
88
+
89
+ ---
90
+
91
+ ## 4. Database Tracing Patterns (db.* semconv Stable)
92
+
93
+ Source: <https://opentelemetry.io/docs/specs/semconv/database/>
94
+
95
+ All DB spans use `SpanKind = CLIENT`. The span name follows the pattern `<db.operation.name> <db.collection.name>` (e.g., `SELECT orders`).
96
+
97
+ ### Core db.* attributes
98
+
99
+ | Attribute | Stability | Example | Notes |
100
+ |-----------|-----------|---------|-------|
101
+ | `db.system` | Stable | `postgresql`, `mysql`, `mongodb`, `redis` | Required; identifies the DB technology |
102
+ | `db.operation.name` | Stable | `SELECT`, `INSERT`, `HMGET` | SQL verb or command name |
103
+ | `db.query.text` | Stable | `SELECT * FROM orders WHERE id = $1` | Parameterized query text; PII risk; see caveat |
104
+ | `db.namespace` | Stable | `mydb` | Database name / schema |
105
+ | `db.collection.name` | Stable | `orders` | Table or collection name |
106
+ | `db.client.connections.used` | Development | `14` | Active connections in pool (attribute name varies by semconv draft; pin to version in `../standards.md`) |
107
+ | `db.client.connection.pool.utilization` | Development | `0.875` | Ratio: used / max (current semconv draft name; older drafts use `db.client.connections.usage`) |
108
+
109
+ `db.query.text` caveat: WHERE clause literals may contain PII (email addresses, phone numbers). Always use parameterized queries so that literals are replaced by `$1`, `?`, or `:name` placeholders. If the ORM or driver captures the raw query, apply redaction at the OTel SDK layer or in the Collector processor. Cross-ref `../signals/privacy.md`.
110
+
111
+ ### 4.1 N+1 Query Detection
112
+
113
+ Symptom: a single parent `SERVER` span contains N child `CLIENT` spans that all share the same `db.operation.name` and `db.collection.name`, each taking 2-30 ms, producing an additive latency of N × latency_per_query.
114
+
115
+ Trace waterfall example:
116
+
117
+ ```
118
+ [SERVER] POST /api/orders .................... 480ms
119
+ [CLIENT] SELECT orders WHERE ... .. 18ms
120
+ [CLIENT] SELECT orders WHERE ... .. 17ms
121
+ [CLIENT] SELECT orders WHERE ... .. 17ms
122
+ [CLIENT] SELECT orders WHERE ... .. 18ms
123
+ ... (× 24 more)
124
+ ```
125
+
126
+ Detection:
127
+
128
+ - OTel trace visualizers (Honeycomb BubbleUp, Datadog Watchdog, Grafana Tempo TraceQL) can flag traces where `count(db.CLIENT spans per SERVER span) > N_threshold`.
129
+ - TraceQL example (Grafana Tempo): `{ span.db.system = "postgresql" } | count() > 10`
130
+ - Honeycomb: group by `trace.parent_id`, count `db.*` child spans, alert on p95 count > 10.
131
+
132
+ Remediation: replace per-row lookups with eager loading (ORM `include`/`join`), batch queries (`SELECT ... WHERE id = ANY($1)`), or the DataLoader pattern for GraphQL.
133
+
134
+ ### 4.2 Slow Query Analysis
135
+
136
+ Slow queries surface as `CLIENT` spans with duration above the p99 threshold.
137
+
138
+ 1. Index `db.query.text` + `db.operation.name` against a `span.duration` histogram in the trace backend.
139
+ 2. Flag spans where `span.duration > 100ms` at p99 (adjust threshold per SLO).
140
+ 3. Correlate `db.query.text` with `pg_stat_statements` / MySQL `slow_query_log` to obtain execution plans.
141
+ 4. Apply `EXPLAIN ANALYZE` and add the missing index or rewrite the query.
142
+
143
+ Privacy: if `db.query.text` captures literal values, redact before export; see `../signals/privacy.md §query text redaction`.
144
+
145
+ ### 4.3 Connection Pool Exhaustion
146
+
147
+ Symptom: the blocking span is on the **client side** (waiting to acquire a pool connection), not inside the DB. `CLIENT` span duration grows while actual DB response time stays flat.
148
+
149
+ ```
150
+ [SERVER] POST /api/orders .............. 5200ms
151
+ [CLIENT] acquire pool connection ............ 5190ms ← pool wait, no DB call yet
152
+ [CLIENT] SELECT orders WHERE ... . 10ms
153
+ ```
154
+
155
+ Attributes to monitor: `db.client.connections.used` (Development), `db.client.connections.usage` (Development, alert at > 0.85). Cross-ref `../signals/metrics.md` for `pool_wait_count` and `pool_wait_duration_seconds` histograms.
156
+
157
+ Remediation: tune pool size to expected concurrency (10-20 connections per pod); add circuit breaker upstream; split read/write pools for long-running read transactions.
158
+
159
+ ---
160
+
161
+ ## 5. Messaging Tracing Patterns (messaging.* semconv)
162
+
163
+ Source: <https://opentelemetry.io/docs/specs/semconv/messaging/>
164
+
165
+ ### Core messaging.* attributes
166
+
167
+ | Attribute | Example | Notes |
168
+ |-----------|---------|-------|
169
+ | `messaging.system` | `kafka`, `rabbitmq`, `nats` | Required |
170
+ | `messaging.destination.name` | `orders-topic` | Topic or queue name |
171
+ | `messaging.operation.type` | `create`, `send`, `receive`, `process`, `settle` | Operation type per semconv 1.43.0 (Development; replaces deprecated `messaging.operation`; `publish`→`send`, `deliver`→`process`). `settle` covers ack/nack; `ack` alone is NOT a valid enum value |
172
+ | `messaging.message.id` | `msg-uuid-1234` | Message identifier for dedup |
173
+ | `messaging.kafka.message.key` | `order-9988` | Kafka partition key |
174
+ | `messaging.kafka.consumer.group` | `payment-consumer-group` | Kafka consumer group |
175
+
176
+ ### SpanKind assignment
177
+
178
+ - `PRODUCER`: set when calling `producer.send()` or equivalent.
179
+ - `CONSUMER`: set when calling `consumer.poll()` or the message handler.
180
+ - Connect the two with a **span link** (not parent-child): async messaging breaks the synchronous call chain; span links preserve trace continuity across the queue boundary.
181
+
182
+ ```
183
+ [PRODUCER] send orders-topic .. 3ms TraceId: aaa
184
+ Link → [CONSUMER] receive orders-topic ... 220ms TraceId: aaa
185
+ [CLIENT] INSERT INTO payments .. 18ms
186
+ ```
187
+
188
+ ### 5.1 Kafka-Specific Patterns
189
+
190
+ Inject W3C `traceparent` into Kafka message headers at the producer; extract at the consumer before creating the `CONSUMER` span. OTel Kafka instrumentation handles this automatically (`opentelemetry-instrumentation-kafka` for Java/Python).
191
+
192
+ Kafka consumer lag is an external metric, not a trace attribute: MSK (`kafka.consumer_lag` CloudWatch), Confluent Cloud (built-in), self-managed (`kafka_consumer_group_lag` via JMX + Prometheus). Cross-ref `../signals/metrics.md §messaging`.
193
+
194
+ **Primary-topic lag alert threshold (recommended starting point):**
195
+ - Warn: `kafka_consumer_group_lag > 10_000 for 5m` (queue growing faster than consumer can drain)
196
+ - Page: `kafka_consumer_group_lag > 100_000 for 10m` (backlog will breach SLO if unaddressed)
197
+ - Calibrate per topic throughput and consumer group parallelism; high-throughput topics routinely run at 50k–500k lag without impact.
198
+
199
+ ### 5.2 Flink and Spark Streaming
200
+
201
+ Create one span per pipeline stage; the trace covers end-to-end job from source read to sink write. Flink OTel instrumentation is emerging (not stable as of 2026-Q2); use `messaging.system = kafka` for source/sink spans and `INTERNAL` for operator chains. Spark: instrument at the `foreachBatch` boundary; each micro-batch is one `INTERNAL` span. Checkpoint metrics: cross-ref `../signals/metrics.md §streaming`.
202
+
203
+ ### 5.3 Dead Letter Queue (DLQ) Observability
204
+
205
+ A DLQ receives messages that failed all retries. Losing trace context at DLQ ingestion prevents diagnosis.
206
+
207
+ 1. **Trace propagation**: copy the original `traceparent` from the failed message headers into the DLQ message headers; do not generate a new trace ID.
208
+ 2. **DLQ depth alert**: alert on `kafka_consumer_group_lag{topic="orders-dlq"}` > 0 for critical queues.
209
+ 3. **DLQ arrival span**: create a `CONSUMER` span at DLQ arrival with `messaging.destination.name = orders-dlq` and the original `trace_id`.
210
+ 4. **Replay tooling**: re-inject the original trace context into replayed messages. A new `trace_id` at replay orphans the original failure span.
211
+
212
+ ---
213
+
214
+ ## 6. RPC Tracing (rpc.* semconv RC)
215
+
216
+ Source: <https://opentelemetry.io/docs/specs/semconv/rpc/grpc/>
217
+
218
+ ### gRPC
219
+
220
+ | Attribute | Example |
221
+ |-----------|---------|
222
+ | `rpc.system.name` | `grpc` |
223
+ | `rpc.service` | `com.example.OrderService` |
224
+ | `rpc.method` | `CreateOrder` |
225
+
226
+ SpanKind: `CLIENT` on the caller; `SERVER` on the callee. The `traceparent` header is propagated via gRPC metadata.
227
+
228
+ ### HTTP RPC
229
+
230
+ Use `http.*` attributes for REST and JSON-RPC over HTTP. `rpc.*` is for binary RPC protocols only.
231
+
232
+ ### Error handling
233
+
234
+ Set `status.code = ERROR` and `status.description` on RPC failures. Use `span.recordException(e)` to atomically populate `exception.type`, `exception.message`, and `exception.stacktrace`; required by MRA in `../incident-forensics.md §2.2`. Note: since semconv 1.40 the span-event form of exception recording is deprecated in favor of exception LogRecords (`OTEL_SEMCONV_EXCEPTION_SIGNAL_OPT_IN`); during migration prefer `logs/dup` so both the span pivot and log-based queries keep working.
235
+
236
+ ---
237
+
238
+ ## 7. Trace Sampling
239
+
240
+ Cross-ref `../transport/sampling-recipes.md` for full configuration recipes.
241
+
242
+ | Strategy | Pros | Cons |
243
+ |----------|------|------|
244
+ | Head-based | Low overhead; decision at trace root | Cannot retain traces that only show problems at a downstream hop |
245
+ | Tail-based | Trace-complete decision; keeps all error traces | Requires buffering the full trace before deciding; higher Collector memory |
246
+
247
+ Recommended recipe:
248
+
249
+ - 100% of traces where `status.code = ERROR`
250
+ - 100% of traces where business cost > $0.50 (custom attribute)
251
+ - 5-10% tail sampling of remaining traces for baseline coverage
252
+
253
+ For multi-replica tail sampling, use consistent hashing on `trace_id` via the OTel Collector `loadbalancing` exporter to route all spans of one trace to the same Collector instance.
254
+
255
+ ---
256
+
257
+ ## 8. Trace Backends
258
+
259
+ Cross-ref `../vendor-categories.md` for full vendor category taxonomy.
260
+
261
+ | Backend | Category | Key differentiator |
262
+ |---------|----------|--------------------|
263
+ | Jaeger (CNCF Graduated) | OSS full-stack | Kubernetes-native; Badger or Cassandra storage |
264
+ | Grafana Tempo | OSS full-stack | Low-cost object storage (S3/GCS); TraceQL query language |
265
+ | Zipkin | OSS (legacy) | Older wire format; superseded by OTel/Jaeger for new deployments |
266
+ | Honeycomb | High-cardinality specialist | BubbleUp auto-analysis; best for high-attribute-count traces |
267
+ | Datadog APM | Commercial SaaS | Deep integration with Datadog metrics and logs |
268
+ | Elastic APM | Commercial SaaS | Tight Kibana/Elasticsearch integration |
269
+ | SigNoz | OSS full-stack | ClickHouse-backed; cost-efficient at high ingestion rates |
270
+
271
+ ---
272
+
273
+ ## 9. Trace Exemplars
274
+
275
+ Exemplars link a metric data point to a specific trace, enabling direct navigation from a PromQL alert to the trace that caused the spike.
276
+
277
+ - Prometheus exemplar support is available since v2.31.0. Histograms and summaries can carry a `trace_id` label on selected samples.
278
+ - OTel SDK Java, Go, and Python emit exemplars automatically when the current span context is sampled.
279
+ - Usage: click a spike in a Grafana panel backed by a Prometheus histogram → the exemplar tooltip shows a `trace_id` link → click to open the trace in the configured trace backend (Tempo, Jaeger, etc.).
280
+
281
+ ```promql
282
+ # Example: p99 latency histogram with exemplar-capable query
283
+ histogram_quantile(0.99,
284
+ sum by (le, service_name) (
285
+ rate(http_server_request_duration_seconds_bucket{
286
+ deployment_environment="prod"
287
+ }[5m])
288
+ )
289
+ )
290
+ ```
291
+
292
+ Cross-ref `../incident-forensics.md §Step 2` for the exemplar-based trace acquisition flow.
293
+
294
+ ---
295
+
296
+ ## 10. Propagating Baggage (Security and Privacy)
297
+
298
+ W3C Baggage (`baggage` header) carries key-value pairs alongside the trace context. It is not part of the trace itself; it is a side-channel for business attributes that downstream services need.
299
+
300
+ ### Allowed vs. prohibited baggage content
301
+
302
+ | Allowed | Prohibited |
303
+ |---------|-----------|
304
+ | `tenant.id` | User email address |
305
+ | `user.tier` (tier name, not PII) | Session tokens or auth cookies |
306
+ | `deployment.sha` | Passwords or API keys |
307
+ | `feature.flag.name` | Any field classified as PII under GDPR/PIPA |
308
+
309
+ W3C Baggage Recommendation §3.1: baggage propagates to all downstream services within the same distributed operation. Any data placed in baggage is visible to every service on the call path, including third-party services. Data that is proprietary, confidential, or personally identifiable MUST NOT be placed in baggage without explicit downstream trust agreement.
310
+
311
+ Enforcement rule: strip or validate incoming baggage at the API gateway / ingress before forwarding to internal services. The mesh ingress gateway is the correct enforcement point; see `../layers/mesh.md §Baggage scrubbing`.
312
+
313
+ Cross-ref:
314
+
315
+ - `../boundaries/cross-application.md`: trust-boundary baggage validation rules per cloud and mesh
316
+ - `../signals/privacy.md`: PII classification and redaction for baggage content
317
+
318
+ ---
319
+
320
+ ## 11. Matrix Coverage (traces column)
321
+
322
+ These cells from `../matrix.md` have trace-specific behavior worth noting:
323
+
324
+ | Layer | Boundary | Status | Rationale |
325
+ |-------|----------|--------|-----------|
326
+ | L3-network | cross-application | PARTIAL | L3 packets carry no trace context natively; use trace-ID tagging at egress only |
327
+ | L4-transport | any | PARTIAL | TCP is not trace-native; trace context begins at mesh or L7 |
328
+ | mesh | cross-application | PASS | Primary trace origin; Envoy injects spans with zero application code changes |
329
+ | L7-application | cross-application | PASS | Primary; W3C `traceparent` on all outbound HTTP/gRPC calls |
330
+ | L7-application | multi-tenant | PASS | `tenant.id` propagated in W3C Baggage on every span |
331
+ | L7-application | release | PASS | `service.version` resource attribute on all spans; canary routing by version |
332
+ | L7-application | slo | PARTIAL | Tail sampling must retain error traces within the error budget window; traces are forensic input, not the SLI computation source |
333
+
334
+ ---
335
+
336
+ ## 12. Anti-patterns
337
+
338
+ These candidates extend `../anti-patterns.md`. Each pattern breaks trace continuity or introduces compliance risk.
339
+
340
+ | Anti-pattern | Consequence | Remediation |
341
+ |---|---|---|
342
+ | Missing parent spans (orphan spans) | Trace visualizer shows disconnected spans; root cause chain is broken | Verify `traceparent` extraction at every inbound call; check SDK auto-instrumentation coverage |
343
+ | `db.query.text` captured with untrimmed PII | Email or phone literal in WHERE clause stored in trace backend; GDPR/PIPA violation | Parameterize all queries; add OTel SDK `db.sanitize_query` option or Collector redaction processor |
344
+ | Async messaging without span links | `PRODUCER` and `CONSUMER` spans in separate disconnected traces; cannot follow a message end-to-end | Use OTel SDK `span.addLink()` with the producer span context when creating the consumer span |
345
+ | DLQ drain creates a new `trace_id` | Original failure span is orphaned; forensic link to the root cause is lost | Re-inject original `traceparent` from DLQ message headers into the replayed message headers |
346
+ | Head-based sampling on multi-service paths | A decision to not sample at the entry service drops all downstream spans, including error spans that only appear deep in the call graph | Use tail-based sampling with 100% error retention; see §7 |
347
+ | Kafka consumer lag unmonitored | DLQ silently fills; processing backlog not detected until downstream systems starve | Alert on `kafka_consumer_group_lag` per consumer group; cross-ref `../signals/metrics.md §messaging` |
348
+
349
+ ---
350
+
351
+ ## References
352
+
353
+ - OTel Trace API specification: <https://opentelemetry.io/docs/specs/otel/trace/api/>
354
+ - OTel Database semconv: <https://opentelemetry.io/docs/specs/semconv/database/>
355
+ - OTel Messaging semconv: <https://opentelemetry.io/docs/specs/semconv/messaging/>
356
+ - OTel RPC/gRPC semconv: <https://opentelemetry.io/docs/specs/semconv/rpc/grpc/>
357
+ - W3C Trace Context Level 1 Recommendation: <https://www.w3.org/TR/trace-context/>
358
+ - W3C Baggage Recommendation: <https://www.w3.org/TR/baggage/>
359
+ - Kafka producer/consumer instrumentation: <https://kafka.apache.org/documentation/>
360
+ - Confluent consumer lag metrics: <https://docs.confluent.io/platform/current/kafka/monitoring.html>
@@ -0,0 +1,214 @@
1
+ ---
2
+ otel_spec: "1.x (stable API/SDK)"
3
+ otel_semconv: "1.43.0 (2026-07)"
4
+ specs:
5
+ - "W3C Trace Context: Level 1 Recommendation 2020-02-06; Level 2 Candidate Recommendation"
6
+ - "W3C Baggage: Recommendation 2022-12-22"
7
+ - "ISO/IEC 25010: 2023; ISO/IEC 27001:2022; ISO/IEC 42010:2011"
8
+ notes:
9
+ - "Pinned versions (update on spec promotion or attribute deprecation; see SKILL.md §Versioning & Deprecation — no scheduled review)"
10
+ ---
11
+
12
+ # Observability Standards Reference
13
+
14
+ ## 1. Purpose
15
+
16
+ This file defines the normative standards baseline for the `oma-observability` skill. It answers:
17
+
18
+ - Which specifications govern trace propagation, attribute naming, and signal transport?
19
+ - How do ISO quality characteristics map onto observability concerns?
20
+ - Which OSI layers are in scope and why?
21
+ - What clock discipline is required for trustworthy timestamp ordering?
22
+
23
+ All other files in this skill reference this document as the authoritative source. Implementers MUST read this before writing instrumentation, configuring collectors, or authoring SLO policies.
24
+
25
+ ---
26
+
27
+ ## 2. Primary De Facto Standards
28
+
29
+ ### 2.1 OpenTelemetry (CNCF Incubating)
30
+
31
+ Source: <https://opentelemetry.io/docs/specs/otel/> | CNCF: <https://www.cncf.io/projects/opentelemetry/>
32
+
33
+ OpenTelemetry is the vendor-neutral, CNCF-incubating specification for telemetry APIs, SDKs, semantic conventions, and the wire protocol OTLP. It is the single de facto standard this skill operates on.
34
+
35
+ Four pillars in scope for this skill:
36
+
37
+ | Pillar | Specification | Wire protocol |
38
+ |--------|---------------|---------------|
39
+ | API / SDK | opentelemetry.io/docs/specs/otel/ | N/A |
40
+ | Semantic Conventions (semconv) | opentelemetry.io/docs/specs/semconv/ | N/A |
41
+ | Protocol (OTLP) | opentelemetry.io/docs/specs/otlp/ | gRPC :4317 / HTTP :4318 |
42
+ | Collector | opentelemetry.io/docs/collector/ | N/A |
43
+
44
+ Key constraints:
45
+ - Use the stable semconv groups listed in Section 3 for production instrumentation.
46
+ - OTLP is the mandatory export format; vendor-native formats are acceptable only as secondary sinks.
47
+ - The OTel Operator (`v1beta1`) manages Collector and auto-instrumentation CRs in Kubernetes.
48
+
49
+ ### 2.2 W3C Trace Context
50
+
51
+ - Level 1 Recommendation: <https://www.w3.org/TR/trace-context/> (published 2020-02-06)
52
+ - Level 2 Candidate Recommendation: <https://www.w3.org/TR/trace-context-2/>
53
+
54
+ W3C Trace Context defines the `traceparent` and `tracestate` HTTP headers that establish a distributed trace across service boundaries. Level 1 is the production-stable baseline. Level 2 adds the `traceflags` precision extension and is safe to implement against CR status.
55
+
56
+ Mandatory propagation rule: every outbound HTTP/gRPC call MUST forward `traceparent`. Stripping it silently is an anti-pattern.
57
+
58
+ Vendor header compatibility reference (informative):
59
+ - AWS X-Ray: `X-Amzn-Trace-Id`; compatible bridge via OTel X-Ray propagator
60
+ - GCP Cloud Trace: prefers W3C; legacy `X-Cloud-Trace-Context` is supported for backward compat
61
+ - Datadog: `X-Datadog-Trace-Id`; use OTel Datadog exporter for bridging
62
+
63
+ ### 2.3 W3C Baggage
64
+
65
+ Recommendation: <https://www.w3.org/TR/baggage/> (2022-12-22)
66
+
67
+ W3C Baggage defines the `baggage` HTTP header for key-value pairs propagated alongside a trace. The W3C spec itself contains trust-boundary and PII guidance: baggage is visible to all downstream services and MUST NOT carry secrets, tokens, or personally identifiable information without explicit downstream trust agreement.
68
+
69
+ OTel Baggage API reference: <https://opentelemetry.io/docs/specs/otel/baggage/api/>
70
+
71
+ Usage rules enforced by this skill:
72
+ - Allowed: tenant ID, feature flag state, deployment SHA, region hint.
73
+ - Not allowed: user email, session tokens, authentication credentials.
74
+ - Trust boundary: strip or validate baggage at ingress gateway before forwarding to external services.
75
+
76
+ ---
77
+
78
+ ## 3. OpenTelemetry Semconv Stability Tiers
79
+
80
+ Semantic convention stability determines which attributes can be used in production without risk of breaking changes. Pin the semconv version in the file header above and update on the triggers listed in §7 (spec promotion, attribute deprecation).
81
+
82
+ Source: <https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/>
83
+
84
+ | Tier | Groups | Production use |
85
+ |------|--------|----------------|
86
+ | Stable | `service.*`, `host.*`, `cloud.*`, `k8s.*`, `http.*`, `db.*` (core), `network.*` (core), `error.*` | Yes, without caveat |
87
+ | Release Candidate (RC) | `rpc.*`, gRPC semconv | Yes, expect minor changes |
88
+ | Development | `tls.*`, `network.connection.*` | Test environments; production use requires change-tolerance |
89
+ | Experimental | `gen_ai.*` (deprecated in core registry since semconv 1.42; maintained in the dedicated GenAI semconv repository), profiles (OTEP 0239; Development) | Not for production SLOs |
90
+
91
+ Notes:
92
+ - `network.*` core attributes (e.g., `network.protocol.name`, `network.transport`) are Stable. `network.connection.*` (e.g., `network.connection.type`, `network.connection.subtype`) are Development.
93
+ - `tls.*` (all) are Development as of semconv 1.43.0 (verified 2026-07). For TLS deep inspection, use Wireshark or vendor-specific TLS tooling rather than OTel attributes.
94
+ - OTEP 0239 (profiling signal) is Development; SDK support is Java-only as of 2026-Q2. Parca and Pyroscope are in production, but the OTel profiling spec is not yet stable. Mark any profiling-related SLOs as experimental.
95
+
96
+ Verified sources:
97
+ - TLS attrs: <https://opentelemetry.io/docs/specs/semconv/attributes-registry/tls/>
98
+ - Network attrs: <https://opentelemetry.io/docs/specs/semconv/attributes-registry/network/>
99
+ - RPC/gRPC: <https://opentelemetry.io/docs/specs/semconv/rpc/grpc/>
100
+
101
+ ---
102
+
103
+ ## 4. ISO/IEC Indirect Mapping
104
+
105
+ ISO/IEC 25010:2023 (<https://www.iso.org/standard/78176.html>) defines the Systems and Software Quality Model. There is no dedicated "Observability" quality characteristic in the 2023 edition. Observability concerns map indirectly through three characteristics:
106
+
107
+ | ISO/IEC 25010:2023 characteristic | Sub-characteristic | Observability concern |
108
+ |---|---|---|
109
+ | Maintainability | Analysability | Can operators diagnose system state from telemetry? |
110
+ | Security | Accountability | Are actions traceable to an authenticated identity (audit logs)? |
111
+ | Reliability | Faultlessness | Does telemetry surface defects before users encounter them? |
112
+
113
+ This mapping is informative, not normative. It is useful when presenting observability investment in terms that quality assurance or audit stakeholders recognize.
114
+
115
+ Related standards:
116
+ - **ISO/IEC 27001:2022 / 27002:2022** (<https://www.iso.org/standard/27001>); controls for information security management systems; governs log integrity, access control on observability backends, and audit trail requirements.
117
+ - **ISO/IEC 42010:2011** (<https://www.iso.org/standard/50508.html>); architecture description standard. An "observability viewpoint" is a valid architecture viewpoint under 42010 for documenting how stakeholders inspect system internals.
118
+
119
+ ---
120
+
121
+ ## 5. OSI Boundary Decision
122
+
123
+ This skill operates on OSI layers L3, L4, mesh (L4-L7 hybrid), and L7. The following table makes the in-scope and out-of-scope decisions explicit.
124
+
125
+ ### In scope
126
+
127
+ | Layer | Label | Coverage |
128
+ |-------|-------|----------|
129
+ | L3 | Network | IP routing, VPC flow logs, BGP/BMP, ICMP, PMTUD |
130
+ | L4 | Transport | TCP retransmits/RTT, eBPF (Beyla/Pixie), QUIC/HTTP3 transport |
131
+ | L4-L7 | Service mesh | Istio/Linkerd/Envoy: zero-code instrumentation, mTLS metadata as security context |
132
+ | L7 | Application | HTTP/gRPC/WebSocket, RUM (web + mobile), crash analytics, messaging |
133
+
134
+ ### Out of scope
135
+
136
+ | Layer | Label | Reason | Use instead |
137
+ |-------|-------|--------|-------------|
138
+ | L1 | Physical | SaaS hypervisor hides; no OTel semconv coverage | Vendor DCIM tooling (Nlyte, Sunbird, Device42) |
139
+ | L2 | Data Link | Same as L1; SNMP/IPMI are hardware domains | Vendor DCIM tooling; SNMP exporters for Prometheus if needed |
140
+ | L5 | Session (full) | gRPC session semantics moved to L7 instrumentation; WebSocket deferred | WebSocket-specific vendor tooling |
141
+ | L6 | Presentation (full) | TLS kept as security context attributes only (`tls.*` Development tier); full TLS inspection is not OTel's domain | Wireshark for packet-level TLS; Cloudflare Radar for TLS ecosystem data; vendor-specific TLS inspection tooling |
142
+
143
+ Rationale: approximately 90% of production debugging occurs at L3, L4, mesh, and L7. L1/L2 are opaque to SaaS workloads. L5/L6 full coverage requires OTel semconv maturity that does not yet exist (Development tier).
144
+
145
+ ---
146
+
147
+ ## 6. Clock Discipline
148
+
149
+ Distributed traces depend on monotonic, synchronized clocks across all nodes. Clock drift corrupts waterfall charts and makes parent-before-child ordering unreliable.
150
+
151
+ ### Requirements
152
+
153
+ - **NTP or chrony** MUST be running and synchronized on all host VMs and container hosts.
154
+ - Acceptable drift tolerance for trace timestamp correlation: **< 100 ms** (typical NTP accuracy on well-connected hosts).
155
+ - For sub-millisecond precision (financial, telco, or high-frequency workloads): use **PTP (IEEE 1588)** hardware timestamping.
156
+
157
+ ### Cloud hypervisor time sync notes
158
+
159
+ | Cloud | Mechanism | Notes |
160
+ |-------|-----------|-------|
161
+ | AWS | Chrony + Amazon Time Sync Service (169.254.169.123) | PTP-backed time source; verify with `chronyc tracking` and `chronyc sources -v` |
162
+ | GCP | Internal hypervisor clock sync (`metadata.google.internal` via `time.google.com`) | GCP VMs inherit host clock. `timedatectl show` only confirms a sync daemon is active; to verify the actual offset, use `chronyc sources -v` (chrony) or `timedatectl timesync-status` (systemd-timesyncd) |
163
+ | Azure | Hyper-V IC timesync primary; external NTP fallback only if Hyper-V IC tools absent | Azure Linux VMs with the Hyper-V Integration Services use host time as the authoritative source. External NTP (for example `time.windows.com`) as a peer source can conflict with IC timesync; treat it as a fallback, not a parallel source. Docs: <https://learn.microsoft.com/azure/virtual-machines/linux/time-sync> |
164
+
165
+ ### Span timestamp validation rule
166
+
167
+ Validate each span against its own timestamps:
168
+
169
+ ```
170
+ span.start_time <= span.end_time
171
+ ```
172
+
173
+ A parent span may end before an asynchronous child completes; the OTel Trace API explicitly allows children to continue after their parent ends. Parent/child interval containment is not a validity invariant or clock-drift detector. Investigate suspicious cross-host ordering using measured clock offsets and the actual synchronous/asynchronous operation semantics. See `resources/meta-observability.md` and <https://opentelemetry.io/docs/specs/otel/trace/api/>.
174
+
175
+ ### Anti-pattern
176
+
177
+ NTP drift left unmonitored is anti-pattern #18 in this skill: waterfall charts appear causally wrong, leading engineers to chase phantom race conditions. Monitor `otelcol_receiver_accepted_spans` and node-level NTP offset metrics together.
178
+
179
+ ---
180
+
181
+ ## 7. Versioning and Review Triggers
182
+
183
+ - The spec version block in this file's header MUST be updated when:
184
+ - Any listed semconv group promotes from Development → RC or RC → Stable.
185
+ - A listed W3C document advances maturity (CR → PR → Recommendation).
186
+ - OTel releases a new minor version with breaking semconv changes.
187
+ - **Review triggers only, no scheduled cadence** (see `SKILL.md` §Versioning & Deprecation): OTel spec releases and CNCF landscape changes (<https://landscape.cncf.io/>) affecting cited content; verify live when load-bearing.
188
+ - When updating, also check and update affected signal/layer files that reference the changed attribute group.
189
+ - Skill minor version bump required on any normative change to this file.
190
+
191
+ ---
192
+
193
+ ## 8. References
194
+
195
+ Primary sources, in order of precedence:
196
+
197
+ 1. OpenTelemetry specification: <https://opentelemetry.io/docs/specs/otel/>
198
+ 2. OTel Semantic Conventions: <https://opentelemetry.io/docs/specs/semconv/>
199
+ 3. OTLP specification: <https://opentelemetry.io/docs/specs/otlp/>
200
+ 4. W3C Trace Context L1 Recommendation: <https://www.w3.org/TR/trace-context/>
201
+ 5. W3C Trace Context L2 Candidate Recommendation: <https://www.w3.org/TR/trace-context-2/>
202
+ 6. W3C Baggage Recommendation: <https://www.w3.org/TR/baggage/>
203
+ 7. ISO/IEC 25010:2023; <https://www.iso.org/standard/78176.html>
204
+ 8. ISO/IEC 27001:2022; <https://www.iso.org/standard/27001>
205
+ 9. ISO/IEC 42010:2011; <https://www.iso.org/standard/50508.html>
206
+ 10. CNCF Projects: <https://www.cncf.io/projects/>
207
+ 11. CNCF Landscape (authoritative vendor registry): <https://landscape.cncf.io/>
208
+ 12. OTel TLS attributes registry: <https://opentelemetry.io/docs/specs/semconv/attributes-registry/tls/>
209
+ 13. OTel network attributes registry: <https://opentelemetry.io/docs/specs/semconv/attributes-registry/network/>
210
+ 14. OTel RPC/gRPC semconv: <https://opentelemetry.io/docs/specs/semconv/rpc/grpc/>
211
+ 15. OTel Baggage API: <https://opentelemetry.io/docs/specs/otel/baggage/api/>
212
+ 16. AWS Time Sync Service: <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/set-time.html>
213
+ 17. Azure Linux time sync: <https://learn.microsoft.com/azure/virtual-machines/linux/time-sync>
214
+ 18. OTEP 0239 (profiling signal): <https://github.com/open-telemetry/oteps/blob/main/text/profiles/0239-profiles-data-model.md>