feat: adds Claude Desktop marketplace support - #7152
Conversation
|
|
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Team Run ID: 📒 Files selected for processing (3)
Included review availability: 9 reviews are currently available. Your included PR review attempts over the past 7 days set your current allowance at 10 reviews per hour. 📝 SummarySummary by CodeRabbit
WalkthroughClaude marketplace serving now supports Git smart HTTP cloning. Marketplace JSON generation returns reusable bytes with propagated errors. Integration tests validate repository and plugin cloning. The workspace UI displays the new Git URL. ChangesClaude marketplace Git access
Priority: ➖ Normal Estimated code review effort: 3 (Moderate) | ~25 minutes Sequence Diagram(s)sequenceDiagram
participant ClaudeDesktopCowork
participant ClaudeMarketplaceGitHandler
participant GitSmartHTTP
ClaudeDesktopCowork->>ClaudeMarketplaceGitHandler: Clone Claude marketplace Git URL
ClaudeMarketplaceGitHandler->>GitSmartHTTP: Request marketplace repository data
GitSmartHTTP-->>ClaudeDesktopCowork: Return Git smart HTTP data
Merge Risk: ⚪ Minimal · up to The Git marketplace routes and UI availability handling match the intended behavior, so the change is ready for normal merge checks. 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches 💡 1📝 Generate docstrings 💡
🧪 Generate unit tests (beta)
Comment |
Merge activity
|
## Summary
Document how to register the Bifrost Skills Repository as a personal marketplace
in Claude Desktop and Cowork, install a plugin, and invoke its skill.
## Changes
The Skills Repository guide previously documented marketplace registration for
Claude Code and Codex, but it did not explain the different flow used by Claude
Desktop and Cowork.
Claude Code accepts the marketplace JSON URL through its CLI:
```text
claude plugin marketplace add \
<bifrost-url>/api/skills/serve/claude-code/.claude-plugin/marketplace.json
```
Claude Desktop and Cowork instead expect a Git repository URL in the app:
```text
<bifrost-url>/api/skills/serve/claude-code.git
```
The guide now walks through that app flow:
```text
Bifrost Skills Repository
│
│ Copy "Claude Desktop / Cowork" URL
▼
Claude: Customize → Plugins → Add marketplace
│
│ Paste URL and sync
▼
bifrost-skills marketplace
│
│ Install and enable a plugin
▼
New chat or Cowork task → type / → select the skill
```
It includes screenshots for each point where the user moves between Bifrost and
Claude:
1. copying the Git URL from Bifrost;
2. opening Claude's **Add marketplace** action;
3. entering the repository URL;
4. choosing a Bifrost plugin;
5. confirming the plugin is installed and enabled; and
6. selecting the installed skill from the `/` command menu.
For example, a Bifrost skill named `unslop` can be installed through the
`bifrost-all-skills` plugin and then selected as:
```text
bifrost-all-skills:unslop
```
The documentation also calls out two operational boundaries:
- Git must be available in the Bifrost runtime image for marketplace serving.
- This is a personal marketplace flow. Organization-managed Claude marketplaces
use Anthropic's GitHub integration and do not accept an arbitrary Bifrost Git
URL.
## Type of change
- [ ] Bug fix
- [ ] Feature
- [ ] Refactor
- [x] Documentation
- [ ] Chore/CI
## Affected areas
- [ ] Core (Go)
- [ ] Transports (HTTP)
- [ ] Providers/Integrations
- [ ] Plugins
- [ ] UI (React)
- [x] Docs
## How to test
1. Preview `docs/features/skills-repository.mdx` in the documentation site.
2. Open **Register Bifrost as a marketplace**.
3. Confirm the Claude Desktop and Cowork instructions appear before the existing
Claude Code and Codex commands.
4. Confirm all six screenshots render in this order:
- Bifrost marketplace URL
- Claude **Add marketplace** menu
- Claude marketplace URL dialog
- Bifrost plugin list
- installed and enabled plugin
- `/` command menu
5. Follow the documented flow against a Bifrost server whose runtime image
contains Git.
6. Confirm Claude syncs the marketplace, installs the selected plugin, and lists
its skill after typing `/` in a new chat or Cowork task.
Expected flow:
```text
<your-bifrost-url>/api/skills/serve/claude-code.git
→ Sync succeeds
→ Bifrost plugins appear
→ Plugin installs and enables
→ Skill appears in the / menu
```
No new configuration or environment variables are introduced.
## Screenshots/Recordings
The guide includes screenshots of the complete Claude Desktop marketplace setup
and skill invocation flow under `docs/media/skills-repository/`.
## Breaking changes
- [ ] Yes
- [x] No
This changes documentation only.
## Related issues
Documents the Claude Desktop and Cowork support added in #7152.
## Security considerations
The screenshots use a localhost URL and do not contain credentials, account
names, organization names, or customer hostnames.
The guide retains Claude's trust boundary: users should install plugins only
from Bifrost instances they trust. It also distinguishes personal marketplace
registration from organization-managed marketplace syncing.
## Checklist
- [x] I read `docs/contributing/README.md` and followed the guidelines
- [x] I added/updated tests where appropriate
- [x] I updated documentation where needed
- [x] I verified builds succeed (Go and UI)
- [x] I verified the CI pipeline passes locally if applicable

Summary
Add Git-backed Claude Desktop and Cowork marketplace registration for skills
stored in Bifrost, while preserving the existing Claude Code marketplace flow.
Changes
Claude Code can register the existing marketplace through its direct JSON URL:
Claude Desktop and Cowork use a different contract. Their marketplace form
expects a cloneable Git repository URL and rejects the direct JSON URL. It also
requires a full non-GitHub Git URL to look like a repository URL, including the
.gitsuffix.This PR adds the following endpoint:
The endpoint implements the two Git smart HTTP requests used during a clone:
The generated repository contains one file:
Each marketplace entry continues to point to the existing per-skill Git
repository. Skill data is not copied into the marketplace repository.
The existing Claude marketplace JSON generation is now shared by both delivery
paths:
The Skills Repository UI now offers three registration choices:
Git remains an optional runtime dependency. If an image does not contain Git,
Bifrost keeps the existing behavior of not registering Git-backed marketplace
and plugin routes. Images that need this feature must install Git separately.
Type of change
Affected areas
How to test
Automated verification
From
transports/:The new test starts an HTTP server and performs two real Git clones. It verifies
that:
.claude-plugin/marketplace.jsonexists;.claude-plugin/plugin.jsonandskills/<skill-name>/SKILL.mdexist; andFrom
ui/:Expected result: zero errors. The file currently reports two pre-existing
unused-parameter warnings unrelated to this PR.
Manual Claude Desktop / Cowork verification
Run Bifrost from an image that contains Git, then verify the endpoint directly:
The clone should contain
.claude-plugin/marketplace.json.Then:
/command.This flow was tested with:
Claude registered the marketplace, installed the plugin, loaded its skill, and
invoked it through
/successfully.Screenshots/Recordings
NA
Breaking changes
The existing Claude Code and Codex marketplace URLs remain unchanged.
Related issues
NA
Security considerations
Marketplace and plugin serving routes remain public because Git marketplace URLs
cannot carry credentials safely. This matches the existing skills-serving
behavior. The Git implementation remains read-only and only exposes
git-upload-pack; it does not support pushes.Plugins are executable instructions loaded by client applications. Users should
only install skills from Bifrost instances they trust.
Checklist
docs/contributing/README.mdand followed the guidelines