> 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. # 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' }); ``` > Global singleton registry for discovering and instantiating skills. ## Docs - [addSearchPath](https://signalwire.com/docs/server-sdks/reference/typescript/agents/skill-registry/add-search-path.md): Add a directory path for skill discovery. - [addSkillDirectory](https://signalwire.com/docs/server-sdks/reference/typescript/agents/skill-registry/add-skill-directory.md): Register an external directory of skills with strict validation. - [clear](https://signalwire.com/docs/server-sdks/reference/typescript/agents/skill-registry/clear.md): Remove all skill registrations. - [create](https://signalwire.com/docs/server-sdks/reference/typescript/agents/skill-registry/create.md): Create a new skill instance from the registry. - [discoverAll](https://signalwire.com/docs/server-sdks/reference/typescript/agents/skill-registry/discover-all.md): Discover and register skills from all configured search paths. - [discoverFromDirectory](https://signalwire.com/docs/server-sdks/reference/typescript/agents/skill-registry/discover-from-directory.md): Discover and register skills from a directory. - [getAllSkillsSchema](https://signalwire.com/docs/server-sdks/reference/typescript/agents/skill-registry/get-all-skills-schema.md): Get parameter schemas for all registered skills. - [getExternalPaths](https://signalwire.com/docs/server-sdks/reference/typescript/agents/skill-registry/get-external-paths.md): Get the external skill directories registered via addSkillDirectory. - [getInstance](https://signalwire.com/docs/server-sdks/reference/typescript/agents/skill-registry/get-instance.md): Get the global singleton instance. - [getSearchPaths](https://signalwire.com/docs/server-sdks/reference/typescript/agents/skill-registry/get-search-paths.md): Get all configured skill discovery search paths. - [getSkillClass](https://signalwire.com/docs/server-sdks/reference/typescript/agents/skill-registry/get-skill-class.md): Look up a registered skill class by name. - [getSkillSchema](https://signalwire.com/docs/server-sdks/reference/typescript/agents/skill-registry/get-skill-schema.md): Get the parameter schema for a registered skill. - [has](https://signalwire.com/docs/server-sdks/reference/typescript/agents/skill-registry/has.md): Check if a skill name is registered. - [listAllSkillSources](https://signalwire.com/docs/server-sdks/reference/typescript/agents/skill-registry/list-all-skill-sources.md): List all skill sources grouped by origin. - [listRegistered](https://signalwire.com/docs/server-sdks/reference/typescript/agents/skill-registry/list-registered.md): List all registered skill names. - [listSkills](https://signalwire.com/docs/server-sdks/reference/typescript/agents/skill-registry/list-skills.md): List all registered skills with their full metadata. - [lock](https://signalwire.com/docs/server-sdks/reference/typescript/agents/skill-registry/lock.md): Lock skill names to prevent overwriting. - [register](https://signalwire.com/docs/server-sdks/reference/typescript/agents/skill-registry/register.md): Register a skill class by its static SKILL_NAME. - [resetInstance](https://signalwire.com/docs/server-sdks/reference/typescript/agents/skill-registry/reset-instance.md): Reset the global SkillRegistry singleton (test helper). - [unregister](https://signalwire.com/docs/server-sdks/reference/typescript/agents/skill-registry/unregister.md): Remove a skill registration by name.