Files
FESADev/scripts/test_agent_skill_references.py
T
2026-06-04 15:03:03 +09:00

76 lines
2.2 KiB
Python

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()