# Validate a skill bundle

> Check a staged bundle against the skill spec without publishing.

Source: https://docs.generalinput.com/api/skills/validate



<Endpoint method="POST" path="/v1/skills/:id/validate" />

<Access scope="skills:manage" />

Checks exactly one `SKILL.md` at the root, the frontmatter contract (`name` slug, non-empty `description` up to 1024 characters), a non-empty body, that every linked `scripts/`, `references/`, and `assets/` path exists, and that no `.md` or `.ts` file hardcodes a platform resource id or reads ambient platform auth.

## Body [#body]

| Field       | Type   | Required |
| ----------- | ------ | -------- |
| `bundleKey` | string | yes      |

## Response [#response]

```json
{
  "ok": false,
  "errors": [
    {
      "path": "SKILL.md",
      "message": "Linked file scripts/export.py does not exist."
    }
  ]
}
```
