Documentation

Skills registry

Store your skills once and serve them to any agent platform, from Claude and Cursor to an AGENTS.md file or a bare Grok bot, via list_skills and get_skill.

A skill is a procedure you want an AI to follow the same way every time: how you log a feature, how you draft a post, which checks run before you publish. Written as a file inside one AI product, that procedure belongs to that product. Switch tools and you re-author everything.

The skills registry stores each skill once, in your account, and compiles it on request into the shape the asking host expects.

How a skill is stored

A skill is an ordinary note with note_type: "skill". Give it a small frontmatter block and seven fixed sections:

---
name: feature-logger
description: Log a new feature request as a correctly structured note.
version: 1
platforms: [claude, cursor, agents-md, grok]
tags: [blackops, product]
---

## Purpose
## Triggers
## Inputs
## Procedure
## Tool bindings
## Output contract
## Failure modes

description is what an agent sees when it lists skills, so write it as "when to use this". version is a plain integer you bump by hand when you change the procedure — it comes back on every fetch, so you can tell which revision an agent actually ran.

Procedures reference capabilities, not tools

The one rule that makes a skill portable: the procedure never names a tool. It names a capability, and the binding table maps that capability to a tool.

## Procedure

3. Write the note with `capability:write_note`.

## Tool bindings

| Capability | Tool | Platform | Notes |
| --- | --- | --- | --- |
| write_note | post_notes | * | Creates the note. |
| write_note | log_feature | grok | Thin wrapper on the Grok bot. |

* is the default binding; a row naming a platform overrides it there. When a tool gets renamed, you edit one line in this table and every skill that binds to it keeps working. Compilation substitutes the capability for the bound tool, so what the agent reads is Write the note with \post_notes``.

If a capability has no binding for the requested platform, the reference is left in place and the response carries a warning — a step with no tool behind it is reported, never quietly dropped.

The two tools

list_skills returns slug, description, version, tags and platforms — no bodies. It is on the default tool surface and is meant to be called at the start of a task. Filter with tags and platform.

get_skill returns one skill compiled for a host:

formatOutput
claudeSKILL.md — YAML frontmatter (name, description, and version under metadata) plus the body
cursor.mdc rule — description, globs, alwaysApply: false
agents-mdAn AGENTS.md section, headings demoted one level
grokPlain prompt text, headings flattened to labels, no frontmatter
rawThe stored markdown, untouched

format also picks which column of the binding table is used; pass platform to override that independently.

Both are also plain REST: GET /api/v2/skills and GET /api/v2/skills/{slug}?format=grok.

Discovery

The MCP server's initialize response tells the host to call list_skills at the start of any task and to follow a matching skill instead of improvising. Hosts that surface server instructions pick this up with no setup.

For a host that ignores server instructions, paste one line into its own custom instructions:

At the start of every task, call list_skills. If a skill matches the request, call get_skill with its slug and follow the returned procedure as written.

Host support

HostSurfaces server instructionsSetup
Claude (claude.ai connector, Claude Code)YesNone — list_skills is on the default surface
CursorNot reliablyAdd the bootstrap line to Rules, or paste a compiled .mdc
ChatGPTNot reliablyAdd the bootstrap line to custom instructions; list_skills/get_skill are callable directly (no use_tool needed)
GrokNot reliablyAdd the bootstrap line to the bot's system prompt

The table records what each host does with the initialize instructions field; the bootstrap line is the documented fallback everywhere it is not honored.

Writing a skill

Create it like any other note — post_notes with note_type: "skill" and the markdown above, or update_brain with a Skills brain's brain_id if you want the skills compiled into a knowledge map as well. Editing a skill is patch_notes on the same note; bump version when the procedure changes.

Ready-made skills

The publishing pipeline (log an idea, build the drafts, proofread against your brand voice, launch on approval) is published as open source at github.com/BlackOpsCenter/skills. The skills are written in this exact format and compiled by the same compiler, and there are install steps for Claude Code, claude.ai, Codex, Cursor, AGENTS.md and plain-prompt hosts.

Related

Skills are one part of why your work moves between agents without loss. See One Knowledge Base, Every Agent.

Want this page as machine-readable markdown? GET /docs/mcp/skills.md