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>" }.
400ifnameis missing (or contains glob chars in file mode).404if 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.