import unittest from pathlib import Path try: import tomllib except ModuleNotFoundError: # pragma: no cover import tomli as tomllib ROOT = Path(__file__).resolve().parents[1] AGENTS_ROOT = ROOT / ".codex" / "agents" AGENT_SKILL_REFERENCES = { "coordinator-agent.toml": ( "fesa-requirements-baseline", "fesa-reference-models", "fesa-release-readiness", ), "requirement-agent.toml": ("fesa-requirements-baseline",), "research-agent.toml": ( "fesa-research-evidence", "fem-theory-query", ), "formulation-agent.toml": ( "fesa-formulation-spec", "fem-theory-query", ), "numerical-review-agent.toml": ( "fesa-numerical-review", "fem-theory-query", ), "io-definition-agent.toml": ( "fesa-io-contract", "fem-theory-query", ), "reference-model-agent.toml": ( "fesa-reference-models", "fem-theory-query", ), "implementation-planning-agent.toml": ( "fesa-formulation-spec", "fesa-reference-models", "fesa-cpp-msvc-tdd", "fem-theory-query", ), "implementation-agent.toml": ("fesa-cpp-msvc-tdd",), "build-test-executor-agent.toml": ("fesa-cpp-msvc-tdd",), "correction-agent.toml": ("fesa-cpp-msvc-tdd",), "reference-verification-agent.toml": ( "fesa-reference-comparison", "fesa-io-contract", ), "physics-evaluation-agent.toml": ( "fesa-physics-sanity", "fem-theory-query", ), "release-agent.toml": ("fesa-release-readiness",), } class AgentSkillReferenceTests(unittest.TestCase): def test_agents_reference_their_solver_skills(self): for agent_file, skill_names in AGENT_SKILL_REFERENCES.items(): with self.subTest(agent=agent_file): text = (AGENTS_ROOT / agent_file).read_text(encoding="utf-8") data = tomllib.loads(text) instructions = data["developer_instructions"] self.assertIn("Skill references:", instructions) for skill_name in skill_names: self.assertIn(f"${skill_name}", instructions) if __name__ == "__main__": unittest.main()