A reusable, de-branded framework for running an AI-native marketplace of best practices — skills, agents, and MCP servers that are discoverable on a website and installable directly into AI coding tools (Claude Code, and others).
Fork it, change a handful of config values, fill out one JSON file, and you have your own marketplace.
- A Docusaurus website that browses, searches, and filters a catalog of best practices.
- A multi-marketplace browser: federate your own catalog with any number of remote registries (the picker appears automatically when more than one is configured).
- A registry-driven build: you hand-author one file,
static/data/registry.json, and the Claude Code plugin manifest (.claude-plugin/marketplace.json) is generated from it automatically.
This repository follows a single source of truth philosophy:
static/data/registry.json— the hand-authored source of truth. It describes the marketplace identity and every skill / agent / MCP server..claude-plugin/marketplace.json— generated fromregistry.jsonbysrc/conf/generate-marketplace.js. This is what Claude Code reads when a user runs/plugin marketplace add <repo>. It is committed so consumers can use it without building the site.static/marketplace/— the actual content of each best practice (SKILL.md, assets, scripts). One folder per entry.- The Docusaurus website renders the registry into a searchable catalog.
registry.json ──(npm run prebuild)──▶ marketplace.json
(you edit) (generated, committed)
npm ci # install dependencies
npm start # local dev server
npm run build # production build (runs the generators first)npm run build runs prebuild, which:
generate-marketplace.js— readsregistry.json, hydrates derived fields, and writes.claude-plugin/marketplace.json.generate-file-manifests.js— indexes thestatic/marketplace/file trees.create-marketplace-zips.js— packages each entry as a downloadable zip.
docusaurus.config.js— edit the values under theCUSTOMIZE MEbanner:title,tagline,url,baseUrl,organizationName,projectName, the navbar/footer links, andmarketplaceConfig.registries.static/data/registry.json— edit the top-levelmarketplaceblock (name,owner,metadata) and add your entries toskills/agents/mcp.static/img/— replacelogo.svgandfavicon.icowith your own.docs/— update the About / FAQ / Contribute pages.
- Create the content folder, e.g.
static/marketplace/skills/<name>/SKILL.md(plus anyassets/andscripts/). - Add an entry to the
skillsarray instatic/data/registry.json:Derived fields ({ "name": "<name>", "displayName": "Human Readable Name", "description": "What it does and when to use it", "category": "documentation", "tags": ["docs", "templates"], "example": "Generate a README for this project", "lastUpdated": "2026-01-01" }type,skill_file_url,zip_file_path) are filled in by the build — you do not write them. - Run
npm run prebuildto regenerate.claude-plugin/marketplace.json, then commit both files.
See docs/contribute/submit-best-practice.md
for the full guide.
Add remote registry URLs to marketplaceConfig.registries in
docusaurus.config.js. The website loads each one and shows a registry picker:
registries: [
"./static/data/registry.json", // your local catalog
"https://nasa-ammos.github.io/slim/data/registry.json", // a remote marketplace
],Apache 2.0 — see LICENSE.
- UI components adapted from aitmpl.com (MIT License).
- Derived from the open-source SLIM Best Practices marketplace (NASA-AMMOS/slim, Apache 2.0).