---
title: "Create Skill"
method: POST
path: "/v2/teams/{teamId}/skills"
tags: ["Skills"]
---

# Create Skill

`POST /v2/teams/{teamId}/skills`

Create or update a skill from a JSON body. The server constructs SKILL.md from the provided fields and stores it. If a skill with the same name already exists in the team, it is updated.

## Path parameters

- `teamId` string, required

## Request body

- object
  - `name` string, required — Skill name. 1-64 lowercase alphanumeric chars and hyphens; no leading/trailing or consecutive hyphens.
  - `description` string, required — 1-1024 chars describing what the skill does and when to invoke it.
  - `content` string, required — Markdown body of SKILL.md without YAML frontmatter. The server prepends the frontmatter from the other fields.
  - `license` string — Optional: license name or reference to a bundled license file.
  - `compatibility` string — Optional: 1-500 chars describing environment requirements.
  - `metadata` object — Optional: arbitrary key-value metadata.
  - `allowed-tools` string — Optional (experimental): space-delimited list of pre-approved tools.

## Response `200`

Default Response

- object
  - `skill` object, required — The created or updated skill
    - `id` string, uuid, required — Unique skill identifier
    - `name` string, required — Human-readable skill name
    - `description` string, required — Short summary of what the skill does
    - `team_id` string, uuid, required — ID of the team that owns the skill

## Other responses

- `201` — Default Response
- `400` — Default Response
- `401` — Default Response
- `403` — Default Response
- `500` — Default Response

---

[API](https://skmtc.net/duvo/apis/duvo-public-api.md) · [All operations](https://skmtc.net/duvo/apis/duvo-public-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/duvo/duvo-public-api/revisions/dafcf3d868a9/schema)
