Plugin components
What Codex and Claude plugins can contain, and which signals Telvine records.
Plugins are the installed product. Skills are one executable component inside that product. Telvine stores a versioned inventory of declared components and records runtime events only where the plugin author or host can reliably emit them.
Documented component surface
| Component | Codex | Claude Code / Cowork | Telvine telemetry |
|---|---|---|---|
| Skills | skills/*/SKILL.md | Skills bundled in plugins | skill.* execution events; inventory |
| Apps / connectors | .app.json app mappings | Cowork connectors | plugin.component.* if the connector integration emits; inventory otherwise |
| MCP config | .mcp.json | .mcp.json; Cowork may bundle local MCP-backed connectors | plugin.component.* from a wrapper or integration; never tool arguments |
| Hooks | hooks/hooks.json | hooks/hooks.json | plugin.component.* from hook code; inventory |
| Agents / sub-agents | Not listed as a Codex plugin component in current docs | agents / Cowork sub-agents | Inventory; execution only when explicitly emitted |
| Tools, channels, model providers, memory, context engines, and harness adapters | Runtime-specific plugin surfaces | Runtime-specific plugin surfaces | plugin.component.* when the runtime or wrapper emits; inventory otherwise |
| LSP servers, monitors, executables, settings | Not listed in current Codex plugin docs | Claude Code documents these components | Inventory; execution only when wrapped |
| Assets / UI resources | Presentation assets | Plugin resources where packaged | Inventory only |
Sources: Codex plugin authoring, Codex Skills, Claude Code plugins, and Claude Cowork plugins.
Register a component inventory
Create a plugin with POST /v1/plugins, then record each shipped version:
{
"version": "1.2.0",
"manifest_format": "codex",
"manifest_hash": "4b227777d4dd1fc61c6f884f48641d02b4d121d3fd328cb08b5531fcacdabf8a",
"components": [
{ "component_type": "skill", "name": "close-books", "telemetry_mode": "skill_events" },
{ "component_type": "mcp_config", "name": "xero", "telemetry_mode": "component_events" },
{ "component_type": "asset", "name": "logo", "telemetry_mode": "declaration_only" }
]
}
telemetry_mode is one of skill_events, component_events,
declaration_only, or host_unavailable. The distinction prevents a package
inventory from being mistaken for observed usage.
Emit component events
Use a plugin-scoped write key for package-level events:
{
"event_type": "plugin.component.invoked",
"plugin_id": "plg_abc12345",
"version": "1.2.0",
"installation_id": "inst_xyz12345",
"occurred_at": "2026-05-27T12:34:56.789Z",
"idempotency_key": "01HX0000000000000000000000",
"runtime": "codex-app",
"properties": {
"component_type": "mcp_config",
"component_name": "xero",
"operation": "configured",
"duration_ms": 200
}
}
Do not emit prompts, connector payloads, tool arguments, file paths, retrieved
records, hook input, or generated content. For a component the host does not
expose, store it in inventory with host_unavailable; do not infer usage.