@unified-product-graph/cli 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/LICENSE +21 -0
  3. package/README.md +247 -0
  4. package/dist/cli.cjs +141010 -0
  5. package/package.json +65 -0
  6. package/skills/README.md +10 -0
  7. package/skills/upg/SKILL.md +245 -0
  8. package/skills/upg-analytics/SKILL.md +135 -0
  9. package/skills/upg-capture/SKILL.md +274 -0
  10. package/skills/upg-connect/SKILL.md +167 -0
  11. package/skills/upg-context/SKILL.md +506 -0
  12. package/skills/upg-context-intelligence/SKILL.md +227 -0
  13. package/skills/upg-design-system/SKILL.md +265 -0
  14. package/skills/upg-diff/SKILL.md +150 -0
  15. package/skills/upg-discover/SKILL.md +290 -0
  16. package/skills/upg-explore/SKILL-DETAIL.md +481 -0
  17. package/skills/upg-explore/SKILL.md +297 -0
  18. package/skills/upg-export/SKILL.md +385 -0
  19. package/skills/upg-feedback/SKILL.md +141 -0
  20. package/skills/upg-gaps/SKILL.md +376 -0
  21. package/skills/upg-hypothesis/SKILL.md +190 -0
  22. package/skills/upg-impact/SKILL.md +229 -0
  23. package/skills/upg-import/SKILL.md +189 -0
  24. package/skills/upg-init/SKILL.md +410 -0
  25. package/skills/upg-inspect/SKILL.md +167 -0
  26. package/skills/upg-journey/SKILL.md +207 -0
  27. package/skills/upg-launch/SKILL-DETAIL.md +392 -0
  28. package/skills/upg-launch/SKILL.md +141 -0
  29. package/skills/upg-migrate/SKILL.md +146 -0
  30. package/skills/upg-okr/SKILL-DETAIL.md +351 -0
  31. package/skills/upg-okr/SKILL.md +88 -0
  32. package/skills/upg-persona/SKILL.md +230 -0
  33. package/skills/upg-prioritise/SKILL.md +195 -0
  34. package/skills/upg-pull/SKILL-DETAIL.md +398 -0
  35. package/skills/upg-pull/SKILL.md +57 -0
  36. package/skills/upg-push/SKILL-DETAIL.md +385 -0
  37. package/skills/upg-push/SKILL.md +113 -0
  38. package/skills/upg-reflect/SKILL.md +201 -0
  39. package/skills/upg-research/SKILL.md +336 -0
  40. package/skills/upg-rollback/SKILL.md +163 -0
  41. package/skills/upg-run/SKILL.md +126 -0
  42. package/skills/upg-schema-changelog/SKILL.md +231 -0
  43. package/skills/upg-schema-consolidate/SKILL.md +243 -0
  44. package/skills/upg-schema-edges/SKILL.md +287 -0
  45. package/skills/upg-schema-evolve/SKILL.md +313 -0
  46. package/skills/upg-schema-health/SKILL.md +279 -0
  47. package/skills/upg-schema-update/SKILL.md +206 -0
  48. package/skills/upg-snapshot/SKILL.md +108 -0
  49. package/skills/upg-status/SKILL.md +340 -0
  50. package/skills/upg-strategy/SKILL.md +334 -0
  51. package/skills/upg-template/SKILL.md +145 -0
  52. package/skills/upg-trace/SKILL.md +197 -0
  53. package/skills/upg-tree/SKILL.md +233 -0
  54. package/skills/upg-verify/SKILL.md +223 -0
  55. package/skills/upg-workspace/SKILL.md +103 -0
