Skip to content

feat(profile): expose published workflow skills - #191

Merged
loocor merged 3 commits into
mainfrom
feat/expose-skill-packages
Aug 28, 2026
Merged

loocor merged 3 commits into
mainfrom
feat/expose-skill-packages

Conversation

@loocor

@loocor loocor commented Aug 28, 2026 •

Copy link
Copy Markdown
Owner

Summary

C slice: a published Workflow is one Unify Skill unit, and Hosted/Transparent Active stays a Capability working set.

A Unify client should be able to:

catalog(kind_filter=profile) → details(capability_name=skill_name) → resources/read skills://{name}/SKILL.md

Direct capabilities are callable from the compiled Unify surface. Meta stays on UCan. Inspector must use this branch binary.

In scope

  • Publish is Workflow is_active=1. is_default stays banned. Hosted surface compile still ignores Workflow.
  • Hosted/Transparent Active and Selected working sets exclude Workflow. get_active_profile() is Capability-only. Selecting a Workflow as a Capability profile is rejected.
  • Unify exposes skills://{skill_name}/SKILL.md on standard resources/list and resources/read. Transparent does not inject Skill packages.
  • Client apply mounts only when Profile Settings explicitly choose symlink or copy. Clearing distribution deletes the stored setting. Missing packages fail closed.
  • Effective Direct bindings compile onto Unify Active Surface / tools/list and stay out of UCan catalog. Meta is the inverse. Spec save and unpublish rematerialize Unify consumers.
  • Catalog identity is capability_kind=profile + capability_name=skill_name. Catalog items omit server_id / server_name. Absent source is omitted, not null. Workflow details give skill_resource + read_with=resources/read; full details add steps and Direct/Meta names without embedding SKILL.md. Workflow hints do not send the client to mcpmate_profile_set.

Out of scope

  • Semantic search, new mcpmate_skills_* tools, Hosted-by-Workflow compile, mode retirement, official Skills-over-MCP URI/index freeze.

Contract: GitHub Project item C: expose generated Skill packages, confirmation table C acceptance (2026-08-28), and 2026-08-26-mcpmate-skill-package-exposure.md §7.

Validation

  • cargo test --test skill_package_exposure
  • cargo test --lib catalog_items_omit_internal_server_identity
  • cargo test --lib skill_hints_do_not_activate_workflow_profiles
  • cargo clippy --all-targets --all-features -- -D warnings
  • Board: bun test src/components/profile-form-drawer.test.tsx, bun run lint (0 errors, existing warnings), bun run build

Live Inspector against this branch did not start on the local ~/.mcpmate config DB: v0017 was already applied with a previous checksum. Do not treat the long-running :8001 process as this commit.

Follow-up

  • Re-run Inspector on a DB that applies this v0017 once, without changing the Screenshot specification.

loocor added 2 commits August 28, 2026 09:30
Make a published Workflow a Unify Skill unit: discoverable by
skill name, readable as skills://, and reachable via Direct/Meta.

Leave Hosted get_active_profile workset filtering as a follow-up.
Workflow is_active means published. Hosted and Transparent Active
must only include Capability profiles.
@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Aug 28, 2026 •

Copy link
Copy Markdown

Deploying mcpmate-board with  Cloudflare Pages  Cloudflare Pages

Latest commit: f519690
Status: ✅  Deploy successful!
Preview URL: https://994775ee.mcpmate-board.pages.dev
Branch Preview URL: https://feat-expose-skill-packages.mcpmate-board.pages.dev

View logs

@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Aug 28, 2026 •

Copy link
Copy Markdown

Deploying mcpmate-site with  Cloudflare Pages  Cloudflare Pages

Latest commit: f519690
Status: ✅  Deploy successful!
Preview URL: https://81dadb48.mcp-umate.pages.dev
Branch Preview URL: https://feat-expose-skill-packages.mcp-umate.pages.dev

View logs

@loocor loocor self-assigned this Aug 28, 2026
@loocor
loocor requested a balanced review from Copilot August 28, 2026 03:04

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.

🟡 Changes recommended

Path traversal, transaction deadlocks, and incomplete surface and mount reconciliation must be resolved.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Pull request overview

Publishes Workflow profiles as Unify Skill packages while keeping them outside Hosted/Transparent capability working sets.

Changes:

  • Adds Skill catalog, details, resources, and Direct-capability exposure.
  • Adds explicit client package mounting and Board controls.
  • Adds migration, filtering, rematerialization, and test coverage.

Validation: Reported tests, lint, and builds passed; live Inspector verification remains outstanding.

