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

# Organization Skills

> Share skills with everyone in your organization: upload a skill folder, publish new versions, load them in any agent

A skill is a folder of instructions, scripts and reference files that teaches an agent a task. An **internal** skill belongs to an organization: every member's agent can find it with `search_skills`, sees it listed in its [context](/organizations/context), and loads it with `get_skill`. Nobody outside the organization can see it. Internal skills need a shared organization; in a personal organization, use `private`.

| Visibility | Who can use it                   | How it is published                                                   |
| ---------- | -------------------------------- | --------------------------------------------------------------------- |
| `private`  | You                              | Create or upload                                                      |
| `internal` | Every member of the organization | Create or upload, if you may publish (below)                          |
| `public`   | Everyone                         | Through the [submission review](/api-reference/endpoint/submit_skill) |

Names are unique where the skill lives: a public name across Danube, an internal name within its organization, a private name among your own skills.

## Upload a skill folder

A skill folder follows the Agent Skills layout, the same one Claude Code reads from `.claude/skills/`:

```
refund-policy/
├── SKILL.md          # frontmatter with name and description, then the instructions
├── scripts/          # code the agent can run
├── references/       # longer documents SKILL.md links to
└── assets/           # templates, images, fonts
```

```markdown SKILL.md theme={null}
---
name: refund-policy
description: How Acme decides and issues refunds. Use when a customer asks for their money back.
---

# Refund policy
...
```

Upload it from [Dashboard > Skills](https://danubeai.com/dashboard/skills), from the CLI, or through the API:

```bash theme={null}
# CLI: zips the folder for you; internal by default
danube skills upload ./refund-policy
danube skills upload ./refund-policy --org <org-id>
danube skills upload ./drafts/my-skill --private

# API: a .zip of one skill folder
curl -X POST "https://api.danubeai.com/v1/skills/upload" \
  -H "danube-api-key: YOUR_DANUBE_API_KEY" \
  -F "file=@refund-policy.zip" \
  -F "visibility=internal" \
  -F "org_id=<org-id>"
```

`POST /v1/organizations/{org_id}/skills/upload` does the same with the organization in the path. Without `org_id`, an internal skill goes to the organization the request acts for (the `danube-org-id` header or an organization API key).

Limits: a 5 MB archive that unpacks to at most 10 MB and 200 files; text files up to 500 KB, binary files up to 2 MB. Files in other folders (for example `FORMS.md` or `templates/`) keep their path, so links from SKILL.md still work. A skill that contains a credential is refused.

## Publish a new version

Uploading a skill whose name already exists answers `409`. Upload with `replace` to publish a new version in place: the skill keeps its id, and `version` goes up by one. Replacing needs the right to edit that skill (below).

```bash theme={null}
danube skills upload ./refund-policy --replace
```

## Share a skill with your organization

A private skill you wrote can move into an organization when it is ready for the team. Open it in [Dashboard > Skills](https://danubeai.com/dashboard/skills) and click **Share with \<organization>** (pick the organization when you belong to several). The skill moves: it keeps its id, its link and its versions, becomes `internal`, and every member's agent can find and load it. You keep editing it, and the organization's owners and admins can manage it too.

**Make private** on a shared skill moves it back to your own skills; members and their agents lose access at once. Only the author shares a skill or makes it private.

Sharing is refused with `409` when the organization already has a skill with that name (rename yours first), and making a skill private is refused with `409` when you already have a private skill with that name. Sharing needs the right to publish in that organization (below).

```bash theme={null}
curl -X POST "https://api.danubeai.com/v1/skills/SKILL_ID/share" \
  -H "danube-api-key: YOUR_DANUBE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"org_id": "<org-id>"}'
```

## Use a skill

In an agent session, `search_skills` covers public skills, your organizations' internal skills and your own private ones, with the last two first. `get_skill` returns SKILL.md and the text of every file, plus a `download_url`.

To install a skill for Claude Code, download it as a zip ready for `.claude/skills/`:

```bash theme={null}
danube skills download refund-policy --out .claude/skills
```

The API is `GET /v1/skills/{id}/download` with your API key; it accepts the skill's id or name.

## Who can publish

Owners and admins of the organization can always publish, edit and delete its internal skills. Plain members can publish and share too, unless an owner or admin turns off **Members can share skills and workflows** in [Dashboard > Organization > Settings](https://danubeai.com/dashboard/organization) (the `skills_member_publish` setting of `PATCH /v1/organizations/{org_id}/settings`, on by default). The same setting governs [sharing workflows](/organizations/workflows). A member can edit and delete the internal skills they published. Viewers never publish.

## API

| Endpoint                                        | Purpose                                                                                  |
| ----------------------------------------------- | ---------------------------------------------------------------------------------------- |
| `POST /v1/skills`                               | Create from JSON (`visibility`: `private` or `internal`, `org_id`)                       |
| `POST /v1/skills/upload`                        | Upload a zip (`file`, `visibility`, `org_id`, `replace`)                                 |
| `POST /v1/organizations/{org_id}/skills/upload` | Upload an internal skill to that organization                                            |
| `GET /v1/organizations/{org_id}/skills`         | List the organization's internal skills (any member)                                     |
| `GET /v1/skills/{id}/download`                  | The skill as a zip                                                                       |
| `POST /v1/skills/{id}/share`                    | Move your private skill into an organization (`org_id`, default the acting organization) |
| `POST /v1/skills/{id}/unshare`                  | Move your shared skill back to your private skills                                       |
