Skip to main content
Skills over MCP tracks SEP-2640, still under review. The feature is experimental and may change with the spec. Few hosts support it yet, so skills you serve today may go unused until they adopt the standard.
A tool description tells the model what a tool does. A skill tells it how to run a workflow: a directory of instructions (SKILL.md plus supporting files) the host loads into context on demand.

Enable Skills

Drop your skills under src/skills/, one directory per skill, and turn the option on:
server.ts
Each SKILL.md opens with YAML frontmatter whose name matches its directory:
src/skills/refunds/SKILL.md
Skybridge validates every skill at build and dev startup: a bad name, a missing description, or a name that mismatches its directory fails loudly. Each valid skill is then served at skill://<name>/SKILL.md, with its supporting files alongside. Hosts discover skills through the skills/list method, which returns each skill’s URI, its verbatim frontmatter, and the complete file set with per-file SHA-256 digests; skills/get returns the same entry for a single skill by URI. This is the surface ChatGPT’s skill importer consumes when you submit your plugin.
Skills are markdown files only: SKILL.md and any supporting .md files are served as text/markdown, other formats and symlinks are ignored.

How Hosts Use Skills

Hosts don’t inject skills on their own. To put one in front of the model, reference its URI from a tool description or a tool result, for example “see skill://refunds/SKILL.md”. The host pulls in the full instructions only when they’re relevant.
A skill is a set of instructions a model may or may not act on: it does not bypass the model’s system directives or guardrails.

ChatGPT Onboarding

A ChatGPT plugin can offer a setup skill for users to run after they install it. Point to it from the plugin manifest with extensions["com.openai"].onboardingSkill, a path relative to the plugin root:
When the user runs setup, ChatGPT invokes the skill in a new conversation, or in the current one when the plugin was installed from a conversation. The manifest belongs to the plugin, not to the MCP server, so Skybridge doesn’t serve or generate it. See OpenAI’s plugin docs for the manifest’s file name and location. See the OpenAI MCP extensions.

Go Further

Register Tools

Define what humans and agents can do

UX Design

Account for what makes an MCP App different

Deploy

Ship your server to any host