> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fabric.bulldogtechnologies.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Skills

> Version-controlled prompts with structured metadata that extend what Fabric's chat interface can do.

Skills are **version-controlled prompts with structured metadata** that extend what Fabric's chat interface can do. Write a Markdown file with YAML frontmatter, commit it, and it becomes a callable capability in chat.

## What a skill is

A skill is a `SKILL.md` file. The frontmatter declares its name, triggers, and parameters. The body is a prompt template.

```markdown SKILL.md theme={null}
---
name: summarize-thread
label: Summarize Thread
description: Summarize an email thread or Slack conversation
triggers:
  - "summarize this thread"
  - "tldr"
parameters:
  - name: thread_id
    description: The thread to summarize
    required: true
---

Summarize the following thread concisely, highlighting decisions and action items:

{{thread_content}}
```

## Version-controlled in the repo

Skills live in `backend/skills/` in the repository. Meaning:

<CardGroup cols={3}>
  <Card title="Tracked in git" icon="code-branch">
    Alongside the rest of the codebase.
  </Card>

  <Card title="Reviewed like code" icon="code-pull-request">
    Changes go through code review and roll back like any other code.
  </Card>

  <Card title="Shared via the repo" icon="users">
    Teams share a common skill library — no hidden per-user config.
  </Card>
</CardGroup>

On startup (and on demand), Fabric hydrates skills from the `skills/` directory into the database, making them available to every user in the tenant.

## Creating a custom skill

<Steps>
  <Step title="Create the file" icon="file-plus">
    `backend/skills/<name>/SKILL.md`.
  </Step>

  <Step title="Fill in frontmatter" icon="list">
    `name`, `label`, `description`, `triggers`, `parameters` (optional).
  </Step>

  <Step title="Write the prompt body" icon="pen">
    Use `{{variable}}` placeholders for parameters. Reference other Fabric tools (the agent can call `search_knowledge`, `query_database`, etc. when the skill runs).
  </Step>

  <Step title="Commit and push" icon="cloud-arrow-up">
    The skill is available on next hydration.
  </Step>
</Steps>

## How skills are triggered

The chat interface matches user input against skill triggers. If a match is detected, the skill is invoked with extracted parameters. Users can also invoke skills explicitly by name.

<Tip>
  Skills can reference Fabric's knowledge base in their prompts — a skill can instruct the model to search the graph, retrieve documents, compare entities across sources, or execute SQL. The skill body is a prompt, **not executable code**; the agent interprets it and calls the tools it needs.
</Tip>

## Skill parameters

Parameters can be extracted from the user's message or filled interactively. A skill declares required parameters; Fabric prompts the user for any that are missing before invocation.

## System skills

Fabric ships with system skills in `backend/skills/_system/` that teach the agent how to use Fabric's own tools effectively:

<CardGroup cols={2}>
  <Card title="searching-gmail" icon="envelope">
    Best practices for querying Gmail-sourced nodes.
  </Card>

  <Card title="searching-slack" icon="hashtag">
    Channel-scoped retrieval patterns.
  </Card>

  <Card title="searching-imap" icon="inbox">
    Generic email search across IMAP accounts.
  </Card>

  <Card title="navigating-knowledge-graph" icon="share-nodes">
    Multi-hop graph traversal examples.
  </Card>
</CardGroup>

You can read them to understand the tool surface, or copy and modify them as starting points for your own skills.
