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

# Module functions

> Top-level functions that register, list, and locate skills on the global SkillRegistry.

[skill-registry]: /docs/server-sdks/reference/typescript/agents/skill-registry

[register]: /docs/server-sdks/reference/typescript/agents/skill-registry/register

[list-skills]: /docs/server-sdks/reference/typescript/agents/skill-registry/list-skills

[get-all-skills-schema]: /docs/server-sdks/reference/typescript/agents/skill-registry/get-all-skills-schema

[add-search-path]: /docs/server-sdks/reference/typescript/agents/skill-registry/add-search-path

[add-skill-directory]: /docs/server-sdks/reference/typescript/agents/skill-registry/add-skill-directory

Functions exported from `@signalwire/sdk` that act on the singleton
[`SkillRegistry`][skill-registry], so you don't call `SkillRegistry.getInstance()` yourself.

## registerSkill

Register a custom skill class, bypassing the directory scan. Proxies to
[`register()`][register].

**`skillClass`** `typeof SkillBase` — required

The skill class to register, a subclass of `SkillBase`.

---

Returns `void`.

## listSkills

List metadata for every registered skill. Proxies to [`listSkills()`][list-skills].

Returns `SkillSchemaInfo[]`.

## listSkillsWithParams

Get the full schema of every registered skill, including parameter metadata. Proxies to
[`getAllSkillsSchema()`][get-all-skills-schema].

Returns `Record<string, SkillSchemaInfo>`, keyed by skill name.

## addSkillDirectory

Add a directory to search for skill modules. Proxies to [`addSearchPath()`][add-search-path],
which accepts any path; it does not run the validation of the
[`SkillRegistry.addSkillDirectory()`][add-skill-directory] method of the same name.

**`path`** `string` — required

Absolute path to a directory containing skill files.

---

Returns `void`.

## Example

```typescript {16-17}
import { FunctionResult, SkillBase, listSkillsWithParams, registerSkill } from '@signalwire/sdk';

class FareSkill extends SkillBase {
  static override SKILL_NAME = 'fare_quote';
  static override SKILL_DESCRIPTION = 'Quote a Bayview Taxi fare';

  override getTools() {
    return [{
      name: 'quote_fare',
      description: 'Quote the fare between two addresses',
      handler: () => new FunctionResult('That trip is about 24 dollars.'),
    }];
  }
}

registerSkill(FareSkill);
console.log(Object.keys(listSkillsWithParams()));
```