"""Example demonstrating the skills system for AgentLite. This example shows how to use skills with an Agent. """ import asyncio from pathlib import Path from agentlite.skills import discover_skills, index_skills_by_name async def main(): """Run skills example.""" print("=" * 60) print("AgentLite Skills Example") print("=" * 60) # Discover skills from examples directory skills_dir = Path(__file__).parent / "skills" skills = discover_skills(skills_dir) print(f"\nDiscovered {len(skills)} skill(s):") for skill in skills: print(f" - {skill.name}: {skill.description}") print(f" Type: {skill.type}") if skill.flow: print(f" Flow nodes: {len(skill.flow.nodes)}") # Index skills by name skill_index = index_skills_by_name(skills) print(f"\nIndexed {len(skill_index)} skill(s)") # Create agent (would need API key to actually run) print("\n" + "-" * 40) print("To use skills with an agent:") print("-" * 40) code = """ # Create provider provider = OpenAIProvider(api_key="your-key", model="gpt-4") # Create agent agent = Agent( provider=provider, system_prompt="You are a helpful assistant with access to skills.", ) # Create skill tool skill_tool = SkillTool(skill_index, parent_agent=agent) # Add skill tool to agent agent.tools.add(skill_tool) # Now the agent can use skills! # The agent will see available skills in its context # Example usage: response = await agent.run("Review this Python code: def add(a, b): return a + b") # The agent may choose to use the code-reviewer skill """ print(code) print("\n" + "=" * 60) print("Key Concepts:") print("=" * 60) print("1. Skills are defined in SKILL.md files") print("2. YAML frontmatter specifies name, description, and type") print("3. Standard skills load the markdown as a prompt") print("4. Flow skills execute a structured flowchart") print("5. Skills are discovered from directories") print("6. SkillTool allows agents to execute skills") print("\nSkill Format (SKILL.md):") print(""" --- name: skill-name description: When to use this skill... type: standard | flow --- # Skill Content Instructions for the skill... """) if __name__ == "__main__": asyncio.run(main())