Skip to content

feat: implement multi-marketplace support for plugin distribution#11

Merged
amondnet merged 2 commits intomainfrom
feat/multi-marketplace-support
Oct 15, 2025
Merged

feat: implement multi-marketplace support for plugin distribution#11
amondnet merged 2 commits intomainfrom
feat/multi-marketplace-support

Conversation

@amondnet
Copy link
Copy Markdown
Contributor

Summary

Implements multi-marketplace support allowing the web app to dynamically load and display plugins from multiple external marketplace sources (anthropics/claude-code and pleaseai/claude-code-plugins).

Changes

Core Implementation

  • marketplace-sources.json: Configuration file defining available marketplaces with URLs, repos, and priorities
  • API Endpoint (/api/marketplaces.get.ts): Server-side data fetching with 5-minute caching using defineCachedFunction
  • Type System (app/types/marketplace.ts): TypeScript interfaces for multi-marketplace data structures
  • Validation (server/utils/marketplace-schema.ts): Zod schemas for runtime data validation

UI Features

  • Marketplace Filter: USelectMenu dropdown to filter plugins by marketplace source
  • Marketplace Badges: Visual indicators showing which marketplace each plugin comes from
  • Dynamic Installation Commands: Marketplace-specific installation instructions using org/repo format

Technical Details

  • Removed Nuxt Content dependency for marketplace data (now using API)
  • Server-side parallel fetching with Promise.allSettled for resilience
  • Graceful handling of individual marketplace failures
  • Support for both GitHub-sourced and local plugins
  • Installation command format: /plugin install pluginName@marketplaceName

Test Plan

  • Verify plugins load from both marketplaces
  • Test marketplace filter dropdown functionality
  • Confirm installation commands generate correctly
  • Validate error handling for marketplace failures
  • Check that search works across all marketplaces
  • Verify marketplace badges display correctly

Screenshots

(Add screenshots of marketplace filter and badges in action)

Add support for loading plugins from multiple external marketplace sources
with dynamic runtime fetching and server-side caching.

Key changes:
- Create marketplace-sources.json config for managing marketplace URLs
- Implement /api/marketplaces endpoint with 5-minute cache
- Add marketplace filtering UI with USelectMenu component
- Support marketplace-specific installation commands
- Use marketplace.json name field for plugin installation
- Add marketplace badges to distinguish plugin sources
- Remove dependency on Nuxt Content for marketplace data

Technical details:
- Server API uses defineCachedFunction for performance
- Zod schemas for runtime validation
- Support for both local and GitHub-sourced plugins
- Graceful handling of individual marketplace failures
- TypeScript types for multi-marketplace aggregation

Installation format:
- Marketplace: /plugin marketplace add org/repo
- Plugin: /plugin install pluginName@marketplaceName
@vercel
Copy link
Copy Markdown

vercel Bot commented Oct 15, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Preview Comments Updated (UTC)
claude-code-plugins Ready Ready Preview Comment Oct 15, 2025 7:55pm

- Remove console.log statement from PluginCard
- Remove unused MarketplaceData interface from index.vue
- Import process from node:process in marketplaces API
@amondnet amondnet merged commit c22149e into main Oct 15, 2025
5 checks passed
@amondnet amondnet deleted the feat/multi-marketplace-support branch October 15, 2025 19:55
@pleaseai pleaseai Bot mentioned this pull request Oct 15, 2025
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.

1 participant