@@ -0,0 +1,141 @@
1
+ ---
2
+ name: upg-feedback
3
+ description: "Share feedback about the Unified Product Graph — bugs, feature requests, ideas. Sent directly to the UPG team."
4
+ user-invocable: true
5
+ argument-hint: "[bug|feature|observation]"
6
+ category: tooling
7
+ ---
8
+
9
+ # /upg-feedback — Share Feedback with the UPG Team
10
+
11
+ You collect user feedback about the UPG and send it to the team. Fast, transparent, private. No graph mutations — this is about THEIR feedback to US.
12
+
13
+ **Before producing any output, read the design system:** `/upg-context` for emoji mappings, formatting rules, and shared interaction patterns.
14
+
15
+ ## Tools
16
+
17
+ - `mcp__unified-product-graph__get_product_context` and `mcp__unified-product-graph__get_graph_digest` — for automatic context gathering only
18
+ - `WebFetch` — to POST the feedback payload
19
+
20
+ ## Flow
21
+
22
+ ### Step 1: Open
23
+
24
+ > Your feedback shapes how the Unified Product Graph evolves. This takes about **30 seconds**.
25
+
26
+ ### Step 2: Ask Type
27
+
28
+ Skip this if the user provided `bug`, `feature`, or `observation` as an argument.
29
+
30
+ ```
31
+ What kind of feedback?
32
+
33
+ 1. bug — something broke or behaves unexpectedly
34
+ 2. feature_request — something you wish existed
35
+ 3. observation — a workflow friction, UX thought, or general note
36
+ 4. general — anything else
37
+ ```
38
+
39
+ ONE question. Wait for answer.
40
+
41
+ ### Step 3: Ask Title
42
+
43
+ > Give it a one-sentence title.
44
+
45
+ Wait for answer.
46
+
47
+ ### Step 4: Ask Description
48
+
49
+ > Now the details — what were you doing, what happened, what did you expect? For feature requests: what would this unlock for you?
50
+
51
+ Wait for answer.
52
+
53
+ ### Step 5: Gather Context (silent — no questions)
54
+
55
+ Collect metadata automatically. **Never read or send node titles, descriptions, or graph content.**
56
+
57
+ - **UPG version**: read from `get_product_context` if available, otherwise `"0.2.0"`
58
+ - **Product stage**: read from `get_product_context` if available
59
+ - **Entity count**: read from `get_graph_digest` if available
60
+ - **Recent skill**: scan conversation history for the most recent `/upg-*` invocation
61
+
62
+ If MCP calls fail, use defaults silently. Don't slow down the flow.
63
+
64
+ ### Step 6: Show Payload (mandatory)
65
+
66
+ Transparency is critical. Show exactly what will be sent:
67
+
68
+ ```
69
+ Here's what I'll send to the UPG team:
70
+
71
+ Type: <type>
72
+ Title: "<title>"
73
+ Description: "<description>"
74
+ Context: UPG v<version> · <stage> stage · <N> entities · from <skill>
75
+
76
+ No product graph data is included — just your feedback + metadata above.
77
+
78
+ Send it? (y/n)
79
+ ```
80
+
81
+ Wait for confirmation. If they say no, ask what to change or cancel gracefully.
82
+
83
+ ### Step 7: Send
84
+
85
+ POST to `https://cloud.unifiedproductgraph.org/api/feedback` with JSON body:
86
+
87
+ ```json
88
+ {
89
+ "type": "<bug|feature_request|observation|general>",
90
+ "title": "<title>",
91
+ "description": "<description>",
92
+ "context": {
93
+ "upg_version": "<version>",
94
+ "product_stage": "<stage>",
95
+ "entity_count": <N>,
96
+ "from_skill": "<skill or null>"
97
+ }
98
+ }
99
+ ```
100
+
101
+ ### Step 8: Confirm
102
+
103
+ On success:
104
+
105
+ ```
106
+ Feedback sent — thank you!
107
+
108
+ Your input directly shapes the Unified Product Graph.
109
+ The team reviews every submission.
110
+ ```
111
+
112
+ On failure (network error, non-2xx response): save feedback as markdown in the project root:
113
+
114
+ ```
115
+ I couldn't reach the server right now. I've saved your feedback locally
116
+ as upg-feedback-YYYY-MM-DD.md — you can send it manually or try again later.
117
+ ```
118
+
119
+ The fallback file format:
120
+
121
+ ```markdown
122
+ # UPG Feedback — YYYY-MM-DD
123
+
124
+ **Type:** <type>
125
+ **Title:** <title>
126
+ **Description:** <description>
127
+ **Context:** UPG v<version> · <stage> · <N> entities · from <skill>
128
+ ```
129
+
130
+ ## Key Principles
131
+
132
+ - **FAST.** 30 seconds. Three questions max (type + title + description), then confirm and send.
133
+ - **One question at a time.** Never batch questions.
134
+ - **NEVER send product graph data.** Only feedback text + opt-in metadata shown in the payload preview.
135
+ - **Show before sending.** The user must see and approve the exact payload.
136
+ - **No graph mutations.** Feedback only — no entities created.
137
+ - **Graceful degradation.** If MCP calls or the POST fail, keep going with defaults and local fallback.
138
+
139
+ ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
140
+ Your .upg file is yours — open standard, portable, git-friendly.
141
+ unifiedproductgraph.org
@@ -0,0 +1,376 @@
1
+ ---
2
+ name: upg-gaps
3
+ description: "Strategic Gap Analysis & Maturity Scoring"
4
+ user-invocable: true
5
+ argument-hint: "[description]"
6
+ category: cognitive
7
+ approaches: [inspect, prioritise]
8
+ ---
9
+
10
+ # /upg-gaps — Strategic Gap Analysis & Maturity Scoring
11
+
12
+ You are a Unified Product Graph strategic advisor. Your job is to analyze the product graph for gaps, explain WHY each gap matters in product terms, prioritize by impact, calculate a maturity score, score against the tiered entity backbone, and provide specific actionable next steps.
13
+
14
+ **Before producing any output, load the design system:** `/upg-context` (interaction principles, design system, lens rules) and `/upg-context-intelligence` (benchmarks, user personas, product philosophy).
15
+
16
+ ## Tools
17
+
18
+ Use the `mcp__unified-product-graph__*` MCP tools (get_product_context with include_summary: true, list_nodes, get_node, search_nodes, query).
19
+
20
+ **Boundary, in plain English:**
21
+ - `/upg-status --quick` answers *"is anything bleeding right now?"* (the pulse).
22
+ - `/upg-status --full` answers *"how mature is my product graph?"* (the dashboard).
23
+ - **This skill (`/upg-gaps`)** answers *"what should I do next, and why?"* — deep gap analysis with WHY explanations, prioritised action plans, and forward-looking risk + blind-spot scanning. Skip maturity score rendering — that's `/upg-status --full` territory. Focus on: structural gaps, business area coverage, the action plan, and forward-looking risk signals.
24
+
25
+ ## Analysis Flow
26
+
27
+ ### Step 1: Fetch Full Graph State
28
+
29
+ ```
30
+ get_graph_digest()
31
+ ```
32
+
33
+ The digest pre-computes counts, health metrics, chain completeness (`chains` section), and business area coverage (`coverage` section) — all in ~500 tokens. Use the `query` tool only for structural gap details (e.g. which specific personas lack jobs).
34
+
35
+ **Read the product stage** from `get_product_context()`. The stage lives in the product properties and is one of: `idea`, `mvp`, `growth`, `scale`. If no stage is set, default to `idea`.
36
+
37
+ **Map stage to tier:**
38
+
39
+ | Stage | Tier | Target Types |
40
+ |---|---|---|
41
+ | `idea` or `mvp` | Solo Builder | 40 core types |
42
+ | `growth` | Small Team | 55 types |
43
+ | `scale` | Scale-Up | 70 types |
44
+
45
+ This tier determines the denominator for the business completeness score in Step 4b.
46
+
47
+ ### Step 2: Check Structural Gaps
48
+
49
+ Analyze gaps in priority order (validation > discovery > strategy > execution). For each gap found, explain WHY it matters. Use entity emojis when referencing types.
50
+
51
+ #### ⚗️ Validation Gaps (Highest Priority)
52
+
53
+ **Hypotheses without experiments:**
54
+ > ⚗️ You have **X** hypotheses with no 🧪 experiments. Untested assumptions are the #1 cause of product failure. Every bet you're making is currently just an opinion.
55
+ > → `/upg-explore an experiment to test "<hypothesis title>"`
56
+
57
+ **Experiments without learnings:**
58
+ > 🧪 **X** experiments have no 📝 learnings. If you ran a test but didn't capture the result, the insight is lost.
59
+ > → `/upg-explore a learning from the "<experiment title>" experiment`
60
+
61
+ **Solutions without hypotheses:**
62
+ > 🔧 **X** solutions have no ⚗️ hypothesis. You're building without stating what you believe will happen.
63
+ > → `/upg-hypothesis for "<solution title>"`
64
+
65
+ #### 💡 Discovery Gaps (High Priority)
66
+
67
+ **Personas without jobs:**
68
+ > 👤 **X** personas have no 💼 jobs. Without knowing what job they're hiring your product to do, you're guessing at what to build.
69
+ > → `/upg-explore a job for <persona name>`
70
+
71
+ **Jobs without needs:**
72
+ > 💼 **X** jobs have no 🔥 needs. You know the job, but not where the experience breaks down.
73
+ > → `/upg-explore a need for "<job title>"`
74
+
75
+ **Outcomes without opportunities:**
76
+ > 🎯 **X** outcomes have no 💡 opportunities. You know what success looks like but haven't identified problems worth solving.
77
+ > → `/upg-discover` to run a guided discovery session
78
+
79
+ #### 🎯 Strategy Gaps (Medium Priority)
80
+
81
+ **Outcomes without metrics (KPIs):**
82
+ > 🎯 **X** outcomes have no 📊 metrics. A goal without a metric is just a wish.
83
+ > → `/upg-explore a metric (designation: "kpi") for "<outcome title>"`
84
+
85
+ **No personas at all:**
86
+ > Your graph has zero 👤 personas. Who are you building for?
87
+ > → `/upg-persona` to create a rich, detailed persona
88
+
89
+ **No competitors mapped:**
90
+ > No ⚔️ competitors in your graph. Your users are solving this problem somehow today.
91
+ > → `/upg-explore a competitor`
92
+
93
+ #### 📦 Execution Gaps (Lower Priority)
94
+
95
+ **Features without user stories:**
96
+ > 📦 **X** features have no 📄 user stories. You know WHAT to build but haven't broken it down.
97
+
98
+ **Features without epics:**
99
+ > 📦 **X** features have no 📋 epics. Breaking features into epics helps manage scope.
100
+
101
+ ### Step 2.5: Forward-Looking Risk & Blind-Spot Signals
102
+
103
+ Structural gaps tell you *what's missing right now*. This step interprets the graph for **future risk** — patterns that predict where the product will get into trouble next. Only report signals that fire; skip clean ones.
104
+
105
+ #### Risk Signals
106
+
107
+ | Signal | Condition | Level |
108
+ |--------|-----------|-------|
109
+ | Untested bets | ⚗️ hypotheses with status `untested` (or no status), created >14 days ago | 🔴 High |
110
+ | Assumption-based personas | 👤 personas with no connected 🔬 research_study or 💎 insight | 🟡 Medium |
111
+ | Orphan features | 📦 features not connected to any 👤 persona (directly or via job chain) | 🔴 High |
112
+ | Missing business model | Product at `mvp` or `growth` stage, zero 💰 business_model entities | 🔴 High |
113
+ | Need without response | 🔥 needs with no connected 💡 opportunity | 🟡 Medium |
114
+ | Validated but unbuilt | ⚗️ hypotheses with status `validated` but no connected 📦 feature | 🟡 Medium |
115
+ | No learning loop | Zero 🧪 experiment or 📝 learning entities, AND >10 📦 features | 🔴 High |
116
+
117
+ #### Benchmark Comparison
118
+
119
+ Compare against known PM benchmarks. Adapt expected values to product stage.
120
+
121
+ | Benchmark | Expected (idea/mvp) | Expected (growth+) | Source |
122
+ |-----------|---------------------|---------------------|--------|
123
+ | Personas | 2-4 | 3-6 | Lean Startup (Ries) |
124
+ | Jobs per persona | >=2 | >=3 | JTBD (Christensen) |
125
+ | Hypothesis-to-learning ratio | >=1:1 | >=1:1 | Discovery (Torres) |
126
+ | Evidence density (learnings + insights / hypotheses) | >=0.5 | >=1.0 | Discovery (Torres) |
127
+
128
+ Flag benchmarks the graph fails to meet — name the source so the recommendation is grounded in product practice, not opinion.
129
+
130
+ #### Blind Spots (the things NOT in the graph)
131
+
132
+ Look at what's structurally absent given the product's stage and shape. Examples:
133
+
134
+ - Product at `growth` stage with no 💰 pricing_strategy → revenue blind spot.
135
+ - Multiple ⚗️ hypotheses but zero ⚔️ competitors → "we're alone" blind spot.
136
+ - Many 📦 features but no 🎯 outcomes → execution-without-strategy blind spot.
137
+ - Many 🎯 outcomes but no 📊 metrics → strategy-without-measurement blind spot.
138
+
139
+ Name each blind spot in plain language, then INTERPRET — what does this pattern mean for the product? End each blind spot with a specific `/upg-` command.
140
+
141
+ > **Strategy-without-measurement.** You have 6 outcomes but only 1 metric. Without measurement you can't tell which outcomes you're hitting. → `/upg-explore metric` for each outcome.
142
+
143
+ Render this section under a heading like:
144
+
145
+ > ### 🔭 Forward-Looking Signals
146
+
147
+ with three subsections: **Risk**, **Benchmarks**, **Blind spots**.
148
+
149
+ ### Step 3: Calculate Maturity Score
150
+
151
+ Score the graph from 1 to 5:
152
+
153
+ | Score | Label | Threshold |
154
+ |---|---|---|
155
+ | ● ○ ○ ○ ○ | Just Started | < 5 entities, < 2 types |
156
+ | ● ● ○ ○ ○ | Building Foundation | 5-15 entities, 3-5 types, has personas + (outcomes OR jobs) |
157
+ | ● ● ● ○ ○ | Exploring | 15-30 entities, 5-8 types, has hypotheses OR opportunities |
158
+ | ● ● ● ● ○ | Validating | 30-50 entities, 8-12 types, has experiments + learnings |
159
+ | ● ● ● ● ● | Executing | 50+ entities, 12+ types, has features + releases + metrics (KPIs) |
160
+
161
+ Display:
162
+
163
+ MATURITY ● ● ● ○ ○ **3/5** — *Exploring*
164
+
165
+ > *You're asking the right questions — now it's time to test your assumptions.*
166
+
167
+ ### Step 4: Lifecycle Phase Balance
168
+
169
+ Show which phases are well-covered using a table with filled bars:
170
+
171
+ | Phase | | | |
172
+ |---|---|---|---|
173
+ | 🎯 Strategy | **12** | `▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓` | ✓ Strong |
174
+ | 👤 Users | **8** | `▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓` | ✓ Good |
175
+ | 💡 Discovery | **6** | `▓▓▓▓▓▓▓▓▓▓▓▓` | Developing |
176
+ | ⚗️ Validation | **2** | `▓▓▓▓` | ← **WEAK** |
177
+ | 📦 Execution | **1** | `▓▓` | Early |
178
+
179
+ ### Step 4b: Business Area Coverage
180
+
181
+ This section scores the graph against the **8 business areas** — the fundamental domains every product needs to cover. The target count per area depends on the product's tier (determined by stage in Step 1).
182
+
183
+ #### The 8 Business Areas
184
+
185
+ Each area maps to specific entity types. Count how many of the listed types have **at least 1 entity** in the graph.
186
+
187
+ | Area | Entity Types (Solo Builder tier) |
188
+ |---|---|
189
+ | 🎯 **Identity** | product, vision, mission |
190
+ | 👤 **Understanding** | persona, job, need, research_study, insight |
191
+ | 💡 **Discovery** | opportunity, solution, competitor, hypothesis, experiment, learning |
192
+ | 📣 **Reaching** | positioning, messaging, ideal_customer_profile, acquisition_channel, content_strategy |
193
+ | 💰 **Converting** | value_proposition, pricing_tier, funnel, funnel_step |
194
+ | 📦 **Building** | feature, user_story, epic, release, user_journey, acceptance_criterion |
195
+ | 🏦 **Sustaining** | business_model, revenue_stream, cost_structure, partnership, metric |
196
+ | 📊 **Learning** | outcome, metric, objective, key_result, retrospective, customer_feedback |
197
+
198
+ At **Small Team** tier (growth), add these clusters to the scoring:
199
+
200
+ | Cluster | Additional Types |
201
+ |---|---|
202
+ | 🧑‍🤝‍🧑 **Team Coordination** | team, role, stakeholder, dependency, milestone |
203
+ | 🎨 **Design Alignment** | prototype, wireframe, design_component, user_flow |
204
+ | 📣 **User Signal** | feature_request, feedback_theme, growth_loop, roadmap, nps_campaign |
205
+
206
+ At **Scale-Up** tier (scale), add further:
207
+
208
+ | Cluster | Additional Types |
209
+ |---|---|
210
+ | 🏗️ **Platform** | integration_pattern, api_endpoint, data_model, decision (layer: engineering) |
211
+ | 🔒 **Governance** | security_policy, compliance_requirement, risk, security_audit |
212
+
213
+ #### Display Format
214
+
215
+ Show a table with one row per business area. For each area:
216
+ - **Status**: `✓` if all types in that area have at least 1 entity, `●` if partially covered, `✗` if zero coverage
217
+ - **Coverage**: fraction of types covered, then list the covered types (and missing ones for partial areas)
218
+
219
+ ```
220
+ BUSINESS COVERAGE
221
+ ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
222
+ ```
223
+
224
+ | Area | Status | Coverage |
225
+ |---|---|---|
226
+ | 🎯 Identity | ✓ 3/3 | product, vision, mission |
227
+ | 👤 Understanding | ✓ 4/5 | persona, job, need, research_study |
228
+ | 💡 Discovery | ✓ 6/6 | opportunity, solution, competitor, hypothesis, experiment, learning |
229
+ | 📣 Reaching | ● 2/5 | positioning, messaging — *missing: ideal_customer_profile, acquisition_channel, content_strategy* |
230
+ | 💰 Converting | ● 1/4 | value_proposition — *missing: pricing_tier, funnel, funnel_step* |
231
+ | 📦 Building | ✓ 5/6 | feature, user_story, epic, release, user_journey |
232
+ | 🏦 Sustaining | ✗ 0/5 | ← *not started — no business model, revenue, or costs* |
233
+ | 📊 Learning | ✓ 5/6 | outcome, metric, objective, key_result, retrospective |
234
+
235
+ #### Business Completeness Score
236
+
237
+ Calculate the total number of types (across all 8 areas for the current tier) that have at least 1 entity, divided by the total target types for that tier.
238
+
239
+ Display with a filled bar:
240
+
241
+ ```
242
+ Business Completeness: 26/40 (65%) for Solo Builder stage
243
+ ▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░ 65%
244
+ ```
245
+
246
+ Then a brief summary highlighting the gaps:
247
+
248
+ > You've covered **6 of 8** business areas. Two gaps:
249
+ > ⚠️ **Reaching** — you haven't thought about how people find your product
250
+ > ⚠️ **Sustaining** — no business model yet. Is this a hobby or a business?
251
+
252
+ For areas with `✗` (zero coverage), be direct — these are blind spots.
253
+ For areas with `●` (partial), note what's missing and why it matters.
254
+ For areas with `✓` (full), celebrate briefly.
255
+
256
+ #### Higher-Tier Preview
257
+
258
+ If the product stage maps to a higher tier than Solo Builder, include the additional clusters in the scoring.
259
+
260
+ If the product is at Solo Builder but the graph is mature enough to suggest growth, mention what the next tier would add:
261
+
262
+ > At **growth** stage, you'd also need:
263
+ > 🧑‍🤝‍🧑 **Team Coordination** — team, roles, stakeholders, dependencies, milestones
264
+ > 🎨 **Design Alignment** — prototypes, wireframes, components, onboarding
265
+ > 📣 **User Signal** — feature requests, feedback themes, growth loops, roadmap
266
+
267
+ This is informational, not a gap — frame it as "when you're ready" rather than "you're missing this."
268
+
269
+ ### Step 5: Prioritized Action Plan
270
+
271
+ Present the top 3-5 actions, ordered by impact. **Business area gaps take priority alongside validation gaps.** Use this priority order:
272
+
273
+ 1. **Validation gaps** (untested hypotheses) — always highest
274
+ 2. **Business area gaps with ✗ (zero coverage)** — blind spots are critical
275
+ 3. **Discovery gaps** (missing connections)
276
+ 4. **Business area gaps with ● (partial coverage)** — fill in the remaining types
277
+ 5. **Strategy and execution gaps**
278
+
279
+ If **🏦 Sustaining** has zero coverage, this is always a top-3 action:
280
+
281
+ **[CRITICAL]** 🏦 You don't have a business model yet
282
+ Your graph has zero entities in the Sustaining area — no business model, no revenue streams, no cost structure. Every product needs to answer "how does this make money?"
283
+ → `/upg-explore a business model for this product`
284
+
285
+ If **📣 Reaching** has zero or low coverage:
286
+
287
+ **[HIGH]** 📣 No go-to-market thinking
288
+ You've built the product in your graph but haven't thought about how people find it. Who's your ideal customer? What channels will you use?
289
+ → `/upg-explore an ideal customer profile`
290
+
291
+ If **💰 Converting** has zero or low coverage:
292
+
293
+ **[HIGH]** 💰 No conversion path
294
+ You know your value proposition but haven't mapped the journey from awareness to paying customer.
295
+ → `/upg-explore a pricing model`
296
+
297
+ Example full action plan:
298
+
299
+ **1. [CRITICAL]** ⚗️ Test your hypotheses
300
+ You have 4 untested hypotheses. Pick the riskiest one and design an experiment.
301
+ → `/upg-hypothesis` to structure a new one
302
+
303
+ **2. [CRITICAL]** 🏦 Define your business model
304
+ Your graph has nothing in the Sustaining area. How does this product make money? What does it cost to run?
305
+ → `/upg-explore a business model for this product`
306
+
307
+ **3. [HIGH]** 📣 Think about distribution
308
+ You've only covered 2 of 5 Reaching types. Who's your ideal customer profile? What channels will you use?
309
+ → `/upg-explore an ideal customer profile`
310
+
311
+ **4. [HIGH]** 💼 Add jobs for Sarah Chen
312
+ Your primary persona has no Jobs-to-be-Done defined.
313
+ → `/upg-explore a job for Sarah Chen`
314
+
315
+ **5. [MEDIUM]** 📊 Measure your outcomes
316
+ "Reduce time-to-value" has no metric. Define the metric and targets.
317
+ → `/upg-explore a metric (designation: "kpi") for "Reduce time-to-value"`
318
+
319
+ ### Step 6: Framework Recommendations
320
+
321
+ Based on gaps, suggest which frameworks would help:
322
+
323
+ > **Opportunity Solution Tree** *(Teresa Torres, 2021)* — Your discovery chain is incomplete. OST would structure outcome → opportunity → solution → experiment.
324
+ > Try: `/upg-tree ost`
325
+
326
+ ### Step 7: Closing
327
+
328
+ ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
329
+ Your `.upg` file is yours — open standard, portable, git-friendly.
330
+ unifiedproductgraph.org
331
+
332
+ After rendering the gap analysis and your recommendation, call:
333
+ `update_session_context({ skill_invoked: "upg-gaps", recommendation: "<the next skill you recommended>" })`
334
+
335
+ ## Lens-Aware Gap Analysis
336
+
337
+ Check `get_session_context()` for the current lens. **Prepend lens-specific gaps** before the standard gap analysis:
338
+
339
+ **Engineering lens — prepend these gaps:**
340
+
341
+ 1. **Bugs without resolution:** 🐛 N bugs have no linked task or fix
342
+ → `/upg-explore task` to plan a fix
343
+ 2. **Features without dependency tracking:** 📦 N in-progress features have no dependency edges
344
+ → `/upg-connect` to add blocks/enables edges
345
+ 3. **Blockers without resolution:** 🔴 N blocking edges have no resolution
346
+ → Update each with a resolution plan
347
+ 4. **Orphaned tasks:** 📋 N tasks not connected to any feature or story
348
+ 5. **Investigations stalled:** 🔍 N investigations with no findings
349
+
350
+ **Design lens — prepend these gaps:**
351
+
352
+ 1. **Screens without flows:** 🖼 N screens have no connected user_flow
353
+ 2. **Components without features:** 🧩 N components not linked to any feature
354
+ 3. **Missing screen states:** N screens have fewer than 3 state variants
355
+ 4. **No design system:** No design_system entity exists
356
+ 5. **Open design decisions:** 📝 N decisions (layer: design) still proposed
357
+
358
+ **Growth lens — prepend these gaps:**
359
+
360
+ 1. **No funnels:** No funnel entities defined
361
+ 2. **Channels without growth campaigns:** 📡 N channels have no growth_campaign entities
362
+ 3. **No positioning:** No positioning entity exists
363
+ 4. **No ICP:** No ideal_customer_profile entity exists
364
+ 5. **Funnels without metrics:** 📊 N funnels have no connected metrics
365
+
366
+ After the lens-specific gaps, show the standard gap analysis (business areas, chains, etc.) as "Also consider:" — these remain valuable regardless of lens.
367
+
368
+ ## Key Principles
369
+
370
+ - **Explain WHY, not just WHAT.** "3 hypotheses have no experiments" is data. "Untested assumptions are the #1 cause of product failure" is insight.
371
+ - **Prioritize by impact.** Validation gaps > business area blind spots > discovery gaps > strategy gaps > execution gaps.
372
+ - **Give specific prompts.** Don't just say "add experiments" — give the exact command with the entity name.
373
+ - **Be encouraging.** Celebrate where they are, then show what's next.
374
+ - **Follow the design system.** Entity emojis, score dots, filled bars, dashed dividers, annotation arrows.
375
+ - **Stage-aware scoring.** Always score against the tier that matches the product's stage. Don't overwhelm a Solo Builder with Scale-Up expectations.
376
+ - **Business areas are non-negotiable.** Every product — even at idea stage — should eventually think about all 8 areas. Gaps in Sustaining and Reaching are the most common blind spots for builders who love the product side.