from upsonic import Agent
from upsonic.skills import Skills, LocalSkills
def on_skill_loaded(skill_name: str, description: str):
print(f"[SKILL LOADED] {skill_name}: {description}")
def on_script_executed(skill_name: str, script_path: str, returncode: int):
print(f"[SCRIPT RUN] {skill_name}/{script_path} -> exit code {returncode}")
def on_reference_accessed(skill_name: str, reference_path: str):
print(f"[REFERENCE READ] {skill_name}/{reference_path}")
skills = Skills(
loaders=[LocalSkills("./my-skills")],
on_load=on_skill_loaded,
on_script_execute=on_script_executed,
on_reference_access=on_reference_accessed,
)
agent = Agent(
model="anthropic/claude-sonnet-4-6",
name="Agent",
role="Developer Assistant",
goal="Assist with development tasks",
skills=skills,
)
result = agent.print_do("Review this code using the code-review skill.")
# Output:
# [SKILL LOADED] code-review: Code quality analysis and best practices
# [REFERENCE READ] code-review/style-guide.md