54 lines
1.8 KiB
Python
54 lines
1.8 KiB
Python
from __future__ import annotations
|
|
|
|
import unittest
|
|
from pathlib import Path
|
|
|
|
|
|
REPO_ROOT = Path(__file__).resolve().parents[1]
|
|
|
|
|
|
class AckSkillContentTests(unittest.TestCase):
|
|
def test_ack_skill_owns_resources_without_modifying_agent_instructions(self) -> None:
|
|
content = (REPO_ROOT / "skills" / "ack" / "SKILL.md").read_text(encoding="utf-8")
|
|
|
|
for expected in (
|
|
"skiff init ack --project <project-root>",
|
|
"docs/ack/project.md",
|
|
"docs/ack/tasks.yaml",
|
|
"docs/ack/knowledge.yaml",
|
|
"tasks: []",
|
|
"validate_tasks.py",
|
|
"validate_knowledge.py",
|
|
"select_knowledge.py",
|
|
"references/kickoff.md",
|
|
"不要修改项目的 `AGENTS.md`",
|
|
"当前会话担任 Coordinator",
|
|
):
|
|
self.assertIn(expected, content)
|
|
|
|
def test_ack_skill_is_explicit_only(self) -> None:
|
|
metadata = (REPO_ROOT / "skills" / "ack" / "agents" / "openai.yaml").read_text(
|
|
encoding="utf-8"
|
|
)
|
|
|
|
self.assertIn('display_name: "ACK"', metadata)
|
|
self.assertIn("allow_implicit_invocation: false", metadata)
|
|
|
|
def test_ack_knowledge_resources_and_version_are_present(self) -> None:
|
|
ack_dir = REPO_ROOT / "skills" / "ack"
|
|
|
|
for relative_path in (
|
|
"templates/knowledge.template.yaml",
|
|
"templates/knowledge.schema.json",
|
|
"examples/knowledge.example.yaml",
|
|
"scripts/validate_knowledge.py",
|
|
"scripts/select_knowledge.py",
|
|
"scripts/run_verification.py",
|
|
):
|
|
self.assertTrue((ack_dir / relative_path).is_file(), relative_path)
|
|
self.assertEqual((ack_dir / "VERSION").read_text(encoding="utf-8").strip(), "0.9.0")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|