---
title: "Update a skill"
method: PATCH
path: "/skills/{id}"
tags: ["Skills"]
---

# Update a skill

`PATCH /skills/{id}`

## Request

- Base URL: `https://commareports.com/api/v1`
- URL: `https://commareports.com/api/v1/skills/{id}`
- Auth: one of:
  - HTTP bearer
  - HTTP bearer

Any subset of { name, description, prompt, required_tools, source_kind, source_ref, model }. Scope: `routines`.

## Request body

- SkillPatchRequest: At least one property must be present.
  - `name` string
  - `description` string, nullable
  - `prompt` string
  - `required_tools` RequiredTool[]
    - `kind` string, required
  - `source_kind` 'inline' | 'upload' | 'github'
  - `source_ref` string, nullable
  - `model` string

## Response `200`

Updated skill.

- Skill
  - `id` string, uuid, required
  - `name` string, required
  - `description` string, nullable
  - `prompt` string, required
  - `required_tools` RequiredTool[]
    - `kind` string, required
  - `source_kind` 'inline' | 'upload' | 'github', required
  - `source_ref` string, nullable: Storage path (upload) or pinned 'owner/repo@sha:path' (github).
  - `model` string, nullable
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, required

## Other responses

- `400`: Malformed body or invalid field.
- `401`: Missing, invalid, revoked, or expired token.
- `403`: Token missing the required scope, or no access to the resource.
- `404`: Resource not found (also returned instead of 403 where existence must not leak).
- `429`: Rate limit exceeded. Rate limit: per-token sliding window (plan-aware — Free 60 req/min, Pro 600, Team/Enterprise 6000 by default); 429 responses carry a Retry-After header.
- `500`: Unexpected server error.

---

[API](https://skmtc.dev/commareports/apis/comma-api.md) · [All operations](https://skmtc.dev/commareports/apis/comma-api/llms.txt) · [OpenAPI document](https://skmtc.dev/commareports/apis/comma-api/revisions/cd5263522ade?raw)
