Skip to content

Repository Structure

jeremylongshore edited this page Mar 13, 2026 · 1 revision

Repository Structure

The claude-code-plugins-plus-skills monorepo (v4.17.0) houses 343 plugins delivering 1,900+ skills, a marketplace website, a CLI, and supporting tooling. The project uses pnpm workspaces for package management everywhere except the marketplace site, which uses npm.

Top-Level Directory Tree

claude-code-plugins-plus-skills/
├── .claude-plugin/          # Catalog JSON files (dual catalog system)
├── plugins/                 # All plugin content (~98% Markdown, ~2% TypeScript)
│   ├── ai-coding/           # AI-assisted coding instruction plugins
│   ├── cloud/               # Cloud platform plugins
│   ├── databases/           # Database workflow plugins
│   ├── devops/              # DevOps and CI/CD plugins
│   ├── frameworks/          # Framework-specific plugins
│   ├── languages/           # Language-specific plugins
│   ├── mcp/                 # MCP server plugins (TypeScript)
│   ├── saas-packs/          # SaaS skill packs (*-pack directories)
│   ├── testing/             # Testing strategy plugins
│   ├── tools/               # Developer tooling plugins
│   └── ...                  # Additional category directories
├── marketplace/             # Astro 5 static website (npm, not pnpm)
├── packages/
│   ├── cli/                 # ccpi CLI tool
│   ├── analytics-daemon/    # Analytics collection daemon
│   └── analytics-dashboard/ # Analytics visualization dashboard
├── pnpm-workspace.yaml      # Workspace configuration
└── package.json             # Root package scripts

Directory Details

plugins/

The heart of the repository. Each subdirectory is a category, and each category contains individual plugin directories. The vast majority of plugins are AI instruction plugins written in Markdown. They follow a consistent structure with a SKILL.md file that the build pipeline discovers and indexes.

Plugin Directory Convention

Each individual plugin lives in its own directory under a category. A typical Markdown plugin directory contains:

plugins/frameworks/nextjs/
├── SKILL.md        # Primary skill definition (frontmatter + instructions)
├── CLAUDE.md       # Optional Claude-specific context
└── ...             # Additional supporting files

The SKILL.md file is required. The build pipeline's discover-skills.mjs script scans for these files to populate the marketplace and search index.

plugins/mcp/*

A small subset of plugins (~2%) that are MCP server plugins written in TypeScript. Unlike Markdown plugins, these are full server implementations with package.json, source files, and test suites. They are compiled and tested via the matrix test job in CI.

plugins/saas-packs/*-pack

SaaS skill packs bundle multiple related skills into a single installable unit. Each pack directory follows the *-pack naming convention. Packs allow users to install an entire set of related capabilities (e.g., a full SaaS integration) in one step rather than picking individual plugins.

marketplace/

An Astro 5 static site that powers tonsofskills.com. It has its own package.json and uses npm instead of pnpm. The build pipeline discovers plugin data, generates search indexes, and produces downloadable zip bundles. See Data Flow for the full build pipeline.

packages/cli/

The ccpi CLI lets users browse, search, and install plugins from the command line. It fetches the catalog from tonsofskills.com and caches it locally. Key capabilities include:

  • Searching and browsing the full plugin catalog
  • Installing individual plugins or category bundles
  • Validating plugin structure with ccpi validate --strict
  • Offline operation using the local cache

The CLI is built, smoke-tested, and packaged (npm pack) in CI. See CI/CD Pipeline for test details.

packages/analytics-*

Two packages that handle usage analytics:

  • analytics-daemon -- Collects and aggregates plugin usage data.
  • analytics-dashboard -- Visualizes analytics for maintainers.

.claude-plugin/

Contains the Two Catalog System JSON files: the source-of-truth marketplace.extended.json and the auto-generated marketplace.json.

Package Manager Policy

Directory Manager Reason
Root and all packages/* pnpm Monorepo workspace management
plugins/mcp/* pnpm Workspace member
marketplace/ npm Astro 5 compatibility requirement

CI enforces this policy with a dedicated check-package-manager job that fails the build if the wrong lockfile appears in any directory. See CI/CD Pipeline for details.

Workspace Configuration

The pnpm-workspace.yaml file at the root declares which directories participate in the pnpm workspace. The marketplace directory is explicitly excluded since it manages its own dependencies with npm.

Workspace members can reference each other as dependencies, which is how the CLI and analytics packages share code. Running pnpm install at the root installs dependencies for all workspace members in a single operation, with shared dependencies hoisted to reduce duplication.

Root Scripts

The root package.json contains shared scripts that operate across the monorepo:

  • sync-marketplace -- Generates marketplace.json from marketplace.extended.json (see Two Catalog System)
  • validate -- Runs structural validation across all plugins
  • test -- Executes test suites for all workspace packages
  • lint -- Lints code across the repository

These scripts are the primary interface for local development and are also invoked by the CI/CD Pipeline.

Related Pages

Clone this wiki locally