Skip to main content
skill CX Codex

opportunity-solution-tree · avelikiy — Claude Code skill: product discovery

This skill maps a measurable product outcome to customer needs, candidate solutions, and experiments. Use it when a team is deciding which problem to pursue next.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add avelikiy/great_cto --skill opportunity-solution-tree -a claude-code
Open on GitHub

What opportunity-solution-tree does

The skill structures discovery as four connected levels: a desired outcome, customer opportunities, possible solutions, and experiments. It starts by defining one measurable goal, then identifies customer needs from interviews, analytics, support tickets, or NPS feedback. Importance and satisfaction scores help rank those needs.

For the leading opportunities, it prompts the team to generate several solution options and test promising assumptions with low-cost experiments. The resulting tree is saved to docs/discovery/OST-<outcome-slug>.md, with an opportunity map, solution and experiment tables, and a learning log. The team needs a measurable outcome first; otherwise, it has no stated metric for judging success.

This process is for discovery when the problem or solution is still open. The skill’s guidance says to go straight to /spec prd for a well-defined feature or a single validated user story; bug fixes and technical debt are outside its intended use.

What it helps with

  • connect a product goal to customer needs
  • rank competing opportunities by importance and satisfaction
  • generate alternative solutions for a customer problem
  • plan an experiment to test an assumption
  • record discovery findings in an OST document

Example prompts for the agent

  • Build an opportunity tree for improving retention and suggest what evidence to gather.
  • Compare these customer needs by importance and satisfaction, then rank them.
  • Propose solutions and experiments for the leading opportunity and save the tree to docs/discovery/OST-retention.md.

How to install opportunity-solution-tree

1Skills CLI (Vercel)

npx skills add avelikiy/great_cto --skill opportunity-solution-tree -a claude-code

2Manually: put the files in place

~/.claude/skills/opportunity-solution-tree/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/opportunity-solution-tree/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about opportunity-solution-tree

How do I install opportunity-solution-tree in Claude Code?

Run npx skills add avelikiy/great_cto --skill opportunity-solution-tree -a claude-code. The skill file is at ~/.claude/skills/opportunity-solution-tree/SKILL.md.

What does opportunity-solution-tree do?

It organizes product discovery by linking a measurable outcome to customer needs, possible solutions, and experiments. It also provides a way to prioritize opportunities.

Where does the skill save the opportunity tree?

It writes the tree to docs/discovery/OST-<outcome-slug>.md. The document has an opportunity map, solution and experiment tables, and a learning log.

Source text

SKILL.md · MIT
---
name: opportunity-solution-tree
description: "Build an Opportunity Solution Tree (OST) to structure product discovery — map a desired outcome to customer opportunities, possible solutions, and experiments. Based on Teresa Torres' Continuous Discovery Habits. Use when the team is unclear what to build next, when multiple opportunities compete, or before writing a PRD for a complex feature space."
when_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 /spec prd)
  - You have a single, validated user story (use /spec prd directly)
  - This is a bug fix or technical debt item
effort: medium
allowed-tools: Read, Write, WebFetch, WebSearch
paths:
  - "docs/discovery/**"
---

# Opportunity Solution Tree (OST)

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).

---

## The 4-level structure

