Skill tools — mediate between agent state and SkillStore.
All tool functions follow the Phase 2 access pattern
store = state["deps"].get(StoreType)
No direct infrastructure imports allowed.
create_skill(
state: dict[str, Any],
name: str,
description: str,
content: str,
) -> None
Create a new skill.
Source code in src/symfonic/core/tools/skill_tools.py
| async def create_skill(
state: dict[str, Any],
name: str,
description: str,
content: str,
) -> None:
"""Create a new skill."""
store = _get_skill_store(state)
skill = Skill(name=name, description=description, content=content)
await store.create(skill)
|
list_skills(state: dict[str, Any]) -> list[Skill]
Return all skills.
Source code in src/symfonic/core/tools/skill_tools.py
| async def list_skills(state: dict[str, Any]) -> list[Skill]:
"""Return all skills."""
store = _get_skill_store(state)
return await store.list()
|
read_skill(
state: dict[str, Any], name: str
) -> Skill | None
Read a skill by name. Returns None if not found.
Source code in src/symfonic/core/tools/skill_tools.py
| async def read_skill(state: dict[str, Any], name: str) -> Skill | None:
"""Read a skill by name. Returns None if not found."""
store = _get_skill_store(state)
return await store.read(name)
|