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

# Kits

> Create, read, curate, and archive skill bundles over HTTP.

Kits share the `@org/slug` namespace with skills. Every active org member can create and curate kits; deleting is admin+. Rules: [Kits](/concepts/kits).

## `GET /kits`

Kits across all the user's organizations.

```json theme={"dark"}
// 200
{
  "kits": [
    {
      "name": "@acme/ai-team",
      "org": "acme",
      "slug": "ai-team",
      "displayName": "AI team baseline",
      "description": "…",
      "visibility": "private",
      "skillCount": 3,
      "updatedAt": "2026-08-10T12:00:00Z"
    }
  ]
}
```

## `POST /kits`

Create a kit from a list of skill names.

```json theme={"dark"}
// request
{
  "org": "acme",                       // optional; defaults to the device's org
  "slug": "ai-team",
  "displayName": "AI team baseline",   // optional; defaults to the slug
  "description": "…",                  // optional
  "visibility": "private",             // optional; default private
  "skills": ["@acme/api-conventions", "@acme/review-checklist"]   // 1–50 names
}
```

| Status | Code             | Meaning                                                        |
| ------ | ---------------- | -------------------------------------------------------------- |
| `200`  | —                | `{ kit }` with the resolved skill list                         |
| `409`  | `slug_taken`     | The name already belongs to a skill or kit in that namespace   |
| `422`  | `unknown_skills` | Listed skills that don't exist or aren't visible to the caller |

## `GET /kits/:org/:slug`

Kit detail with its skills — **entitlement-filtered**: skills the caller can't see are omitted, so the list is exactly what an install would deliver. The CLI installs kits by walking this list.

## `PATCH /kits/:org/:slug`

Update metadata and/or contents. Requires membership in the owning org.

```json theme={"dark"}
// request — all fields optional
{
  "displayName": "AI team baseline",
  "description": "…",
  "visibility": "private",
  "skills": ["@acme/api-conventions", "@acme/booking-flow-rules"]
}
```

When `skills` is present it **replaces the kit's contents wholesale** (1–50 names; `422 unknown_skills` applies). Returns the updated kit view.

## `DELETE /kits/:org/:slug`

Archives the kit. Admin or owner only — members get a `403`. The skills inside are untouched; idempotent.

```json theme={"dark"}
// 200
{ "archived": true, "name": "@acme/ai-team" }
```
