| name | research |
| description | Produce a strategic intelligence report covering industry trends, competitive benchmarks, and opportunity mapping. Use when the PM wants market research, competitive analysis, or strategic landscape overview. Trigger on phrases like "research", "competitive analysis", "market landscape", "industry trends", or when the user wants to understand the competitive environment before building.
|
| argument-hint | <project> <research-topic> |
| model | sonnet |
| allowed-tools | Read, Write, AskUserQuestion, Task |
| disable-model-invocation | false |
/pm:research
Arguments: $ARGUMENTS
Expected format: <project> <research-topic> (e.g., acme payment-landscape)
Setup
Parse $ARGUMENTS to extract project and research-topic. Convert research-topic to kebab-case if needed. If either is missing, stop and tell the user:
"Usage: /pm:research "
Read the following for context (if they exist):
<project>/CLAUDE.md: product context, users, tech stack
<project>/pm-config.md: project config
If .claude/overrides/rules/frontmatter.md exists, Read and follow it instead of ~/.claude/pm/rules/frontmatter.md. Otherwise Read ~/.claude/pm/rules/frontmatter.md.
Gather research configuration
Use AskUserQuestion to collect the research parameters. Pre-fill what you can infer from the project context (e.g., industry, company name, geography). Only ask for what is missing or ambiguous.
Collect:
- Industry (required): e.g., Fintech, Retail, Healthcare
- Geography (required, default "Global"): e.g., Latin America, US, Europe
- Company (optional): the company being analyzed. Pre-fill from pm-config or CLAUDE.md if available.
- Competitors (required): 2-5 direct competitors, comma-separated
- Dimensions (optional, default: "market positioning, product capabilities, go-to-market, pricing"): what to compare across competitors
- Depth (optional, default "standard"): standard or deep
- Language (optional, default "English"): language for the report
Present the pre-filled values and ask the PM to confirm or adjust in a single AskUserQuestion call. Do not ask field by field.
Check for existing file
If <project>/research/<research-topic>.md already exists, ask the PM if she wants to overwrite it before continuing.
Launch the research agent
Build the configuration block from the collected values and launch the agent:
Task(
description: "Product research",
subagent_type: "product-researcher",
prompt: "Produce a strategic research report with the following configuration:\n\nINDUSTRY: <industry>\nGEOGRAPHY: <geography>\nCOMPANY: <company>\nCOMPETITORS: <competitors>\nDIMENSIONS: <dimensions>\nDEPTH: <depth>\nLANGUAGE: <language>\n\nProject context:\n<summary of relevant context from CLAUDE.md and pm-config>"
)
Replace all placeholders with the actual values. Wait for the agent to return its report before continuing.
Save the report
Create the directory <project>/research/ if it does not exist.
Read .claude/overrides/templates/research-report.md if it exists, otherwise read ~/.claude/pm/templates/research-report.md. Use it for the frontmatter schema.
Write the agent's output to <project>/research/<research-topic>.md with the correct frontmatter filled in:
title: "Research Report: "
type: research-report
status: draft
created: today's date
updated: today's date
industry: the industry value
geography: the geography value
depth: the depth value
Finish
After writing, tell the PM:
- File saved at:
<project>/research/<research-topic>.md
- A brief highlight of 2-3 key findings from the executive summary
- Suggested next steps:
- Use
/pm:outcome-brief to pressure-test a specific opportunity from the report
- Use
/pm:spec to spec a feature informed by the research