Skills

A written procedure, not a function — how your organization drafts an opinion, which sections a contract review has to cover.

A Skill is not a tool the model chooses to call — it is text you put in front of the model before it sees your first message, so it shapes the whole answer rather than arriving as the result of a call. Nothing here runs; there is no argument to decode and no result to send back. It works the way briefing a colleague works.

What this costs
Metered per request that names a Skill. Pricing is set by your platform operator and may not be published yet — check Pricing.

Authoring one

A Skill is a directory holding one file, SKILL.md: YAML front matter with a name and a description, then the instructions as Markdown for the rest of the file.

SKILL.md
---
name: contract-review
description: How this organization reviews a vendor contract before signature.
---

## Sections to check, in order

1. Term and renewal — flag auto-renewal without a notice window.
2. Termination — who can end it, on what notice, at what cost.
3. Liability cap — flag anything uncapped or above policy.
4. Governing law and venue.

Write findings as a numbered list, one clause per line, quoting the
clause before the finding.
Skills live on the platform's filesystem today; there is no upload endpoint yet. Send your operator the SKILL.md file — once it's in place, any request can use it by name.

Seeing what's available

GET/v1/skills
Response
{
  "object": "list",
  "data": [
    { "name": "contract-review",
      "description": "How this organization reviews a vendor contract before signature.",
      "chars": 612 }
  ]
}
curl https://api.console.larsa.larsima.com/v1/skills \
  -H "Authorization: Bearer $LARSA_API_KEY"

Using one

Name it on the request, alongside messages — not inside tools. Its instructions are prepended as a system message before every request that names it, so include it on every turn where you want it in effect; a multi-turn conversation does not remember it on its own.

JSON
{
  "model": "larsa-auto",
  "messages": [{"role": "user", "content": "…"}],
  "skills": ["contract-review"]
}
Only larsa-auto reads the skills field — that's the model the example below uses.
curl https://api.console.larsa.larsima.com/v1/chat/completions \
  -H "Authorization: Bearer $LARSA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "larsa-auto",
    "messages": [{"role": "user", "content":
      "Review clause 9: either party may terminate with 10 days written notice."}],
    "skills": ["contract-review"]
  }'

How the model decides to use it

It does not — you do, by naming it on the request. A Skill is never offered to the model as a choice the way a tool is; its instructions are already in the system prompt by the time the model sees your first message. If you want the model itself to pick among several Skills, that selection has to live in your own application code before you call this API — nothing here does it for you.

Navigate Open esc Close