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

# Capabilities Overview

> How Wolffish's capability system works

# What Is a Capability?

A capability is a self-contained folder in `brain/cerebellum/` that gives Wolffish a new ability. Capabilities are how Wolffish learns to do things — run shell commands, read files, interact with git, search the web, send messages.

## Two Types of Capabilities

<CardGroup cols={2}>
  <Card title="Pure Skills" icon="file-lines">
    A SKILL.md file only. The markdown body contains instructions the LLM follows using its existing abilities. No code needed. Example: `git/` — the LLM uses shell commands to run git operations based on the SKILL.md instructions.
  </Card>

  <Card title="Plugin Capabilities" icon="plug">
    A SKILL.md file plus a `plugin/` folder with executable code. The plugin exports tools that the LLM can call directly. Example: `shell/` — the plugin wraps `child_process` to provide a `shell_exec` tool.
  </Card>
</CardGroup>

## Capability Folder Structure

```
brain/cerebellum/my-capability/
├── SKILL.md              # Required: frontmatter + instructions
└── plugin/               # Optional: executable code
    └── index.mjs         # Plugin entry point
```

## How Capabilities Are Loaded

On startup, `cerebellum.ts` scans `brain/cerebellum/` and for each folder:

1. Reads and parses the SKILL.md frontmatter (YAML)
2. Extracts tool definitions, danger patterns, confirm patterns, and triggers
3. If a `plugin/` folder exists, dynamic-imports `plugin/index.mjs`
4. Calls `init(context)` on the plugin, passing `pluginDir` and `workspaceRoot`
5. Registers all tools with the agent's tool definitions

## How Capabilities Are Selected

**Plugin capabilities** (with tools) are always included in the `<tools>` section — the LLM needs to know what tools it can call regardless of the message topic.

**Pure skills** (no tools) are injected into a `<skills>` section only when the user's message matches their trigger keywords. The cerebellum scores each skill by how many trigger keywords appear in the message and injects the top 3 matches.

A trigger of `"*"` (wildcard) makes a pure skill **always-on** — it's injected on every message without keyword matching and doesn't count against the top-3 limit. Use this for skills that define agent-wide behaviour like planning discipline or output formatting.

## Built-In Capabilities

Wolffish ships with these capabilities in the default workspace:

| Capability   | Type       | Description                                                       |
| ------------ | ---------- | ----------------------------------------------------------------- |
| `shell`      | Plugin     | Execute shell commands via `shell_exec`                           |
| `filesystem` | Plugin     | Read, write, and patch files                                      |
| `git`        | Pure Skill | Git operations via shell commands                                 |
| `introspect` | Plugin     | Self-awareness: status, channel connectivity, performance, memory |
| `ask`        | Plugin     | Ask you a multiple-choice question and wait for your pick         |
| `skills`     | Plugin     | Manage and author Wolffish's own capabilities at runtime          |

## Adding and Removing Capabilities

You can add your own capabilities two ways:

* **Drop them onto Settings → Cellebrum** — a single `SKILL.md`, a folder, or a `.zip`. Each drop is validated before anything is written, then loaded immediately. Imported capabilities show an **Unknown** badge (they're yours, not bundled) and can be removed with the trash icon, which cleanly deletes their folder.
* **Create the folder by hand** under `brain/cerebellum/`, then click **Resync** in the panel (or restart Wolffish) to load it.

See [Creating Capabilities](/capabilities/creating-capabilities) for the full walkthrough, the three import shapes, and the rules an importable capability must follow.

<Card title="Create Your Own" icon="plus" href="/capabilities/creating-capabilities">
  Learn how to build a new capability from scratch.
</Card>
