Repository navigation
feat(skills): replace server instructions with filtered MCP skills - #3685
Open
SamMorrowDrums wants to merge 6 commits into
Open
SamMorrowDrums wants to merge 6 commits into
SamMorrowDrums wants to merge 6 commits into
Conversation
Port the skills protocol and bundled workflows, align beta cache envelopes, and enable skills explicitly or through insiders. Filter all skill surfaces against configured tools without publishing tool associations. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Auto-generated by license-check workflow
Auto-generated by license-check workflow
Contributor
There was a problem hiding this comment.
🟡 Changes recommended
Standard resource responses still mark request-specific skill metadata and integrator-supplied content as public-cacheable instead of private.
13 open issues
Mark standard resource responses as private-cacheable · New Prevent overflow when checking total resource size · New Normalize numeric types before comparing frontmatter · New Validate parent manifests against nested skill files · New Reject dot segments in skill resource paths · New Omit state to include both open and closed issues · New Document each notification tool's distinct parameter names · New Get the default branch from repository metadata · New Determine release changes from the baseline tag commit · New Get the default branch before protecting branches · New Document that repositories default to private · New State that public repositories require private: false · New Use supported states when listing security advisories · New
What changed in this PR
Adds opt-in MCP Skills with 18 bundled GitHub workflows filtered against configured tools. Enabling skills, explicitly or through Insiders, replaces server instructions; feature-off behavior is preserved.
Changes:
- Adds reusable skill registries, discovery and read methods, manifests, integrity checks, and pagination.
- Bundles workflow guidance with internal required/optional tool mappings and availability filtering.
- Integrates feature gating, tests, and client/server enablement documentation.
This pull request requires changes. Standard resource responses remain public-cacheable, and unresolved validation, registry, frontmatter, resource-delivery, and performance issues remain alongside workflow and documentation corrections.
| File | Description |
|---|---|
pkg/skills/uri.go |
Defines skill URI parsing and containment helpers. |
pkg/skills/skills.go |
Defines extension identifiers and resource limits. |
pkg/skills/skills_test.go |
Tests URI, frontmatter, digest, and media-type helpers. |
pkg/skills/skill.go |
Constructs skills and generates manifests. |
pkg/skills/registry.go |
Indexes skills, files, directories, and availability. |
pkg/skills/publisher.go |
Publishes extension methods and resource handlers. |
pkg/skills/protocol.go |
Defines wire types and protocol-version handling. |
pkg/skills/pagination.go |
Implements cursor-based pagination. |
pkg/skills/pagination_test.go |
Tests pagination and version-dependent responses. |
pkg/skills/frontmatter.go |
Parses, normalizes, and compares YAML frontmatter. |
pkg/skills/entry.go |
Serializes and validates published skill entries. |
pkg/skills/entry_test.go |
Tests manifest validation, limits, and serialization. |
pkg/skills/digest.go |
Computes and verifies SHA-256 digests. |
pkg/skills/catalog/tools.go |
Maps workflows to required and optional tools. |
pkg/skills/catalog/skills/workflow-failure-triage/SKILL.md |
Adds Actions failure diagnosis guidance. |
pkg/skills/catalog/skills/workflow-failure-triage/references/failure-classes.md |
Adds failure-classification guidance. |
pkg/skills/catalog/skills/security-alert-triage/SKILL.md |
Adds security-alert investigation guidance. |
pkg/skills/catalog/skills/security-alert-triage/references/alert-sources.md |
Explains security-alert sources and interpretation. |
pkg/skills/catalog/skills/repository-health-review/SKILL.md |
Adds repository-health assessment guidance. |
pkg/skills/catalog/skills/repository-discovery/SKILL.md |
Adds repository search and evaluation guidance. |
pkg/skills/catalog/skills/repository-content-changes/SKILL.md |
Adds remote repository-editing guidance. |
pkg/skills/catalog/skills/repository-content-changes/references/irreversible-operations.md |
Documents destructive-operation confirmation requirements. |
pkg/skills/catalog/skills/release-preparation/SKILL.md |
Adds release-preparation guidance. |
pkg/skills/catalog/skills/release-preparation/references/release-notes-outline.md |
Provides release-note structure and checks. |
pkg/skills/catalog/skills/pull-request-review-feedback/SKILL.md |
Adds review-feedback handling guidance. |
pkg/skills/catalog/skills/pull-request-code-review/SKILL.md |
Adds pull request review guidance. |
pkg/skills/catalog/skills/pull-request-authoring/SKILL.md |
Adds pull request authoring and landing guidance. |
pkg/skills/catalog/skills/project-planning/SKILL.md |
Adds GitHub Projects planning guidance. |
pkg/skills/catalog/skills/notification-triage/SKILL.md |
Adds notification-inbox triage guidance. |
pkg/skills/catalog/skills/label-scheme-management/SKILL.md |
Adds label auditing and administration guidance. |
pkg/skills/catalog/skills/issue-backlog-triage/SKILL.md |
Adds issue-backlog classification and update guidance. |
pkg/skills/catalog/skills/issue-authoring/SKILL.md |
Adds issue-creation guidance. |
pkg/skills/catalog/skills/discussion-participation/SKILL.md |
Adds GitHub Discussions participation guidance. |
pkg/skills/catalog/skills/copilot-task-delegation/SKILL.md |
Adds coding-agent delegation guidance. |
pkg/skills/catalog/skills/codebase-exploration/SKILL.md |
Adds repository-exploration guidance. |
pkg/skills/catalog/skills/codebase-exploration/references/history-investigation.md |
Adds commit-history investigation guidance. |
pkg/skills/catalog/skills/account-and-team-context/SKILL.md |
Adds account, team, and access-discovery guidance. |
pkg/skills/catalog/catalog.go |
Embeds, loads, and caches bundled workflows. |
pkg/skills/catalog/catalog_test.go |
Checks catalog integrity and guidance constraints. |
pkg/skills/catalog/availability_test.go |
Tests tool mappings and configuration-based filtering. |
pkg/skills/availability_test.go |
Tests filtering, extension APIs, and cache fields. |
pkg/inventory/registry.go |
Preserves configured tools across request narrowing. |
pkg/github/skills.go |
Builds the feature-gated, tool-filtered publisher. |
pkg/github/skills_test.go |
Tests feature gating, filtering, discovery, and resource access. |
pkg/github/server.go |
Installs skills and suppresses instructions when enabled. |
pkg/github/feature_flags.go |
Registers explicit and Insiders skills enablement. |
internal/ghmcp/server.go |
Skips stdio instruction generation when skills are enabled. |
go.mod |
Promotes YAML parsing to a direct dependency. |
docs/insiders-features.md |
Documents Insiders instruction replacement. |
docs/feature-flags.md |
Documents activation, filtering, clients, and integrator APIs. |
Review effort: Max (auto)
Treat retrieved content as untrusted, pin reviews to the inspected head, avoid duplicate feedback replies, and bound issue searches. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Auto-generated by license-check workflow
Protect request-filtered resource cache scope, bound manifest sizes, compare numeric frontmatter across JSON and YAML, enforce nested manifests and URI containment, and correct catalog tool guidance. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
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.



