---
title: skill_create
description: Create a new ad-ops playbook (Skill) in your organization from an agent session.
---

Creates a new **Skill** (ad-ops playbook) in your organization. This is one of the AdCrunch MCP tools that **writes** — it requires the `skill:write` scope. A common pattern: you teach the agent a workflow once, then ask it to save that workflow as a Skill so your whole team's agents can reuse it.

## Input

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `name` | `string` | yes | Human-readable display name. |
| `description` | `string` | yes | When to use this Skill — what agents read to decide whether to load it. Invest here. |
| `body` | `string` | yes | The playbook instructions (markdown). |
| `slug` | `string` | no | Optional explicit handle; normalized to kebab-case. Defaults to one derived from the `name`. |

## Output

The created Skill: `{ id, slug, name, description, body, revision, createdBy, … }`. New Skills start at `revision` 1.

## Example

> _"Save what we just did as a skill called 'weekly meta audit' so I can run it every Monday."_

```ts
skill_create({
  name: 'Weekly Meta Audit',
  description:
    'Audit Meta campaign performance for the last 14 days and flag overspend. Use every Monday.',
  body: '# Weekly Meta Audit\n1. list_entities(type: "campaign") for each Meta advertiser\n2. query_insights for the last 14 days…\n3. Flag any campaign with CPA above target.',
});
// → { slug: 'weekly-meta-audit', revision: 1, … }
```

:::info[Slugs are derived from the name]

Leave `slug` out and AdCrunch kebab-cases the name (`Weekly Meta Audit` → `weekly-meta-audit`). Pass `slug` only when you want a specific handle.

:::

## Errors

- **Slug already exists** — a live Skill with that slug already exists in your organization. Pick a different name or slug (no silent suffixing).
- **Invalid slug** — the name (or slug) has no letters or digits to derive a slug from. Provide one that does.
- `401` or `403` — see [Errors](/mcp/errors), which every tool shares. This one needs `skill:write`.
