diff --git a/packages/prime/src/prime_cli/lab_hygiene.py b/packages/prime/src/prime_cli/lab_hygiene.py index 145313d3..4b89d5b3 100644 --- a/packages/prime/src/prime_cli/lab_hygiene.py +++ b/packages/prime/src/prime_cli/lab_hygiene.py @@ -8,18 +8,22 @@ from pathlib import Path from typing import Callable +LAB_AGENT_SKILL_DIRS = ( + ".agents/skills", + ".claude/skills", + ".cursor/skills", + ".factory/skills", + ".grok/skills", + ".opencode/skills", + ".pi/skills", +) LAB_GITIGNORE_PATTERNS = ( ".env", "/AGENTS.md", "/CLAUDE.md", "/CLAUDE.local.md", "/.prime/", - "/.agents/skills/", - "/.claude/skills/", - "/.cursor/skills/", - "/.factory/skills/", - "/.opencode/skills/", - "/.pi/skills/", + *(f"/{skill_dir}/" for skill_dir in LAB_AGENT_SKILL_DIRS), "/outputs/", "/prime-rl/", "/environments/AGENTS.md", @@ -60,12 +64,7 @@ } LAB_TRACKED_PREFIXES = ( ".prime/", - ".agents/skills/", - ".claude/skills/", - ".cursor/skills/", - ".factory/skills/", - ".opencode/skills/", - ".pi/skills/", + *(f"{skill_dir}/" for skill_dir in LAB_AGENT_SKILL_DIRS), "outputs/", "prime-rl/", ".pytest_cache/", diff --git a/packages/prime/tests/test_lab_hygiene.py b/packages/prime/tests/test_lab_hygiene.py new file mode 100644 index 00000000..beef9ac9 --- /dev/null +++ b/packages/prime/tests/test_lab_hygiene.py @@ -0,0 +1,22 @@ +from __future__ import annotations + +from pathlib import Path + +from prime_cli.lab_agents import agent_project_skills_dirs, known_agent_names +from prime_cli.lab_hygiene import LAB_GITIGNORE_PATTERNS, LAB_TRACKED_PREFIXES + + +def test_every_agent_project_skill_dir_is_covered_by_hygiene(tmp_path: Path) -> None: + base = tmp_path.resolve() + gitignore = set(LAB_GITIGNORE_PATTERNS) + tracked = set(LAB_TRACKED_PREFIXES) + + for agent in known_agent_names(): + for skill_dir in agent_project_skills_dirs(agent, base): + relative = skill_dir.relative_to(base).as_posix() + assert f"/{relative}/" in gitignore, ( + f"{agent}: {relative} is created by setup but not in LAB_GITIGNORE_PATTERNS" + ) + assert f"{relative}/" in tracked, ( + f"{agent}: {relative} is created by setup but not in LAB_TRACKED_PREFIXES" + )