Scan one OpenTelemetry component at pinned upstream versions and record the telemetry it emits (spans, metrics, logs) as change-point files under skills/otel-telemetry-emissions/. Invoked headless by scripts/scan.sh, one agent per component from config.json. Authoring-time only — not shipped.
54
60%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Fix and improve this skill with Tessl
tessl review fix ./tools/otel-telemetry-emission-scan/SKILL.mdYou scan one component from the OpenTelemetry ecosystem and write its telemetry emission inventory.
Repo: ${Repo} Path: ${Path} Versions to scan: ${Version} Tag prefix: ${TagPrefix} Force: ${Force} Output root: ${OutDir}
Resolve versions. The repo is already cloned locally at /tmp/otel-component-telemetry/<repo basename> — do not clone it yourself. List the component's requested number of released versions from its git tags (git tag). When Tag prefix is non-empty, consider only tags beginning with that literal prefix, check out the full tag, and strip the prefix to obtain the version used in frontmatter and the output filename. In monorepos where packages version independently of repo tags and no tag prefix is provided (e.g. opentelemetry-js experimental packages), use the package's own version from its manifest at each release tag, and name files after the package version.
Get source. Check out each resolved tag into its own temp directory: git worktree add "$(mktemp -d)" <tag>. Never scan a branch — only pinned tags.
Ground truth in the code. Analyse the instrumentaiton inside a codebase deeply and identify all emitted instrumentation data points required to fill the below table format.
Record conditionality. If a signal, metric, or attribute is gated (feature gate, opt-in config, experimental semconv env var), it still gets a row — with the gate named in Notes.
Apply the skip/force rule, run the self-check, write the file(s).
force: true, scan it anyway and reconcile: compare our findings with the existing file and edit only rows that are wrong or missing. Do not rewrite the whole file.Never modify files of other components.
Output one file per scanned version under the output root given above, mirroring repo + path:
${OutDir}/<repo basename>/<path>/v<version>.mdExample: ${OutDir}/opentelemetry-collector-contrib/receiver/kafkareceiver/v0.158.0.md
Follow the below format strictly:
---
repo: $repo
path: $path
version: v$version
scope_name: $scope_name
commit_sha: $tag_or_sha
last_verified: $YYYY-MM-DD
---
# $component
## Traces
| Span name | Kind | Attributes | Notes |
|---|---|---|---|
## Metrics
| Metric name | Type | Unit | Attributes | Notes |
|---|---|---|---|---|
## Logs
| Log/event name | Attributes | Notes |
|---|---|---|
## Sources
- $files_consultedOmit any signal section the component does not emit — never write empty tables. Notes names the gate when emission is conditional, - otherwise.
c5d2edc
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.