---
title: skill_delete
description: Delete an ad-ops playbook (Skill), guarded by base_revision.
---

Deletes a **Skill**. Requires the `skill:write` scope. Like [`skill_update`](/mcp/tools/skill-update), it is guarded by `base_revision` — fetch the Skill first so a concurrent edit can't be silently lost.

## Input

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `skill_name` | `string` | yes | The slug identifying which Skill to delete. |
| `base_revision` | `number` | yes | The `revision` you last read via `skill_get`. Guards against deleting a race. |

## Output

Confirmation of deletion. The Skill stops appearing in [`skill_list`](/mcp/tools/skill-list) and [`skill_get`](/mcp/tools/skill-get), and its slug becomes free to reuse for a new Skill.

## Example

> _"Delete the old black-friday-audit skill."_

```ts
const skill = skill_get({ skill_name: 'black-friday-audit' }); // revision 2
skill_delete({
  skill_name: 'black-friday-audit',
  base_revision: skill.revision,
});
```

:::info[Recovery is operator-only]

Deletes are soft (the row is tombstoned), but there is no self-serve restore in the console or over MCP. If you delete a Skill by mistake, contact support.

:::

## Errors

- **Stale revision** — the Skill changed since you read it. Re-fetch with `skill_get` and retry with the latest `base_revision`.
- **Not found** — no Skill with that slug exists.
- `401` or `403` — see [Errors](/mcp/errors), which every tool shares. This one needs `skill:write`.
