ext-skills/docs/decisions.md
Ola Hungerford 26ea24ece7
Define _meta scoping guidelines for skill resources (#60)
* Update skill-meta-keys.md to reference merged URI scheme doc

Replace PR #53 links with relative references to the now-merged
skill-uri-scheme.md document.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Refactor skilljack-mcp section and update notes on `_meta` keys for clarity

* Refocus _meta doc as scoping framework, not key recommendations

Address PR feedback: remove recommended keys that duplicate
frontmatter or belong at the plugin/distribution layer. Change
namespace to io.modelcontextprotocol.skills/. Establish scoping
principles for when _meta is appropriate vs frontmatter, annotations,
or distribution-layer mechanisms.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Add decision record: _meta reserved for MCP-transport concerns

Records the decision from PR #60 review that skill-level semantics
stay in frontmatter, _meta is for MCP-transport-specific metadata,
and no specific keys are recommended yet.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-08 06:36:13 -07:00

9.2 KiB

Decision Log

This document records significant decisions made by the Skills Over MCP Interest Group, using an ADR-lite (Architecture Decision Record) format. It serves as a transparent, auditable trace of the group's reasoning over time.

For background on the ADR format, see adr.github.io.


2026-02-14: Skills served over MCP use the instructor format

Status: Accepted

Context: The inaugural meeting surfaced a key distinction between two models: skills-as-instructors (structured markdown content served to agents) and skills-as-helpers (scripts/code that execute locally). The group needed to decide which model to prioritize for skills served over MCP. Subsequent discussion in Discord and the Feb 26 office hours broadened the scope beyond "teaching agents to use tools" specifically.

Decision: Skills served over MCP use the instructor format (structured markdown content), with the convention being agnostic about whether skills reference server tools, external tools, or general knowledge. The helper model (executing arbitrary local code) is out of scope for MCP-served skills.

Rationale: Helper-style skills that require local code execution already have existing distribution mechanisms (repos, npx, etc.) and don't need MCP as a transport. Instructor-style skills are more portable across remote and local MCP servers, easier to security-vet (static instructional content vs. arbitrary code), and align better with MCP's role as a context protocol. Dynamically served code-execution skills were flagged as unlikely to pass security review for registry listing.

References:


2026-02-14: Keep docs as markdown in-repo rather than publish as a website

Status: Accepted

Context: The question arose whether the IG should publish docs using a solution like Mintlify or keep them as markdown files in the repository.

Decision: Keep documentation as markdown files in the repository.

Rationale: The markdown-in-repo approach is working well for the IG's current needs. It keeps the contribution barrier low (just edit markdown and submit a PR), avoids introducing additional tooling and infrastructure, and is sufficient for the group's size and documentation complexity. Can be revisited if the group grows or docs become harder to navigate.

References:


2026-02-14: Reference external implementations rather than fork them

Status: Accepted

Context: The group needed to decide whether to bring external implementations (reference repos, SEPs, related projects) into this repository or link to them externally.

Decision: Document results from implementations in experimental-findings.md and link to external repos and resources in related-work.md, rather than forking or vendoring external code.

Rationale: This avoids duplication and maintenance burden, keeps the repo focused on the IG's exploratory documentation, and lets external projects evolve independently. The pattern of findings + references is working well for the group's needs.

References:


2026-02-21: Coordinate with Agent Skills spec via their Discussions

Status: Accepted

Context: The IG needed a communication channel with the Agent Skills spec maintainers to align on proposals, share findings, and avoid divergence. The spec repo initially had no contributing guide.

Decision: Use Discussions in the agentskills/agentskills repo as the primary channel for topics that intersect both groups.

Rationale: The Agent Skills spec maintainers established a contributing guide directing public discussion to their Discussions area. Using their preferred channel respects their governance model and provides a single, visible place for cross-project coordination rather than fragmenting discussion across Discord, GitHub Issues, and other venues.

References:


2026-02-21: Add skills-as-resources as an explored approach

Status: Accepted

Context: Community input (via Issue #14) argued that MCP Resources are a natural fit for serving skill content, and that adding a new primitive when an existing one could work would add unnecessary complexity to the ecosystem.

Decision: Incorporate skills-as-resources as an explicit approach in the IG's exploration, updating Approach 3 from "Skills as Tools" to "Skills as Tools and/or Resources" and adding design principles around minimizing ecosystem complexity.

Rationale: Resources already have URI-based addressability, existing tooling for fetching, and a subscription model for updates. Using existing primitives rather than introducing new ones reduces ecosystem complexity -- a concern the community has vocally raised. The skill:// URI scheme also gives skills a natural way to reference each other.

References:


2026-02-26: Prioritize skills-as-resources with client helper tools

Status: Accepted

Context: The Feb 26 office hours discussed the skills-as-resources reference implementation (PR #16) and whether the group should focus on workarounds for today's clients or the ideal client-supported approach.

Decision: Focus on the skills-as-resources approach using client helper tools (e.g., a built-in read_resource tool on the client side and an SDK-level list_skill_uris() method). Workaround implementations (e.g., skills in tool descriptions) remain in the repo as comparison baselines but are clearly separated in intent.

Rationale: Rather than having each server ship its own load_skill tool, clients should support model-driven resource loading directly. This is a relatively small lift for clients (compared to features like elicitation or sampling) and avoids duplicate approaches across servers. Experimental SDK changes will allow clients and models to load skill resources more consistently, which could also unlock other Resource use cases beyond skills. The plan is to partner with client implementors to test once the extension is ready.

References:


2026-03-16: _meta is for MCP-transport-specific concerns, not skill-level semantics

Status: Accepted

Context: PR #60 initially proposed recommended _meta keys that mapped Agent Skills frontmatter fields (version, invocation, allowed-tools) into MCP resource _meta as a "materialized view." Review feedback raised several concerns: this duplicates what frontmatter already expresses, the optimization of avoiding content fetches is premature (clients cache locally), and adding it now is harder to remove later. Further discussion identified that even MCP-specific candidates like provenance and dependencies may be better addressed at the plugin/distribution layer.

Decision: _meta on skill resources is reserved for metadata that is specific to the MCP transport context and has no natural home in frontmatter, annotations, Resource fields, or the distribution layer. Skill-level semantics (version, invocation mode, allowed tools, compatibility) remain in frontmatter. The io.modelcontextprotocol.skills/ namespace is established for any future standardized keys. No specific keys are recommended at this time.

Rationale: The general razor is: "does this metadata also apply to non-MCP skills? If so, it should go in frontmatter." This avoids fragmenting skill metadata across transport mechanisms, keeps _meta lightweight for clients that optimize for lean metadata reads, and defers standardization of specific keys until there is clear implementation experience showing that frontmatter and the distribution layer are insufficient.

References: