mirror of
https://github.com/agentskills/agentskills.git
synced 2026-06-18 15:54:06 +08:00
547831f3a2
Reference library for Agent Skills with CLI and Python API: - validate: Check skill directories for valid SKILL.md with proper frontmatter - read-properties: Parse and output skill properties as JSON - to-prompt: Generate suggested <available_skills> XML for agent prompts 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude <noreply@anthropic.com>
71 lines
1.7 KiB
Python
71 lines
1.7 KiB
Python
"""Tests for prompt module."""
|
|
|
|
from skills_ref.prompt import to_prompt
|
|
|
|
|
|
def test_empty_list():
|
|
result = to_prompt([])
|
|
assert result == "<available_skills>\n</available_skills>"
|
|
|
|
|
|
def test_single_skill(tmp_path):
|
|
skill_dir = tmp_path / "my-skill"
|
|
skill_dir.mkdir()
|
|
(skill_dir / "SKILL.md").write_text("""---
|
|
name: my-skill
|
|
description: A test skill
|
|
---
|
|
Body
|
|
""")
|
|
result = to_prompt([skill_dir])
|
|
assert "<available_skills>" in result
|
|
assert "</available_skills>" in result
|
|
assert "<name>\nmy-skill\n</name>" in result
|
|
assert "<description>\nA test skill\n</description>" in result
|
|
assert "<location>" in result
|
|
assert "SKILL.md" in result
|
|
|
|
|
|
def test_multiple_skills(tmp_path):
|
|
skill_a = tmp_path / "skill-a"
|
|
skill_a.mkdir()
|
|
(skill_a / "SKILL.md").write_text("""---
|
|
name: skill-a
|
|
description: First skill
|
|
---
|
|
Body
|
|
""")
|
|
|
|
skill_b = tmp_path / "skill-b"
|
|
skill_b.mkdir()
|
|
(skill_b / "SKILL.md").write_text("""---
|
|
name: skill-b
|
|
description: Second skill
|
|
---
|
|
Body
|
|
""")
|
|
|
|
result = to_prompt([skill_a, skill_b])
|
|
assert result.count("<skill>") == 2
|
|
assert result.count("</skill>") == 2
|
|
assert "skill-a" in result
|
|
assert "skill-b" in result
|
|
|
|
|
|
def test_special_characters_escaped(tmp_path):
|
|
"""XML special characters in description are escaped."""
|
|
skill_dir = tmp_path / "special-skill"
|
|
skill_dir.mkdir()
|
|
(skill_dir / "SKILL.md").write_text("""---
|
|
name: special-skill
|
|
description: Use <foo> & <bar> tags
|
|
---
|
|
Body
|
|
""")
|
|
result = to_prompt([skill_dir])
|
|
assert "<foo>" in result
|
|
assert "&" in result
|
|
assert "<bar>" in result
|
|
assert "<foo>" not in result
|
|
assert "<bar>" not in result
|