Skip to content

feat(skills): add shared MCP compatibility facade - #456

Merged
jmagar merged 16 commits into
mainfrom
feat/skills-over-mcp
Aug 19, 2026
Merged

feat(skills): add shared MCP compatibility facade#456
jmagar merged 16 commits into
mainfrom
feat/skills-over-mcp

Conversation

@jmagar

@jmagar jmagar commented Aug 19, 2026

Copy link
Copy Markdown
Collaborator

Summary

Adds a transport-neutral Agent Skills compatibility layer on top of Labby's existing native SEP implementation.

  • extracts canonical first-party/proxied Skills list/get/read semantics into crate::skills
  • exposes exactly one fixed compatibility service/tool, skills, with skills.list, skills.search, skills.get, and skills.read
  • adds thin CLI and authenticated HTTP adapters over the same shared registry
  • propagates caller authorization + route-visible upstream scope across the private Code Mode in-process hop and fails closed when propagation is incomplete
  • preserves first-class Skills/Loadouts behavior and protected-route expose_skills gating
  • hardens URI ownership/collision behavior for supporting files and unlisted skills.get
  • refreshes generated service documentation and SEP provenance evidence

Security / compatibility decisions

  • no per-skill MCP tools; tool cardinality is constant
  • native SEP remains preferred; the fixed skills tool is the fallback for older/tool-only clients
  • list/search are metadata-only; bodies are returned only by explicit skills.read
  • list/search/get/read require lab:read, lab, or lab:admin; help/schema remain catalog introspection
  • protected route/loadout expose_skills=false hides the fallback tool and rejects forged direct calls
  • proxied reads remain manifest-bound and digest-verified
  • collision-excluded skills poison all owned URIs; unlisted candidates cannot overlap published/poisoned ownership

Final landing evidence

  • final PR head: a0dd33f1a12d1e2029506ff7c465fe4a96d214c6
  • final base: fc4d3a1c2ad4f1e6ca1c50bded4b7d7e72b41095
  • squash-merged as: ea07f3609926879da146ea6e3e3afdd65784a73a
  • final GitHub checks: 39 completed, 29 success, 10 intentional skips, 0 failures, 0 pending
  • final-head GitHub gates green: Clippy, Rustdoc, Format, Cargo Deny, Repository Contract, Generated docs, MCP focused regressions, MCP 2026-07-28 conformance, Code Mode runner smoke, and Feature slice (gateway)
  • exact gateway feature-slice local run on the final rebased runtime: 1272/1272 passed, 3 skipped
  • focused Skills tests: 52/52 passed
  • Skills runtime contract conformance: 8/8 passed
  • no-default-features Skills library check: green
  • workspace Clippy with -D warnings: green before the final docs/CI-only base rebase; final-head GitHub Clippy also green
  • legacy stdio compatibility smoke covered 2024-11-05, 2025-03-26, 2025-06-18, and 2025-11-25; all negotiated correctly, exposed the single fixed skills fallback, and completed list/get/read. The final base rebase changed docs/CI only and the final branch-only change was a test feature gate, so runtime compatibility code was unchanged afterward.

Adversarial review findings resolved

  1. explicit MCP safety annotation / permanent-tool drift guard for the new read-only service
  2. API help/schema auth parity with MCP
  3. supporting-file/unlisted URI collision ownership gap
  4. protected-loadout expose_skills=false compatibility-tool bypass
  5. native Skills loadout-list import integration after rebase
  6. gateway-only CI incorrectly running a Skills-only loadout regression; the test is now feature-gated and the exact gateway slice is green

Full-suite timing note

A later low-concurrency full-workspace stress pass exposed intermittent scheduler-sensitive failures in unchanged gateway pool timeout tests. The affected files have no branch diff, isolated/repeated runs passed or showed timing sensitivity, and no unrelated runtime changes were made. The required final-head GitHub test/gateway jobs are green.

Living implementation tracker: docs/plans/skills-over-mcp-compat/PROGRESS.md. The merged tracker reflects the pre-landing checkpoint; this PR body is the authoritative final landing addendum because the PR was concurrently merged before a tracker-only follow-up could be pushed.

@github-actions github-actions Bot added the documentation Improvements or additions to documentation label Aug 19, 2026
@jmagar
jmagar force-pushed the feat/skills-over-mcp branch from 01090db to c16a400 Compare August 19, 2026 18:50
@jmagar
jmagar requested a lite review from Copilot August 19, 2026 20:08

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@jmagar
jmagar force-pushed the feat/skills-over-mcp branch from e625891 to 541771d Compare August 19, 2026 20:48
@jmagar
jmagar force-pushed the feat/skills-over-mcp branch from 39a081f to a0dd33f Compare August 19, 2026 21:37
@jmagar
jmagar marked this pull request as ready for review August 19, 2026 22:45
@jmagar
jmagar merged commit ea07f36 into main Aug 19, 2026
39 checks passed
@jmagar
jmagar deleted the feat/skills-over-mcp branch August 19, 2026 22:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants