Claudio.Skills (Claudio v0.6.0)

View Source

Anthropic Agent Skills API client (/v1/skills) — manage custom skills (packaged SKILL.md + files) and their versions.

Beta. Every request carries anthropic-beta: skills-2025-10-02, attached automatically (via Claudio.Client.with_betas/2) — you do not need to build the client with it.

client = Claudio.Client.new(%{token: "sk-ant-...", version: "2023-06-01"})
{:ok, %{"data" => skills}} = Claudio.Skills.list(client, source: "custom")

Returns the raw decoded body ({:ok, map()}); a non-2xx response maps to {:error, %Claudio.APIError{}}, consistent with Claudio.Admin / Claudio.Models.

Creating skills (multipart)

create/2 and create_version/3 upload multipart/form-data. The exact form-field names are part of the upload spec; supply a form_multipart-shaped list (same shape Claudio.Files.upload/3 uses):

form = [file: {File.read!("skill.zip"), filename: "skill.zip", content_type: "application/zip"}]
{:ok, skill} = Claudio.Skills.create(client, form)

Prompt-tools (/v1/experimental/*) are intentionally not implemented — experimental, access-gated, and the beta header is unverified.

Summary

Functions

Creates a skill from a multipart/form-data upload. form is a form_multipart-shaped list, e.g. [file: {bytes, filename: "skill.zip", content_type: "application/zip"}].

Creates a new version of an existing skill from a multipart upload.

Deletes a skill by id.

Deletes a specific version of a skill.

Retrieves a single skill by id.

Retrieves a specific version of a skill.

Lists skills. Opts (:limit/:page/:source) become query params.

Lists a skill's versions. Opts become query params.

Types

result()

@type result() :: {:ok, map()} | {:error, Claudio.APIError.t() | term()}

Functions

create(client, form)

@spec create(
  Req.Request.t(),
  keyword()
) :: result()

Creates a skill from a multipart/form-data upload. form is a form_multipart-shaped list, e.g. [file: {bytes, filename: "skill.zip", content_type: "application/zip"}].

create_version(client, skill_id, form)

@spec create_version(Req.Request.t(), String.t(), keyword()) :: result()

Creates a new version of an existing skill from a multipart upload.

delete(client, skill_id)

@spec delete(Req.Request.t(), String.t()) :: result()

Deletes a skill by id.

delete_version(client, skill_id, version)

@spec delete_version(Req.Request.t(), String.t(), String.t()) :: result()

Deletes a specific version of a skill.

get(client, skill_id)

@spec get(Req.Request.t(), String.t()) :: result()

Retrieves a single skill by id.

get_version(client, skill_id, version)

@spec get_version(Req.Request.t(), String.t(), String.t()) :: result()

Retrieves a specific version of a skill.

list(client, opts \\ [])

@spec list(
  Req.Request.t(),
  keyword()
) :: result()

Lists skills. Opts (:limit/:page/:source) become query params.

list_versions(client, skill_id, opts \\ [])

@spec list_versions(Req.Request.t(), String.t(), keyword()) :: result()

Lists a skill's versions. Opts become query params.