# Creating Custom Commands in pm-skills: A Complete Guide to Extending the Claude Marketplace

> Learn to create custom commands in pm skills by adding markdown files to your plugin. Define triggers, arguments, and workflows to extend the Claude Marketplace.

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

---

**Creating custom commands in pm-skills requires adding a markdown file with YAML front-matter to a plugin's `commands/` directory, where you define the slash command trigger, argument hints, and a workflow that chains existing skills.**

The **pm-skills** repository by `phuryn/pm-skills` functions as a Claude Marketplace that organizes product management capabilities into modular plugins. When you create custom commands, you extend this ecosystem by defining new slash-triggered workflows that orchestrate reusable skills stored in [`SKILL.md`](https://github.com/phuryn/pm-skills/blob/main/SKILL.md) files.

## Understanding the Plugin Architecture

The pm-skills repository organizes functionality into plugins such as `pm-toolkit`, `pm-product-discovery`, and `pm-execution`. Each plugin consists of three core components:

- **Skills** – Reusable knowledge modules written in [`SKILL.md`](https://github.com/phuryn/pm-skills/blob/main/SKILL.md) files (e.g., `review-resume`, `create-prd`).
- **Commands** – User-triggered workflows stored as markdown files in the `commands/` folder, each containing a YAML front-matter header.
- **Plugin manifest** – A JSON file at [`.claude-plugin/plugin.json`](https://github.com/phuryn/pm-skills/blob/main/.claude-plugin/plugin.json) that registers the plugin's metadata.

When Claude loads the marketplace, it automatically parses every `commands/*.md` file. The front-matter defines the slash command name, expected arguments, and description, while the body describes the workflow and references skills by name.

## Anatomy of a Command File

Every command in pm-skills follows a standardized structure. The file must reside in a plugin's `commands/` directory and contain two sections: a YAML front-matter block and a markdown workflow description.

### YAML Front-Matter

The front-matter specifies the command's metadata:

- `description` – Human-readable explanation of what the command does.
- `argument-hint` – Template showing expected CLI arguments.

### Workflow Body

The markdown body describes step-by-step instructions that may invoke one or more skills. Because skills are loaded on-demand, you reference them by name (e.g., "Apply the **review-resume** skill").

## Step-by-Step Guide to Creating Custom Commands in pm-skills

To illustrate the process, here is a complete walkthrough for adding `/my-insight`, which combines the `product-vision` and `pricing-strategy` skills to generate a go-to-market brief.

### 1. Create the Command File

Create [`pm-product-strategy/commands/my-insight.md`](https://github.com/phuryn/pm-skills/blob/main/pm-product-strategy/commands/my-insight.md) with the following content:

```markdown
---
description: Generate a concise product vision and pricing brief for a new idea
argument-hint: "<product idea>"
---

# /my-insight -- Vision & Pricing Quick Brief

Provide a short product idea and receive:

1. A polished product vision statement (via the `product-vision` skill)
2. A pricing strategy outline (via the `pricing-strategy` skill)

## Invocation

```

/my-insight Launch a AI-powered note-taking app for remote teams

```

## Workflow

### Step 1 – Vision

Ask Claude to run the **product-vision** skill with the supplied idea.

### Step 2 – Pricing

Feed the same idea into the **pricing-strategy** skill.

### Step 3 – Assemble Brief

Combine the two outputs into a single markdown section:

```

## Vision

<output-from-product-vision>

## Pricing

<output-from-pricing-strategy>

```

The command returns the assembled brief ready for sharing with stakeholders.

```

### 2. Register the Plugin (If Creating a New One)

If you are creating a brand-new plugin rather than adding to an existing one, create a [`plugin.json`](https://github.com/phuryn/pm-skills/blob/main/plugin.json) file in the `.claude-plugin/` directory:

```json
{
  "name": "pm-custom",
  "version": "0.1.0",
  "description": "User-defined commands and skills for ad-hoc product work",
  "author": {
    "name": "Your Name",
    "email": "you@example.com",
    "url": "https://your-site.example"
  },
  "keywords": ["custom", "commands", "product-management"],
  "homepage": "https://github.com/your-org/pm-custom",
  "license": "MIT"
}

```

### 3. Invoke the Command

Once the marketplace refreshes, invoke your new command:

```

/my-insight Build a collaborative whiteboard for design teams

```

Claude automatically loads the referenced skills and executes the workflow defined in your command file.

## Reference Implementation: The /tailor-resume Command

The repository provides production examples of creating custom commands. The `/tailor-resume` command in the `pm-toolkit` plugin demonstrates the complete pattern:

- **Source file**: [`pm-toolkit/commands/tailor-resume.md`](https://github.com/phuryn/pm-skills/blob/main/pm-toolkit/commands/tailor-resume.md)
- **Plugin manifest**: [`pm-toolkit/.claude-plugin/plugin.json`](https://github.com/phuryn/pm-skills/blob/main/pm-toolkit/.claude-plugin/plugin.json)

This command chains multiple skills to analyze a resume against a job description, illustrating how complex workflows are structured.

## Key Files for Command Development

When creating custom commands in pm-skills, reference these canonical files in the repository:

- **[`README.md`](https://github.com/phuryn/pm-skills/blob/main/README.md)** – High-level overview of the marketplace architecture and command chaining.
- **[`pm-toolkit/.claude-plugin/plugin.json`](https://github.com/phuryn/pm-skills/blob/main/pm-toolkit/.claude-plugin/plugin.json)** – Manifest that registers the `pm-toolkit` plugin with Claude, showing the required JSON structure.
- **[`pm-toolkit/commands/tailor-resume.md`](https://github.com/phuryn/pm-skills/blob/main/pm-toolkit/commands/tailor-resume.md)** – Fully documented command showing YAML front-matter, workflow steps, and skill usage patterns.
- **[`pm-product-strategy/skills/product-vision/SKILL.md`](https://github.com/phuryn/pm-skills/blob/main/pm-product-strategy/skills/product-vision/SKILL.md)** – Example skill format referenced by commands.
- **[`pm-product-strategy/skills/pricing-strategy/SKILL.md`](https://github.com/phuryn/pm-skills/blob/main/pm-product-strategy/skills/pricing-strategy/SKILL.md)** – Complementary skill demonstrating the universal skill structure.

## Summary

- **Creating custom commands** in pm-skills involves adding markdown files to a plugin's `commands/` directory with YAML front-matter defining the slash command and arguments.
- **Commands reference skills** by name in their workflow bodies, allowing you to chain reusable capabilities without duplicating logic.
- **The plugin manifest** at [`.claude-plugin/plugin.json`](https://github.com/phuryn/pm-skills/blob/main/.claude-plugin/plugin.json) registers your plugin with the Claude Marketplace.
- **Existing examples** like [`pm-toolkit/commands/tailor-resume.md`](https://github.com/phuryn/pm-skills/blob/main/pm-toolkit/commands/tailor-resume.md) provide production-ready templates for structuring commands.
- **Skills are loaded on-demand**, so commands can range from simple single-skill calls to complex multi-skill orchestrations.

## Frequently Asked Questions

### What file extension should custom commands use?

Custom commands in pm-skills must use the `.md` extension and reside in a `commands/` folder within a plugin directory. The system automatically discovers and parses these markdown files based on their location and YAML front-matter headers.

### Can I create commands without writing new skills?

Yes. Creating custom commands often involves chaining existing skills rather than writing new ones. You can reference any skill available in the marketplace (such as `product-vision` or `pricing-strategy`) by name in your command's workflow section, and Claude will automatically load them at runtime.

### How does the plugin manifest relate to custom commands?

The [`plugin.json`](https://github.com/phuryn/pm-skills/blob/main/plugin.json) file located at [`.claude-plugin/plugin.json`](https://github.com/phuryn/pm-skills/blob/main/.claude-plugin/plugin.json) registers your plugin with the Claude Marketplace, defining the plugin name, version, and author information. While individual commands define specific workflows, the manifest makes the entire plugin discoverable and versioned within the pm-skills ecosystem.

### Where should I place my custom command if I'm extending an existing plugin?

Add your command markdown file to the existing plugin's `commands/` directory (e.g., [`pm-toolkit/commands/my-command.md`](https://github.com/phuryn/pm-skills/blob/main/pm-toolkit/commands/my-command.md)). If you are creating a new plugin, establish the directory structure as `your-plugin-name/commands/` and include a [`.claude-plugin/plugin.json`](https://github.com/phuryn/pm-skills/blob/main/.claude-plugin/plugin.json) manifest file to register it with the marketplace.