opportunity-solution-tree
关于
This skill builds an Opportunity Solution Tree to structure product discovery, mapping a desired outcome to customer opportunities, potential solutions, and testable experiments. It's based on Teresa Torres' framework and is ideal for when a team is unsure what to build next or needs to prioritize multiple competing ideas. Use it to clarify complex feature spaces before creating a PRD, but not for well-defined stories or bug fixes.
快速安装
Claude Code
推荐npx skills add avelikiy/great_cto -a claude-code/plugin add https://github.com/avelikiy/great_ctogit clone https://github.com/avelikiy/great_cto.git ~/.claude/skills/opportunity-solution-tree在 Claude Code 中复制并粘贴此命令以安装该技能
技能文档
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):
- Value: Will users want this? (most important to test first)
- Usability: Can users figure it out?
- Feasibility: Can we build it?
- 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:
# 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 /prd
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)
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.
GitHub 仓库
相关推荐技能
content-collections
元Content Collections 是一个 TypeScript 优先的构建工具,可将本地 Markdown/MDX 文件转换为类型安全的数据集合。它专为构建博客、文档站和内容密集型 Vite+React 应用而设计,提供基于 Zod 的自动模式验证。该工具涵盖从 Vite 插件配置、MDX 编译到生产环境部署的完整工作流。
polymarket
元这个Claude Skill为开发者提供完整的Polymarket预测市场开发支持,涵盖API调用、交易执行和市场数据分析。关键特性包括实时WebSocket数据流,可监控实时交易、订单和市场动态。开发者可用它构建预测市场应用、实施交易策略并集成实时市场预测功能。
creating-opencode-plugins
元该Skill帮助开发者创建OpenCode插件,用于接入命令、文件、LSP等25+种事件。它提供了插件结构、事件API规范和JavaScript/TypeScript实现模式,适合需要拦截操作、扩展功能或自定义事件处理的场景。开发者可通过它快速构建响应式模块来增强OpenCode AI助手的能力。
sglang
元SGLang是一个专为LLM设计的高性能推理框架,特别适用于需要结构化输出的场景。它通过RadixAttention前缀缓存技术,在处理JSON、正则表达式、工具调用等具有重复前缀的复杂工作流时,能实现极速生成。如果你正在构建智能体或多轮对话系统,并追求远超vLLM的推理性能,SGLang是理想选择。
