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

# SkillRegistry

> Global singleton registry for discovering and instantiating skills.

[ref-skillbase]: /docs/server-sdks/reference/typescript/agents/skill-base

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

`SkillRegistry` is a global singleton for registering, discovering, and
instantiating skills by class reference. Skills can be registered
programmatically by passing the class itself (the registry reads metadata from
static class properties like `SKILL_NAME`), or auto-discovered from
directories via the `SIGNALWIRE_SKILL_PATHS` environment variable.

```typescript {1}
import { SkillRegistry } from '@signalwire/sdk';
```

## **Methods**

#### [getInstance](/docs/server-sdks/reference/typescript/agents/skill-registry/get-instance)

Get the global singleton instance.

#### [register](/docs/server-sdks/reference/typescript/agents/skill-registry/register)

Register a skill class.

#### [create](/docs/server-sdks/reference/typescript/agents/skill-registry/create)

Create a skill instance from the registry.

#### [has](/docs/server-sdks/reference/typescript/agents/skill-registry/has)

Check if a skill name is registered.

#### [unregister](/docs/server-sdks/reference/typescript/agents/skill-registry/unregister)

Remove a skill registration.

#### [lock](/docs/server-sdks/reference/typescript/agents/skill-registry/lock)

Lock skill names to prevent overwriting.

#### [listRegistered](/docs/server-sdks/reference/typescript/agents/skill-registry/list-registered)

List all registered skill names.

#### [addSearchPath](/docs/server-sdks/reference/typescript/agents/skill-registry/add-search-path)

Add a directory for skill discovery.

#### [getSearchPaths](/docs/server-sdks/reference/typescript/agents/skill-registry/get-search-paths)

Get all skill search paths.

#### [addSkillDirectory](/docs/server-sdks/reference/typescript/agents/skill-registry/add-skill-directory)

Register an external skill directory (strict validation).

#### [getExternalPaths](/docs/server-sdks/reference/typescript/agents/skill-registry/get-external-paths)

Get registered external skill directories.

#### [discoverFromDirectory](/docs/server-sdks/reference/typescript/agents/skill-registry/discover-from-directory)

Discover skills from a directory.

#### [discoverAll](/docs/server-sdks/reference/typescript/agents/skill-registry/discover-all)

Discover skills from all search paths.

#### [getSkillSchema](/docs/server-sdks/reference/typescript/agents/skill-registry/get-skill-schema)

Get a skill's parameter schema.

#### [getAllSkillsSchema](/docs/server-sdks/reference/typescript/agents/skill-registry/get-all-skills-schema)

Get schemas for all registered skills.

#### [listAllSkillSources](/docs/server-sdks/reference/typescript/agents/skill-registry/list-all-skill-sources)

List skills grouped by source.

#### [clear](/docs/server-sdks/reference/typescript/agents/skill-registry/clear)

Remove all registrations.

#### [getSkillClass](/docs/server-sdks/reference/typescript/agents/skill-registry/get-skill-class)

Look up a registered skill class by name.

#### [listSkills](/docs/server-sdks/reference/typescript/agents/skill-registry/list-skills)

List all registered skills with full metadata.

#### [resetInstance](/docs/server-sdks/reference/typescript/agents/skill-registry/reset-instance)

Reset the global singleton (test helper).

## **Properties**

**`size`** `number`

The number of currently registered skills (getter).

---

## **Example**

```typescript {4-5,8}
import { SkillRegistry, SkillBase } from '@signalwire/sdk';

const registry = SkillRegistry.getInstance();
registry.register(MySkill); // class reference — name read from MySkill.SKILL_NAME
console.log(registry.listRegistered()); // ['my-skill', ...]

// Create an instance from the registry
const skill = registry.create('my-skill', { apiKey: 'abc' });
```