OpenTelemetry Weaver registry authoring, codegen, and CI enforcement.

Apache-2.0Auto-check passedDevOps & Cloud

Install Otel Weaver

skills CLI
$ npx skills add ollygarden/opentelemetry-agent-skills --skill otel-weaver -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install ollygarden/opentelemetry-agent-skills otel-weaver --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/ollygarden/opentelemetry-agent-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/otel-weaver .claude/skills/otel-weaver && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
otel-weaver
GitHub stars
106
Token cost
~2.7k tokens
SKILL.md length
1,349 words
Files
6 (incl. scripts, references)
Skills in repo
19
Repo updated
First seen
Licence
Apache-2.0

At a glance

OpenTelemetry Weaver registry authoring, codegen, and CI enforcement.

  • Works in 3 steps: Registry — directory of YAML files.… → Templates — directory of MiniJinja files… → Policies — Rego rules evaluated by the…
  • Adopting Weaver
  • SKILL.md covers Mental Model, Non-Negotiable Rules, Workflow and Gotchas, plus 3 more sections
  • Runs Shell scripts from its folder; calls git, brew and ruff

What it does

Otel Weaver is an agent skill from ollygarden/opentelemetry-agent-skills. OpenTelemetry Weaver registry authoring, codegen, and CI enforcement. Use when adopting Weaver, authoring or reviewing a registry (manifest, attributes, metrics, spans, events), writing Jinja2 templates against the resolved schema, migrating hand-maintained telemetry constants, or wiring weaver registry check/generate/diff into CI.

Its SKILL.md is about 2.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 7 other files, including scripts and reference files (for example `references/ci-integration.md`, `references/migration-playbook.md` and `references/registry-authoring.md`).

It sits in DevOps & Cloud, covering Observability and Project scaffolding. It works with OpenTelemetry. The repository describes itself as: Vendor-neutral OpenTelemetry skills for AI coding agents like Claude Code, Cursor, and Codex, grounded in upstream sources. The licence is Apache-2.0.

