> This page is for Server SDKs.

> Fetch clean Markdown by appending `.md` to any page URL under https://signalwire.com/docs or requesting it with the HTTP header `Accept: text/markdown`. The root index at https://signalwire.com/docs/llms.txt lists the available documentation indexes.

# add_skill

> Load and activate a skill on the agent.

[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.

## **Parameters**

**`skill_name`** `str` — required

Registered skill name (e.g., `"datetime"`, `"web_search"`, `"math"`).

---

**`params`** `dict[str, Any] | None` — default: None

Skill-specific configuration parameters. Each skill documents its own supported
parameters.

---

## **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()
```