---
title: "Create or update a skill"
method: PUT
path: "/skills/{namespace}/{slug}"
tags: ["skills"]
---

# Create or update a skill

`PUT /skills/{namespace}/{slug}`

Idempotent endpoint to create or update a GitHub-backed skill. Send application/json with `gitUrl`.

## Path parameters

- `namespace` string, required
- `slug` string, required

## Request body

- unknown

## Response `200`

Skill updated successfully

- object
  - `id` string, required
  - `namespace` string, required
  - `slug` string, required
  - `displayName` string, required
  - `description` string, required
  - `gitUrl` string, nullable, required
  - `externalStars` number, required
  - `listed` boolean, required
  - `createdAt` string, required
  - `updatedAt` string, required

## Other responses

- `201` — Skill created successfully
- `400` — Invalid request
- `403` — Forbidden - user does not own the namespace
- `404` — Namespace not found or SKILL.md not found
- `409` — Git URL already claimed by another skill
- `422` — SKILL.md validation error

## Changes

- **2026-03-13** `43d4f1082544` — 4 breaking, 1 warning
  - request body became required
  - the request's body type changed from `object` to no type
  - response property `gitUrl` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `gitUrl` list-of-types was widened by adding types `null` to media type `application/json` of response `201`
  - …1 more
- **2026-02-09** `85b5bbdafe84` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/smithery-ai/apis/smithery-platform-api/changes/skills/:namespace/:slug/put.md)

---

[API](https://skmtc.dev/smithery-ai/apis/smithery-platform-api.md) · [All operations](https://skmtc.dev/smithery-ai/apis/smithery-platform-api/llms.txt) · [OpenAPI document](https://skmtc.dev/smithery-ai/apis/smithery-platform-api/revisions/01f97a60fd96?raw)
