Conversation
Add skills/list, skills/get, resources/directory/read server-side dispatch and client-side convenience wrappers (list_skills, get_skill, read_skill_uri, read_directory, list_all_skills). ServerHandler trait default methods + handle_request arms for all three RPC methods. Model types in new model/skills.rs module with const_string! request method constants, PaginatedRequestParams-based SkillsListRequest, and ResourcesDirectoryReadRequestParams/Result mirroring the resources/read pattern. Client wrappers on Peer<RoleClient> plus spec-named public API convenience functions. Co-Authored-By: openhands <openhands@all-hands.dev>
Add the #[skill] macro trio (skill, skill_router, skill_handler) that let users declare skill endpoints via proc-macro annotations — analogous to the existing #[tool] and #[prompt] trios. Dispatch key is a skill:// URI instead of a flat name; the router parses URIs via parse_skill_uri. SkillRouter<S> + SkillRoute<S> runtime types in handler/server/router/skill.rs. ServerHandler trait methods for skills_list, skills_get, resources_directory_read wired through handle_request in handler/server.rs. FileSystemSkillServer (examples/skill_fs_server.rs) walks **/SKILL.md from a directory tree, parses flat YAML frontmatter into JSON, computes SHA-256 digests for sibling files, and serves entries over stdio. Marked as example/demo code — users should implement their own ServerHandler using the #[skill] macro. Validation client (examples/skill_fs_client.rs) spawns the server over stdio without shell invocation and verifies list/get/error paths end-to-end. Test suite (tests/test_skills_conformance.rs) exercises the server binary as a child process over stdio JSON-RPC — 10 tests covering discovery, URI validation, frontmatter parsing, multi-file resources, and negative cases.
branben
force-pushed
the
feat/sep-2640-skills
branch
from
September 19, 2026 02:19
aba85c0 to
15ed73a
Compare
branben
force-pushed
the
feat/sep-2640-skills
branch
from
September 19, 2026 04:03
15ed73a to
2585f28
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Motivation and Context
SEP-2640 (Skills Extension for MCP) was merged Sep 13. This PR adds the Rust SDK
reference implementation:
skills/list,skills/get, andresources/directory/readmethods, plus the
#[skill]macro trio that lets server authors declare skillendpoints the same way they declare tool endpoints.
How Has This Been Tested?
cargo check --all-featurespasses clean. 11 conformance tests pass inconformance/.FileSystemSkillServerdemo server runs end-to-end withfixtures under
fixtures/skills-dir/.Breaking Changes
None. All new methods are additive. Existing code is unaffected.
Public API Check may report false positives for the
#[skill]macro — the macrogenerates code at compile time, and the generated types satisfy the trait bounds
through transparent expansion, not a newtype wrapper.
Types of changes
Checklist