Skip to main content
A skill is a packaged prompt + metadata that any SimpleFunctions agent can invoke as a slash command. SimpleFunctions ships ~19 built-in skills (cognitive guardrails like /precheck, /discipline, plus 16 topical context packs), and authenticated users can author and publish their own. There are two layers:

Built-in skills

The CLI ships built-in skills directly. Inside sf agent, type /<trigger> to run one. List them via the public API:
This endpoint is public, cached 1h. It is the single source of truth for what built-in skills the running CLI exposes.

User skills — full schema

A user skill row contains:

Authentication

Every endpoint below except GET /api/public/skills* and GET /api/skills requires Authorization: Bearer sf_live_xxx. Mutating endpoints additionally enforce ownership: only the row’s userId can update, delete, fork (their own), or publish it.

CRUD endpoints

Create a skill

Required body fields: name, trigger, description, prompt. Returns 201 with the new row.

List your skills

Returns built-in skills + the caller’s custom skills:

Get one skill

Returns the full skill row. 404 if not found or not owned by the caller.

Update a skill

Partial update. Send only the fields you want to change. Mutable fields: name, trigger, description, prompt, category, tags, toolsUsed, estimatedTime, auto, version.
404 when the row doesn’t exist or isn’t owned by the caller. Server stamps updatedAt.

Delete a skill

Returns { deleted: true, id }. Hard delete. 404 if not found.

Fork a public skill

Forks a public skill into the caller’s collection. The fork copies name (with ” (fork)” suffix), trigger, description, prompt, category, tags, toolsUsed, estimatedTime, and sets forkedFromId to the original. forkCount on the original is atomically incremented.
Returns 201 with the new row. 404 if the source skill isn’t public or doesn’t exist.

Publish / unpublish

Publishing flips isPublic = true and pins a public slug:
Slug rules: ^[a-z0-9-]{3,60}$. Unique across all published skills. Successful publish returns { published: true, slug, skill }. The skill is then live at simplefunctions.dev/skills/{slug} and discoverable via GET /api/public/skills. Unpublish flips isPublic = false and returns { unpublished: true }. The slug is kept so future publishes can reuse it.

Public catalog

/api/public/skills returns up to 100 published skills, optionally filtered: /api/public/skill/{slug} returns the full row including prompt text. Both endpoints are no-auth, Cache-Control: public, s-maxage=300.

Discovering skills from MCP

These tools are also available over MCP — see MCP tools reference:
  • create_skill, list_skills, run_skill, publish_skill, fork_skill — authenticated.
  • browse_public_skills — public.
run_skill returns the skill’s prompt and metadata; execution happens in the calling agent (Claude Code, Cursor, sf agent, etc.) — the SimpleFunctions server does not run the prompt itself.

See also

MCP tools reference

create_skill, fork_skill, publish_skill, full schemas.

Build agents

How skills compose with the SimpleFunctions agent loop.

Agentic CLI

Built-in skills are bundled here; sf agent recognizes their slash commands.

Browse public skills

Live catalog on the website.