A skill is a folder, not a document
Every skill has an entry document,SKILL.md, and may have any number of reference files beside it:
\n line endings and no byte-order mark. A skill holds at most 128 files, 512 KB in any one file, and 4 MB across all of them.
It is a prompt, so this all works already
A skill reuses the prompt engine rather than sitting beside it. Everything the prompt documentation describes for versions, labels, releases and history is true for a skill, unchanged:- Versions — each stored version is an immutable snapshot of the whole file set.
- Releases — a skill reaches a machine when a label points at a version. Storing a version and releasing it are separate acts, so you can try a skill yourself before anyone else receives it.
- History and comparison — version history and diffs work the same way. A renamed file reads as a rename, not as a file deleted and a different one added.
What a skill does not have
A skill is delivered to disk and read by an agent. It is not an inference request, so it owns none of the fields that describe one — and a version that carries any of them is rejected rather than quietly ignored:
A skill’s description is required, where a chat prompt’s is optional. An agent decides whether a skill is relevant by reading it, so a skill without one is undiscoverable.
The kind is permanent
A prompt’s kind is chosen when it is created and never changes. A skill never becomes a chat prompt, and no chat prompt becomes a skill. There is no converter, and there will not be one: the conversion is lossless in neither direction — chat to skill discards roles, conditions, tools and variables, and skill to chat discards filenames and references. A lossy conversion presented as a conversion produces silent data loss on published content. Choosing wrong means starting over. One consequence worth knowing before you name a skill: a slug identifies one prompt in a project whatever its kind, so a project holding acode-review chat prompt cannot also hold a code-review skill. A skill’s slug can be changed afterward; a chat prompt’s cannot.
Authoring, and where
In this release skills are authored through the to11 CLI and read in the browser. Writing one and storing it is Creating skills; receiving them on your own machine is oneto11 init. The dashboard lists skills, shows each file’s content, compares versions, and releases them; it does not create or edit them — see Reading a skill in the dashboard.
That is deliberate rather than unfinished: a skill is a folder on a developer’s machine, and the tool that already has the folder is the one that should send it. Importing brings an existing skill onto the platform as it stands, without restructuring or rewriting it first.
Reading a skill in the dashboard
A skill lives on the prompts list beside your chat prompts, with a Skill badge on its row. The list shows chat prompts and skills together; the Kind filter narrows it to one or the other. Opening one shows its files where a chat prompt shows its editor:- The file list is flat and shows each filename as stored, path included —
references/paging.md, not a folder to expand. A skill’s filenames are relative paths, so a tree would invent a structure the skill does not have. The entry document is first and markedentry. - The file content is what a machine receives, unchanged: nothing is
reflowed, re-indented or rewritten.
{{ … }}never appears at all — a skill has no variables, so nothing would substitute into it, and publishing refuses the syntax rather than delivering it literally to an agent. A link to another of the skill’s files opens that file. - The publication state says which labels point at the version on screen, or that none do. Storing a version and releasing it are separate acts, so a version you have just stored reaching nobody is the expected state, not a failed save.
Why there is no edit button
The browser reads skills; the to11 CLI writes them. Creating a skill, changing a file, adding or removing one, renaming one and importing a folder all happen through the CLI. There is no editor for a skill, and no route, button or link reaches one — a half-working authoring surface is worse than none, so the absence is deliberate rather than unfinished. What you can do in the browser: read every file, compare versions, see what is published, publish a version to a label, and archive the skill. New skill on the prompts list opens a panel rather than an upload control, because an upload control would imply the browser can create a skill. It hands you the two things that happen outside the browser:to11 init, which
configures this machine, and a prompt to give your coding agent — writing a
skill is writing a folder of documents, which is what a coding agent is for.
The agent is a convenience, not the mechanism; the folder can equally be one
you wrote yourself. Creating skills is the
procedure for both, and for
releasing one,
which is what makes it reach anyone else.
What a machine receives
The platform renders a skill into the files a machine writes, rather than serving raw content for a client to assemble. So a format fix ships once and reaches every machine on its next sync, and supporting another coding agent is work on the platform rather than a client release. Every target receives the standards-only form today — the entry document’s frontmatter carries aname and a description, and the files are as they were stored. That is the form every consumer accepts, so one render serves every agent.
The endpoints behind it
These are control-plane endpoints on the to11 API, not the gateway — the gateway serves inference, and a skill is never resolvable for inference. The to11 CLI calls them for you; they are listed because an API-first product’s paths are part of its surface.
No new permission exists for skills. Every endpoint uses a scope that already existed — see Roles & permissions.
The whole folder is the truth on import. A file present in the previous version and absent from an import is gone from the new one; that is the only way to remove a reference file. Frontmatter keys the platform does not recognize are dropped rather than rejected, so a skill written for one agent imports without being rewritten first. Every problem in a rejected import is reported at once, not one round trip at a time.
Next steps
Versions & releases
Publishing a skill is moving a label — the same act as publishing a prompt.
Rendering prompts
What a render returns for each kind, and what a render target selects.
Roles & permissions
Which permission each skill operation carries.
API reference
The endpoints that create, import, render and compare a skill.