A skill is instructions for one kind of task, loaded only when the agent needs it. It keeps the system prompt short and the cache warm.
Skills in the bootstrap
Section titled “Skills in the bootstrap”"skills": [ { "name": "writing", "description": "How to word a message to the person.", "content": "Short sentences. Lead with the answer." }]newt adds an index of names and descriptions to the system prompt:
<skills>Load a skill with load_skill before doing what it covers.- writing: How to word a message to the person.</skills>and gives the agent a built-in load_skill tool. The index changes only with the bootstrap version, so it stays in the cached prefix. A loaded skill’s text stays in that turn’s scratch and never enters history.
Make a tool wait for a skill
Section titled “Make a tool wait for a skill”Every tool call carries newt/skills_loaded, the skills the agent loaded this turn. A handler can refuse an action until the right skill was read, for example a refund tool that needs the refunds skill first.
Skills served over MCP
Section titled “Skills served over MCP”An MCP server that declares io.modelcontextprotocol/skills can serve skills in the Agent Skills format instead of the bootstrap.
- newt lists them on connect and offers each as
{server}/{skill path}:skill://acme/billing/refunds/SKILL.mdon serverappbecomesapp/acme/billing/refunds. - Nothing is fetched until the model loads one. Then newt reads
SKILL.mdand checks its size,sha256digest and frontmatter against the listing. - A skill’s other files are readable through
load_skillwithfile, each checked the same way.
A file that fails a check never reaches the model. Protocol 2.6 has the full rules.