***

title: ClaudeSkillsSkill
slug: /reference/typescript/agents/skills/claude-skills
description: Load Claude Code-style SKILL.md files as agent tools.
---------------------

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

[add-skill]: /docs/server-sdks/reference/typescript/agents/agent-base/add-skill

Load Claude Code-style SKILL.md files as agent tools. Each SKILL.md file in the
configured directory becomes a SWAIG function, with YAML frontmatter parsed for
metadata.

**Class:** `ClaudeSkillsSkill`

**Tools:** Dynamically created from SKILL.md files (prefixed with `tool_prefix`)

**Env vars:** None

**Multi-instance:** Yes

<ParamField path="skills_path" type="string" required={true} toc={true}>
  Path to the directory containing Claude skill folders (each with a SKILL.md file).
</ParamField>

<ParamField path="include" type="string[]" default={["*"]} toc={true}>
  Glob patterns for skills to include.
</ParamField>

<ParamField path="exclude" type="string[]" default={[]} toc={true}>
  Glob patterns for skills to exclude.
</ParamField>

<ParamField path="tool_prefix" type="string" default="claude_" toc={true}>
  Prefix for generated tool names. Use an empty string for no prefix.
</ParamField>

<ParamField path="prompt_title" type="string" default="Claude Skills" toc={true}>
  Title for the prompt section listing skills.
</ParamField>

<ParamField path="prompt_intro" type="string" default="You have access to specialized skills. Call the appropriate tool when the user's question matches:" toc={true}>
  Introductory text for the prompt section.
</ParamField>

<ParamField path="skill_descriptions" type="object" toc={true}>
  Override descriptions for specific skills. Keys are skill names, values are
  description strings.
</ParamField>

<ParamField path="response_prefix" type="string" default="" toc={true}>
  Text to prepend to skill results.
</ParamField>

<ParamField path="response_postfix" type="string" default="" toc={true}>
  Text to append to skill results.
</ParamField>

<ParamField path="allow_shell_injection" type="boolean" default="false" toc={true}>
  Enable shell command preprocessing in skill bodies.
  **Security warning:** allows arbitrary shell execution.
</ParamField>

<ParamField path="allow_script_execution" type="boolean" default="false" toc={true}>
  Discover and list `scripts/` and `assets/` files in prompt sections.
</ParamField>

<ParamField path="ignore_invocation_control" type="boolean" default="false" toc={true}>
  Override `disable-model-invocation` and `user-invocable` flags from frontmatter.
  When `true`, all discovered skills are registered regardless of invocation control.
</ParamField>

<ParamField path="shell_timeout" type="integer" default="30" toc={true}>
  Timeout in seconds for shell injection commands.
</ParamField>

```typescript {6-11}
import { AgentBase, ClaudeSkillsSkill } from '@signalwire/sdk';

const agent = new AgentBase({ name: 'assistant', route: '/assistant' });
agent.setPromptText('You are a helpful assistant.');

await agent.addSkill(new ClaudeSkillsSkill({
  skills_path: '/path/to/skills/directory',
  tool_prefix: 'skill_',
  include: ['*'],
  exclude: ['deprecated-*'],
}));

agent.run();
```