From b30fdbaa0ea03a5ba6e97ae1035247f5013e5bf2 Mon Sep 17 00:00:00 2001 From: Lorenze Jay <63378463+lorenzejay@users.noreply.github.com> Date: Thu, 30 Apr 2026 21:08:25 -0700 Subject: [PATCH] fix: ensure skills loading events for traces --- .../listeners/tracing/trace_listener.py | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/lib/crewai/src/crewai/events/listeners/tracing/trace_listener.py b/lib/crewai/src/crewai/events/listeners/tracing/trace_listener.py index 046bc0f1a..f494877be 100644 --- a/lib/crewai/src/crewai/events/listeners/tracing/trace_listener.py +++ b/lib/crewai/src/crewai/events/listeners/tracing/trace_listener.py @@ -108,6 +108,13 @@ from crewai.events.types.reasoning_events import ( AgentReasoningFailedEvent, AgentReasoningStartedEvent, ) +from crewai.events.types.skill_events import ( + SkillActivatedEvent, + SkillDiscoveryCompletedEvent, + SkillDiscoveryStartedEvent, + SkillLoadFailedEvent, + SkillLoadedEvent, +) from crewai.events.types.system_events import SignalEvent, on_signal from crewai.events.types.task_events import ( TaskCompletedEvent, @@ -530,6 +537,30 @@ class TraceCollectionListener(BaseEventListener): ) -> None: self._handle_action_event("knowledge_query_failed", source, event) + @event_bus.on(SkillDiscoveryStartedEvent) + def on_skill_discovery_started( + source: Any, event: SkillDiscoveryStartedEvent + ) -> None: + self._handle_action_event("skill_discovery_started", source, event) + + @event_bus.on(SkillDiscoveryCompletedEvent) + def on_skill_discovery_completed( + source: Any, event: SkillDiscoveryCompletedEvent + ) -> None: + self._handle_action_event("skill_discovery_completed", source, event) + + @event_bus.on(SkillLoadedEvent) + def on_skill_loaded(source: Any, event: SkillLoadedEvent) -> None: + self._handle_action_event("skill_loaded", source, event) + + @event_bus.on(SkillActivatedEvent) + def on_skill_activated(source: Any, event: SkillActivatedEvent) -> None: + self._handle_action_event("skill_activated", source, event) + + @event_bus.on(SkillLoadFailedEvent) + def on_skill_load_failed(source: Any, event: SkillLoadFailedEvent) -> None: + self._handle_action_event("skill_load_failed", source, event) + def _register_a2a_event_handlers(self, event_bus: CrewAIEventsBus) -> None: """Register handlers for A2A (Agent-to-Agent) events."""