Telvine Docs

Event schema

The canonical event envelope and all v0 event types.

Skill events use skill_id for capability drill-downs and may carry plugin_id for product roll-ups. Package-level and non-Skill component events require plugin_id and do not invent a synthetic Skill.

{
  "event_type": "skill.invocation.end",
  "plugin_id": "plg_product123",
  "skill_id": "skl_abc123",
  "version": "1.2.0",
  "installation_id": "inst_xyz789",
  "occurred_at": "2026-05-20T12:34:56.789Z",
  "idempotency_key": "uuid-v7-generated-client-side",
  "runtime": "claude-code",
  "runtime_version": "2.0.40",
  "properties": { "duration_ms": 4321, "tool_calls_count": 7, "trigger": "explicit" }
}

properties is a closed set of known keys per event type, validated at the API boundary. No user content, no tool arguments, no file paths.

event_typeproperties
plugin.installvia, source?, install_context?, initial_version?
plugin.update.appliedfrom_version, to_version, update_source?
plugin.component.invokedcomponent_type, component_name, operation, duration_ms?, outcome?
plugin.component.errorcomponent_type, component_name, error_class, blocker_reason?
skill.installvia
skill.invocation.starttrigger
skill.invocation.endduration_ms, tool_calls_count, trigger?
skill.invocation.errorerror_class
skill.script.invokedscript_name, exit_code, duration_ms
skill.reference.loadedreference_name
skill.modifiedfrontmatter_changed, body_changed
feedback.submittedrating?, comment?

If you want to emit something exotic, open an issue — we'd rather add it to the schema than have you stuff things into ad-hoc keys.

Canonical plugin component types are skill, connector, agent, sub_agent, hook, mcp_config, command, asset, tool, app, channel, model_provider, harness_adapter, runtime_component, context_engine, memory_provider, lsp_server, monitor, executable, settings, theme, and output_style. Component operations are closed too: use invoked, executed, tool_called, connected, configured, loaded, registered, started, completed, enabled, or disabled.