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

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 demonstrates the required fields, including author information and keywords.

  • Skills: Stored as 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 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 invokes the review-resume skill, while 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 file following the schema established in pm-toolkit/.claude-plugin/plugin.json. This manifest must include the plugin name, version, description, author metadata, and license information.

{
  "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 file. The 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.

---
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.


# /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 (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 format. The root 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 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 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.

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 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 (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.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →