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

# orca skills

> List, inspect, import, and delete skills in the catalog, and attach or detach them on agents.

> **Last updated: 2026-09-06**

`orca skills` manages the tenant [skill catalog](/concepts/skills): Agent Skills packages (a `SKILL.md` plus any scripts, references, and assets) that can be attached to agent profiles. A skill's `source` is `user`, `imported`, or `platform`.

Every subcommand accepts the [global flags](/cli/reference/overview#global-flags). All positionals on this page are required; there is no interactive picker. Destructive subcommands prompt for confirmation in a terminal; in a script `--yes` is required or the command refuses (exit code 2).

## orca skills list

```bash theme={"dark"}
orca skills list [--limit <n>] [--offset <n>] [--all]
```

Lists the skills in the catalog.

| Flag           | Type    | Default | Description                                                        |
| -------------- | ------- | ------- | ------------------------------------------------------------------ |
| `--limit <n>`  | integer | `10`    | Page size                                                          |
| `--offset <n>` | integer | `0`     | Page offset                                                        |
| `--all`        | boolean | `false` | Fetch every page (cannot be combined with `--limit` or `--offset`) |

```bash theme={"dark"}
orca skills list --all --json | jq -r '.[] | select(.source == "platform") | .name'
```

Plain (piped) output is one tab-separated row per skill: `name`, `source`, resource file count, `description`.

## orca skills get

```bash theme={"dark"}
orca skills get <name> [--resource <path>]
```

Shows one skill. With `--json` the full skill object is printed (`name`, `description`, `body`, `tags`, `source`, `resources`, `license`, `compatibility`, `requiresSandbox`, and so on). The plain view prints key and value rows: `name`, `source`, `description`, `tags`, resource count. The terminal view adds the `SKILL.md` body.

| Flag                | Type   | Default | Description                                                                                                                    |
| ------------------- | ------ | ------- | ------------------------------------------------------------------------------------------------------------------------------ |
| `--resource <path>` | string | none    | Print one bundled resource file instead of the skill; `<path>` is relative to the skill root, for example `scripts/extract.py` |

With `--resource`, stdout carries the file contents exactly as stored, so it can be redirected to disk. With `--resource` and `--json` together:

```json theme={"dark"}
{ "name": "pdf-toolkit", "path": "scripts/extract.py", "content": "..." }
```

```bash theme={"dark"}
orca skills get pdf-toolkit --resource scripts/extract.py > extract.py
```

## orca skills delete

```bash theme={"dark"}
orca skills delete <name> [--yes]
```

Deletes a skill from the catalog.

| Flag    | Type    | Default | Description                  |
| ------- | ------- | ------- | ---------------------------- |
| `--yes` | boolean | `false` | Skip the confirmation prompt |

```bash theme={"dark"}
orca skills delete pdf-toolkit --yes --json
```

```json theme={"dark"}
{ "name": "pdf-toolkit", "deleted": true }
```

## orca skills import

```bash theme={"dark"}
orca skills import <path> [--dry-run] [--force]
```

Imports an Agent Skills folder into the catalog. `<path>` must be a directory with a `SKILL.md` at its root; a single file, an archive, or a directory without `SKILL.md` exits 2 before anything is uploaded. Every file under the directory is uploaded recursively with paths relative to that directory, so the directory's own name does not have to match the skill's name.

Import is two-phase. The package is first uploaded for validation: validation errors are printed to stderr as `error: ...` and the command exits 2; warnings are printed as `warning: ...` and do not block. With `--dry-run` the command stops there and reports the skill name, resource file count, total bytes, and whether the skill requires a sandbox (it bundles scripts). Otherwise the staged package is committed to the catalog. Importing a name that already exists is a usage error (exit code 2) whose message points at `--force`; on `cli-v0.5.0` the same conflict exits 1.

| Flag        | Type    | Default | Description                                  |
| ----------- | ------- | ------- | -------------------------------------------- |
| `--dry-run` | boolean | `false` | Validate and preview without registering     |
| `--force`   | boolean | `false` | Overwrite an existing skill of the same name |

With `--json` and `--dry-run` the preview object is printed: `skill` (the parsed `SKILL.md` frontmatter and body), `resources`, `validation` (`ok`, `errors`, `warnings`), `requiresSandbox`, `totalBytes`, and the `stagingId` the commit would use. With `--json` alone the created skill record is printed.

```bash theme={"dark"}
orca skills import ./skills/pdf-toolkit --dry-run
orca skills import ./skills/pdf-toolkit --force --json
```

A skill that requires a sandbox only works on agents that have one enabled; see [Skills](/concepts/skills).

## orca skills attach

```bash theme={"dark"}
orca skills attach <agent> <skill>
```

Attaches a catalog skill to an agent profile. The profile is read first, so an unknown agent exits 4. If the skill is already attached nothing is written and `changed` is `false`. A skill that is not in the catalog exits 2 with a hint to import it; a server that does not support modifying skills on the agent exits 1.

```bash theme={"dark"}
orca skills attach researcher pdf-toolkit --json
```

```json theme={"dark"}
{ "agent": "researcher", "skill": "pdf-toolkit", "attached": true, "changed": true }
```

## orca skills detach

```bash theme={"dark"}
orca skills detach <agent> <skill>
```

Detaches a skill from an agent profile. The profile is read first, so an unknown agent exits 4. If the skill is not attached nothing is written and `changed` is `false`.

```bash theme={"dark"}
orca skills detach researcher pdf-toolkit --json
```

```json theme={"dark"}
{ "agent": "researcher", "skill": "pdf-toolkit", "detached": true, "changed": true }
```

<Note>
  Verified against orca-cli `cli-v0.5.0`.
</Note>
