From great_cto
Structure product discovery with an Opportunity Solution Tree: map desired outcomes to customer opportunities, possible solutions, and experiments. Use when the team is unclear what to build next or before writing a PRD.
How this skill is triggered — by the user, by Claude, or both
Slash command
/great_cto:opportunity-solution-treeWhen to use
Apply when: - The team knows the outcome to improve but not which opportunity to chase - Multiple feature ideas exist and the team isn't sure which solves the right problem - CTO asks "what should we build to improve retention / conversion / NPS?" - Starting discovery on a new product area Guards — do NOT apply when: - The feature and problem are already well-defined (go straight to /prd) - You have a single, validated user story (use /prd directly) - This is a bug fix or technical debt item
docs/discovery/**This skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Structures product discovery by connecting a desired outcome → customer opportunities → solutions → experiments. Prevents jumping to solutions before validating the problem space.
Structures product discovery by connecting a desired outcome → customer opportunities → solutions → experiments. Prevents jumping to solutions before validating the problem space.
Based on Teresa Torres, Continuous Discovery Habits (2021).
┌─────────────────────┐
│ DESIRED OUTCOME │ ← single measurable metric
└──────────┬──────────┘
┌───────────────┼────────────────┐
┌──────┴─────┐ ┌──────┴─────┐ ┌──────┴─────┐
│Opportunity │ │Opportunity │ │Opportunity │ ← customer pain/need
│ A │ │ B │ │ C │
└──────┬─────┘ └──────┬─────┘ └────────────┘
┌──────┴───┐ ┌──────┴───┐
┌───┴──┐ ┌───┴──┐ ┌───┴──┐ ┌───┴──┐
│Sol 1 │ │Sol 2 │ │Sol 3 │ │Sol 4 │ ← possible solutions
└───┬──┘ └──────┘ └───┬──┘ └──────┘
┌────┴────┐ ┌───┴────┐
│ Exp 1 │ │ Exp 2 │ ← fast experiments
└─────────┘ └────────┘
Key principles:
Confirm or help the user articulate one measurable outcome at the top of the tree.
Good outcomes:
Bad outcomes (reject these):
If the user can't state a metric: ask "What would need to be true for you to consider this effort a success?"
From customer interviews, analytics, support tickets, or NPS feedback, identify 3–7 customer opportunities (pain points, unmet needs, desires).
Frame each from the customer's perspective:
Prioritise using Opportunity Score (Dan Olsen, The Lean Product Playbook):
Opportunity Score = Importance × (1 − Satisfaction)
Survey customers: rate each need on Importance (0–1) and current Satisfaction (0–1).
For each top-priority opportunity, brainstorm ≥3 solutions from three angles:
Rules:
For the most promising solutions, design 1–2 fast experiments:
| Experiment | Assumption tested | Method | Success metric | Effort |
|---|---|---|---|---|
| <A/B test / fake door / prototype / interview> | <metric + threshold> | <1d / 3d / 1w> |
Assumption categories (prioritise in this order):
Cheap experiment types:
Write docs/discovery/OST-<outcome-slug>.md:
# Opportunity Solution Tree: <Outcome>
**Desired outcome**: <metric> from <current> to <target> by <date>
**Last updated**: <date>
## Opportunity map
| # | Opportunity | Importance | Satisfaction | Opportunity Score | Priority |
|---|------------|-----------|-------------|-------------------|---------|
| A | <customer need> | 0.8 | 0.3 | 0.56 | 1st |
| B | <customer need> | 0.7 | 0.6 | 0.28 | 3rd |
| C | <customer need> | 0.6 | 0.2 | 0.48 | 2nd |
## Solutions for top opportunities
### Opportunity A: <name>
| Solution | Description | Experiment |
|---------|-------------|-----------|
| Sol A1 | <description> | <experiment> |
| Sol A2 | <description> | <experiment> |
| Sol A3 | <description> | <experiment> |
## Active experiments
| Experiment | Assumption | Status | Result |
|-----------|-----------|--------|--------|
| <name> | <assumption> | Running / Done | <result or pending> |
## Learning log
- <date>: Discovered <insight> from <source>. Killed <solution> / promoted <opportunity>.
Once an opportunity is validated and a solution is chosen:
→ Run /prd with the validated opportunity as the problem statement
→ The OST's Opportunity Score data feeds directly into PRD §3 (Success Metrics) and §4 (Target Users)
❌ Opportunity = solution in disguise: "Users need a search bar" is a solution. "Users can't find past purchases" is an opportunity.
❌ Skipping divergence: Picking the first solution for each opportunity. Always generate ≥3 before choosing.
❌ Experiments that take >1 week: If it takes longer than a week to learn, it's not an experiment — it's a feature.
❌ Updating the tree once: OST is a continuous practice. Update weekly as you learn.
❌ Too many outcomes: One outcome per tree. If you have multiple outcomes, run multiple trees or pick the highest priority.
npx claudepluginhub avelikiy/great_ctoStructures product discovery using the Opportunity Solution Tree framework — maps a desired outcome to customer opportunities, solutions, and experiments. Based on Teresa Torres' Continuous Discovery Habits.
Builds an Opportunity Solution Tree from stakeholder requests, extracting outcomes, opportunities, solutions, and tests to avoid premature solutioning.
Creates opportunity solution trees linking outcomes to customer opportunities and solutions. Prevents solution-first jumps and structures scattered feature ideas.