Skip to main content
Skills are a higher-level abstraction that combines instructions (domain expertise), tools (capabilities), and dependencies (shared config) into a single reusable unit. They’re the recommended way to compose agent behavior.

Quick Example

Skills inject their instructions into the system prompt and register their tools automatically.

Creating a Skill

Inline (Instance-Based)

Pass tools and instructions directly:

Class-Based (Reusable)

Subclass Skill for configurable, reusable skills with lifecycle hooks:
Methods decorated with @tool are auto-discovered — no need to pass them explicitly.

Skill Constructor

str
Skill identifier. Defaults to the class name.
str
Domain expertise text injected into the system prompt. Override get_instructions() for dynamic content.
List[Function]
Explicit list of tool functions. If not provided, tools are auto-discovered from @tool-decorated methods.
Dict[str, Any]
Shared configuration accessible via self.dependencies in methods and tools.

Lifecycle Hooks

Combining Multiple Skills

Skills compose naturally — their tools and instructions are merged:
Tool names must be unique across all skills. Skills listed later take priority if names overlap.

What’s Next

Built-in Skills

8 ready-to-use skills: Calculator, DateTime, Shell, WebSearch, and more.

Skill Registry

Manage large collections of markdown-based skills with eager/lazy loading.