> ## Documentation Index
> Fetch the complete documentation index at: https://docs.prysm1.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Skills

> Pre-loaded engineering skills that act as expert system prompts — browse, retrieve, and invoke them against any task.

PRYSM ships 23 production-grade engineering skills (sourced from
[addyosmani/agent-skills](https://github.com/addyosmani/agent-skills), MIT) — structured
expert instructions for code review, debugging, TDD, documentation, and more. Skills act
as expert system prompts: invoking a skill routes the task to the best model for that
intent and returns a signed completion.

***

## List skills

<Note>
  **GET** `https://api.prysm1.com/v1/skills` · No authentication required
</Note>

Returns all available skills with their IDs, names, and descriptions.

<RequestExample>
  ```bash cURL theme={null}
  curl https://api.prysm1.com/v1/skills
  ```

  ```python Python theme={null}
  import httpx

  skills = httpx.get("https://api.prysm1.com/v1/skills").json()
  for s in skills["data"]:
      print(s["id"], "—", s["description"])
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "object": "list",
    "count": 23,
    "source": "https://github.com/addyosmani/agent-skills (MIT)",
    "data": [
      { "id": "code-review-and-quality", "name": "Code Review and Quality", "description": "Review code for bugs, readability, and maintainability." },
      { "id": "tdd", "name": "Test-Driven Development", "description": "Write tests first, then implement to make them pass." }
    ]
  }
  ```
</ResponseExample>

***

## Get skill

<Note>
  **GET** `https://api.prysm1.com/v1/skills/{skill_id}` · No authentication required
</Note>

Returns a skill's full content: parsed frontmatter (`name`, `description`) and the raw
markdown body that becomes the system prompt when the skill is invoked.

<RequestExample>
  ```bash cURL theme={null}
  curl https://api.prysm1.com/v1/skills/code-review-and-quality
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "id": "code-review-and-quality",
    "name": "Code Review and Quality",
    "description": "Review code for bugs, readability, and maintainability.",
    "raw": "You are a senior software engineer...",
    "source": "https://github.com/addyosmani/agent-skills (MIT)"
  }
  ```
</ResponseExample>

***

## Invoke skill

<Note>
  **POST** `https://api.prysm1.com/v1/skills/{skill_id}/invoke` · Requires `Authorization: Bearer prysm_sk_…`
</Note>

Run a skill on a task. The skill's full body becomes the system prompt; your task
is the user message. PRYSM routes to the best model for the skill's intent — a
code-review skill routes to a premium reasoning model; a summarisation skill to
a fast budget model. All standard PRYSM features apply: BRAIN.md overrides,
AgentGuard cost caps, and a PrysmProof receipt.

The response includes `prysm.skill` — the invoked skill's identity — alongside
the usual `prysm.routing`, `prysm.cost`, and `prysm.proof` fields.

### Request body

<ParamField body="task" type="string" required>
  The user's prompt — what you want the skill to do.
</ParamField>

<ParamField body="model" type="string" default="auto">
  Model override. `auto` lets PRYSM pick; pass `laser-1`, `halo-1`, or `foton-1` to fix the intensity tier.
</ParamField>

<ParamField body="routing_mode" type="string">
  Explicit routing mode: `quality`, `balanced`, or `agility`.
</ParamField>

<ParamField body="max_tokens" type="integer">
  Maximum output tokens. Defaults to the model's limit.
</ParamField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST https://api.prysm1.com/v1/skills/code-review-and-quality/invoke \
    -H "Authorization: Bearer prysm_sk_..." \
    -H "Content-Type: application/json" \
    -d '{ "task": "Review this Python function:\ndef add(a, b):\n    return a+b" }'
  ```

  ```python Python theme={null}
  from prysm import Prysm

  client = Prysm()
  resp = client.post("/v1/skills/code-review-and-quality/invoke", json={
      "task": "Review this Python function:\ndef add(a, b):\n    return a+b"
  })
  print(resp.json()["choices"][0]["message"]["content"])
  ```

  ```typescript Node theme={null}
  import { Prysm } from "@prysmai/sdk";

  const client = new Prysm();
  const resp = await client.request("POST", "/v1/skills/code-review-and-quality/invoke", {
    body: { task: "Review this Python function:\ndef add(a, b):\n    return a+b" }
  });
  console.log(resp.choices[0].message.content);
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "id": "chatcmpl-...",
    "object": "chat.completion",
    "choices": [{ "message": { "role": "assistant", "content": "The function looks correct..." } }],
    "prysm": {
      "routing": { "model": "claude-sonnet-4.5", "mode": "balanced", "tier": "premium" },
      "cost":    { "total_usd": 0.00042 },
      "proof":   { "proof_hash": "sha256:a1b2..." },
      "skill":   { "id": "code-review-and-quality", "name": "Code Review and Quality", "source": "addyosmani/agent-skills" }
    }
  }
  ```
</ResponseExample>
