opportunity-solution-tree
について
このスキルは、製品発見の構造化のために機会解決ツリーを構築し、望ましい成果を顧客の機会、潜在的な解決策、検証可能な実験に対応付けます。テレサ・トーレスのフレームワークに基づいており、チームが次に何を構築すべきか不確かな場合や、複数の競合するアイデアの優先順位付けが必要な場合に最適です。PRD作成前に複雑な機能領域を明確化するために使用しますが、明確に定義されたストーリーやバグ修正には使用しません。
クイックインストール
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(Markdown/MDXファイルを型安全なデータコレクションに変換するTypeScriptファーストのツール)の本番環境でテストされた設定を提供します。Zodバリデーションによる型安全性を実現し、ブログ、ドキュメントサイト、コンテンツ重視のVite + Reactアプリケーション構築時にご利用ください。Viteプラグインの設定、MDXコンパイルから、デプロイ最適化、スキーマバリデーションまで、すべてを網羅しています。
polymarket
メタこのスキルは、開発者がPolymarket予測市場プラットフォームを活用したアプリケーション構築を可能にします。API統合による取引や市場データの取得に加え、WebSocketを介したリアルタイムデータストリーミングにより、ライブ取引や市場活動を監視できます。取引戦略の実装や、ライブ市場更新を処理するツールの作成にご利用ください。
creating-opencode-plugins
メタこのスキルは、開発者がコマンド、ファイル、LSP操作など25種類以上のイベントタイプにフックするOpenCodeプラグインを作成することを支援します。JavaScript/TypeScriptモジュール向けに、プラグイン構造、イベントAPI仕様、および実装パターンを提供します。カスタムイベント駆動ロジックでOpenCode AIアシスタントのライフサイクルをインターセプト、監視、または拡張する必要がある場合にご利用ください。
sglang
メタSGLangは、高性能なLLMサービングフレームワークであり、RadixAttentionプレフィックスキャッシュを活用したJSON、正規表現、エージェントワークフロー向けの高速で構造化された生成を特長とします。特にプレフィックスが繰り返されるタスクにおいて、大幅に高速な推論を実現し、複雑な構造化出力やマルチターン対話に最適です。制約付きデコードが必要な場合や、広範なプレフィックス共有を伴うアプリケーションを構築する場合は、vLLMなどの代替案ではなくSGLangを選択してください。
