> ## Documentation Index
> Fetch the complete documentation index at: https://extended-openai-conversation.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Skills Overview

> Extend AI capabilities with reusable skill modules

Skills are reusable AI capabilities that provide specialized knowledge and instructions to your assistant. Each skill is a self-contained module that can be enabled per conversation.

## What are Skills?

Skills extend your AI assistant with:

* **Specialized Knowledge**: Domain-specific information and context
* **Custom Instructions**: Step-by-step guidance for complex tasks
* **Tool Integration**: Access to scripts, APIs, and external tools
* **Reference Data**: Pre-loaded data files and resources

## How Skills Work

<Steps>
  <Step title="Skills are loaded">
    Skills are read from `<config>/extended_openai_conversation/skills/` directory
  </Step>

  <Step title="Enable per conversation">
    Select which skills to enable in the assistant's Options
  </Step>

  <Step title="AI receives context">
    When enabled, skill descriptions are included in the system prompt
  </Step>

  <Step title="AI loads skill content">
    The AI calls `load_skill` function to read detailed instructions when needed
  </Step>
</Steps>

## Enabling Skills

<Steps>
  <Step title="Navigate to Voice Assistants">
    Go to **Settings** > **Voice Assistants**
  </Step>

  <Step title="Edit your assistant">
    Click on your Extended OpenAI Conversation assistant
  </Step>

  <Step title="Open Options">
    Click **Options**
  </Step>

  <Step title="Select skills">
    Choose which skills to enable from the list
  </Step>
</Steps>

<Frame>
  <img width="400" height="477" alt="Skills Selection" src="https://github.com/user-attachments/assets/0264a5f1-c05c-4aae-90c6-78aea4b086f0" />
</Frame>

<Note>
  Skills are enabled per conversation entity. You can have different skills enabled for different assistants.
</Note>

## System Prompt

To use skills, you need to add this prompt to your assistant's system message:

```jinja2 theme={null}
{%- if skills %}
## Skills
The following skills extend your capabilities. To use a skill, call load_skill with the skill name to read its instructions.
When a skill file references a relative path, resolve it against the skill's location directory and always use the resulting absolute path in bash commands.

<available_skills>
{%- for skill in skills %}
  <skill>
    <name>{{ skill.name }}</name>
    <description>{{ skill.description }}</description>
    <location>{{ skill.path }}</location>
  </skill>
{%- endfor %}
</available_skills>
{% endif %}
```

**What this prompt does:**

* Lists all enabled skills with names and descriptions
* Instructs the AI to call `load_skill` for detailed instructions
* Explains path resolution for relative references
* Ensures bash commands use absolute paths

<Info>
  Add this to your assistant's **Prompt Template** in the configuration options.
</Info>

## Required Functions

To use skills, you need to configure these functions in your assistant's **Functions** settings:

### load\_skill

Add this function to allow the AI to load skill files:

```yaml theme={null}
- spec:
    name: load_skill
    description: Load a file from a skill's directory.
    parameters:
      type: object
      properties:
        name:
          type: string
          description: Skill name
        file:
          type: string
          description: Relative file path within the skill directory
      required:
      - name
      - file
  function:
    type: read_file
    path: '{{extended_openai.skill_dir(name)}}/{{file}}'
```

### bash (Optional)

Add this function to enable skills to execute commands:

```yaml theme={null}
- spec:
    name: bash
    description: Execute a bash command in workspace.
    parameters:
      type: object
      properties:
        command:
          type: string
          description: Bash command to execute
      required:
      - command
  function:
    type: bash
    command: '{{command}}'
```

<Warning>
  **Security Note**: Bash execution is restricted to the workspace directory (`<config>/extended_openai_conversation/`) and has deny patterns for destructive commands.
</Warning>

## Skill Directory Structure

Each skill is a directory with a `SKILL.md` file:

```
<config>/extended_openai_conversation/skills/
└── your_skill_name/
    ├── SKILL.md           # Required: skill definition
    ├── scripts/           # Optional: executable scripts
    │   └── helper.py
    └── reference/        # Optional: detailed reference material
        └── finance.md
```

## Use Cases

<CardGroup cols={2}>
  <Card title="External APIs" icon="plug">
    Integrate third-party services (weather, crypto, stocks)
  </Card>

  <Card title="Data Processing" icon="gears">
    Execute scripts to process or transform data
  </Card>

  <Card title="Custom Knowledge" icon="book">
    Provide domain-specific information to the AI
  </Card>

  <Card title="Tool Integration" icon="wrench">
    Connect external tools and utilities
  </Card>
</CardGroup>

## Best Practices

<AccordionGroup>
  <Accordion title="Clear descriptions">
    Write concise descriptions (under 1024 chars) that clearly explain when the skill should be used. This helps the AI decide whether to activate the skill.
  </Accordion>

  <Accordion title="Enable selectively">
    Only enable skills relevant to the conversation. Too many skills can dilute the AI's focus.
  </Accordion>

  <Accordion title="Test thoroughly">
    Test skills with various user queries before deploying to production.
  </Accordion>

  <Accordion title="Use relative paths">
    In `SKILL.md`, use relative paths for files. The AI will resolve them to absolute paths when executing commands.
  </Accordion>
</AccordionGroup>

## Next Steps

<CardGroup cols={3}>
  <Card title="Discover Skills" icon="magnifying-glass" href="/skills/discover-skills">
    Browse and install available skills
  </Card>

  <Card title="Creating Skills" icon="hammer" href="/skills/creating-skills">
    Learn to build your own skills
  </Card>

  <Card title="Functions Overview" icon="code" href="/functions/overview">
    Skills work with functions
  </Card>
</CardGroup>
