Synchronizes OpenTelemetry semantic conventions for GenAI into dotnet/extensions. Helps track and migrate changes from external repositories.
Install
mkdir -p .claude/skills/update-otel-genai-conventions && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/13391" && unzip -o skill.zip -d .claude/skills/update-otel-genai-conventions && rm skill.zipInstalls to .claude/skills/update-otel-genai-conventions
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Analyze OpenTelemetry GenAI semantic-conventions changes (PRs, CHANGELOG snapshots, date ranges, or releases when they exist) and produce compensating change plans for dotnet/extensions. The conventions now live in their own repo at open-telemetry/semantic-conventions-genai and cover gen-ai, mcp, openai, anthropic, aws-bedrock, and azure-ai-inference areas; the previous home was open-telemetry/semantic-conventions under the area:gen-ai label. Use when asked to "update OTel conventions", "check semantic-conventions-genai", "plan gen-ai convention changes", "bump genai semconv version", review gen-ai/MCP/provider convention PRs, or when given a PR number/URL, CHANGELOG snapshot, date range, or release version from either repo. Also use for "update OpenTelemetry", "bump semconv version", or "what changed in semantic-conventions-genai".Key capabilities
- →Analyze OpenTelemetry GenAI semantic-conventions changes
- →Produce compensating change plans for dotnet/extensions
- →Review GenAI/MCP/provider convention PRs
- →Identify updates by changelog fragment snapshot
How it works
The skill analyzes changes from the OpenTelemetry GenAI semantic-conventions repositories and generates corresponding update plans for the dotnet/extensions framework.
Inputs & outputs
When to use update-otel-genai-conventions
- →Bump GenAI semantic convention versions
- →Analyze impact of upstream OTel convention changes
- →Plan migration of LLM telemetry providers
About this skill
Update OTel GenAI Conventions
Analyze OpenTelemetry GenAI semantic-conventions changes — PRs, changelog snapshots, date ranges, or releases — primarily from open-telemetry/semantic-conventions-genai, and produce compensating updates in dotnet/extensions. See the Migration Note below for context, including where these conventions were previously managed.
Migration Note
The OpenTelemetry GenAI semantic conventions are maintained in a dedicated
repo:
open-telemetry/semantic-conventions-genai,
which also hosts mcp, openai, anthropic, aws-bedrock, and
azure-ai-inference conventions. They were previously managed in the
consolidated
open-telemetry/semantic-conventions
repo under the area:gen-ai label.
Implications for this skill:
- Primary input source is
semantic-conventions-genai. The consolidatedsemantic-conventionsrepo remains a fallback for catch-up audits, historical context, and any in-flight PR that started there previously. - Every PR is in scope for consideration, because
semantic-conventions-genaiis specific to GenAI conventions. (In the consolidatedsemantic-conventionsrepo thearea:gen-ailabel scoped this work, and it still applies there for catch-up.) The repo does use more granulararea:*labels (for examplearea:mcp,area:inference,area:tools,area:embeddings), which can help triage but are not required for scoping. - No releases yet in
semantic-conventions-genai. <!-- TODO: remove the "no releases yet" framing once semantic-conventions-genai ships its first release --> The repo manages its changelog with Towncrier: theCHANGELOG.mdUnreleasedsection is intentionally empty (fragments are compiled into it only at release time), so the live "what's new" view is the set of news fragments underchangelog.d/, each named<upstream-PR>.<type>.md(types includeenhancement,bugfix,breaking,clarification). Pin a snapshot via commit SHA / ref for reproducible audits. - Release tagging is not proven yet. Until the repo ships real GenAI releases, treat GitHub Releases plus the release tag's dereferenced commit as the workflow baseline, but actively compare it with other durable signals (CHANGELOG release headers, schema URLs, and observed tag naming). Report confidence in the approach used, and surface a PR-body caution if another release signal becomes clearly more dependable than the workflow baseline.
- GenAI version is now independent of core semconv: it tracks its own
version line. The schema URL
https://opentelemetry.io/schemas/gen-ai/X.Y.Zis intended to carry the gen-ai version, but is not published yet (the repo'sREADME.md## Schema URLsection isTODO). The repo'sversions.envholds only the core semconv dependency (SEMCONV_VERSION, currentlyv1.42.0) and the Weaver toolchain version — it does not carry the GenAI convention version, so do not treatSEMCONV_VERSIONas the GenAI version. Until a GenAI release or schema URL exists, there is no published GenAI version number; identify the update by itschangelog.d/fragment snapshot, pinned to a commit SHA / ref / date. - Spec URL
https://opentelemetry.io/docs/specs/semconv/gen-ai/currently resolves to a "Moved" stub that states the GenAI conventions have moved tosemantic-conventions-genaiand is no longer maintained; it no longer renders the spec content. The<see href>in dotnet/extensions source files still points at this URL, so leave it for now but revisit retargeting it once OpenTelemetry publishes a canonical URL for the conventions (the repo'sREADME.md## Schema URLsection is currentlyTODO). <!-- TODO: once open-telemetry/semantic-conventions-genai publishes its canonical spec/schema URL, retarget the OpenTelemetry* doc-comment `<see href>` from the /docs/specs/semconv/gen-ai/ stub to that URL. --> - PR numbering is not interchangeable across repos. Always
disambiguate with
open-telemetry/semantic-conventions#NNNoropen-telemetry/semantic-conventions-genai#NNNwhen there is any risk of collision. - Doc-comment wording in dotnet/extensions source still reads "Semantic Conventions for Generative AI systems v1.XX". The next convention-update PR should migrate this to "GenAI Semantic Conventions vX.Y.Z" — see references/file-inventory.md §Version References.
When a referenced PR number doesn't resolve in semantic-conventions-genai,
check the consolidated semantic-conventions repo before assuming the
input is invalid.
Cross-repo applicability
This skill lives in dotnet/extensions and its file paths, build
commands, and PR-description conventions are tuned for that repo. The
semantic-conventions-genai repo also hosts provider-specific areas
(anthropic, aws-bedrock) whose dotnet instrumentation lives in
other SDK repositories that we contribute to:
| Upstream area | Repository | Notes |
|---|---|---|
anthropic | anthropics/anthropic-sdk-csharp | Anthropic's official .NET SDK. |
aws-bedrock | aws/aws-sdk-net | AWS Bedrock instrumentation lives in the BedrockRuntime service library (AWSSDK.BedrockRuntime) inside the AWS SDK monorepo. |
The skill can optionally be applied in those repos with the following adaptations:
- Apply the convention analysis, classification framework (references/change-classification.md), audit-table shape, area routing, doc-comment wording target ("GenAI Semantic Conventions vX.Y.Z"), version-reference grep recipes, and PR-description shape (references/pr-description.md).
- Do not assume dotnet/extensions-specific paths
(
src/Libraries/Microsoft.Extensions.AI*/), theOpenTelemetryConsts.csconstants layout, the API-baseline workflow, or the build/test commands in references/build-commands.md. Use the target repo's own conventions for code structure, constants organization, and validation. - Scope by repo: when running in another repo, the in-scope upstream
area is the one that repo instruments (e.g.
anthropicinanthropics/anthropic-sdk-csharp,aws-bedrockin theBedrockRuntimelibrary ofaws/aws-sdk-net). Other areas are out of scope from that repo's perspective even though they remain in scope fordotnet/extensions. - Pre-flight still applies — search open PRs in the target repo for prior coverage before producing a plan.
Mode Detection
Determine the operating mode from the user's request:
| Signal | Mode |
|---|---|
| User asks to "audit" current implementation or "check alignment" with conventions | Mode 1: Audit |
| User asks to "update for vX.Y" or "apply vX.Y changes" in autopilot / one-shot | Mode 2: Autopilot |
| User asks to "generate a prompt" or "delegate to Copilot" or "CCA prompt" | Mode 3: CCA Prompt |
| Running inside Copilot Coding Agent with a prompt referencing this skill | Mode 4: CCA Implementation |
User is in /plan mode, asks to "plan" changes, or asks to "implement" / "apply" changes | Mode 5: Plan-then-Implement |
User asks to /review or "review" convention changes | Mode 6: Review |
If unclear, default to Mode 5 (Plan-then-Implement) and offer Mode 3 as an alternative.
Input Handling
semantic-conventions-genai does not yet publish releases. Until it does,
the user typically provides one of:
- PR references in
semantic-conventions-genai— full URL,#NNN, oropen-telemetry/semantic-conventions-genai#NNNform. (Noarea:label filter is needed: the repo is gen-ai-focused by definition.) - A
changelog.d/snapshot — a commit SHA, branch ref, or ahttps://github.com/open-telemetry/semantic-conventions-genai/tree/{ref}/changelog.dURL pinning the Towncrier news fragments at a point in time. (TheCHANGELOG.mdUnreleasedsection stays empty until release, so use the fragments — notCHANGELOG.md— for unreleased work.) - A date range or "since last update" — list of PRs merged to
semantic-conventions-genai'smainbetween two refs / dates. - A release version or release URL — once releases exist
(
https://github.com/open-telemetry/semantic-conventions-genai/releases/tag/{version}).
For catch-up or historical work, the consolidated
semantic-conventions repo is still valid input:
- A semantic-conventions release version (e.g.
v1.40.0) → fetch fromhttps://github.com/open-telemetry/semantic-conventions/releases/tag/{version}(filter toarea:gen-aiPRs). - A release URL from
semantic-conventions→ fetch the release notes directly. - PR references from
semantic-conventions— only the ones witharea:gen-ai. Use theopen-telemetry/semantic-conventions#NNNform to disambiguate fromsemantic-conventions-genaiPR numbers.
When PR numbers are given without a full URL, default to
semantic-conventions-genai and fall back to the consolidated
semantic-conventions repo only if the PR doesn't exist in
semantic-conventions-genai or the user explicitly references it.
Release Tagging Signal Analysis
For every audit or implementation pass that creates or refreshes an upstream-scan tracking PR, include a concise release-tagging analysis. The current workflow baseline is:
- Read GitHub's latest release for
open-telemetry/semantic-conventions-genai. - Resolve that release's
tag_namethroughrefs/tags, dereferencing annotated tags to the commit they
Content truncated.
When not to use it
- →When the task is not related to OpenTelemetry GenAI semantic conventions
- →When the target repository is not dotnet/extensions
- →When the changes are not from open-telemetry/semantic-conventions-genai or open-telemetry/semantic-conventions
Limitations
- →The skill is tuned for the dotnet/extensions repository.
- →No releases yet in `semantic-conventions-genai` means updates are identified by changelog fragments.
- →The GenAI version is independent of core semconv and has no published version number yet.
How it compares
This skill automates the analysis of OpenTelemetry GenAI convention changes and the generation of update plans for dotnet/extensions, which would otherwise be a manual process.
Compared to similar skills
update-otel-genai-conventions side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| update-otel-genai-conventions (this skill) | 0 | 1mo | Review | Advanced |
| update-roslyn-version | 2 | 2mo | Review | Advanced |
| appinsights-instrumentation | 6 | 7mo | Review | Beginner |
| dependency-update | 1 | 2mo | Review | Intermediate |
Try saying
Example prompts that trigger this skill in your AI assistant.
More by dotnet
View all by dotnet →You might also like
update-roslyn-version
dotnet
Guide for updating the Roslyn language server version in the vscode-csharp repository. Use this when asked to update Roslyn, bump the Roslyn version, or upgrade the language server version.
appinsights-instrumentation
github
Instrument a webapp to send useful telemetry data to Azure App Insights
dependency-update
dotnet
Guides dependency version updates by checking nuget.org for latest versions, triggering the dotnet-migrate-package Azure DevOps pipeline, and monitoring runs. Use this when asked to update external NuGet dependencies.
run-helix-tests
dotnet
Submit and monitor .NET MAUI unit tests on Helix infrastructure. Supports running XAML, Resizetizer, Core, Essentials, and other unit test projects on distributed Helix queues.
run-integration-tests
dotnet
Build, pack, and run .NET MAUI integration tests locally. Validates templates, samples, and end-to-end scenarios using the local workload.
generate-changes
dotnet
>