Skip to main content

Skills Module

The skills module provides a system for defining and loading reusable agent capabilities (skills) from files.

Installation

pip install praisonaiagents

Quick Start

from praisonaiagents import Agent, SkillManager

# Load skills from directory
manager = SkillManager(skills_dir="./skills")
skills = manager.load_all()

agent = Agent(
    name="Assistant",
    tools=skills
)

Classes

SkillManager

Manage and load agent skills.
from praisonaiagents import SkillManager

manager = SkillManager(
    skills_dir="./skills",
    auto_discover=True
)

Methods

MethodDescription
load_all()Load all skills from directory
load(name)Load a specific skill
list()List available skills
validate(skill)Validate a skill

SkillProperties

Properties for a skill.
from praisonaiagents import SkillProperties

props = SkillProperties(
    name="web_search",
    description="Search the web",
    parameters={"query": "string"}
)

SkillMetadata

Metadata about a skill.
from praisonaiagents import SkillMetadata

metadata = SkillMetadata(
    name="web_search",
    version="1.0.0",
    author="PraisonAI",
    tags=["search", "web"]
)

SkillLoader

Load skills from various sources.
from praisonaiagents import SkillLoader

loader = SkillLoader()
skill = loader.from_file("./skills/search.py")
skill = loader.from_url("https://example.com/skill.py")

Skill File Format

Skills are Python files with a specific structure:
# skills/web_search.py
"""
name: web_search
description: Search the web for information
version: 1.0.0
"""

def run(query: str) -> str:
    """Execute the skill."""
    # Implementation
    return f"Results for: {query}"

Usage Examples

Load Skills from Directory

from praisonaiagents import Agent, SkillManager

manager = SkillManager(skills_dir="./my_skills")
skills = manager.load_all()

agent = Agent(
    name="Assistant",
    tools=skills
)

Create Skill Programmatically

from praisonaiagents import SkillManager, SkillProperties

manager = SkillManager()

# Register a skill
manager.register(
    name="calculator",
    func=lambda expr: eval(expr),
    properties=SkillProperties(
        description="Evaluate math expressions"
    )
)