Skip to main content

Static site generator for Claude Code Plugin Marketplace repositories

Project description

cc-plugin-catalog

PyPI Python License CI PyPI Downloads GitHub Stars GitHub Issues

Static site generator for Claude Code Plugin Marketplace repositories.

cc-plugin-catalog screenshot

Generate a beautiful, responsive catalog page from your marketplace's marketplace.json and plugin.json files — and deploy it to GitHub Pages with a single reusable workflow.

Demo: https://giginet.me/claude-plugins-official/

Features

  • Plugin catalog pages — Grid index page with plugin cards and individual detail pages
  • Component detection — Automatically scans and displays Skills, Commands, Agents, Hooks, MCP Servers, and LSP Servers
  • Search & filter — Incremental search with inline category, tag, and tool type filters
  • Markdown rendering — README and LICENSE files rendered as HTML
  • Dark / Light mode — Toggle with prefers-color-scheme detection and localStorage persistence
  • GitHub integration — Auto-links to source file trees, GitHub icon in header
  • Reusable workflow — One-line GitHub Actions setup for any marketplace repository

Quick Start

Preview a marketplace locally

No installation required — just use uvx:

uvx cc-plugin-catalog preview /path/to/marketplace-repo

Open http://localhost:8000/ in your browser. Press Ctrl+C to stop.

# Custom port and output directory
uvx cc-plugin-catalog preview /path/to/marketplace-repo -p 3000 -o _site

Build static files

uvx cc-plugin-catalog build /path/to/marketplace-repo -o _site

This generates a fully static site in _site/ that can be deployed anywhere.

Deploy to GitHub Pages

Add a single workflow file to your marketplace repository to automatically build and deploy the catalog site on every push.

1. Enable GitHub Pages

Go to your marketplace repository's Settings > Pages and set the source to GitHub Actions.

2. Add the workflow

Create .github/workflows/deploy-catalog.yml:

name: Deploy Plugin Catalog

on:
  push:
    branches: [main]

permissions:
  pages: write
  id-token: write

jobs:
  deploy:
    uses: giginet/cc-plugin-catalog/.github/workflows/build-pages.yml@v1
    # Optional: customize with inputs
    # with:
    #   base-url: "https://example.github.io/my-marketplace"  # Enables OGP meta tags
    #   logo: "assets/logo.png"                                # Header logo image

That's it! Every push to main will build your catalog and deploy it to GitHub Pages.

Workflow inputs

All inputs are optional.

Input Default Description
catalog-ref "" Install cc-plugin-catalog from a git ref (branch, tag, or SHA) instead of PyPI
output-dir "_site" Output directory for generated files
base-url "" Base URL for OGP meta tags. OGP tags are only generated when this is set.
logo "" Path to a logo image in the repository (e.g. assets/logo.png)
marketplace-repository "" Marketplace repo identifier for install commands. owner/repo for GitHub.com, full URL for GitHub Enterprise (e.g. https://my-git-server.com/owner/repo). Auto-detected from git remote if not set.
# Example with optional inputs
jobs:
  deploy:
    uses: giginet/cc-plugin-catalog/.github/workflows/build-pages.yml@v1
    with:
      base-url: "https://example.github.io/my-marketplace"
      logo: "assets/logo.png"

The logo path is relative to the repository root. Simply commit an image file (PNG, SVG, etc.) to your repository and reference it.

Without the reusable workflow

If you can't use the reusable workflow (e.g. GitHub Enterprise, custom runners, or additional build steps):

name: Deploy Plugin Catalog

on:
  push:
    branches: [main]

permissions:
  pages: write
  id-token: write

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
    environment:
      name: github-pages
      url: ${{ steps.deployment.outputs.page_url }}
    steps:
      - uses: actions/checkout@v4
      - uses: astral-sh/setup-uv@v5
      - run: uv tool install cc-plugin-catalog
      - run: cc-plugin-catalog build . -o _site --base-url "https://example.github.io/my-marketplace" --logo assets/logo.png --marketplace-repository "https://my-git-server.com/owner/my-marketplace"
      - uses: actions/upload-pages-artifact@v3
        with:
          path: _site
      - id: deployment
        uses: actions/deploy-pages@v4

[!NOTE] --marketplace-repository is used to generate install commands on each plugin page. Accepts owner/repo for GitHub.com. For GitHub Enterprise or other hosts, specify the full URL (e.g. https://my-git-server.com/owner/my-marketplace). When set, this value takes priority over the auto-detected git remote. It is recommended to explicitly set this option for GitHub Enterprise environments.

Supported Plugin Components

cc-plugin-catalog detects and displays the following component types from plugin directories:

Component Source Detected From
Skills skills/*/SKILL.md Folder name, YAML frontmatter
Commands commands/*.md Filename, YAML frontmatter
Agents agents/*.md YAML frontmatter (name, description, model)
Hooks hooks/hooks.json Event names, matchers
MCP Servers .mcp.json Server names, commands
LSP Servers .lsp.json Language names, commands

Development

git clone https://github.com/giginet/cc-plugin-catalog.git
cd cc-plugin-catalog
uv sync --dev

Run tests

uv run pytest tests/ -v

Lint & format

uv run ruff check src/ tests/
uv run ruff format src/ tests/

Type check

uv run ty check src/

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cc_plugin_catalog-1.2.2.tar.gz (545.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cc_plugin_catalog-1.2.2-py3-none-any.whl (27.7 kB view details)

Uploaded Python 3

File details

Details for the file cc_plugin_catalog-1.2.2.tar.gz.

File metadata

  • Download URL: cc_plugin_catalog-1.2.2.tar.gz
  • Upload date:
  • Size: 545.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cc_plugin_catalog-1.2.2.tar.gz
Algorithm Hash digest
SHA256 0b747e2112e04b24c978ac1648433a6b4e02d1b29f4ba4d0ef6df75497fa7195
MD5 3b9c1a605dedeb00763cfbce7350b34b
BLAKE2b-256 772fc1e517faacca4215621aad104afda67f6c5f43c16f8722581af00ebee8ce

See more details on using hashes here.

Provenance

The following attestation bundles were made for cc_plugin_catalog-1.2.2.tar.gz:

Publisher: publish.yml on giginet/cc-plugin-catalog

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cc_plugin_catalog-1.2.2-py3-none-any.whl.

File metadata

File hashes

Hashes for cc_plugin_catalog-1.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 4be3a35d9ef8f27aea202043275e3d938544520c1e09b797864f4c407d89c64e
MD5 fcf248722bf89d6877df92ab8a9d0749
BLAKE2b-256 fef6472fcd4f3cb46546e73fc9fd8417c80225ec9054f210351eaea3a81d7ab7

See more details on using hashes here.

Provenance

The following attestation bundles were made for cc_plugin_catalog-1.2.2-py3-none-any.whl:

Publisher: publish.yml on giginet/cc-plugin-catalog

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page