# Skills

Source: https://webagent-docs-staging.lookover.ai/api-reference/skills

> Skills installed for the project.

## GET /v1/skills

List skills

Responses: 200 `ListSkillsResponse`, default `ErrorBody`

## GET /v1/skills/{name}

Get a skill (latest or `version`)

Parameters:
- `name` (path, required): string
- `version` (query): string

Responses: 200 `SkillDetailResponse`, default `ErrorBody`

## GET /v1/skills/{name}/usage

Runs, pass rate, median duration and spend of one skill over the last `days`

Parameters:
- `name` (path, required): string
- `days` (query): integer

Responses: 200 `SkillUsageResponse`, default `ErrorBody`

## GET /v1/skills/drafts

List skill drafts, most recently edited first

Responses: 200 `ListSkillDraftsResponse`, default `ErrorBody`

## POST /v1/skills/drafts

Start a draft from SKILL.md text

Parameters:
- `Idempotency-Key` (header): string. Retry safely: the same key and body replay the first answer.

Request body (JSON): `CreateSkillDraftRequest`

Responses: 201 `SkillDraft`, default `ErrorBody`

## GET /v1/skills/drafts/{id}

Get a draft with its text

Parameters:
- `id` (path, required): string

Responses: 200 `SkillDraft`, default `ErrorBody`

## PUT /v1/skills/drafts/{id}

Save a draft (409 `conflict` when `revision` is stale)

Parameters:
- `id` (path, required): string

Request body (JSON): `SaveSkillDraftRequest`

Responses: 200 `SkillDraft`, default `ErrorBody`

## DELETE /v1/skills/drafts/{id}

Delete a draft and its history

Parameters:
- `id` (path, required): string

Responses: 200 `Deleted`, default `ErrorBody`

## POST /v1/skills/drafts/{id}/publish

Publish the draft to the registry

Parameters:
- `id` (path, required): string
- `Idempotency-Key` (header): string. Retry safely: the same key and body replay the first answer.

Request body (JSON): `PublishSkillDraftRequest`

Responses: 201 `MarketplaceSubmission`, default `ErrorBody`

## GET /v1/skills/drafts/{id}/revisions

List a draft's snapshots, newest first

Parameters:
- `id` (path, required): string

Responses: 200 `ListSkillDraftRevisionsResponse`, default `ErrorBody`

## GET /v1/skills/drafts/{id}/revisions/{rev}

Get the text of one snapshot

Parameters:
- `id` (path, required): string
- `rev` (path, required): integer

Responses: 200 `SkillDraftRevisionText`, default `ErrorBody`

## POST /v1/skills/dry-run

Run unsaved SKILL.md text once as a job (202; not listed in skill runs)

Parameters:
- `Idempotency-Key` (header): string. Retry safely: the same key and body replay the first answer.

Request body (JSON): `DryRunRequest`

Responses: 202 `DryRun`, default `ErrorBody`

## GET /v1/skills/dry-runs/{id}

A dry run: steps as they finish, then status and summary

Parameters:
- `id` (path, required): string

Responses: 200 `DryRun`, default `ErrorBody`

## POST /v1/skills/validate

Validate a skill document

Request body (JSON): `ValidateSkillRequest`

Responses: 200 `SkillValidation`, default `ErrorBody`
