# Does OpenTelemetry record which agent skill caused a bad response?

As of September 2026, yes: a new `gen_ai.skill.*` attribute set records a skill load as its own event, on an `execute_tool` span whose tool name reads `load_skill`. `gen_ai.skill.name` carries the skill's name, `gen_ai.skill.source.uri` carries where it loaded from, since the same name can point at a different source across a fleet, and `gen_ai.skill.script.exit_code` records whether its bundled script failed, where the framework exposes that.

An Agent Skill is a folder of instructions plus optional scripts an agent pulls into its own context on demand, and until now that pull was invisible: the call showed up as a tool named `load_skill` with opaque arguments, so when a loaded skill's instructions [pushed an agent off its own instructions](/answers/failure-modes/can-retrieved-content-override-an-agents-instructions), nothing in the trace named which skill did it. Attributes, not tool names, carry the convention because names differ per framework: Google ADK and Microsoft Agent Framework each expose three separate tools for loading, reading, and running a skill, spelled differently.

The convention is new, still carrying a development stability marker like the rest of the GenAI spec, and only ADK emits the exit-code attribute; a framework that hands script execution to an application-supplied runner has no process status of its own to read.

---

Sources:
- OpenTelemetry semantic-conventions-genai PR #498: Add gen_ai.skill.* attributes to the execute_tool span: https://github.com/open-telemetry/semantic-conventions-genai/pull/498 (fetched 2026-09-30)

Source: https://tessary.ai/answers/otel-genai-conventions/does-opentelemetry-record-which-agent-skill-caused-a-bad-response
More on Otel genai conventions: https://tessary.ai/answers/otel-genai-conventions
From Tessary, agent reliability for AI agents in production: https://tessary.ai
