@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.
- package/CHANGELOG.md +24 -0
- package/LICENSE +21 -0
- package/README.md +247 -0
- package/dist/cli.cjs +141010 -0
- package/package.json +65 -0
- package/skills/README.md +10 -0
- package/skills/upg/SKILL.md +245 -0
- package/skills/upg-analytics/SKILL.md +135 -0
- package/skills/upg-capture/SKILL.md +274 -0
- package/skills/upg-connect/SKILL.md +167 -0
- package/skills/upg-context/SKILL.md +506 -0
- package/skills/upg-context-intelligence/SKILL.md +227 -0
- package/skills/upg-design-system/SKILL.md +265 -0
- package/skills/upg-diff/SKILL.md +150 -0
- package/skills/upg-discover/SKILL.md +290 -0
- package/skills/upg-explore/SKILL-DETAIL.md +481 -0
- package/skills/upg-explore/SKILL.md +297 -0
- package/skills/upg-export/SKILL.md +385 -0
- package/skills/upg-feedback/SKILL.md +141 -0
- package/skills/upg-gaps/SKILL.md +376 -0
- package/skills/upg-hypothesis/SKILL.md +190 -0
- package/skills/upg-impact/SKILL.md +229 -0
- package/skills/upg-import/SKILL.md +189 -0
- package/skills/upg-init/SKILL.md +410 -0
- package/skills/upg-inspect/SKILL.md +167 -0
- package/skills/upg-journey/SKILL.md +207 -0
- package/skills/upg-launch/SKILL-DETAIL.md +392 -0
- package/skills/upg-launch/SKILL.md +141 -0
- package/skills/upg-migrate/SKILL.md +146 -0
- package/skills/upg-okr/SKILL-DETAIL.md +351 -0
- package/skills/upg-okr/SKILL.md +88 -0
- package/skills/upg-persona/SKILL.md +230 -0
- package/skills/upg-prioritise/SKILL.md +195 -0
- package/skills/upg-pull/SKILL-DETAIL.md +398 -0
- package/skills/upg-pull/SKILL.md +57 -0
- package/skills/upg-push/SKILL-DETAIL.md +385 -0
- package/skills/upg-push/SKILL.md +113 -0
- package/skills/upg-reflect/SKILL.md +201 -0
- package/skills/upg-research/SKILL.md +336 -0
- package/skills/upg-rollback/SKILL.md +163 -0
- package/skills/upg-run/SKILL.md +126 -0
- package/skills/upg-schema-changelog/SKILL.md +231 -0
- package/skills/upg-schema-consolidate/SKILL.md +243 -0
- package/skills/upg-schema-edges/SKILL.md +287 -0
- package/skills/upg-schema-evolve/SKILL.md +313 -0
- package/skills/upg-schema-health/SKILL.md +279 -0
- package/skills/upg-schema-update/SKILL.md +206 -0
- package/skills/upg-snapshot/SKILL.md +108 -0
- package/skills/upg-status/SKILL.md +340 -0
- package/skills/upg-strategy/SKILL.md +334 -0
- package/skills/upg-template/SKILL.md +145 -0
- package/skills/upg-trace/SKILL.md +197 -0
- package/skills/upg-tree/SKILL.md +233 -0
- package/skills/upg-verify/SKILL.md +223 -0
- 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.
|