How to Chain Multiple PM Skills for Custom Commands
You chain multiple pm-skills together by creating a Markdown command file in a plugin's commands/ directory that references individual skills from the skills/ folder using the **Apply the <skill-name> skill** pattern, allowing Claude to execute them sequentially while passing data through conversation context.
The pm-skills marketplace by phuryn/pm-skills treats complex product management workflows as composable units. Chaining multiple pm-skills together allows you to build custom commands that automate multi-step processes—from initial discovery to go-to-market launch—using only Markdown files without modifying source code.
Understanding the PM Skills Architecture
The repository organizes functionality into two distinct layers:
- Skills are reusable frameworks defined in
pm-<plugin>/skills/<skill-name>/SKILL.md. Each skill contains the logic for a specific product management task, such asbrainstorm-ideas-neworprioritize-assumptions. - Commands are orchestration files stored in
pm-<plugin>/commands/<command-name>.md. These Markdown files chain multiple skills together into executable workflows.
When Claude processes a command, it automatically loads and executes referenced skills in sequence, passing intermediate results through the conversation context.
Creating a Custom Command That Chains Skills
To build your own chained workflow, create a new Markdown file in the appropriate plugin directory:
- Select a plugin folder (e.g.,
pm-product-discoveryorpm-go-to-market). - Create a Markdown file in the plugin's
commands/directory (e.g.,pm-go-to-market/commands/quick-launch.md). - Add YAML frontmatter at the top describing the command and optional arguments.
- Reference skills in the workflow section using the
**Apply the <skill-name> skill**syntax. - Save the file—the command becomes instantly available to Claude-Code or Claude-Cowork.
Example: The /discover Command
The /discover command in pm-product-discovery/commands/discover.md demonstrates chaining four distinct skills:
---
description: Run a full discovery cycle
---
# Discovery Command
Apply the **brainstorm-ideas-new** skill.
Then apply the **identify-assumptions-new** skill.
Apply the **prioritize-assumptions** skill.
Finally, apply the **brainstorm-experiments-new** skill.
This sequence executes skills in order: generating ideas, identifying assumptions, prioritizing them, and designing experiments. The skills are defined in pm-product-discovery/skills/brainstorm-ideas-new/SKILL.md, pm-product-discovery/skills/identify-assumptions-new/SKILL.md, pm-product-discovery/skills/prioritize-assumptions/SKILL.md, and pm-product-discovery/skills/brainstorm-experiments-new/SKILL.md.
Building a Complex Workflow: The /quick-launch Example
For a sophisticated go-to-market workflow, create pm-go-to-market/commands/quick-launch.md with the following content:
---
description: End‑to‑end launch workflow that builds an ICP, a GTM plan, and a growth loop
argument-hint: "<product name>"
---
# /quick-launch – Fast Go‑to‑Market Launch
## Workflow
### Step 1: Build the Ideal Customer Profile
Apply the **ideal-customer-profile** skill:
- Ask the user for the product name and primary market.
- Generate an ICP with demographics, behaviors, and needs.
### Step 2: Draft the GTM Strategy
Apply the **gtm-strategy** skill:
- Use the ICP from Step 1.
- Produce a channel mix, messaging pillars, and success metrics.
### Step 3: Design a Growth Loop
Apply the **growth-loops** skill:
- Based on the GTM plan, suggest a self‑reinforcing loop.
- Include high‑level tactics and effort estimates.
When a user runs /quick-launch Super‑AI Writing Assistant, Claude executes ideal-customer-profile (defined in pm-go-to-market/skills/ideal-customer-profile/SKILL.md), passes that output to gtm-strategy (from pm-go-to-market/skills/gtm-strategy/SKILL.md), then feeds both into growth-loops (from pm-go-to-market/skills/growth-loops/SKILL.md).
How Data Flows Between Chained Skills
Data hand-off occurs automatically via conversation context. Each skill's output becomes the next skill's input without explicit variable passing. When you chain pm-skills together, Claude maintains the cumulative state across the entire workflow, allowing downstream skills to reference earlier outputs naturally.
Testing Your Custom Command
To verify your chained command works:
- Place your Markdown file in
pm-<plugin>/commands/. - Load the plugin in Claude-Code or Claude-Cowork.
- Invoke the command:
/quick-launch ProductName. - Observe the sequential execution of each skill section.
Summary
- Chain multiple pm-skills by creating Markdown files in a plugin's
commands/directory. - Reference skills using the
**Apply the <skill-name> skill**pattern. - Data flows automatically between skills via conversation context.
- No code changes are required—only Markdown files with YAML frontmatter.
- Example implementations include
/discoverinpm-product-discovery/commands/discover.mdand/quick-launchinpm-go-to-market/commands/quick-launch.md.
Frequently Asked Questions
Do I need to write code to chain pm-skills together?
No. The pm-skills marketplace uses pure Markdown files. You create a command by adding a new .md file with YAML frontmatter in the commands/ directory. The system parses these files to load and execute referenced skills automatically without requiring code compilation or deployment.
Where should I save custom command files?
Save custom commands in pm-<plugin>/commands/<command-name>.md within your plugin folder. For example, pm-go-to-market/commands/quick-launch.md makes the /quick-launch command available immediately upon saving the file.
How does data pass between skills in a chain?
Data passes implicitly through conversation context. Each skill appends its output to the conversation, and subsequent skills in the chain can access this cumulative context. This allows seamless hand-offs where one skill's deliverables become the next skill's inputs without explicit configuration or variable declaration.
Can I chain skills from different plugins?
Yes, though skills typically reside within their parent plugin's skills/ directory. You can reference any skill by name if Claude has loaded the plugin. For explicit loading, use the /plugin-name:skill-name syntax before running your custom command.
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:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →