Can PM Skills Be Customized or Extended with New Functionalities?
Yes, PM Skills supports customization and extension through plain markdown files, allowing you to add new skills and commands without writing compiled code.
PM Skills is an open-source Claude Marketplace plugin collection hosted at phuryn/pm-skills that enables product managers to customize and extend functionalities by creating markdown-based assets. The system uses a file-driven architecture where new capabilities are automatically discovered when placed in the appropriate directory structure.
Architecture Overview
PM Skills is organized as a collection of plugins (such as pm-toolkit and pm-product-discovery), each containing three core components:
- Skills – Markdown files (
SKILL.md) that describe self-contained domain expertise with defined inputs and response formats. - Commands – Markdown files that define slash-commands (
/command-name) and orchestrate skills into workflows. - Marketplace metadata – The
.claude-plugin/marketplace.jsonfile that registers all plugins and their source directories.
Because the system is entirely markdown-based, extending functionality requires only adding files following existing conventions. The Claude runtime automatically discovers new assets in skills/ and commands/ directories after installation.
Extending an Existing Plugin
To add capabilities to an existing plugin like pm-toolkit, create new markdown files in the designated directories. This process requires no changes to the marketplace registry if the plugin already exists.
Step 1: Create a New Skill
Define a new skill by creating a SKILL.md file in pm-toolkit/skills/<new-skill>/. The file must include a YAML frontmatter block with name, description, and content sections defining input arguments and response structure.
<!-- pm-toolkit/skills/product-metrics-audit/SKILL.md -->
---
name: product-metrics-audit
description: |
Audits a list of product metrics (e.g., DAU, churn, NPS) against a health rubric
and suggests improvements.
---
# Product Metrics Audit
## Input Arguments
- `$METRICS`: JSON array of metric objects `{name, value, target}`
## Response Structure
1. **Score** – overall health (0‑100)
2. **Findings** – per‑metric assessment
3. **Recommendations** – concrete actions to improve low‑scoring metrics
Step 2: Add a Command (Optional)
To expose the skill via a slash-command, create a markdown file in pm-toolkit/commands/<new-command>.md:
<!-- pm-toolkit/commands/metrics-audit.md -->
---
description: Run a health audit on product metrics
argument-hint: "<metrics JSON>"
---
# /metrics-audit
1. Accept the JSON payload (see `$METRICS`).
2. Invoke the `product-metrics-audit` skill.
3. Return the formatted audit report.
Step 3: Update Documentation
Add the new skill and command to pm-toolkit/README.md so users can discover the functionality.
Step 4: Publish Changes
Commit the new files to the repository. The .claude-plugin/marketplace.json does not require modification because it already points to the pm-toolkit source directory. Claude will load the new assets automatically upon reinstallation.
Creating a New Plugin
For entirely separate domains (e.g., "AI-ethics"), create a new plugin folder structure:
ai-ethics/
├─ skills/
│ └─ bias-assessment/
│ └─ SKILL.md
├─ commands/
│ └─ assess-bias.md
└─ README.md
Then register the plugin in .claude-plugin/marketplace.json:
{
"name": "ai-ethics",
"description": "Ethics‑focused skills for AI product teams",
"source": "./ai-ethics",
"category": "product-management"
}
After committing these changes, the marketplace will expose the new plugin as an installable option.
Runtime Discovery Mechanism
Claude loads plugins based on paths declared in marketplace.json. For each plugin directory, the runtime:
- Scans the
skills/directory forSKILL.mdfiles and registers them as named skills. - Scans the
commands/directory for markdown files starting with/<command>and binds them to corresponding skills.
Because discovery is file-system based, any markdown added to these directories becomes available immediately after plugin reload or reinstallation, without requiring code compilation or server restarts.
Practical Implementation Examples
Installing the Marketplace
Use the Claude Code CLI to add the marketplace and install plugins:
# Add the marketplace (once)
claude plugin marketplace add phuryn/pm-skills
# Install the base set of plugins
claude plugin install pm-toolkit@pm-skills
claude plugin install pm-product-discovery@pm-skills
Adding a Custom Skill via Shell
Automate skill creation using command-line tools:
# Create directory for the new skill
mkdir -p pm-toolkit/skills/product-metrics-audit
# Write the SKILL.md
cat > pm-toolkit/skills/product-metrics-audit/SKILL.md <<'EOF'
---
name: product-metrics-audit
description: Audits a list of product metrics against a health rubric.
---
# Product Metrics Audit
## Input Arguments
- `$METRICS`: JSON array of metric objects
## Response Structure
1. Overall health score
2. Per-metric findings
3. Improvement recommendations
EOF
# Add a command that invokes the skill
cat > pm-toolkit/commands/metrics-audit.md <<'EOF'
---
description: Run a health audit on product metrics
argument-hint: "<metrics JSON>"
---
# /metrics-audit
Invoke the `product-metrics-audit` skill with the provided metrics.
EOF
# Commit the changes
git add pm-toolkit/skills/product-metrics-audit/SKILL.md \
pm-toolkit/commands/metrics-audit.md
git commit -m "Add product-metrics-audit skill and /metrics-audit command"
git push
After pushing, users can invoke the new functionality:
/metrics-audit [{"name":"DAU","value":12000,"target":15000},{"name":"Churn","value":4.2,"target":3}]
Summary
- PM Skills uses a markdown-driven architecture where skills and commands are defined in plain text files.
- Extending existing plugins requires only adding
SKILL.mdfiles topm-toolkit/skills/<name>/and optional command files topm-toolkit/commands/. - New plugins are created by establishing a folder structure with
skills/,commands/, andREADME.md, then registering in.claude-plugin/marketplace.json. - No compiled code is necessary; the Claude runtime performs file-system discovery to load new functionalities automatically.
- Key files include
SKILL.mdfor skill definitions, command markdown files for slash-commands, andmarketplace.jsonfor plugin registration.
Frequently Asked Questions
Can I extend PM Skills without modifying the core repository?
Yes, you can extend PM Skills by forking the repository or adding to your local installation. Since extensions are pure markdown files, you can create new skills in your fork and submit pull requests, or maintain a private fork with custom skills. The file-driven architecture ensures your extensions remain compatible with the core system as long as they follow the SKILL.md schema conventions.
What is the difference between a skill and a command in PM Skills?
A skill is a self-contained expertise definition stored in pm-toolkit/skills/<name>/SKILL.md that describes inputs, processing logic, and output formats. A command is a user-facing interface stored in pm-toolkit/commands/<name>.md that defines a slash-command (e.g., /metrics-audit) and orchestrates one or more skills. Commands reference skills by name and handle argument passing, while skills contain the actual domain logic and response templates.
Does adding new functionality require updating the marketplace.json file?
Updating marketplace.json is only required when creating an entirely new plugin. When extending an existing plugin like pm-toolkit, you simply add files to the existing directory structure. The marketplace JSON points to the plugin's root directory, and Claude recursively discovers all markdown files within skills/ and commands/ subdirectories automatically during installation.
How does Claude discover new skills after I add them?
Claude uses file-system based discovery configured through .claude-plugin/marketplace.json. During plugin installation or reload, the runtime scans each plugin's skills/ directory for SKILL.md files and commands/ directory for markdown files defining slash-commands. Because discovery happens at the file level, new functionalities become available immediately after reinstallation without requiring server restarts or code compilation.
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 →