Summary
Add opt-in Skills over MCP with 18 bundled GitHub workflows. Enabling
skills(including through Insiders) replaces server instructions entirely with a tool-filtered skills catalog.Proposed skills
The complete bundled catalog is below. Links pin each skill to the current PR head; the server exposes only skills supported by the connection's available tools.
Repository discovery and context — 4 skills
Issues, planning and community — 6 skills
Changes and pull requests — 5 skills
CI, security and releases — 3 skills
Why
Consolidate prior skills work into a feature-gated alternative to monolithic server instructions, aligned with the beta Skills extension. No closing issue.
What changed
skills/list,skills/get, directory and file reads using public Go SDK APIs, with private cache envelopes and manifest digests.MCP impact
Prompts tested (tool changes only)
/skills list, qualified skill activation, explicit decline/approval, directory inspection and a supporting-file read; see validation below.Security / limits
--yolo.Tool renaming
deprecated_tool_aliases.goNote: if you're renaming tools, you must add the tool aliases. For more information on how to do so, please refer to the official docs.
Lint & tests
./script/lint— Passed, zero issues../script/test— Passed, full race suite.At review-fix commit
b1a1f68e5f7687b187f27bc7cd1b3958560d08fd,script/lint,script/test,script/generate-docs(no generated diff),go test ./pkg/skills/..., andgo test ./pkg/github -run 'TestSkillsModernDiscoveryAndCacheEnvelopes|TestSkillsDisabledPreservesInventoryInstructions'passed. Regressions cover overflowing manifest sizes, numeric JSON/YAML round trips and precision loss, relative URI escapes, incomplete nested manifests, and private modern resources/list/resources/read scope while preserving an integrator callback's TTL. All 13 reviewed threads were addressed and resolved.Earlier implementation checks also passed
go mod tidy -diff(no module diff),go build -o bin/github-mcp-server ./cmd/github-mcp-server, and wire probes for flag-off/on/Insiders, instruction omission, toolset/read-only filtering, denied reads, modern custom cache fields and all 18 skills/23 files with exact size/SHA-256 verification. These binary probes predate the follow-ups; they are not latest-head CLI evidence.Catalog follow-up at
201610705a2b61a16c563e8ad60563c82b737032:go test ./pkg/skills/catalog,script/lint,script/test, andscript/generate-docspassed. At that commit the catalog remained 18 skills/23 files: 119,113 source bytes (+3,464 / +3.00% from147ad0f), including 102,933 SKILL.md bytes; name/description lines remained 5,696 bytes. Those size figures predate the review corrections. Counts exclude the shared footer appended when serving each skill.Historical CLI evidence: the binary hash and activation byte counts below were captured at
147ad0fbefore the follow-ups, not remeasured at the latest head. The measured codebase-exploration and account-and-team-context files were not edited; new wording and protocol fixes have not been evaluated through latest-head CLI execution.Actual CLI acceptance against signed commit
147ad0f57fdcb58e8e8b1991728e2490a3a11cee, rebuilt withvcs.modified=false(binary SHA-25653a5b4937e4826055dbeeb373e41ef003c4ffca3d65fdb36dbd52909c07b5f59):skill://github.com/codebase-exploration/references/history-investigation.md. Insiders/context exposes one skill and activates 5,961 bytes; flag-off exposes zero. Earlier runs also exercised explicit decline/approval under--yolo.1.0.106-9: withMCP_SKILLS=true, discovers four skills, activates 6,793 bytes using its hash-based command, and reads the same supporting file. Readable aliases fail withUnknown slash command, and structuredmcpSkillConsentcallback metadata is absent.The rebuilt-client UX depends on separate runtime changes not shipped by this server PR. Installed protocol support is not a claim that those UX/consent fixes are released. These activation checks used the actual native CLI through SDK, without model inference or GitHub mutations; interactive-terminal activation is not claimed. Both client
MCP_SKILLS=trueand server--features=skills/--insidersare required.Go SDK v1.8.0 is retained for stdio and StreamableHTTP. This does not claim support for legacy SSE custom-method delivery, whose upstream fix is unreleased in that version. Remote deployment is separate.
Docs