---
title: "Create or replace a local skill"
method: POST
path: "/api/skills"
tags: ["Skills"]
---

# Create or replace a local skill

`POST /api/skills`

## Request body

- object
  - `source` string, required
  - `name` string, required
  - `content` string, required

## Response `200`

OK

## Other responses

- `400` — Invalid request
- `401` — Authentication required
- `403` — Insufficient permissions
- `422` — Skill content failed security checks
- `429` — Rate limit exceeded

## Changes

- **2026-07-17** `b920835b2793` — 1 breaking, 3 info
  - added required request body
  - added the non-success response with the status `400`
  - added the non-success response with the status `422`
  - added the non-success response with the status `429`
- **2026-03-20** `14665c463836` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/builderz-labs/apis/mission-control-api/changes/api/skills/post.md)

---

[API](https://skmtc.dev/builderz-labs/apis/mission-control-api.md) · [All operations](https://skmtc.dev/builderz-labs/apis/mission-control-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/builderz-labs/mission-control-api/revisions/b920835b2793/schema)
