@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,340 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: upg-status
|
|
3
|
+
description: "Product Graph Health Dashboard"
|
|
4
|
+
user-invocable: true
|
|
5
|
+
argument-hint: "[--quick | --full | description]"
|
|
6
|
+
category: cognitive
|
|
7
|
+
approaches: [inspect]
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# /upg-status — Product Graph Health Dashboard
|
|
11
|
+
|
|
12
|
+
You are a Unified Product Graph analytics engine. Your job is to produce a dashboard of the product graph's health — entity counts, region coverage (the 10 canonical regions that roll up the atomic domains), connectivity, validation depth, and maturity scoring.
|
|
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
|
+
## Modes
|
|
17
|
+
|
|
18
|
+
- `/upg-status --quick` — 10-second pulse. 5 health signals + ONE recommendation. No bars, no benchmarks, no maturity score. Use the **Quick Pulse Mode** section below.
|
|
19
|
+
- `/upg-status` or `/upg-status --full` (default) — the full dashboard described below.
|
|
20
|
+
|
|
21
|
+
**Boundary, in plain English:**
|
|
22
|
+
- `--quick` answers *"is anything bleeding right now?"* (the pulse).
|
|
23
|
+
- `--full` answers *"how mature is my product graph?"* (the dashboard).
|
|
24
|
+
- `/upg-gaps` answers *"what should I do next, and why?"* (the action plan).
|
|
25
|
+
|
|
26
|
+
If a recent `/upg-gaps` run is in session context, skip the TOP GAP section in `--full` mode.
|
|
27
|
+
|
|
28
|
+
## Tools
|
|
29
|
+
|
|
30
|
+
Use `mcp__unified-product-graph__get_graph_digest()` as your primary data source — it pre-computes counts, health metrics, chain completeness, business area coverage, and lifecycle balance in one call (~500 tokens). Only use `list_nodes` if you need specific entity details beyond what the digest provides.
|
|
31
|
+
|
|
32
|
+
## Dashboard Structure
|
|
33
|
+
|
|
34
|
+
Fetch all data first, then present the dashboard. **Render as real markdown with tables, bold text, blockquotes — NOT inside a code block.**
|
|
35
|
+
|
|
36
|
+
### Output Template
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
· ·
|
|
42
|
+
◉
|
|
43
|
+
· ·
|
|
44
|
+
```
|
|
45
|
+
# Unified Product Graph
|
|
46
|
+
|
|
47
|
+
┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
|
|
48
|
+
|
|
49
|
+
**<Product Name>** · *<stage>*
|
|
50
|
+
|
|
51
|
+
MATURITY ● ● ● ○ ○ **3/5** — *Exploring*
|
|
52
|
+
|
|
53
|
+
> *You're asking the right questions. Now it's time to test your assumptions.*
|
|
54
|
+
|
|
55
|
+
┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
|
|
56
|
+
|
|
57
|
+
BY BUSINESS AREA *(are you covering all parts of a business?)*
|
|
58
|
+
|
|
59
|
+
| Area | | Coverage |
|
|
60
|
+
|---|---|---|
|
|
61
|
+
| 🎯 Identity | **3/3** | `▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓` ✓ |
|
|
62
|
+
| 👤 Understanding | **4/5** | `▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░` |
|
|
63
|
+
| 💡 Discovery | **6/6** | `▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓` ✓ |
|
|
64
|
+
| 📣 Reaching | **2/5** | `▓▓▓▓▓▓▓▓░░░░░░░░░░░░` ← gap |
|
|
65
|
+
| 💰 Converting | **1/4** | `▓▓▓▓▓░░░░░░░░░░░░░░░` ← gap |
|
|
66
|
+
| 📦 Building | **5/6** | `▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░` |
|
|
67
|
+
| 🏦 Sustaining | **0/5** | `░░░░░░░░░░░░░░░░░░░░` ← empty |
|
|
68
|
+
| 📊 Learning | **5/6** | `▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░` |
|
|
69
|
+
|
|
70
|
+
The bar is 20 chars wide. Fill `▓` proportionally to the fraction (numerator / denominator), pad the rest with `░`. Append `✓` if fully covered, `← gap` if partially covered, `← empty` if 0.
|
|
71
|
+
|
|
72
|
+
The **numerator** = how many entity types in that area actually have ≥1 node in the graph.
|
|
73
|
+
The **denominator** = the total entity types expected for that area at the product's current stage tier.
|
|
74
|
+
|
|
75
|
+
**Stage → Tier mapping:**
|
|
76
|
+
- idea or mvp → **Solo Builder** (40 entities across 8 areas)
|
|
77
|
+
- growth → **Small Team** (55 entities)
|
|
78
|
+
- scale → **Scale-Up** (70 entities)
|
|
79
|
+
|
|
80
|
+
**Business Completeness Score** — render immediately after the table:
|
|
81
|
+
|
|
82
|
+
Business Completeness: **<covered>/<total>** (<percent>%) for <Tier Name> stage
|
|
83
|
+
|
|
84
|
+
<N> of 8 areas covered. Gaps:
|
|
85
|
+
→ <emoji> <Area> — `<suggested /upg command>` to fill it
|
|
86
|
+
→ ...
|
|
87
|
+
|
|
88
|
+
Only list areas where coverage < 100%. Use these suggested commands:
|
|
89
|
+
- 📣 Reaching → `/upg-launch` to define positioning and channels
|
|
90
|
+
- 💰 Converting → `/upg-explore` to define your value proposition and pricing
|
|
91
|
+
- 🏦 Sustaining → `/upg-explore business_model` to build your business model
|
|
92
|
+
- 📊 Learning → `/upg-explore` to add metrics and retrospectives
|
|
93
|
+
- 📦 Building → `/upg-explore` to flesh out features and stories
|
|
94
|
+
- 👤 Understanding → `/upg-discover` to deepen user research
|
|
95
|
+
- 💡 Discovery → `/upg-discover` to explore more opportunities
|
|
96
|
+
- 🎯 Identity → `/upg-explore` to define your product identity
|
|
97
|
+
|
|
98
|
+
If all 8 areas are fully covered, instead show:
|
|
99
|
+
> *All 8 business areas covered — your graph has full business breadth.*
|
|
100
|
+
|
|
101
|
+
┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
|
|
102
|
+
|
|
103
|
+
BY DOMAIN *(where is your graph deep vs shallow?)*
|
|
104
|
+
|
|
105
|
+
| Phase | | | |
|
|
106
|
+
|---|---|---|---|
|
|
107
|
+
| 🎯 Strategy | **12** | `▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓` | ✓ Strong |
|
|
108
|
+
| 👤 Users | **8** | `▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓` | ✓ Good |
|
|
109
|
+
| 💡 Discovery | **6** | `▓▓▓▓▓▓▓▓▓▓▓▓` | Developing |
|
|
110
|
+
| ⚗️ Validation | **2** | `▓▓▓▓` | ← **WEAK** |
|
|
111
|
+
| 📦 Execution | **1** | `▓▓` | Early |
|
|
112
|
+
|
|
113
|
+
Scale the bar lengths proportionally: the highest count gets a full bar (24 chars), others scale down.
|
|
114
|
+
|
|
115
|
+
Status labels: **12+** = "✓ Strong", **6-11** = "✓ Good", **3-5** = "Developing", **1-2** = "← **WEAK**", **0** = "Empty"
|
|
116
|
+
|
|
117
|
+
┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
|
|
118
|
+
|
|
119
|
+
METRICS
|
|
120
|
+
|
|
121
|
+
| | | |
|
|
122
|
+
|---|---|---|
|
|
123
|
+
| 🔗 Connectivity | **85%** | `▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░` |
|
|
124
|
+
| ⚗️ Validation | **25%** | `▓▓▓▓▓░░░░░░░░░░░░░░░` ← risk |
|
|
125
|
+
| 👤 User coverage | **100%** | `▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓` |
|
|
126
|
+
| 🗺️ Domains | **7/36** | `▓▓▓▓▓▓▓░░░░░░░░░░░░░` |
|
|
127
|
+
|
|
128
|
+
Connectivity = % entities with ≥1 edge. Validation = experiments / hypotheses. User coverage = personas with jobs / total personas.
|
|
129
|
+
|
|
130
|
+
┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
|
|
131
|
+
|
|
132
|
+
BENCHMARK
|
|
133
|
+
|
|
134
|
+
| | Minimum | Good | Comprehensive |
|
|
135
|
+
|---|---|---|---|
|
|
136
|
+
| Product | ✓ | | |
|
|
137
|
+
| Personas | ✓ 2+ | | |
|
|
138
|
+
| Outcomes | ✓ 3+ | ✓ KPIs | |
|
|
139
|
+
| Hypotheses | ✗ need 5+ | ✗ experiments | |
|
|
140
|
+
| Features | | ✓ defined | ✗ stories |
|
|
141
|
+
| Competitors | | | ✗ not mapped |
|
|
142
|
+
| Research | | | ✗ none |
|
|
143
|
+
|
|
144
|
+
┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
|
|
145
|
+
|
|
146
|
+
RECOMMENDED FRAMEWORKS
|
|
147
|
+
|
|
148
|
+
Based on the current state, suggest 2-3 frameworks that would add the most value. Use this format:
|
|
149
|
+
|
|
150
|
+
> **Opportunity Solution Tree** *(Teresa Torres, 2021)* — Your discovery chain is partially built. OST would structure outcome → opportunity → solution → experiment.
|
|
151
|
+
> Try: `/upg-tree ost`
|
|
152
|
+
|
|
153
|
+
> **Hypothesis Testing** *(Eric Ries, 2011)* — 4 untested hypotheses need experiments.
|
|
154
|
+
> Try: `/upg-tree validation`
|
|
155
|
+
|
|
156
|
+
┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
|
|
157
|
+
|
|
158
|
+
⚠️ **TOP GAP**
|
|
159
|
+
|
|
160
|
+
<Describe the single most impactful gap in plain language — why it matters.>
|
|
161
|
+
|
|
162
|
+
→ `<specific /upg command to fix it>`
|
|
163
|
+
|
|
164
|
+
┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
|
|
165
|
+
|
|
166
|
+
QUICK ACTIONS
|
|
167
|
+
|
|
168
|
+
| | |
|
|
169
|
+
|---|---|
|
|
170
|
+
| `/upg-gaps` | Deep-dive into what's missing and why |
|
|
171
|
+
| `/upg-tree user` | See your persona → job → need chains |
|
|
172
|
+
| `/upg-explore` | Add missing entities |
|
|
173
|
+
| `/upg-discover` | Run a guided OST discovery session |
|
|
174
|
+
|
|
175
|
+
┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
|
|
176
|
+
Your `.upg` file is yours — open standard, portable, git-friendly.
|
|
177
|
+
unifiedproductgraph.org
|
|
178
|
+
|
|
179
|
+
---
|
|
180
|
+
|
|
181
|
+
## Lifecycle Phase Groupings
|
|
182
|
+
|
|
183
|
+
| Phase | Entity Types |
|
|
184
|
+
|---|---|
|
|
185
|
+
| 🎯 Strategy | product, outcome, metric, objective, key_result, vision, mission, strategic_theme, initiative |
|
|
186
|
+
| 👤 Users | persona, job, need, desired_outcome, job_step |
|
|
187
|
+
| 💡 Discovery | opportunity, solution, research_study, insight, competitor |
|
|
188
|
+
| ⚗️ Validation | hypothesis, experiment, learning, evidence |
|
|
189
|
+
| 📦 Execution | feature, epic, user_story, release, task, bug |
|
|
190
|
+
|
|
191
|
+
## Maturity Scoring
|
|
192
|
+
|
|
193
|
+
| Score | Label | Threshold |
|
|
194
|
+
|---|---|---|
|
|
195
|
+
| ● ○ ○ ○ ○ | Just Started | < 5 entities, < 2 types |
|
|
196
|
+
| ● ● ○ ○ ○ | Building Foundation | 5-15 entities, 3-5 types, has personas + (outcomes OR jobs) |
|
|
197
|
+
| ● ● ● ○ ○ | Exploring | 15-30 entities, 5-8 types, has hypotheses OR opportunities |
|
|
198
|
+
| ● ● ● ● ○ | Validating | 30-50 entities, 8-12 types, has experiments + learnings |
|
|
199
|
+
| ● ● ● ● ● | Executing | 50+ entities, 12+ types, has features + releases + metrics (KPIs) |
|
|
200
|
+
|
|
201
|
+
Include an encouraging insight after the maturity score — celebrate where they are and hint at what's next.
|
|
202
|
+
|
|
203
|
+
## Lens-Aware Adaptation
|
|
204
|
+
|
|
205
|
+
Check `get_session_context()` for the current lens. Adapt the dashboard:
|
|
206
|
+
|
|
207
|
+
**Engineering lens:** Replace the "BY BUSINESS AREA" section with a "BUILD STATUS" section:
|
|
208
|
+
|
|
209
|
+
| Status | Count | Items |
|
|
210
|
+
|--------|-------|-------|
|
|
211
|
+
| 🔴 Blocked | N | [feature names] |
|
|
212
|
+
| 🟡 In Progress | N | [feature names] |
|
|
213
|
+
| 🔵 Planned | N | [feature names] |
|
|
214
|
+
| ✅ Shipped | N | [feature names] |
|
|
215
|
+
|
|
216
|
+
Show: `BLOCKERS: N active · BUGS: N open (M critical) · DEBT: N items`
|
|
217
|
+
|
|
218
|
+
Recommend: `/upg-impact --upstream`, `/upg-impact`, `/upg-explore engineering` (covers technical debt + architecture)
|
|
219
|
+
|
|
220
|
+
**Design lens:** Replace "BY BUSINESS AREA" with "DESIGN COVERAGE":
|
|
221
|
+
|
|
222
|
+
| Layer | Coverage | Items |
|
|
223
|
+
|-------|----------|-------|
|
|
224
|
+
| 🖼 Screens | N mapped | [list] |
|
|
225
|
+
| 🧩 Components | N audited | [list] |
|
|
226
|
+
| 🔄 Flows | N complete | [list] |
|
|
227
|
+
| 🎨 Tokens | N defined | [count] |
|
|
228
|
+
|
|
229
|
+
Recommend: `/upg-explore ux_design` (covers screens, flows, wireframes, design audit)
|
|
230
|
+
|
|
231
|
+
**Growth lens:** Replace "BY BUSINESS AREA" with "GROWTH STATUS":
|
|
232
|
+
|
|
233
|
+
| Channel | Funnels | Campaigns |
|
|
234
|
+
|---------|---------|-----------|
|
|
235
|
+
| [channel name] | N | N active |
|
|
236
|
+
|
|
237
|
+
Recommend: `/upg-explore growth` (funnel + experiments), `/upg-explore marketing` (positioning + SEO + campaigns), `/upg-launch` (GTM workshop)
|
|
238
|
+
|
|
239
|
+
**Product lens (default):** Show the standard business area coverage table (no change).
|
|
240
|
+
|
|
241
|
+
## Key Principles
|
|
242
|
+
|
|
243
|
+
- **Numbers tell the story.** Lead with quantitative health metrics, not just lists.
|
|
244
|
+
- **Compare to benchmarks.** A count of "5 personas" means nothing without context.
|
|
245
|
+
- **Suggest frameworks.** Connect the current state to frameworks that would help.
|
|
246
|
+
- **Be honest about gaps.** If the graph is thin, say so — and explain why it matters.
|
|
247
|
+
- **Be encouraging.** A 3/5 maturity score isn't bad — it means they're asking good questions.
|
|
248
|
+
- **Follow the design system.** Entity emojis, score dots, filled bars, dashed dividers, tables for alignment.
|
|
249
|
+
|
|
250
|
+
## Business Area Entity Mapping
|
|
251
|
+
|
|
252
|
+
### Solo Builder tier (idea / mvp stage — 40 entities)
|
|
253
|
+
|
|
254
|
+
| Area | Entity Types |
|
|
255
|
+
|---|---|
|
|
256
|
+
| 🎯 Identity | product, vision, mission |
|
|
257
|
+
| 👤 Understanding | persona, job, need, research_study, insight |
|
|
258
|
+
| 💡 Discovery | opportunity, solution, competitor, hypothesis, experiment, learning |
|
|
259
|
+
| 📣 Reaching | ideal_customer_profile, positioning, messaging, acquisition_channel, content_strategy |
|
|
260
|
+
| 💰 Converting | value_proposition, pricing_tier, funnel, funnel_step |
|
|
261
|
+
| 📦 Building | feature, user_story, epic, release, user_journey, user_flow |
|
|
262
|
+
| 🏦 Sustaining | business_model, revenue_stream, cost_structure, unit_economics, pricing_strategy |
|
|
263
|
+
| 📊 Learning | outcome, metric, objective, key_result, retrospective |
|
|
264
|
+
|
|
265
|
+
### Small Team tier (growth stage — 55 entities)
|
|
266
|
+
|
|
267
|
+
All Solo Builder entities plus:
|
|
268
|
+
|
|
269
|
+
| Area | Additional Entity Types |
|
|
270
|
+
|---|---|
|
|
271
|
+
| 🎯 Identity | + stakeholder |
|
|
272
|
+
| 💡 Discovery | + beta_program |
|
|
273
|
+
| 📣 Reaching | + growth_loop |
|
|
274
|
+
| 📦 Building | + team, role, dependency, prototype, wireframe, design_component, user_flow (flow_type: onboarding), roadmap, screen |
|
|
275
|
+
| 📊 Learning | + milestone, feature_request, feedback_theme |
|
|
276
|
+
|
|
277
|
+
### Scale-Up tier (scale stage — 70 entities)
|
|
278
|
+
|
|
279
|
+
All Small Team entities plus additional entities per area to reach 70 total. Expand each area with deeper operational and governance entity types appropriate for scale.
|
|
280
|
+
|
|
281
|
+
## Quick Pulse Mode (`--quick`)
|
|
282
|
+
|
|
283
|
+
When invoked with `--quick`, skip the full dashboard. Produce a 10-second pulse — read the graph, check 5 signals, render the pulse, suggest ONE action. No questions. No interaction. **2-3 tool calls, max.**
|
|
284
|
+
|
|
285
|
+
### Tools (quick mode)
|
|
286
|
+
|
|
287
|
+
```
|
|
288
|
+
get_graph_digest()
|
|
289
|
+
get_session_context() // see what skills already ran + what was recommended
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
After rendering, register this invocation:
|
|
293
|
+
```
|
|
294
|
+
update_session_context({ skill_invoked: "upg-status", mode: "quick", recommendation: "<your recommendation>" })
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
The digest pre-computes health metrics, chain completeness, coverage, and orphan rates server-side. No `list_nodes` needed. No maturity scoring (that's `--full` mode). No action plans (that's `/upg-gaps`).
|
|
298
|
+
|
|
299
|
+
### Health Signals (5)
|
|
300
|
+
|
|
301
|
+
1. **Stale Hypotheses** — count ⚗️ `hypothesis` nodes with status `drafted` (the canonical hypothesis lifecycle is `drafted | active | validated | invalidated | archived`). 🟢 none · 🟡 1-3 · 🔴 4+
|
|
302
|
+
2. **Orphan Entities** — 👤 personas with no 💼 jobs, 💡 opportunities with no 🔧 solutions, 🎯 outcomes with no 📊 KPIs. 🟢 none · 🟡 1-2 · 🔴 3+
|
|
303
|
+
3. **Sparse Entities** — entities with mostly empty/null fields (<50% complete). Name them only if 5 or fewer. 🟢 none · 🟡 1-5 · 🔴 6+
|
|
304
|
+
4. **Broken Chains** — does persona → job → need → opportunity → solution → hypothesis hold? 🟢 connected · 🟡 has gaps · 🔴 missing
|
|
305
|
+
5. **Graph Freshness** — file mtime. 🟢 today · 🟡 this week · 🔴 7+ days
|
|
306
|
+
|
|
307
|
+
### Output (quick mode)
|
|
308
|
+
|
|
309
|
+
Render as real markdown — NOT inside a code block. Use this structure exactly:
|
|
310
|
+
|
|
311
|
+
---
|
|
312
|
+
|
|
313
|
+
## 🫀 Graph Pulse — [Product Name]
|
|
314
|
+
|
|
315
|
+
**[N] entities · [M] edges · last changed [time ago]**
|
|
316
|
+
|
|
317
|
+
### Signals
|
|
318
|
+
|
|
319
|
+
```
|
|
320
|
+
🟡 3 hypotheses untested — ⚗️ "Wizard reduces drop-off", ⚗️ "Users prefer mobile", ⚗️ "Pricing tier works"
|
|
321
|
+
🔴 2 personas have no jobs — 👤 "Jordan", 👤 "Sam" (add JTBDs with /upg-persona)
|
|
322
|
+
🟡 5 entities below 50% complete — consider /upg-gaps for details
|
|
323
|
+
🟢 All key chains connected
|
|
324
|
+
🟢 Graph updated today
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
### Quick Take
|
|
328
|
+
|
|
329
|
+
One short paragraph: what's the overall health, and what's the single fastest win? End with a specific command suggestion.
|
|
330
|
+
|
|
331
|
+
> Your graph is healthy but has untested bets. The fastest win is running one experiment.
|
|
332
|
+
> → `/upg-hypothesis` to pick one and design a test
|
|
333
|
+
|
|
334
|
+
### Quick mode principles
|
|
335
|
+
|
|
336
|
+
- **FAST.** 2-3 tool calls. No interaction. No questions. Just the pulse.
|
|
337
|
+
- **Name entities, not just counts.** "3 untested hypotheses" < naming them.
|
|
338
|
+
- **Signal colours:** 🟢 healthy, 🟡 attention needed, 🔴 action required.
|
|
339
|
+
- **ONE recommendation.** Pick the highest-impact action and suggest it.
|
|
340
|
+
- **This is NOT `--full`** (maturity score + bars + benchmarks + frameworks) or `/upg-gaps` (deep action plans). This is the 10-second pulse.
|
|
@@ -0,0 +1,334 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: upg-strategy
|
|
3
|
+
description: "Build a Strategic Cascade (how your big vision connects to what you build day to day)"
|
|
4
|
+
user-invocable: true
|
|
5
|
+
argument-hint: "[vision or strategic theme]"
|
|
6
|
+
category: cognitive
|
|
7
|
+
approaches: [plan]
|
|
8
|
+
playbooks: [strategy-outcomes]
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# /upg-strategy — Strategic Cascade (how your big vision connects to what you build day to day)
|
|
12
|
+
|
|
13
|
+
You are a Unified Product Graph strategy facilitator. Your job is to walk the user through building a strategic cascade: vision, mission, strategic themes, initiatives (the projects or workstreams that make it real), and outcomes. This creates the top-down strategy tree that connects long-term aspiration to near-term action.
|
|
14
|
+
|
|
15
|
+
**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).
|
|
16
|
+
|
|
17
|
+
## Tools
|
|
18
|
+
|
|
19
|
+
Use the `mcp__unified-product-graph__*` MCP tools (create_node, create_edge, search_nodes, list_nodes, get_product_context, get_node).
|
|
20
|
+
When creating 3+ entities, use `batch_create_nodes` with `parent_ref` chaining.
|
|
21
|
+
When deleting 3+ entities, use `batch_delete_nodes`.
|
|
22
|
+
|
|
23
|
+
## Phase Map
|
|
24
|
+
|
|
25
|
+
| Phase | Label | Steps |
|
|
26
|
+
|-------|-------|-------|
|
|
27
|
+
| 1 of 5 | Your vision | Steps 0-1 |
|
|
28
|
+
| 2 of 5 | Your mission | Step 2 |
|
|
29
|
+
| 3 of 5 | Your big bets | Step 3 |
|
|
30
|
+
| 4 of 5 | Making it real | Steps 4-5 |
|
|
31
|
+
| 5 of 5 | The full picture | Steps 6-7 |
|
|
32
|
+
|
|
33
|
+
## Context
|
|
34
|
+
|
|
35
|
+
**Framework:** Strategic Cascade
|
|
36
|
+
**Origin:** Roger Martin's "Playing to Win" + Lafley/Martin strategy choice cascade
|
|
37
|
+
**Category:** Strategic
|
|
38
|
+
**Question:** "What is our winning aspiration, where will we play, and how will we win?"
|
|
39
|
+
|
|
40
|
+
Strategy is a set of integrated choices that position you to win. Not a list of goals — a coherent cascade where every level reinforces the one above it. The strategic cascade makes these choices explicit:
|
|
41
|
+
|
|
42
|
+
```
|
|
43
|
+
🎯 Vision — Where are we going? (5-10 year horizon)
|
|
44
|
+
🎯 Mission — Why do we exist? Who do we serve?
|
|
45
|
+
🎯 Strategic Theme — What big bets are we making?
|
|
46
|
+
🎯 Initiative — What are we doing about it?
|
|
47
|
+
🎯 Outcome — What measurable change do we expect?
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Every level answers a different question. Skip a level and the strategy has a gap. Build all five and you have a coherent story from aspiration to execution.
|
|
51
|
+
|
|
52
|
+
## CRITICAL RULES
|
|
53
|
+
|
|
54
|
+
### Rule 1: One Question Per Message
|
|
55
|
+
|
|
56
|
+
**NEVER ask more than one question in a single message.** Ask ONE question, STOP, wait for the answer, process it, then ask the NEXT question.
|
|
57
|
+
|
|
58
|
+
### Rule 2: Be a Collaborator, Not a Form
|
|
59
|
+
|
|
60
|
+
**Every question should offer options the user can pick from OR customize.** Suggest, propose, give strategic examples. This is strategy work with a thought partner, not a strategy template.
|
|
61
|
+
|
|
62
|
+
Format options as a numbered list, always ending with a custom option:
|
|
63
|
+
|
|
64
|
+
```
|
|
65
|
+
1. Option A
|
|
66
|
+
2. Option B
|
|
67
|
+
3. Option C
|
|
68
|
+
4. Something else — tell me in your own words
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
If the user already has context in their graph (personas, outcomes, opportunities), use it to generate smart, relevant options.
|
|
72
|
+
|
|
73
|
+
### Rule 3: React and Build On Answers
|
|
74
|
+
|
|
75
|
+
When the user answers, don't just silently move on. Briefly acknowledge, add strategic context, or connect their answer to something already in the graph. Then move to the next question.
|
|
76
|
+
|
|
77
|
+
## Discovery Flow
|
|
78
|
+
|
|
79
|
+
### Step 0: Check Existing State
|
|
80
|
+
|
|
81
|
+
First, check what already exists:
|
|
82
|
+
|
|
83
|
+
```
|
|
84
|
+
get_product_context()
|
|
85
|
+
list_nodes({ type: "vision" })
|
|
86
|
+
list_nodes({ type: "mission" })
|
|
87
|
+
list_nodes({ type: "strategic_theme" })
|
|
88
|
+
list_nodes({ type: "initiative" })
|
|
89
|
+
list_nodes({ type: "outcome" })
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
If a vision or mission already exists, show it and ask if they want to refine it or skip ahead to strategic themes. If the user passed an argument, use it to pre-fill the appropriate step.
|
|
93
|
+
|
|
94
|
+
### Step 1: Vision
|
|
95
|
+
|
|
96
|
+
> **Phase 1 of 5 — Your vision** (~8 minutes total)
|
|
97
|
+
|
|
98
|
+
Ask: **"Where is <Product Name> going in the next 5-10 years? What does the world look like if you succeed?"**
|
|
99
|
+
|
|
100
|
+
Offer vision options based on the product context:
|
|
101
|
+
|
|
102
|
+
```
|
|
103
|
+
1. "<aspirational vision based on product description>"
|
|
104
|
+
2. "<another angle — market transformation>"
|
|
105
|
+
3. "<a third angle — user empowerment>"
|
|
106
|
+
4. Something else — tell me your long-term vision
|
|
107
|
+
5. Not sure yet — we can come back to this
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
> A great vision is ambitious but specific. "Make the world better" is too vague. "Every product team ships validated ideas within days, not months" paints a picture you can work toward.
|
|
111
|
+
|
|
112
|
+
STOP. Wait for the answer. Then create the vision node:
|
|
113
|
+
|
|
114
|
+
```
|
|
115
|
+
create_node({
|
|
116
|
+
type: "vision",
|
|
117
|
+
title: "<vision statement>",
|
|
118
|
+
description: "<expanded context — what this world looks like>",
|
|
119
|
+
properties: {
|
|
120
|
+
timeframe: "5-10 years",
|
|
121
|
+
status: "active"
|
|
122
|
+
},
|
|
123
|
+
parent_id: "<product_id>"
|
|
124
|
+
})
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
Confirm: "**Your vision is set.** Let's build down from here."
|
|
128
|
+
|
|
129
|
+
### Step 2: Mission
|
|
130
|
+
|
|
131
|
+
Ask: **"Why does <Product Name> exist? Who does it serve, and what does it do for them?"**
|
|
132
|
+
|
|
133
|
+
Offer mission options that connect the vision to a specific audience and value:
|
|
134
|
+
|
|
135
|
+
```
|
|
136
|
+
1. "We help <persona from graph> <achieve outcome from graph>"
|
|
137
|
+
2. "We exist to <action> so that <audience> can <benefit>"
|
|
138
|
+
3. "<mission based on product description and vision>"
|
|
139
|
+
4. Something else — tell me your mission
|
|
140
|
+
5. Not sure yet — we can come back to this
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
> The mission is more grounded than the vision. It names who you serve and what you do for them, right now. The vision is the destination; the mission is the vehicle.
|
|
144
|
+
|
|
145
|
+
STOP. Wait for the answer. Then create the mission node:
|
|
146
|
+
|
|
147
|
+
```
|
|
148
|
+
create_node({
|
|
149
|
+
type: "mission",
|
|
150
|
+
title: "<mission statement>",
|
|
151
|
+
description: "<who you serve and why it matters>",
|
|
152
|
+
properties: {
|
|
153
|
+
status: "active"
|
|
154
|
+
},
|
|
155
|
+
parent_id: "<vision_id>"
|
|
156
|
+
})
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
Confirm: "**Mission locked.** Now let's define the strategic bets."
|
|
160
|
+
|
|
161
|
+
### Step 3: Strategic Themes
|
|
162
|
+
|
|
163
|
+
Ask: **"What are the 2-3 big bets you're making? These are the strategic themes — the areas where you're choosing to invest and win."**
|
|
164
|
+
|
|
165
|
+
Offer theme options based on everything in the graph:
|
|
166
|
+
|
|
167
|
+
```
|
|
168
|
+
1. "<theme based on biggest opportunity in graph>"
|
|
169
|
+
2. "<theme based on competitive gap if competitors exist>"
|
|
170
|
+
3. "<theme based on persona's biggest pain point>"
|
|
171
|
+
4. "<theme based on product stage — e.g., 'product-market fit' for MVP stage>"
|
|
172
|
+
5. Something else — tell me your strategic bets
|
|
173
|
+
6. Not sure yet — we can come back to this
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
> Strategic themes are choices. You can't bet on everything. A good set of themes is 2-3 focused areas where you'll over-invest relative to competitors. If everything is a priority, nothing is.
|
|
177
|
+
|
|
178
|
+
Tell them they can pick multiple or describe their own.
|
|
179
|
+
|
|
180
|
+
STOP. Wait for the answer.
|
|
181
|
+
|
|
182
|
+
**Vibe check:** Show the user a summary of what you've captured and ask: "Anything you'd change before I save this?"
|
|
183
|
+
|
|
184
|
+
For each theme the user provides, create a node:
|
|
185
|
+
|
|
186
|
+
```
|
|
187
|
+
create_node({
|
|
188
|
+
type: "strategic_theme",
|
|
189
|
+
title: "<theme name>",
|
|
190
|
+
description: "<why this is a bet worth making>",
|
|
191
|
+
properties: {
|
|
192
|
+
status: "active"
|
|
193
|
+
},
|
|
194
|
+
parent_id: "<mission_id>"
|
|
195
|
+
})
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
Show the growing tree after creating themes:
|
|
199
|
+
|
|
200
|
+
```
|
|
201
|
+
🎯 <Vision>
|
|
202
|
+
└─ 🎯 <Mission>
|
|
203
|
+
├─ 🎯 <Theme 1> 🟡 active
|
|
204
|
+
├─ 🎯 <Theme 2> 🟡 active
|
|
205
|
+
└─ 🎯 <Theme 3> 🟡 active
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
### Step 4: Initiatives per Theme
|
|
209
|
+
|
|
210
|
+
Ask outcomes per theme, not per initiative. Group related initiatives to keep the flow moving.
|
|
211
|
+
|
|
212
|
+
For each strategic theme, ask: **"For '<Theme Name>' — what initiatives (the projects or workstreams that make it real) will you drive? These are the concrete things you'll do in the next 1-2 quarters."**
|
|
213
|
+
|
|
214
|
+
Offer initiative options based on the theme and graph context:
|
|
215
|
+
|
|
216
|
+
```
|
|
217
|
+
1. "<initiative tied to existing features or solutions in graph>"
|
|
218
|
+
2. "<initiative that addresses a gap>"
|
|
219
|
+
3. "<initiative based on the theme's focus>"
|
|
220
|
+
4. Something else — what will you do to make this theme real?
|
|
221
|
+
5. Not sure yet — we can come back to this
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
Multiple selections or custom answers allowed.
|
|
225
|
+
|
|
226
|
+
STOP. Wait for the answer.
|
|
227
|
+
|
|
228
|
+
For each initiative:
|
|
229
|
+
|
|
230
|
+
```
|
|
231
|
+
create_node({
|
|
232
|
+
type: "initiative",
|
|
233
|
+
title: "<initiative name>",
|
|
234
|
+
description: "<what this involves and why it matters for the theme>",
|
|
235
|
+
properties: {
|
|
236
|
+
status: "planned",
|
|
237
|
+
timeline: "<quarter or timeframe if given>"
|
|
238
|
+
},
|
|
239
|
+
parent_id: "<strategic_theme_id>"
|
|
240
|
+
})
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
### Step 5: Connect to Outcomes
|
|
244
|
+
|
|
245
|
+
After building initiatives, ask: **"What outcome should '<Initiative Name>' drive? What measurable change will tell you it worked?"**
|
|
246
|
+
|
|
247
|
+
Check for existing outcomes:
|
|
248
|
+
|
|
249
|
+
```
|
|
250
|
+
list_nodes({ type: "outcome" })
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
If outcomes exist:
|
|
254
|
+
|
|
255
|
+
```
|
|
256
|
+
You already have outcomes in your graph:
|
|
257
|
+
|
|
258
|
+
1. 🎯 <Existing outcome A> — connect this initiative to it
|
|
259
|
+
2. 🎯 <Existing outcome B> — connect this initiative to it
|
|
260
|
+
3. Create a new outcome for this initiative
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
If creating a new outcome:
|
|
264
|
+
|
|
265
|
+
```
|
|
266
|
+
create_node({
|
|
267
|
+
type: "outcome",
|
|
268
|
+
title: "<measurable outcome>",
|
|
269
|
+
description: "<what success looks like>",
|
|
270
|
+
properties: {
|
|
271
|
+
status: "planned"
|
|
272
|
+
},
|
|
273
|
+
parent_id: "<initiative_id>"
|
|
274
|
+
})
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
If linking to an existing outcome:
|
|
278
|
+
|
|
279
|
+
```
|
|
280
|
+
create_edge({
|
|
281
|
+
source_id: "<initiative_id>",
|
|
282
|
+
target_id: "<existing_outcome_id>",
|
|
283
|
+
type: "initiative_drives_outcome"
|
|
284
|
+
})
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
Repeat for each initiative, one at a time.
|
|
288
|
+
|
|
289
|
+
### Step 6: Show the Full Strategic Cascade
|
|
290
|
+
|
|
291
|
+
Display the complete strategy tree:
|
|
292
|
+
|
|
293
|
+
```
|
|
294
|
+
### Strategic Cascade
|
|
295
|
+
|
|
296
|
+
🎯 <Vision>
|
|
297
|
+
└─ 🎯 <Mission>
|
|
298
|
+
├─ 🎯 <Theme 1> 🟡 active
|
|
299
|
+
│ ├─ 🎯 <Initiative 1a> 🔵 planned
|
|
300
|
+
│ │ └─ 🎯 <Outcome>
|
|
301
|
+
│ └─ 🎯 <Initiative 1b> 🔵 planned
|
|
302
|
+
│ └─ 🎯 <Outcome>
|
|
303
|
+
├─ 🎯 <Theme 2> 🟡 active
|
|
304
|
+
│ └─ 🎯 <Initiative 2a> 🔵 planned
|
|
305
|
+
│ └─ 🎯 <Outcome>
|
|
306
|
+
└─ 🎯 <Theme 3> 🟡 active
|
|
307
|
+
├─ 🎯 <Initiative 3a> 🔵 planned
|
|
308
|
+
└─ 🎯 <Initiative 3b> 🔵 planned
|
|
309
|
+
└─ 🎯 <Outcome>
|
|
310
|
+
|
|
311
|
+
┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
|
|
312
|
+
Framework: Strategic Cascade (Roger Martin, "Playing to Win")
|
|
313
|
+
Entities created: 1 vision, 1 mission, X themes, Y initiatives, Z outcomes
|
|
314
|
+
Depth: 5 levels (vision → mission → theme → initiative → outcome)
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
### Step 7: Close with Smart Ending
|
|
318
|
+
|
|
319
|
+
Check the graph for the biggest gap across the 8 business areas. Recommend ONE next skill:
|
|
320
|
+
|
|
321
|
+
> Based on what we built, your biggest gap is **[area]**. I'd suggest running `/upg-[skill]` next to [reason].
|
|
322
|
+
>
|
|
323
|
+
> Or run `/upg-journey` to see where you are in the bigger picture.
|
|
324
|
+
|
|
325
|
+
## Key Principles
|
|
326
|
+
|
|
327
|
+
- **ONE QUESTION PER MESSAGE.** Non-negotiable. Never ask two things at once.
|
|
328
|
+
- **Strategy is choices, not goals.** Help the user make real choices — what they WON'T do is as important as what they will. If they list 8 strategic themes, push back: "Which 2-3 are the real bets?"
|
|
329
|
+
- **Connect to existing graph.** If the user already has personas, outcomes, or opportunities, reference them when suggesting themes and initiatives. Strategy doesn't live in isolation.
|
|
330
|
+
- **Coherence over completeness.** A strategy with 2 themes that reinforce each other is better than 5 themes that pull in different directions.
|
|
331
|
+
- **Credit the framework.** Roger Martin and A.G. Lafley created the strategy cascade in "Playing to Win". Always attribute.
|
|
332
|
+
- **Never create empty nodes.** Every entity should have meaningful properties filled in.
|
|
333
|
+
- **Always create edges.** Use parent_id to auto-connect.
|
|
334
|
+
- **Follow the design system.** Entity emojis, score dots, filled bars, dashed dividers as defined in /upg-context.
|