Files
opensquilla--opensquilla/tests/test_skills_memory_contract.py
2026-07-13 13:12:33 +08:00

40 lines
1.5 KiB
Python

from __future__ import annotations
from pathlib import Path
from opensquilla.skills.loader import SkillLoader
ROOT = Path(__file__).resolve().parents[1]
BUNDLED_SKILLS = ROOT / "src" / "opensquilla" / "skills" / "bundled"
MEMORY_SKILL = BUNDLED_SKILLS / "memory" / "SKILL.md"
def test_memory_skill_is_parseable_and_gated_on_read_tools(tmp_path: Path) -> None:
loader = SkillLoader(
bundled_dir=BUNDLED_SKILLS,
snapshot_path=tmp_path / "skills_snapshot.json",
)
skill = next(s for s in loader.load_all() if s.name == "memory")
assert skill.description.startswith("Use when")
assert skill.requires_tools == ["memory_search", "memory_get"]
assert skill.disable_model_invocation is False
assert skill.provenance.origin == "opensquilla-original"
assert skill.provenance.maintained_by == "OpenSquilla"
def test_memory_skill_documents_usable_write_and_forget_paths() -> None:
text = MEMORY_SKILL.read_text(encoding="utf-8")
lower = text.lower()
assert "origin: opensquilla-original" in text
assert "Use only tools that are visible in the current tool list" in text
assert "memory_save" in text
assert "if `memory_save` is available" in lower
assert "`MEMORY.md`" in text and "mode='replace'" in text
assert "memory/**/*.md" in text
assert "memory_delete" in text
assert "If no write or delete tool is available" in text
assert "Only confirm memory was updated after the write or delete succeeds" in text