From d84a7f32bd472e5b801b7b096dc83f616c59df22 Mon Sep 17 00:00:00 2001 From: Greyson Lalonde Date: Thu, 5 Mar 2026 21:12:16 -0500 Subject: [PATCH] chore: dedup files --- lib/crewai/src/crewai/agent/core.py | 10 ++++++++-- lib/crewai/tests/skills/test_loader.py | 6 ++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/lib/crewai/src/crewai/agent/core.py b/lib/crewai/src/crewai/agent/core.py index 39d807c42..c7633c5cb 100644 --- a/lib/crewai/src/crewai/agent/core.py +++ b/lib/crewai/src/crewai/agent/core.py @@ -308,6 +308,7 @@ class Agent(BaseAgent): if not self.skills and not crew_skills: return + seen: set[str] = set() resolved: list[Path | SkillModel] = [] items: list[Path | SkillModel] = list(self.skills) if self.skills else [] @@ -317,9 +318,14 @@ class Agent(BaseAgent): for item in items: if isinstance(item, Path): discovered = discover_skills(item, source=self) - resolved.extend(activate_skill(s, source=self) for s in discovered) + for skill in discovered: + if skill.name not in seen: + seen.add(skill.name) + resolved.append(activate_skill(skill, source=self)) elif isinstance(item, SkillModel): - resolved.append(item) + if item.name not in seen: + seen.add(item.name) + resolved.append(item) self.skills = resolved if resolved else None diff --git a/lib/crewai/tests/skills/test_loader.py b/lib/crewai/tests/skills/test_loader.py index 3cbb56a24..c3b297e40 100644 --- a/lib/crewai/tests/skills/test_loader.py +++ b/lib/crewai/tests/skills/test_loader.py @@ -2,6 +2,8 @@ from pathlib import Path +import pytest + from crewai.skills.loader import ( activate_skill, discover_skills, @@ -54,8 +56,8 @@ class TestDiscoverSkills: assert skills == [] def test_nonexistent_path(self, tmp_path: Path) -> None: - skills = discover_skills(tmp_path / "nonexistent") - assert skills == [] + with pytest.raises(FileNotFoundError): + discover_skills(tmp_path / "nonexistent") def test_sorted_by_name(self, tmp_path: Path) -> None: _create_skill_dir(tmp_path, "zebra")