# Architecture of the PM-Skills Plugin Marketplace: A Technical Deep Dive

> Explore the technical architecture of the PM-Skills plugin marketplace. Discover how a central manifest aggregates domain-specific plugins for version-synchronized installations.

- Repository: [Pawel Huryn/pm-skills](https://github.com/phuryn/pm-skills)
- Tags: architecture
- Published: 2026-06-19

---

**The PM-Skills repository implements a hierarchical plugin marketplace where a central manifest in [`.claude-plugin/marketplace.json`](https://github.com/phuryn/pm-skills/blob/main/.claude-plugin/marketplace.json) aggregates nine domain-specific plugins, each bundling atomic skills and slash-commands into version-synchronized installable units.**

The `phuryn/pm-skills` repository defines a modular architecture for the plugin marketplace that packages product-management expertise into reusable, version-controlled components. This design allows Claude Code and compatible agents to install entire domain libraries through a single marketplace declaration while maintaining granular control over individual capabilities.

## Marketplace Manifest and Metadata Aggregation

The root of the repository contains [`.claude-plugin/marketplace.json`](https://github.com/phuryn/pm-skills/blob/main/.claude-plugin/marketplace.json), which serves as the single source of truth for the entire marketplace. This manifest lists all nine independent plugins, declares the collective version (currently **2.0.0**), and aggregates high-level statistics such as the total count of **68 skills** and **42 commands** available across the ecosystem.

According to the developer documentation in [`CLAUDE.md`](https://github.com/phuryn/pm-skills/blob/main/CLAUDE.md), this file must be updated whenever individual plugin metadata changes to ensure that aggregated counts and version strings remain consistent. The manifest enables Claude Code to present the marketplace as a unified installable unit while tracking the discrete components contained within each plugin directory.

## Plugin Structure and Domain Organization

Each plugin represents a vertical slice of product-management knowledge, organized into dedicated directories such as `pm-toolkit/`, `pm-product-strategy/`, and `pm-ai-shipping/`. Every plugin directory contains its own [`plugin.json`](https://github.com/phuryn/pm-skills/blob/main/plugin.json) file that declares the plugin’s metadata, dependencies, and entry points.

These nine plugins cover distinct domains including discovery, strategy, execution, data-analytics, and AI-shipping. Installing the marketplace grants immediate access to all nine plugins, though users can selectively enable or disable individual plugins after installation. The [`README.md`](https://github.com/phuryn/pm-skills/blob/main/README.md) in each plugin folder (e.g., [`pm-ai-shipping/README.md`](https://github.com/phuryn/pm-skills/blob/main/pm-ai-shipping/README.md)) provides domain-specific documentation and usage examples for that plugin’s capabilities.

## Skills and Commands Hierarchy

Within each plugin, the architecture separates **skills** from **commands**. A skill is an atomic piece of domain knowledge—such as a framework, checklist, or guided workflow—that functions as a reusable building block. Skills are defined in plugin metadata and can be shared across multiple commands within the same plugin.

A **command** acts as an entry-point that triggers one or more skills. Users invoke commands via slash syntax scoped to the plugin namespace:

```bash
/pm-ai-shipping:ship-check

```

This invocation executes the `ship-check` command defined in the `pm-ai-shipping` plugin, which auto-loads the relevant skills when the topic matches. This hierarchical relationship allows complex workflows to be constructed from simple, composable skill units while exposing a clean, discoverable interface to end users.

## Installation and Version Synchronization

Adding the marketplace to Claude Code or Codex requires a single CLI declaration:

```bash
claude plugin marketplace add phuryn/pm-skills

```

For OpenAI Codex, the equivalent command is:

```bash
codex plugin marketplace add phuryn/pm-skills

```

Version synchronization is strictly enforced across the repository. As documented in [`CLAUDE.md`](https://github.com/phuryn/pm-skills/blob/main/CLAUDE.md), all nine plugins share the same version string defined in [`.claude-plugin/marketplace.json`](https://github.com/phuryn/pm-skills/blob/main/.claude-plugin/marketplace.json). When a contributor updates any individual [`plugin.json`](https://github.com/phuryn/pm-skills/blob/main/plugin.json), they must simultaneously bump the version in the marketplace manifest to maintain consistency. This constraint ensures that users receive a coherent, tested snapshot of the entire ecosystem rather than a mismatched collection of components.

## Summary

- The marketplace uses a central manifest at [`.claude-plugin/marketplace.json`](https://github.com/phuryn/pm-skills/blob/main/.claude-plugin/marketplace.json) to aggregate nine independent plugins into a single installable unit.
- Each plugin bundles domain-specific **skills** (atomic knowledge blocks) and **commands** (executable entry-points) into version-controlled packages.
- Commands are invoked via slash syntax (e.g., `/pm-ai-shipping:ship-check`) that triggers auto-loading of relevant skills.
- All plugins share a synchronized version defined in the root manifest, requiring coordinated updates across [`CLAUDE.md`](https://github.com/phuryn/pm-skills/blob/main/CLAUDE.md) and individual [`plugin.json`](https://github.com/phuryn/pm-skills/blob/main/plugin.json) files.

## Frequently Asked Questions

### How do I install the entire PM-Skills marketplace?

Run `claude plugin marketplace add phuryn/pm-skills` in Claude Code, or `codex plugin marketplace add phuryn/pm-skills` in OpenAI Codex. This registers the marketplace manifest and makes all nine plugins immediately available to your agent.

### What is the difference between a skill and a command?

A **skill** is an atomic unit of domain knowledge (such as a framework or checklist) defined in plugin metadata, while a **command** is an executable entry-point invoked via slash syntax (e.g., `/pm-ai-shipping:ship-check`) that triggers one or more skills to run.

### How does version management work across multiple plugins?

All nine plugins share the same version string declared in [`.claude-plugin/marketplace.json`](https://github.com/phuryn/pm-skills/blob/main/.claude-plugin/marketplace.json). As specified in [`CLAUDE.md`](https://github.com/phuryn/pm-skills/blob/main/CLAUDE.md), updating any individual [`plugin.json`](https://github.com/phuryn/pm-skills/blob/main/plugin.json) requires a corresponding version bump in the marketplace manifest to ensure consistency across the entire repository.

### Where is the marketplace manifest located?

The root manifest resides at [`.claude-plugin/marketplace.json`](https://github.com/phuryn/pm-skills/blob/main/.claude-plugin/marketplace.json) in the repository root. This file contains the aggregate metadata for all plugins, including the total count of skills and commands, and serves as the primary index for Claude Code and Codex installations.