File summaries
File Description
board/src/pages/profiles/i18n/index.ts Adds publication and distribution translations.
board/src/pages/profile/profile-page.tsx Enables Workflow publication toggles.
board/src/pages/profile/profile-detail-page.tsx Adds publish/unpublish actions.
board/src/pages/profile/components/profile-suit-grid-card.tsx Enables Workflow card toggles.
board/src/pages/clients/client-detail-page.tsx Excludes Workflows from working sets.
board/src/lib/types.ts Adds package distribution types.
board/src/lib/profile-authoring-ui.ts Builds Workflow distribution requests.
board/src/lib/api.ts Maps distribution API data.
board/src/components/profile-form-drawer.tsx Adds publication and mounting controls.
board/src/components/profile-form-drawer.test.tsx Tests authoring payload behavior.
backend/tests/skill_package_exposure.rs Tests publication and surface exposure.
backend/tests/profile_workflow_authoring.rs Updates Workflow activation expectations.
backend/tests/profile_authoring.rs Updates authoring fixtures.
backend/src/mcper/builtin/client.rs Carries published Direct context.
backend/src/mcper/builtin/broker.rs Exposes Skill catalog and details.
backend/src/inspector/service.rs Excludes Workflows from active profiles.
backend/src/core/proxy/server/tools.rs Filters Workflow Direct tools from UCan.
backend/src/core/proxy/server/skill_resources.rs Implements Skill resources.
backend/src/core/proxy/server/resources.rs Lists and reads Skill resources.
backend/src/core/proxy/server/prompts.rs Filters Workflow Direct prompts.
backend/src/core/proxy/server/mod.rs Registers Skill resource module.
backend/src/core/profile/workflow.rs Rematerializes published specification changes.
backend/src/core/profile/publication.rs Models and loads published Skills.
backend/src/core/profile/mod.rs Exports publication support.
backend/src/core/profile/merge.rs Excludes Workflows from profile merging.
backend/src/core/profile/guide.rs Connects guide saves to rematerialization.
backend/src/core/profile/authoring.rs Persists publication settings.
backend/src/core/capability/reconciliation.rs Adjusts consumer reconciliation scope.
backend/src/core/capability/materializer.rs Compiles Workflow Direct relationships.
backend/src/core/capability/management.rs Supports Workflow publication state.
backend/src/config/profile/tool.rs Filters Workflow tools.
backend/src/config/profile/resource.rs Filters Workflow resources.
backend/src/config/profile/resource_template.rs Filters Workflow templates.
backend/src/config/profile/prompt.rs Filters Workflow prompts.
backend/src/config/profile/basic.rs Makes active profiles Capability-only.
backend/src/clients/service/skill_mount.rs Mounts explicit Skill packages.
backend/src/clients/service/settings.rs Rejects Workflow working-set selection.
backend/src/clients/service/mod.rs Registers mounting service.
backend/src/clients/service/apply.rs Mounts Skills after client apply.
backend/src/api/models/resp.rs Allows Workflow activation operations.
backend/src/api/models/profile.rs Adds distribution API fields.
backend/src/api/handlers/profile/workflow.rs Maps publication errors.
backend/src/api/handlers/profile/authoring.rs Parses distribution settings.
backend/src/api/handlers/inspector/endpoints.rs Filters Workflow inspector results.
backend/src/api/handlers/client/surface_reviews.rs Adjusts affected-consumer lookup.
backend/crates/mcpmate-migrations/tests/schema_contract.rs Expects migration version 17.
backend/crates/mcpmate-migrations/tests/ledger_contract.rs Updates migration count.
backend/crates/mcpmate-migrations/tests/config_upgrade_contract.rs Updates upgrade expectation.
backend/crates/mcpmate-migrations/src/migrations/config/v0017_add_skill_package_distribution.sql Adds distribution settings table.
backend/crates/mcpmate-migrations/src/migrations/config/v0017_add_skill_package_distribution.rs Implements migration 17.
backend/crates/mcpmate-migrations/src/migrations/config/mod.rs Registers migration 17.
backend/config/ucan.json5 Updates Skill-oriented UCan guidance.
Review details
  • Files reviewed: 52/52 changed files
  • Comments generated: 11
  • Review effort level: Balanced

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread backend/src/core/proxy/server/skill_resources.rs
Comment thread backend/src/core/profile/authoring.rs Outdated
Comment thread backend/src/core/profile/workflow.rs Outdated
Comment thread backend/src/core/profile/publication.rs
Comment thread backend/src/clients/service/skill_mount.rs
Comment thread backend/src/mcper/builtin/broker.rs
Comment thread backend/src/api/handlers/client/surface_reviews.rs
Comment thread backend/src/core/capability/materializer.rs
Comment thread backend/src/mcper/builtin/broker.rs
Reject absolute Skill reads, load default mode before Workflow
transactions, advertise canonical capability names, unmount
cleared packages, and rematerialize Unify consumers.
@loocor
loocor marked this pull request as ready for review August 28, 2026 04:17
@chatgpt-codex-connector

This comment was marked as low quality.

@loocor
loocor merged commit dc80b32 into main Aug 28, 2026
15 checks passed
@loocor
loocor deleted the feat/expose-skill-packages branch August 28, 2026 04:20
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.

2 participants