When your agent uses it

  • Adopting Weaver
  • Reviewing a registry (manifest
  • Writing Jinja2 templates against the resolved schema
  • Migrating hand-maintained telemetry constants

Example prompts

  • “/otel-weaver”

Requirements

  • A Bash shell
  • Docker

Workflow steps

3 steps, taken from the first numbered list in SKILL.md.

  1. Registry — directory of YAML files. manifest.yaml is required; its schema_url (OTel schema URL format, http[s]://host/path/) both names…
  2. Templates — directory of MiniJinja files (Jinja2-compatible, not full Jinja2 — auto-escaping is off by default since v0.22.0 and loop…
  3. Policies — Rego rules evaluated by the Regorus (OPA-compatible) engine, in four packages: before_resolution (raw parsed groups…

What it can do on your machine

Read from SKILL.md and the folder at commit 9900032. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 1 file in scripts/ (Shell), which the agent can run.

    Shell commands in SKILL.md call:

    • git
    • brew
    • ruff

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • github.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Otel Weaver loads about 2.7k tokens when it runs, and up to ~8.8k if it reads all its reference files. Until then it costs about 88 tokens; SKILL.md has 1,349 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~88
When it runs · the whole SKILL.md, loaded when a task matches
~2.7k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~8.8k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from ollygarden/opentelemetry-agent-skills at commit 9900032, republished under its Apache-2.0 licence (© ollygarden). 1,349 words, ~2,745 tokens.

Download SKILL.mdSave it as .claude/skills/otel-weaver/SKILL.md (or your agent's skills folder). This skill also uses 5 other files; get the full folder from GitHub.
name
otel-weaver
description
OpenTelemetry Weaver registry authoring, codegen, and CI enforcement. Use when adopting Weaver, authoring or reviewing a registry (manifest, attributes, metrics, spans, events), writing Jinja2 templates against the resolved schema, migrating hand-maintained telemetry constants, or wiring `weaver registry check`/`generate`/`diff` into CI.

OpenTelemetry Weaver

Use this skill when an organization wants to define its own semantic conventions on top of upstream OTel and generate language bindings from them.

Usage:

  • pair with otel-semantic-conventions to decide which attributes already exist upstream and should not be redeclared in the local registry
  • use otel-sdk-versions only for SDK package selection; Weaver versions are tracked separately at https://github.com/open-telemetry/weaver/releases

If a companion skill is unavailable:

  • do not stop
  • do not rely on memory alone when the guidance can be checked from official sources
  • consult the Weaver repo, schemas/semconv-syntax.v2.md, and docs/usage.md / docs/validate.md
  • state which fallback you used and leave any unverified item unresolved

Mental Model

Three moving parts:

  1. Registry — directory of YAML files. manifest.yaml is required; its schema_url (OTel schema URL format, http[s]://host/path/<version>) both names the registry and carries its version in the final path segment. Dependency entries also require schema_url plus optional registry_path. The rest declare attributes, metrics, spans, events, entities. The version segment of schema_url is yours to manage; bump it on changes. (semconv_version and schema_base_url are deprecated in favor of schema_url; top-level name is not a v0.26.1 manifest field.)
  2. Templates — directory of MiniJinja files (Jinja2-compatible, not full Jinja2 — auto-escaping is off by default since v0.22.0 and loop break/continue are supported) plus a weaver.yaml per target language describing which templates to run, with what filter, in what application_mode, and with what output filename.
  3. Policies — Rego rules evaluated by the Regorus (OPA-compatible) engine, in four packages: before_resolution (raw parsed groups; unsupported and skipped with --v2), after_resolution (resolved registry), comparison_after_resolution (only when --baseline-registry is passed), and live_check_advice (per-sample during live-check). Built-in OTel policies are the floor; custom policies layer on org rules.

These three replace a hand-rolled const.go (or equivalent): const blocks become the registry, the act of writing them becomes codegen, and tribal knowledge becomes policies.

Non-Negotiable Rules

  • Install Weaver via one of the methods documented at https://github.com/open-telemetry/weaver#install (release binary, otel/weaver:vX.Y.Z Docker image, or the setup-weaver GitHub Action). Never brew install weaver — that resolves to an unrelated Scribd tool.
  • Reference upstream semconv attributes by ref rather than redeclaring them. Boundary domains (http, db, messaging, rpc, network, gen-ai, ...) belong in upstream OTel semconv, not in a local registry. Use the language SDK's semconv package for those at runtime.
  • Every attribute and signal definition needs stability; include it on enum members too, as required by the v2 syntax guide. Weaver v0.26.1 rejects missing definition stability but reports missing enum-member stability only as a non-fatal warning in normal mode.
  • In v2, an attribute reference may refine fields such as brief, note, examples, and annotations, but not stability or deprecated; those always come from the attribute definition.
  • Use a domain prefix (e.g. ecommerce., acme.) for org-local attributes, metrics, and spans.
  • Run the language formatter (gofmt -w, prettier, ruff format, ...) on generated output. Jinja whitespace produces multiple blank lines; without formatting, the diff check in CI will fail spuriously.
  • Confirm the resolved schema shape before writing a template. For a definition/2 registry, call the grouped jq helpers with {"v2": true}; the v2 template ctx preserves fields such as attribute key, metric name, span type/kind and structured span.name.note, plus entity type/identity/description. See references/template-authoring.md for how to dump the exact shape.

Workflow

  1. Install or locate Weaver. Follow the upstream install instructions at https://github.com/open-telemetry/weaver#install — pick a pinned release binary, the otel/weaver:vX.Y.Z Docker image, or the setup-weaver GitHub Action. Use Docker for CI and reproducible local runs.
  2. Author the registry. Required: manifest.yaml plus one or more definition/2 YAML files declaring attributes, attribute groups, metrics, spans, events, or entities. See references/registry-authoring.md.
  3. Author templates. One target dir per language under templates/registry/<lang>/ with weaver.yaml plus *.j2. See references/template-authoring.md.
  4. Validate and generate. weaver registry check --v2 -r ./telemetry/registry/ for fast feedback. weaver registry generate --v2 --registry ./telemetry/registry/ --templates ./telemetry/templates/ <lang> <output-dir> for codegen. Run the language formatter on the output.
  5. Wire into CI. Three gates: check (schema), generate + git diff --exit-code (checked-in code is current), diff against the base branch (surfaces breaking changes). See references/ci-integration.md.

The Weaver CLI has more subcommands than this workflow touches: stats and json-schema for quick registry sanity checks, update-markdown for keeping semconv snippets in docs current, emit/live-check/infer for working against live OTLP telemetry, package for writing a self-contained resolved registry artifact (the replacement for the deprecated resolve), mcp for exposing a registry to LLM tooling, and serve for an HTTP+UI mode. All are out of scope here (see below) but worth knowing exist before assuming check/generate/diff is the whole surface.

Show full SKILL.md (608 more words)Show less

Gotchas

These cost time and are not obvious from the upstream docs:

  1. brew install weaver installs the wrong tool. Use GitHub releases or Docker.
  2. Generated output is not formatter-clean. Always run the language formatter after weaver registry generate.
  3. Jq helper defaults target the legacy schema. For definition/2, pass {"v2": true} and use the preserved v2 fields: attribute key, metric name, span type/kind and span.name.note, plus entity type/identity/description. Always generate and inspect the filtered ctx before writing a template.
  4. The comment Jinja filter takes a keyword argument: attr.brief | comment(format="go"). It already emits the // prefix; do not add another.
  5. Attributes, metrics, spans, events, and entities all have prebuilt grouped jq filters (semconv_grouped_attributes, semconv_grouped_metrics, semconv_grouped_spans, semconv_grouped_events, semconv_grouped_entities). For definition/2, use (for example) semconv_grouped_spans({"v2": true}) as a folded YAML scalar; the bare helper defaults select the legacy schema.
  6. weaver registry check emits "File format definition/2 is not yet stable" (a warning) for custom v2 definition files in v0.26.1. This is normal; do not treat it as a failure.
  7. --future is opt-in but still elevates the definition/2 instability warning to an error for a custom v2 registry in v0.26.1. Leave it off until the format goes stable.
  8. CLI argument ordering for generate: target directory name is positional after --registry and --templates; the output directory follows. --templates points at the parent that contains target dirs, not at the language-specific subdir.
  9. Span name in registry vs. runtime: required schema fields are type, kind (client/server/producer/consumer/internal), brief, stability, and a structured name: { note: "..." }. For internal business spans, putting the dotted type identifier in name.note and rendering the resolved span.name.note string at runtime is clean.
  10. What does NOT belong in your local registry. DB, HTTP, messaging, RPC, network, GenAI, and similar boundary spans/attributes follow upstream OTel semconv. Until upstream is pulled in as a manifest dependency, instrumentation for those should reference the language SDK's semconv package directly. This is the most common modeling mistake.
  11. Counter and UpDownCounter names should not append _total; this is the current semconv v1.44.0 naming rule.
  12. Duration instruments should use seconds (s) under the current semconv v1.44.0 unit guidance.

References To Load On Demand

  • registry YAML field reference: references/registry-authoring.md
  • Jinja2 patterns, jq filters, resolved-shape cheat sheet: references/template-authoring.md
  • ready-to-lift GitHub Actions example: references/ci-integration.md
  • hand-maintained-constants → registry walkthrough: references/migration-playbook.md
  • semantic conventions skill: otel-semantic-conventions
  • manual instrumentation skill: manual-instrumentation

Out Of Scope

These are natural follow-ups but not part of this skill:

  • publishing the registry as a versioned artifact for downstream consumers (weaver registry package)
  • declaring upstream semantic-conventions as a manifest dependency
  • weaver registry live-check/emit/infer against live OTLP telemetry
  • weaver registry mcp / weaver serve
  • custom Rego policies beyond the built-ins
  • helper-function codegen (MyMetricName(meter) wrappers)

Verification Contract

If you authored or modified a Weaver registry, templates, or CI integration:

  • re-open the changed files before finishing
  • run weaver registry check --v2 against the definition/2 registry and capture the result
  • run weaver registry generate --v2 and the language formatter, then verify git diff --exit-code is clean
  • confirm each applicable item with codebase evidence

Report the final check with:

  • [x] completed
  • [~] not applicable, with a reason
  • [ ] unresolved

Use these items:

  • registry has manifest.yaml with a schema_url whose final path segment is the version
  • every definition and enum member has stability
  • org-local attributes/metrics/spans use a domain prefix
  • no boundary-domain (http/db/messaging/rpc/network/gen-ai) entries duplicated locally
  • Counter and UpDownCounter names have no _total suffix
  • duration histograms use s (seconds)
  • templates use jq filters that match the resolved schema (for definition/2, call the prebuilt semconv_grouped_* helpers with {"v2": true})
  • generated output is formatter-clean
  • CI runs check, generate + git diff --exit-code, and diff against the base branch
  • changed files were re-read
  • remaining risks or gaps are stated

© ollygarden, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 5 other files (scripts, references) in skills/otel-weaver of ollygarden/opentelemetry-agent-skills.

  • SKILL.md
  • references/ci-integration.md
  • references/migration-playbook.md
  • references/registry-authoring.md
  • references/template-authoring.md
  • scripts/inspect-resolved.sh

Open the folder on GitHubat commit 9900032

Compare with similar skills

Otel Weaver next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Otel Weaver compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Otel Weaver this skillollygarden/opentelemetry-agent-skills106—~2.7kAutomated safety check: PassApache-2.0
Motel Debugkitlangton/motel298—~2.2kAutomated safety check: PassMIT
Tempsgotempsh/temps833—~2kAutomated safety check: PassApache-2.0
Axiom Metrics Queryopenclaw/clawhub9.5k—~2.6kAutomated safety check: PassMIT
UModel Root Cause Analysisalibaba/UnifiedModel415—~1.9kAutomated safety check: PassCustom licence
Agent Kill Switchvivekchand/clawmetry426—~1.1kAutomated safety check: PassMIT

Similar skills

  • Motel Debug

    kitlangton/motel

    Debug applications with motel, a local OpenTelemetry ingest and query server.

    298 GitHub stars~2.2k tokensUpdated 1 mo ago
    DevOps & CloudAuto-check passed
  • Temps

    gotempsh/temps

    Manage, deploy, operate, and instrument applications with Temps.

    833 GitHub stars~2k tokensUpdated today
    DevOps & CloudAuto-check passed
  • Axiom Metrics Query

    openclaw/clawhub

    Explores and queries OpenTelemetry metrics in Axiom MetricsDB, listing datasets, metrics and tags first and picking the right aggregation for each metric's type.

    9.5k GitHub stars~2.6k tokensUpdated yesterday
    DevOps & CloudAuto-check passed
  • UModel Root Cause Analysis

    alibaba/UnifiedModel

    Investigates a service incident to its root cause by querying a UModel object graph alongside metrics, logs, topology and recent deployments.

    415 GitHub stars~1.9k tokensUpdated 17 days ago
    DevOps & CloudAuto-check passed
  • Agent Kill Switch

    vivekchand/clawmetry

    Give the human an off switch and a cost meter for the coding agents on this machine, using ClawMetry.

    426 GitHub stars~1.1k tokensUpdated 2 days ago
    DevOps & CloudAuto-check passed
  • Agentmeasure

    roy-tong/AgentMeasure

    Check whether agent telemetry preserves measurement semantics.

    219 GitHub stars~753 tokensUpdated today
    DevOps & CloudAuto-check passed

More from ollygarden/opentelemetry-agent-skills

All 20 skills in this repo
  • Otel Collector Builder

    ollygarden/opentelemetry-agent-skills

    Build custom OpenTelemetry Collector distributions with OCB (OpenTelemetry Collector Builder).

    106 GitHub stars~2k tokensUpdated today
    Auto-check passed
  • Otel Go

    ollygarden/opentelemetry-agent-skills

    OpenTelemetry in Go — SDK setup, API surface, breaking changes, contrib instrumentation libraries (otelhttp, otelgrpc, otelmongo), compile-time zero-code instrumentation (otelc), and performance…

    106 GitHub stars~1.4k tokensUpdated today
    Auto-check passed
  • Otel Ottl

    ollygarden/opentelemetry-agent-skills

    OpenTelemetry Transformation Language (OTTL) expert for writing and debugging telemetry transformations in the OpenTelemetry Collector.

    106 GitHub stars~1.7k tokensUpdated today
    Auto-check passed
  • Otel Profiles

    ollygarden/opentelemetry-agent-skills

    OpenTelemetry profiles signal and the eBPF profiler (otelcol-ebpf-profiler, profiling receiver).

    106 GitHub stars~1.8k tokensUpdated today
    Auto-check passed
  • Otel Span Events To Logs Migration

    ollygarden/opentelemetry-agent-skills

    Migrate OpenTelemetry Span Events (AddEvent, RecordException, and language equivalents) to the Logs API following the accepted OTEP 4430 migration plan.

    106 GitHub stars~1.8k tokensUpdated today
    Auto-check passed
  • Otel Telemetrygen

    ollygarden/opentelemetry-agent-skills

    Build safe, version-pinned telemetrygen commands for synthetic OTLP traces, metrics, and logs.

    106 GitHub stars~2.2k tokensUpdated today
    Auto-check passed

Works with

Categories

Questions about Otel Weaver

What does Otel Weaver do?

OpenTelemetry Weaver registry authoring, codegen, and CI enforcement. Otel Weaver is an agent skill from ollygarden/opentelemetry-agent-skills. OpenTelemetry Weaver registry authoring, codegen, and CI enforcement.

When should I use Otel Weaver?

Otel Weaver fits situations like: adopting Weaver; reviewing a registry (manifest; writing Jinja2 templates against the resolved schema; migrating hand-maintained telemetry constants.

How do I install Otel Weaver in Claude Code?

Run `npx skills add ollygarden/opentelemetry-agent-skills --skill otel-weaver -a claude-code`. Or copy the skill folder (skills/otel-weaver in ollygarden/opentelemetry-agent-skills) into .claude/skills/otel-weaver in your project. Claude Code loads it when a task matches its description.

How do I install Otel Weaver in Codex?

Run `npx skills add ollygarden/opentelemetry-agent-skills --skill otel-weaver -a codex`. Or copy the skill folder (skills/otel-weaver in ollygarden/opentelemetry-agent-skills) into .agents/skills/otel-weaver in your project. Codex loads it when a task matches its description.

Can I use Otel Weaver in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add ollygarden/opentelemetry-agent-skills --skill otel-weaver -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/otel-weaver, .gemini/skills/otel-weaver, .github/skills/otel-weaver and .opencode/skills/otel-weaver in your project.

What does Otel Weaver need to run?

Going by SKILL.md and its folder, Otel Weaver needs a shell for the scripts in its folder and the command-line tools its instructions call (git, brew and ruff). Our summary lists: A Bash shell; Docker.

Does Otel Weaver access the network?

SKILL.md names 1 domain. As links in the text: github.com. This is read from the text; nothing was executed.

Is Otel Weaver safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Otel Weaver use?

Otel Weaver is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Otel Weaver use?

About 2.7k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 6k tokens, read only when the agent opens those files.

What are the alternatives to Otel Weaver?

Skills that share tags, products or a category with Otel Weaver: Motel Debug (kitlangton/motel, 298 stars), Temps (gotempsh/temps, 833 stars), Axiom Metrics Query (openclaw/clawhub, 9.5k stars) and UModel Root Cause Analysis (alibaba/UnifiedModel, 415 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Otel Weaver?

ollygarden (a GitHub organization) maintains it in ollygarden/opentelemetry-agent-skills, which has 106 GitHub stars. The repository holds 19 skills in this directory. The repository was last updated on October 11, 2026.

Source: ollygarden/opentelemetry-agent-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.