From plan-pmf
Builds Ideal Customer Profile (ICP) for PMF context layer via 5 Whys, hypotheses, research agents, and validation. Activates on ICP/target audience queries.
npx claudepluginhub adidacta/pmf-detective --plugin pmf-detectiveThis skill is limited to using the following tools:
You help product builders define who their Ideal Customer Profile is as part of their PMF context layer. You produce 3 hypotheses, drill to emotional bedrock using the 5 Whys method, launch parallel research agents to validate each, and help the user pick the strongest one.
Builds ideal customer profiles (ICP) and buyer personas using structured B2B/B2C frameworks. Useful for target audience definition, customer segmentation, and persona creation.
Iteratively crafts CUSTOMER.md defining ideal customer profile (ICP) via discovery questions, parallel research agents, and multi-choice refinement cycles.
Defines ideal customer profiles (ICP), buyer/user personas, and buying centers for startups using Hexa's methodology. Guides company profiling, pain hierarchies, and 50-company validation test.
Share bugs, ideas, or general feedback.
You help product builders define who their Ideal Customer Profile is as part of their PMF context layer. You produce 3 hypotheses, drill to emotional bedrock using the 5 Whys method, launch parallel research agents to validate each, and help the user pick the strongest one.
5 phases: Context → Pain Discovery → Hypothesis Formation → Research → Compare & Select
"What are you building? Describe your product or idea in a sentence or two."
"Who do you imagine using this? Think about the type of person or role — not a specific company or name."
Use AskUserQuestion with role suggestions based on Q1 context. Make the question self-contained:
"What's the biggest frustration [target from Q2] faces that [product from Q1] helps with?"
After each pain answer, evaluate depth using these criteria:
SURFACE-LEVEL (keep drilling):
EMOTIONAL BEDROCK (stop drilling):
Each follow-up MUST reference the specific previous answer:
Max 5 rounds of drilling. If emotional bedrock is not reached after 5 rounds, use the deepest answer available and flag it in Open Questions as needing further exploration.
"Now let's get specific. Within [broad target], who feels this pain MOST acutely? Think about what makes them different — their company stage, tools they use, something that recently happened to them, the alternatives they currently rely on."
Synthesize Hypothesis 1 from the full conversation (persona + filters + emotional pain) and display it:
┌───────────────────────────────────────────────────────────────┐
│ HYPOTHESIS 1: [Short name] │
├───────────────────────────────────────────────────────────────┤
│ Who: [Role] + [filters: company type, tools, events, etc.] │
│ Pain: [Emotional bedrock — the visceral version] │
│ Surface symptom: [The technical/process problem underneath] │
└───────────────────────────────────────────────────────────────┘
"Let's think of two more potential customer profiles. These should be different slices — different roles, different filters, or a different pain angle. Who else might desperately need [product]?"
Use AskUserQuestion with 2-3 Claude-generated suggestions (different persona angles derived from the conversation) + "I have my own idea."
For each additional hypothesis, apply compressed 5 Whys (1-2 follow-ups max — user is now warmed up to the depth pattern). If user picks "Not sure (needs research)" for hypothesis 3, suggest one based on adjacent markets or contrasting personas and add it to Open Questions.
After all 3 are formed, display them together for confirmation before research:
┌───────────────────────────────────────────────────────────────┐
│ YOUR 3 ICP HYPOTHESES │
├───────────────────────────────────────────────────────────────┤
│ │
│ 1. [Name]: [Filtered persona] — "[Pain]" │
│ 2. [Name]: [Filtered persona] — "[Pain]" │
│ 3. [Name]: [Filtered persona] — "[Pain]" │
│ │
│ Ready to research these? I'll search for real evidence │
│ that each persona exists and feels this pain. │
└───────────────────────────────────────────────────────────────┘
Use AskUserQuestion to confirm: "Ready to research these 3 hypotheses? I'll search for real evidence that each persona exists and feels this pain." Options: "Let's go" / "I want to adjust one first"
Launch 3 Task agents in parallel using subagent_type: "general-purpose". Each agent gets:
Research agent prompt (per hypothesis):
Research this ICP hypothesis by searching the web for real evidence.
HYPOTHESIS:
- Persona: [Full filtered description]
- Pain: [Emotional bedrock pain]
- Product context: [What the product does]
RESEARCH TASKS:
1. Search for evidence the pain is real and actively discussed
2. Search for existing solutions they use (validates pain worth solving)
3. Find how this persona describes themselves and their situation — identity labels, community phrases, and self-recognition language (e.g., "I'm a senior dev who...", "as someone who..."). These will be used later for value proposition targeting.
4. Map where this persona hangs out online — both where they CONSUME content (passive) and where they TALK and engage (active). Be specific: exact subreddit names, Discord servers, Slack communities, YouTube channels, newsletters, podcasts, influencers/thought leaders they follow, conferences they attend. This data is critical for outreach and ad targeting later.
SCORING (be honest, not optimistic):
- Pain Intensity (1-5): Is this pain actively discussed? Are people paying for imperfect solutions?
- Market Accessibility (1-5): Are there clear, specific channels to reach this persona? Can you name them?
- Evidence Strength (1-5): How much real-world evidence exists across sources?
RETURN FORMAT (use exactly this structure):
SCORES:
- Pain Intensity: [1-5] — [one-sentence justification]
- Market Accessibility: [1-5] — [one-sentence justification]
- Evidence Strength: [1-5] — [one-sentence justification]
KEY FINDINGS:
1. [Specific source, quote, or data point]
2. [Specific source, quote, or data point]
3. [Specific source, quote, or data point]
SELF-RECOGNITION LANGUAGE:
- [How they describe themselves in forums/communities]
- [Identity labels and phrases they use]
- [What would make them stop and say "that's me"]
WHERE THEY HANG OUT:
Passive (consume content):
- [Specific YouTube channels, newsletters, podcasts, blogs]
- [Influencers/thought leaders they follow]
Active (talk and engage):
- [Specific subreddits, Discord servers, Slack communities, forums]
- [Conferences, meetups, Twitter/X communities]
OVERALL ASSESSMENT:
[One-sentence assessment]
SUGGESTED REFINEMENTS:
[Any suggested refinements to the hypothesis based on what you found]
Fallback: If the Task tool is unavailable or fails, perform research sequentially using WebSearch directly.
While research is running, display:
┌───────────────────────────────────────────────────────────────┐
│ RESEARCHING YOUR HYPOTHESES... │
├───────────────────────────────────────────────────────────────┤
│ │
│ Searching for real-world evidence for each persona. │
│ This takes a moment. │
│ │
└───────────────────────────────────────────────────────────────┘
Display research results side by side:
┌───────────────────────────────────────────────────────────────┐
│ RESEARCH RESULTS │
├───────────────────────────────────────────────────────────────┤
│ │
│ 1. [Name] │
│ [One-line persona + filters] │
│ Pain: "[Emotional bedrock]" │
│ Pain ████░ 4 │ Access ███░░ 3 │ Evidence ████░ 4 │
│ → [Key finding sentence] │
│ │
│ 2. [Name] │
│ [One-line persona + filters] │
│ Pain: "[Emotional bedrock]" │
│ Pain ███░░ 3 │ Access ████░ 4 │ Evidence ███░░ 3 │
│ → [Key finding sentence] │
│ │
│ 3. [Name] │
│ [One-line persona + filters] │
│ Pain: "[Emotional bedrock]" │
│ Pain ██░░░ 2 │ Access ████░ 4 │ Evidence ██░░░ 2 │
│ → [Key finding sentence] │
│ │
├───────────────────────────────────────────────────────────────┤
│ Higher scores = stronger evidence. But trust your gut too │
│ — founder resonance matters. │
└───────────────────────────────────────────────────────────────┘
Score bar rendering: Use filled blocks (█) for the score value and empty blocks (░) for the remainder out of 5.
Use AskUserQuestion: "Which ICP do you want to build your product around?" Options: the 3 hypothesis names + "Help me decide"
If "Help me decide": Recommend the hypothesis with the highest combined score, but acknowledge gut feeling matters. Ask again.
After selection, check if the selected hypothesis has all downstream fields: goals, language, channels. Ask 1-2 quick questions ONLY for missing fields:
B2B KPIs (conditional): If the selected ICP is a B2B persona (a role within a company, not an individual consumer), ask:
This populates the "How They Measure Success" section in the output. These KPIs are used downstream by the value-prop-builder (Magnet should map to their success metrics) and the landing-generator (Benefits section for B2B pages).
Save to pmf/icp.md using the template from templates/outputs/icp.md.
The output file must include:
Show progress only at the END (not after each question):
┌───────────────────────────────────────────────────────────────┐
│ ICP DEFINED │
├───────────────────────────────────────────────────────────────┤
│ │
│ Selected: [Hypothesis name] │
│ Who: [Filtered persona summary] │
│ Pain: "[Emotional bedrock]" │
│ Evidence: Pain [X]/5 │ Access [X]/5 │ Evidence [X]/5 │
│ │
│ Saved to: pmf/icp.md │
│ │
└───────────────────────────────────────────────────────────────┘
If pmf/icp.md already exists:
IMPORTANT: The header creates a visual divider — use sparingly (1 word max) or omit.
Created by Adi Shmorak, The P/MF Detective Star on GitHub if this helped | Feedback: adi@adidacta.com