# How to Generate User Personas with PM Skills: A Complete Guide to AI-Driven Persona Creation

> Learn how to generate user personas with PM Skills using AI. Analyze research data and output structured personas with demographics Jobs-to-Be-Done and pain points.

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

---

**PM Skills generates user personas by loading the `user-personas` skill from the `pm-market-research` plugin, which instructs AI models to analyze research data and output three structured personas with demographics, Jobs-to-Be-Done, and pain points.**

PM Skills is a modular AI operating system for product managers that organizes frameworks into reusable plugins. The `phuryn/pm-skills` repository contains the `pm-market-research` plugin, which includes a dedicated skill for creating data-driven user personas from CSV files, interview transcripts, or Excel data.

## Understanding the PM Skills Architecture

### Plugins and Skills

PM Skills groups product management frameworks into **plugins**. Each plugin contains **skills** (markdown files describing AI-driven workflows) and optional **commands** (slash-commands that chain multiple skills). The plugin registry in [`README.md`](https://github.com/phuryn/pm-skills/blob/main/README.md) defines nine product-area plugins, including `pm-market-research`, which houses the user persona generation logic alongside three related skills: `market-segments`, `user-segmentation`, and others.

### The User Personas Skill Location

The *user-personas* skill lives in [`pm-market-research/skills/user-personas/SKILL.md`](https://github.com/phuryn/pm-skills/blob/main/pm-market-research/skills/user-personas/SKILL.md). When you request persona generation, the engine automatically loads this skill because its name matches the request. The skill definition contains the exact reasoning steps and output template the AI must follow.

## How the User Personas Skill Works

The skill file specifies a four-step workflow defined in the **Analysis Steps** (lines 21-26):

1. **Collect** any research data supplied (CSV, Excel, interview transcripts, etc.)
2. **Identify patterns** across demographics, motivations, and behaviours
3. **Segment** the data into three distinct personas
4. **Enrich** each persona with a name, demographics, primary Jobs-to-Be-Done, top pains & gains, an unexpected insight, and a product-fit assessment

The **output structure** (lines 30-53) provides a fixed template that ensures consistent, actionable results for product road-mapping and design. Because the skill is pure markdown, it works with any AI that can read the [`SKILL.md`](https://github.com/phuryn/pm-skills/blob/main/SKILL.md) format, including Claude, Gemini, and OpenCode.

## Three Methods to Generate User Personas with PM Skills

### Method 1: Claude Code CLI

Install the plugin and run the bundled command:

```bash

# Install the market-research plugin

claude plugin install pm-market-research@pm-skills

# Run the bundled command that calls the user-personas skill

claude /research-users "We have interview transcripts from 15 fitness-app users"

```

The command automatically loads the `user-personas` skill, prompts you to attach data files, and returns three fully-filled personas.

### Method 2: Direct Skill Invocation

Any AI that reads SKILL.md can execute the workflow directly:

```text
Create 3 user personas from the CSV file "user_survey.csv".

```

The AI reads the CSV (Skill line 18), follows the analysis steps (Skill lines 21-26), and emits the structured output (Skill lines 30-53).

### Method 3: Custom Python Scripts

Use Python to programmatically invoke the skill:

```python
import json, subprocess, pathlib

# Path to the skill file (used by OpenCode or a local LLM wrapper)

skill_path = pathlib.Path(
    "pm-market-research/skills/user-personas/SKILL.md"
).read_text()

# Build a prompt that includes the skill definition plus the user request

prompt = f"""
{skill_path}

User request: Create 3 personas from the attached file "survey.xlsx".
"""

# Send the prompt to your LLM (example using Claude via CLI)

result = subprocess.check_output(
    ["claude", "ask"], input=prompt.encode(), cwd="/path/to/pm-skills"
).decode()

print(result)

```

This script reads the skill definition from [`pm-market-research/skills/user-personas/SKILL.md`](https://github.com/phuryn/pm-skills/blob/main/pm-market-research/skills/user-personas/SKILL.md), appends the specific request, and forwards it to the model.

## Summary

- PM Skills uses a **plugin-based architecture** where the `pm-market-research` plugin contains the user personas skill
- The skill file at [`pm-market-research/skills/user-personas/SKILL.md`](https://github.com/phuryn/pm-skills/blob/main/pm-market-research/skills/user-personas/SKILL.md) defines a **4-step analysis process** (lines 21-26) and strict output template (lines 30-53)
- You can invoke personas via **Claude Code CLI commands**, **direct AI prompts**, or **custom Python scripts**
- The skill works with any AI that supports the SKILL.md format, including Claude, Gemini, and OpenCode
- The `/research-users` command in [`pm-market-research/commands/research-users.md`](https://github.com/phuryn/pm-skills/blob/main/pm-market-research/commands/research-users.md) bundles the user-personas skill with related market-research skills for end-to-end workflows

## Frequently Asked Questions

### What file formats does PM Skills support for persona generation?

The user-personas skill accepts CSV, Excel, interview transcripts, and other structured research data. According to the skill definition in [`pm-market-research/skills/user-personas/SKILL.md`](https://github.com/phuryn/pm-skills/blob/main/pm-market-research/skills/user-personas/SKILL.md), the model explicitly handles these formats during the data collection step.

### Can I modify the number of personas generated?

The standard skill in [`pm-market-research/skills/user-personas/SKILL.md`](https://github.com/phuryn/pm-skills/blob/main/pm-market-research/skills/user-personas/SKILL.md) segments data into three distinct personas by default as specified in the analysis steps. To generate more or fewer personas, you would need to modify the skill file's analysis steps or create a custom skill variant.

### Do I need Claude specifically to use PM Skills?

No. While the `phuryn/pm-skills` repository includes Claude-specific commands and a [`CLAUDE.md`](https://github.com/phuryn/pm-skills/blob/main/CLAUDE.md) file, the SKILL.md format is pure markdown that works with any AI capable of reading the specification, including Gemini, OpenCode, or custom LLM implementations.

### How does the `/research-users` command differ from calling the skill directly?

The `/research-users` command, defined in [`pm-market-research/commands/research-users.md`](https://github.com/phuryn/pm-skills/blob/main/pm-market-research/commands/research-users.md), chains the user-personas skill with other market-research skills for a comprehensive workflow, while direct skill invocation runs only the persona generation logic defined in [`pm-market-research/skills/user-personas/SKILL.md`](https://github.com/phuryn/pm-skills/blob/main/pm-market-research/skills/user-personas/SKILL.md).