Skip to content

Add specification/stable/skills.mdx for SEP-2640 - #138

Merged
olaservo merged 4 commits into
mainfrom
spec/skills-stable
Sep 4, 2026
Merged

Add specification/stable/skills.mdx for SEP-2640#138
olaservo merged 4 commits into
mainfrom
spec/skills-stable

Conversation

@pja-ant

@pja-ant pja-ant commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

Adds specification/stable/skills.mdx, a spec-format rendering of the Skills extension (io.modelcontextprotocol/skills) defined by SEP-2640.

The layout follows ext-tasks/specification/draft/tasks.md: extension identifier, capability negotiation, data types as TypeScript interfaces, one section per method with request/response shapes and JSON examples, an example message flow, error handling, reservations, and security considerations. Normative statements are carried over from the SEP at their original requirement levels. Motivation, rationale, backward-compatibility discussion, reference implementations, implementation guidelines, and the deferred-features appendix remain in the SEP.

Points where this page goes beyond the literal SEP text and may want review:

  • Capability Negotiation states that a server declaring the extension also declares the base resources capability.
  • ListSkillsResult carries ttlMs / cacheScope unconditionally (stable targets protocol 2026-07-28 or later), rather than conditioned on protocol version.
  • Type names (Skill, SkillResource, ListSkillsRequest/Result, GetSkillRequest/Result, ReadResourceDirectoryRequest/Result) follow the main schema's naming pattern; the SEP does not name them.
  • The Example Message Flow is new illustrative content.
  • Error Handling and Reservations are assembled from statements spread across the SEP.

🤖 Generated with Claude Code

Requested by Peter · Claude session #01Sure6S

pja-ant and others added 4 commits September 4, 2026 11:21
Spec-format rendering of the Skills extension (io.modelcontextprotocol/skills),
following the layout used by ext-tasks' specification/draft/tasks.md.

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Sure6Sknngow87Q6TkzTfL
@pja-ant
pja-ant marked this pull request as ready for review September 4, 2026 12:59

@aditya-scio aditya-scio left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ty!

@olaservo
olaservo merged commit f1f8605 into main Sep 4, 2026
@panyam

panyam commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

I went through the tracability extraction for SEP-2640 I was maintaining. I found a couple of things I wanted to see if those were intentional:

1. ListSkillsResult drops the caching attributes rather than making them unconditional.

PaginatedResult carries only nextCursor. ttlMs and cacheScope live on CacheableResult, and the base list results compose both:

interface ListToolsResult extends PaginatedResult, CacheableResult { tools: Tool[] }
interface ListResourcesResult extends PaginatedResult, CacheableResult { resources: Resource[] }

ListSkillsResult extends PaginatedResult alone inherits neither, so it might need to extend CacheableResult as well? Also I think ttlMs is required there, which might strengthen it than SEP's conditional instead of biing an equivalent one.

2. protocol-version baseline? 2026-07-28 appears nowhere in skills.mdx. Dropping the SEP's "in protocol versions 2026-07-28 and later" is fine if stable assumes that baseline, but it is not clear reading this page if it does. May be worth mentioning near Capability Negotiation, or keeping the conditional.

3. "MUST also declare the resources capability" is new? I don thtink this has a counterpart in the SEP? I think it is right, but it makes a currently-conformant server non-conformant on merge, so i think we should explicitly declare on this instead? Should I add a check row for this (in the conf suite)?

4. skills/get caching explicitly left open earlier and now seems closed silently. The SEP says "whether the result should also carry the base protocol's caching attributes ... is left open." GetSkillResult extends Result seems to suggest it is not. Should we make it more deliberate?

Im working through the conformance suite (modelcontextprotocol/conformance#330) so can correct it if these need any changes here.

@sambhav
sambhav deleted the spec/skills-stable branch September 4, 2026 19:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants