Summary
codex.skill.injected is a native OpenTelemetry counter metric. Its current metric attributes are:
The direct implicit-invocation path also adds:
See the skill-injection metric emission and the implicit-invocation path.
A Honeycomb query like the following is valid today:
WHERE codex.skill.injected exists
GROUP BY skill
skill not appearing in Honeycomb's schema sidebar looks like schema discovery/indexing behavior for metric attributes rather than a missing exporter field — the data and the source both confirm the attribute is emitted.
Why plugin and marketplace are missing
- Skill metadata already carries an optional
plugin_id.
- The current metric emission deliberately drops it, emitting only
status and skill.
plugin_id has the conventional plugin@marketplace identity, but it would be better for Codex to emit marketplace as its own attribute rather than requiring dashboard-side parsing.
- The skill loader already preserves
plugin_id and remote_plugin_id, so there's a clear implementation path. See skill metadata construction.
Request
Extend the existing codex.skill.injected metric attributes.
Existing (keep as-is):
status
skill
invoke_type (where available)
Add:
plugin_id
plugin.name
plugin.version
plugin.scope
marketplace.name
marketplace.is_official
Implementation note
plugin_id is available at skill-injection time, but populating plugin.version, plugin.scope, marketplace.name, and marketplace.is_official will require carrying richer plugin metadata through the skill loader. This makes it a bounded, well-scoped feature rather than an open-ended telemetry request.
Summary
codex.skill.injectedis a native OpenTelemetry counter metric. Its current metric attributes are:statusskillThe direct implicit-invocation path also adds:
invoke_type = implicitSee the skill-injection metric emission and the implicit-invocation path.
A Honeycomb query like the following is valid today:
skillnot appearing in Honeycomb's schema sidebar looks like schema discovery/indexing behavior for metric attributes rather than a missing exporter field — the data and the source both confirm the attribute is emitted.Why
pluginandmarketplaceare missingplugin_id.statusandskill.plugin_idhas the conventionalplugin@marketplaceidentity, but it would be better for Codex to emitmarketplaceas its own attribute rather than requiring dashboard-side parsing.plugin_idandremote_plugin_id, so there's a clear implementation path. See skill metadata construction.Request
Extend the existing
codex.skill.injectedmetric attributes.Existing (keep as-is):
statusskillinvoke_type(where available)Add:
plugin_idplugin.nameplugin.versionplugin.scopemarketplace.namemarketplace.is_officialImplementation note
plugin_idis available at skill-injection time, but populatingplugin.version,plugin.scope,marketplace.name, andmarketplace.is_officialwill require carrying richer plugin metadata through the skill loader. This makes it a bounded, well-scoped feature rather than an open-ended telemetry request.