```
                    ┌─────────────────────┐
                    │   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:**
- One desired outcome at a time — don't try to solve everything
- Opportunities are customer problems/needs, never solutions
- Generate ≥3 solutions per opportunity before choosing one
- Experiments are the cheapest way to validate an assumption
- The tree is a living document — update weekly as you learn

---

## How to build an OST

### Step 1 — Define the desired outcome

Confirm or help the user articulate one measurable outcome at the top of the tree.

Good outcomes:
- "Increase 7-day retention from 20% to 35%"
- "Reduce time-to-first-value from 3 days to 1 day"
- "Increase conversion from free to paid from 2% to 5%"

Bad outcomes (reject these):
- "Build a better onboarding" — that's a solution
- "Improve the product" — unmeasurable
- "Launch feature X" — that's an output

If the user can't state a metric: ask "What would need to be true for you to consider this effort a success?"

### Step 2 — Map opportunities from research

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:**
- ✅ "I struggle to understand which plan is right for me"
- ✅ "I can't find past purchases quickly"
- ✅ "I feel anxious about whether my data is safe"
- ❌ "Users need a better search" — that's a solution

**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).
- High Importance + Low Satisfaction = highest score = best opportunity
- Plot on Importance vs Satisfaction chart — upper-left quadrant is the sweet spot

### Step 3 — Generate solutions (diverge before converging)

For each top-priority opportunity, brainstorm ≥3 solutions from three angles:
- **PM perspective**: What UX/product change addresses this?
- **Designer perspective**: What interaction or visual change?
- **Engineer perspective**: What technical approach? (often the most creative)

Rules:
- Don't commit to the first idea — compare and contrast
- "Best ideas often come from engineers" — include technical solutions
- Solutions should be independent (different solutions for the same opportunity)

### Step 4 — Design experiments

For the most promising solutions, design 1–2 fast experiments:

| Experiment | Assumption tested | Method | Success metric | Effort |
|------------|------------------|--------|---------------|--------|
| <experiment name> | <what belief this validates> | <A/B test / fake door / prototype / interview> | <metric + threshold> | <1d / 3d / 1w> |

**Assumption categories (prioritise in this order):**
1. **Value**: Will users want this? (most important to test first)
2. **Usability**: Can users figure it out?
3. **Feasibility**: Can we build it?
4. **Viability**: Does the business case work?

**Cheap experiment types:**
- Existing product: A/B test, fake door, prototype, user interview, data analysis
- New product: XYZ hypothesis ("At least X% of Y will do Z"), landing page, concierge MVP

### Step 5 — Visualise and document

Write `docs/discovery/OST-<outcome-slug>.md`:

```markdown
# 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>.
```

---

## Integration with /spec prd

Once an opportunity is validated and a solution is chosen:
→ Run `/spec 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)

---

## Anti-patterns

❌ **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.

© avelikiy · MIT · avelikiy/great_cto

Similar skills

All skills for Notes, tasks and projects →

opportunity-solution-tree by other authors comes first.

opportunity-solution-tree phuryn A skill that builds an Opportunity Solution Tree: outcome, customer needs, solutions, experiments. Use it when structuring discovery work or deciding what to build next. CX Codex +1 3,000installs opportunity-solution-tree deanpeters Turns a stakeholder request into a tree of outcomes, customer problems, solutions and experiments. Useful when someone asks for a feature and the real problem is unclear. CX Codex +1 2,800installs find-skills vercel-labs Discovers and installs agent skills from skills.sh directly inside your coding assistant. Handy when you need domain-specific workflows for a project. CX Codex +1 4,000,000installs grill-me Matt Pocock grill-me interviews you about a plan or design to expose gaps and sharpen decisions. Use it before implementation starts. 1,424,476installs grill-with-docs Matt Pocock This skill interviews you about a plan or design and creates ADRs and a glossary along the way. Use it when decisions need sharper definition. 1,219,756installs handoff Matt Pocock Creates a handoff document from the current conversation so another agent can continue the work. Use it when a task moves to a new session or agent. 1,038,491installs grilling Matt Pocock Stress-test a plan, decision, or idea through structured rounds of questions. Use it when you need to expose assumptions before acting. 979,543installs teach Matt Pocock Turns the current directory into a learning workspace and keeps progress across sessions. Use it when learning needs to support a concrete goal in your project. 862,247installs

From the same set26

quant-validation This skill lays out checks for financial-ML backtests, features, and labels. Use it to assess whether a reported result survives common validation pitfalls. CX Codex +1 ★ 107repo stars prose-style A writing contract for agent output: conclusion first, evidence over adjectives. Useful when a person reads the report, not a parser. CX Codex +1 ★ 107repo stars pre-mortem This skill works backward from a failed project to find specific causes and add safeguards to the plan. Run it before building high-impact or hard-to-reverse changes. CX Codex +1 ★ 107repo stars pm-planning Turns an approved architecture document into a Beads task list with dependencies, time-boxes and acceptance criteria. Built for the pm agent handing work to senior-dev. CX Codex +1 ★ 107repo stars observability-baseline Bakes error capture in Sentry, request-id structured logs and /healthz plus /readyz endpoints into a freshly generated service. Useful when the app is still being scaffolded and you don't want the first prod failure to go unseen. CX Codex +1 ★ 107repo stars lifecycle-messaging This skill guides the design of email and SMS messaging, covering consent, delivery, and the split between transactional and marketing messages. Use it when adding a messaging feature or choosing a provider. CX Codex +1 ★ 107repo stars great_cto The skill turns Claude into a pipeline orchestrator: you describe the task in plain words and the right agents run on their own. Useful when one agent drives a whole project. CX Codex +1 ★ 107repo stars done-blocked Enforces a strict terminal reporting contract for agents: exactly DONE or BLOCKED with structured evidence. Stops vague handoffs in multi-agent pipelines. CX Codex +1 ★ 107repo stars

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor