Skip to content

Skills

Skills are the agent's reusable procedures — a browsable library of SKILL.md documents (plus linked references/templates/scripts). A native client's skills browser lists them and views their content. Verified against api/routes.py.


GET /api/skills — list

Query: category (optional filter).

Response

{ "skills": [
    { "name": "whisper", "description": "…",
      "category": "mlops/models", "disabled": false }
] }

Scans the active profile's skills directory (and search dirs), parses each SKILL.md frontmatter, filters by platform, and marks disabled from the config's disabled list.

GET /api/skills/content — view one skill

Query: name (required), file (optional — fetch a linked file within the skill dir).

Response (skill view)

{
  "success": true,
  "name": "whisper", "description": "…",
  "tags": ["…"], "related_skills": ["…"],
  "content": "<full SKILL.md>",
  "path": "mlops/models/whisper/SKILL.md",
  "linked_files": {
    "references": ["references/api.md"],
    "templates": [], "scripts": [], "assets": []
  }
}

Response (file mode, ?file=references/api.md){ "content": "<file text>", "path": "<relative file>" }.

  • 400 if name is missing (or contains glob chars in file mode).
  • 404 if the skill or file isn't found.
  • Path traversal is guarded — a resolved path must stay within the skill directory.

linked_files is always an object ({} when the skill has no attachments), so a client can iterate its arrays safely.


Skill mutations (/api/skills/save, /delete, /toggle) and usage stats (/api/skills/usage) exist for a full management UI; the two endpoints above are what a read/browse experience needs.