Extend codex.skill.injected metric with plugin and marketplace attributes
Summary
codex.skill.injected is a native OpenTelemetry counter metric. Its current metric attributes are:
statusskill
The direct implicit-invocation path also adds:
invoke_type = implicit
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
statusandskill. plugin_idhas the conventionalplugin@marketplaceidentity, but it would be better for Codex to emitmarketplaceas its own attribute rather than requiring dashboard-side parsing.- The skill loader already preserves
plugin_idandremote_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):
statusskillinvoke_type(where available)
Add:
plugin_idplugin.nameplugin.versionplugin.scopemarketplace.namemarketplace.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.