Repository navigation
feat(profile): expose published workflow skills - #191
Merged
Merged
Conversation
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.
Deploying mcpmate-board with
|
| 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 |
Deploying mcpmate-site with
|
| 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 |
There was a problem hiding this comment.
🟡 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.
Reject absolute Skill reads, load default mode before Workflow transactions, advertise canonical capability names, unmount cleared packages, and rematerialize Unify consumers.
loocor
marked this pull request as ready for review
August 28, 2026 04:17
This comment was marked as low quality.
This comment was marked as low quality.
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
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.mdDirect capabilities are callable from the compiled Unify surface. Meta stays on UCan. Inspector must use this branch binary.
In scope
is_active=1.is_defaultstays banned. Hosted surface compile still ignores Workflow.get_active_profile()is Capability-only. Selecting a Workflow as a Capability profile is rejected.skills://{skill_name}/SKILL.mdon standardresources/listandresources/read. Transparent does not inject Skill packages.symlinkorcopy. Clearing distribution deletes the stored setting. Missing packages fail closed.tools/listand stay out of UCan catalog. Meta is the inverse. Spec save and unpublish rematerialize Unify consumers.capability_kind=profile+capability_name=skill_name. Catalog items omitserver_id/server_name. Absentsourceis omitted, notnull. Workflow details giveskill_resource+read_with=resources/read; full details add steps and Direct/Meta names without embeddingSKILL.md. Workflow hints do not send the client tomcpmate_profile_set.Out of scope
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), and2026-08-26-mcpmate-skill-package-exposure.md§7.Validation
cargo test --test skill_package_exposurecargo test --lib catalog_items_omit_internal_server_identitycargo test --lib skill_hints_do_not_activate_workflow_profilescargo clippy --all-targets --all-features -- -D warningsbun test src/components/profile-form-drawer.test.tsx,bun run lint(0 errors, existing warnings),bun run buildLive Inspector against this branch did not start on the local
~/.mcpmateconfig DB: v0017 was already applied with a previous checksum. Do not treat the long-running:8001process as this commit.Follow-up