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

# Skills

> Reusable agent capabilities, defined in your harness's native skill format and discovered automatically.

**Skills** are reusable capabilities your agents can invoke. They live in your
harness's native format. Karta does not define a separate skill format.

| Harness     | Skills location                                                                                    |
| ----------- | -------------------------------------------------------------------------------------------------- |
| OpenCode    | `.opencode/skills/<name>/SKILL.md`; surfaced on `app.skills`.                                      |
| Claude Code | `.claude/skills/`; preserved in the project and consumed by Claude Code as native harness context. |

| Question                                        | Answer                                                                                 |
| ----------------------------------------------- | -------------------------------------------------------------------------------------- |
| Does Karta define a skill schema?               | No. Use the harness-native skill format.                                               |
| Which skills appear on `app.skills`?            | OpenCode skills discovered from `.opencode/skills/*/SKILL.md`.                         |
| Are Claude Code skills copied into the release? | Yes, as part of the `.claude` project layout. Claude Code owns their runtime behavior. |

## Defining an OpenCode skill

A skill is a directory with a `SKILL.md` describing what it does and how to use
it, alongside any scripts or resources it needs:

```text theme={null}
.opencode/skills/
`-- order-lookup/
    `-- SKILL.md
```

```markdown .opencode/skills/order-lookup/SKILL.md theme={null}
---
name: order-lookup
description: Look up order tracking and delivery status for a customer.
---

Use this skill when a customer asks about an order's status or tracking.
Given an order number, return the current status and estimated delivery.
```

## Binding a skill to an agent

Reference skills from an agent's [frontmatter](/build/defining-agents) to grant
or scope access:

```markdown .claude/agents/shipping.md theme={null}
---
name: shipping
description: Order status and delivery questions
permissions:
  skill:
    order-lookup: allow
---

You handle shipping questions. Use the order-lookup skill to check status.
```

## Discovery in the SDK

OpenCode skills discovered from `.opencode/skills/*/SKILL.md` are available on
the Karta instance:

```python theme={null}
app = Karta()
app.skills        # mapping of skill name -> metadata
```

Verification signal:

```python theme={null}
assert "order-lookup" in app.skills
assert app.skills["order-lookup"]["path"].endswith("/.opencode/skills/order-lookup/SKILL.md")
```

<Note>
  Because skills stay in the harness's native format, the authoritative format
  and capabilities are the harness's own. See the
  [Claude Code](https://docs.anthropic.com/en/docs/claude-code) and
  [OpenCode](https://opencode.ai) documentation. Karta's contribution is
  preserving the native layout and, for OpenCode, surfacing discovered skills
  through sessions, routing, and
  [permissions](/build/defining-agents#frontmatter-fields).
</Note>
