# Creating a New PM Skills Plugin from Scratch: A Complete Guide for the PM Skills Marketplace

> Easily create a new PM Skills plugin from scratch. Just add a JSON manifest, markdown skill definitions, and optional command files. No code compilation needed.

- Repository: [Pawel Huryn/pm-skills](https://github.com/phuryn/pm-skills)
- Tags: how-to-guide
- Published: 2026-07-05

---

**Creating a new PM Skills plugin requires only a directory with a JSON manifest, markdown skill definitions, and optional command files—no code compilation or build steps required.**

The PM Skills Marketplace (`phuryn/pm-skills`) organizes product management knowledge into modular, AI-ready plugins that Claude Code automatically discovers and loads. Each plugin functions as a standalone namespace containing domain-specific skills and slash-triggered workflows, enabling you to extend the marketplace's nine existing plugins with custom capabilities.

## Understanding the Plugin Architecture

The PM Skills Marketplace uses a **metadata-driven architecture** where business logic resides entirely in markdown definitions rather than code. Each plugin lives in its own top-level directory (such as `pm-toolkit` or `pm-product-discovery`) and contains three essential components:

- **Plugin Manifest**: Located at `*/.claude-plugin/plugin.json`, this JSON file declares the plugin name, version, and metadata required by Claude Code to load the package. The manifest in [`pm-toolkit/.claude-plugin/plugin.json`](https://github.com/phuryn/pm-skills/blob/main/pm-toolkit/.claude-plugin/plugin.json) demonstrates the required fields, including author information and keywords.

- **Skills**: Stored as [`SKILL.md`](https://github.com/phuryn/pm-skills/blob/main/SKILL.md) files within `*/skills/<skill-name>/` directories, these markdown documents contain YAML frontmatter describing domain knowledge areas. The [`pm-toolkit/skills/review-resume/SKILL.md`](https://github.com/phuryn/pm-skills/blob/main/pm-toolkit/skills/review-resume/SKILL.md) file illustrates the standard format with a YAML header (`---\nname: …\n---`) followed by structured content that the AI interprets at runtime.

- **Commands**: Defined in `*/commands/*.md` files, these slash-triggered workflows chain one or more skills into end-to-end processes. For example, [`pm-toolkit/commands/review-resume.md`](https://github.com/phuryn/pm-skills/blob/main/pm-toolkit/commands/review-resume.md) invokes the review-resume skill, while [`pm-product-discovery/commands/discover.md`](https://github.com/phuryn/pm-skills/blob/main/pm-product-discovery/commands/discover.md) chains multiple discovery-phase skills together.

## Step-by-Step Guide to Creating Your Plugin

### Step 1: Create the Plugin Directory Structure

Begin by creating a top-level directory named `pm-your-plugin` (using your specific plugin name). This directory serves as the namespace for your skills and prevents naming collisions with other plugins in the marketplace. Inside this directory, you will create three subdirectories: `.claude-plugin`, `skills`, and optionally `commands`.

### Step 2: Define the Plugin Manifest

Create a `.claude-plugin` subdirectory and add a [`plugin.json`](https://github.com/phuryn/pm-skills/blob/main/plugin.json) file following the schema established in [`pm-toolkit/.claude-plugin/plugin.json`](https://github.com/phuryn/pm-skills/blob/main/pm-toolkit/.claude-plugin/plugin.json). This manifest must include the plugin name, version, description, author metadata, and license information.

```json
{
  "name": "pm-my-plugin",
  "version": "0.1.0",
  "description": "Custom PM toolset for XYZ workflow.",
  "author": {
    "name": "Your Name",
    "email": "you@example.com",
    "url": "https://your-site.com"
  },
  "keywords": ["product-management", "custom-skill"],
  "homepage": "https://github.com/your-org/pm-my-plugin",
  "license": "MIT"
}

```

### Step 3: Write Your First Skill

Create a `skills/` folder containing subdirectories for each skill. Each skill requires its own directory and a [`SKILL.md`](https://github.com/phuryn/pm-skills/blob/main/SKILL.md) file. The [`pm-product-discovery/skills/brainstorm-ideas-new/SKILL.md`](https://github.com/phuryn/pm-skills/blob/main/pm-product-discovery/skills/brainstorm-ideas-new/SKILL.md) file demonstrates the required format: YAML frontmatter with a `name` and `description` field, followed by markdown content that defines the skill's behavior.

```markdown
---
name: example-skill
description: "A stub skill that demonstrates the required markdown structure."
---

# Example Skill

You are an expert that can analyze user feedback and extract actionable product insights...

```

### Step 4: Create Slash Commands

Optionally add a `commands/` folder with markdown files that define slash-triggered workflows. These files reference skills using the `/plugin-name:skill-name` syntax, enabling complex command chaining without additional code. The file name becomes the command trigger.

```markdown

# /example-command

This command runs the `pm-my-plugin:example-skill` and returns a structured summary of the analysis.

```

### Step 5: Install and Test Your Plugin

Commit your plugin to the repository. Claude Code automatically discovers new plugins when the marketplace is installed, as documented in the "Installation" section of the root [`README.md`](https://github.com/phuryn/pm-skills/blob/main/README.md) (lines 51-80). The assistant loads skills automatically when conversation context suggests their relevance, and new slash-commands become available immediately without requiring code changes.

## Cross-Assistant Compatibility and Portability

Because skill files are pure markdown with YAML frontmatter, they work out-of-the-box with any AI assistant that can ingest the [`SKILL.md`](https://github.com/phuryn/pm-skills/blob/main/SKILL.md) format. The root [`README.md`](https://github.com/phuryn/pm-skills/blob/main/README.md) (lines 18-24) documents compatibility with Gemini, OpenCode, Cursor, and Kiro. Additionally, the repository includes a script for copying skills to other assistants' directories (referenced in [`README.md`](https://github.com/phuryn/pm-skills/blob/main/README.md) lines 25-31), enabling you to repurpose your PM Skills plugin content across different AI environments without modification.

## Summary

- **Creating a new PM Skills plugin** requires only a directory structure, a JSON manifest, and markdown files—no compilation, tests, or build steps needed.
- **Plugin manifests** at `*/.claude-plugin/plugin.json` declare metadata that Claude Code uses for auto-discovery and loading.
- **Skills** are plain markdown files with YAML frontmatter stored in `*/skills/<name>/SKILL.md` paths, interpreted by the AI at runtime.
- **Commands** in `*/commands/*.md` provide slash-triggered workflows that chain multiple skills using the `/plugin-name:skill-name` syntax.
- **Cross-assistant compatibility** ensures your skills work with Claude, Gemini, Cursor, and other AI assistants that support markdown skill definitions.

## Frequently Asked Questions

### What file format should I use for PM Skills plugin manifests?

The plugin manifest must be a JSON file named [`plugin.json`](https://github.com/phuryn/pm-skills/blob/main/plugin.json) located in the `.claude-plugin` directory within your plugin folder. This file must declare the plugin name, version, description, author information, and keywords, following the exact schema demonstrated in [`pm-toolkit/.claude-plugin/plugin.json`](https://github.com/phuryn/pm-skills/blob/main/pm-toolkit/.claude-plugin/plugin.json).

### Do I need to write code to create a new PM Skills plugin?

No. The PM Skills Marketplace is entirely metadata-driven; nothing is hard-coded in Python or JavaScript. You only need to create markdown files for skills and commands, plus a JSON manifest. The AI assistant interprets these files at runtime, eliminating the need for traditional programming languages.

### Can I use PM Skills plugins with assistants other than Claude Code?

Yes. The [`SKILL.md`](https://github.com/phuryn/pm-skills/blob/main/SKILL.md) files use standard markdown with YAML frontmatter, making them compatible with any AI assistant that can read markdown, including Gemini, OpenCode, Cursor, and Kiro. The repository includes scripts for copying skills to other assistant directories, as noted in the root [`README.md`](https://github.com/phuryn/pm-skills/blob/main/README.md) (lines 25-31).

### How do I reference one skill from another in PM Skills commands?

Use the slash-command syntax `/plugin-name:skill-name` in your command files. For example, to invoke a skill named `example-skill` from a plugin named `pm-my-plugin`, you would reference it as `/pm-my-plugin:example-skill` in the markdown files within your `commands/` directory.