from __future__ import annotations import os import subprocess import tempfile import unittest from pathlib import Path REPO_ROOT = Path(__file__).resolve().parents[1] class InstallScriptTests(unittest.TestCase): def test_install_bootstraps_skiff_skill_for_all_agents(self) -> None: with tempfile.TemporaryDirectory() as temp: home = Path(temp) (home / ".skills").symlink_to(REPO_ROOT, target_is_directory=True) env = os.environ.copy() env["HOME"] = str(home) result = subprocess.run( ["bash", str(REPO_ROOT / "install.sh")], cwd=REPO_ROOT, env=env, text=True, capture_output=True, check=False, ) self.assertEqual(result.returncode, 0, result.stderr) for relative in ( ".cursor/skills/skiff", ".claude/skills/skiff", ".codex/skills/skiff", ): link = home / relative self.assertTrue(link.is_symlink(), relative) self.assertEqual(link.resolve(), (REPO_ROOT / "skills" / "skiff").resolve()) self.assertIn("已全局安装 builtin skiff skill", result.stdout) if __name__ == "__main__": unittest.main()