***

title: add_skill
slug: /reference/python/agents/agent-base/add-skill
description: Load and activate a skill on the agent.
max-toc-depth: 3
---------------------

For a complete index of all SignalWire documentation pages, fetch https://signalwire.com/docs/llms.txt

[list-skills]: /docs/server-sdks/reference/python/agents/agent-base/list-skills

[skills-catalog]: /docs/server-sdks/reference/python/agents/skills

[ref-agentbase]: /docs/server-sdks/reference/python/agents/agent-base

Load and activate a skill on this agent. Skills are pluggable capability modules that
register their own tools, prompts, and configuration. The SDK ships with built-in
skills for common tasks like `datetime`, `web_search`, and `math`.

<Note>
  Raises `ValueError` if the skill is not found or fails to load. Use
  [`list_skills()`][list-skills] to see currently loaded skills, or consult the
  [skills catalog][skills-catalog] for all available built-in skills.
</Note>

## **Parameters**

<ParamField path="skill_name" type="str" required={true} toc={true}>
  Registered skill name (e.g., `"datetime"`, `"web_search"`, `"math"`).
</ParamField>

<ParamField path="params" type="Optional[dict[str, Any]]" toc={true}>
  Skill-specific configuration parameters. Each skill documents its own supported
  parameters.
</ParamField>

## **Returns**

[`AgentBase`][ref-agentbase] -- Returns self for method chaining.

## **Examples**

### Add built-in skills

```python {5-6}
from signalwire import AgentBase

agent = AgentBase(name="assistant", route="/assistant")
agent.set_prompt_text("You are a helpful assistant.")
agent.add_skill("datetime")
agent.add_skill("math")
agent.serve()
```

### Skill with configuration

```python {5}
from signalwire import AgentBase

agent = AgentBase(name="assistant", route="/assistant")
agent.set_prompt_text("You are a helpful assistant.")
agent.add_skill("web_search", params={
    "api_key": "your-search-api-key",
    "max_results": 5
})
agent.serve()
```