***

title: addSkill
slug: /reference/typescript/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/typescript/agents/agent-base/list-skills

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

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

Load and activate a skill on this agent. Skills are pluggable capability modules that
register their own tools, prompts, hints, and global data. The `addSkill()` method
takes a `SkillBase` instance (not a string name).

<Note>
  This is an `async` method that returns `Promise<this>`. Use `await` when calling.
  Throws `Error` if a duplicate non-multi-instance skill is added. Check available
  skills with [`listSkills()`][list-skills] or consult the [skills catalog][skills-catalog].
</Note>

## **Parameters**

<ParamField path="skill" type="SkillBase" required={true} toc={true}>
  A skill instance to add to the agent. Skills extend `SkillBase` and provide
  tools, prompt sections, hints, and global data.
</ParamField>

## **Returns**

`Promise<this>` -- Returns `this` for method chaining (async).

## **Example**

```typescript {5}
import { AgentBase, DateTimeSkill, MathSkill } from '@signalwire/sdk';

const agent = new AgentBase({ name: 'assistant', route: '/assistant' });
agent.setPromptText('You are a helpful assistant.');
await agent.addSkill(new DateTimeSkill());
await agent.addSkill(new MathSkill());
await agent.serve();
```