@unified-product-graph/mcp-server 0.7.1 → 0.7.4
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 +2 -2
- package/README.md +11 -11
- package/TOOLS.md +11 -11
- package/dist/index.js +930 -911
- package/dist/index.js.map +1 -1
- package/dist/preflight.js +1 -1
- package/dist/preflight.js.map +1 -1
- package/dist/tools-manifest.json +34 -34
- package/package.json +1 -1
- package/scripts/claudemd-snippet.md +8 -8
- package/scripts/install-skills.sh +7 -7
- package/skills/upg/SKILL.md +30 -30
- package/skills/upg-analytics/SKILL.md +11 -11
- package/skills/upg-capture/SKILL.md +19 -19
- package/skills/upg-connect/SKILL.md +6 -6
- package/skills/upg-context/SKILL.md +51 -51
- package/skills/upg-context-intelligence/SKILL.md +43 -43
- package/skills/upg-design-system/SKILL.md +21 -21
- package/skills/upg-diff/SKILL.md +12 -12
- package/skills/upg-discover/SKILL.md +10 -10
- package/skills/upg-explore/SKILL-DETAIL.md +9 -9
- package/skills/upg-explore/SKILL.md +14 -14
- package/skills/upg-export/SKILL.md +34 -34
- package/skills/upg-feedback/SKILL.md +17 -17
- package/skills/upg-gaps/SKILL.md +31 -31
- package/skills/upg-hypothesis/SKILL.md +10 -10
- package/skills/upg-impact/SKILL.md +30 -30
- package/skills/upg-import/SKILL.md +14 -14
- package/skills/upg-init/SKILL.md +40 -40
- package/skills/upg-inspect/SKILL.md +9 -9
- package/skills/upg-journey/SKILL.md +21 -21
- package/skills/upg-launch/SKILL-DETAIL.md +71 -71
- package/skills/upg-launch/SKILL.md +16 -16
- package/skills/upg-migrate/SKILL.md +19 -19
- package/skills/upg-okr/SKILL-DETAIL.md +27 -27
- package/skills/upg-okr/SKILL.md +10 -10
- package/skills/upg-persona/SKILL.md +20 -20
- package/skills/upg-prioritise/SKILL.md +19 -19
- package/skills/upg-pull/SKILL-DETAIL.md +21 -21
- package/skills/upg-pull/SKILL.md +5 -5
- package/skills/upg-push/SKILL-DETAIL.md +23 -23
- package/skills/upg-push/SKILL.md +6 -6
- package/skills/upg-reflect/SKILL.md +20 -20
- package/skills/upg-research/SKILL.md +37 -37
- package/skills/upg-rollback/SKILL.md +19 -19
- package/skills/upg-run/SKILL.md +14 -14
- package/skills/upg-schema-changelog/SKILL.md +29 -29
- package/skills/upg-schema-consolidate/SKILL.md +18 -18
- package/skills/upg-schema-edges/SKILL.md +12 -12
- package/skills/upg-schema-evolve/SKILL.md +16 -16
- package/skills/upg-schema-health/SKILL.md +22 -22
- package/skills/upg-schema-update/SKILL.md +24 -24
- package/skills/upg-snapshot/SKILL.md +8 -8
- package/skills/upg-status/SKILL.md +31 -31
- package/skills/upg-strategy/SKILL.md +26 -26
- package/skills/upg-template/SKILL.md +21 -21
- package/skills/upg-trace/SKILL.md +22 -22
- package/skills/upg-tree/SKILL.md +18 -18
- package/skills/upg-verify/SKILL.md +42 -42
- package/skills/upg-workspace/SKILL.md +12 -12
|
@@ -7,16 +7,16 @@ category: cognitive
|
|
|
7
7
|
approaches: [inspect]
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
-
# /upg-status
|
|
10
|
+
# /upg-status: Product Graph Health Dashboard
|
|
11
11
|
|
|
12
|
-
You are a Unified Product Graph analytics engine. Your job is to produce a dashboard of the product graph's health
|
|
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
13
|
|
|
14
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
15
|
|
|
16
16
|
## Modes
|
|
17
17
|
|
|
18
|
-
- `/upg-status --quick
|
|
19
|
-
- `/upg-status` or `/upg-status --full` (default)
|
|
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
20
|
|
|
21
21
|
**Boundary, in plain English:**
|
|
22
22
|
- `--quick` answers *"is anything bleeding right now?"* (the pulse).
|
|
@@ -27,11 +27,11 @@ If a recent `/upg-gaps` run is in session context, skip the TOP GAP section in `
|
|
|
27
27
|
|
|
28
28
|
## Tools
|
|
29
29
|
|
|
30
|
-
Use `mcp__unified-product-graph__get_graph_digest()` as your primary data source
|
|
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
31
|
|
|
32
32
|
## Dashboard Structure
|
|
33
33
|
|
|
34
|
-
Fetch all data first, then present the dashboard. **Render as real markdown with tables, bold text, blockquotes
|
|
34
|
+
Fetch all data first, then present the dashboard. **Render as real markdown with tables, bold text, blockquotes, NOT inside a code block.**
|
|
35
35
|
|
|
36
36
|
### Output Template
|
|
37
37
|
|
|
@@ -48,7 +48,7 @@ Fetch all data first, then present the dashboard. **Render as real markdown with
|
|
|
48
48
|
|
|
49
49
|
**<Product Name>** · *<stage>*
|
|
50
50
|
|
|
51
|
-
MATURITY ● ● ● ○ ○ **3/5
|
|
51
|
+
MATURITY ● ● ● ○ ○ **3/5**: *Exploring*
|
|
52
52
|
|
|
53
53
|
> *You're asking the right questions. Now it's time to test your assumptions.*
|
|
54
54
|
|
|
@@ -77,12 +77,12 @@ The **denominator** = the total entity types expected for that area at the produ
|
|
|
77
77
|
- growth → **Small Team** (55 entities)
|
|
78
78
|
- scale → **Scale-Up** (70 entities)
|
|
79
79
|
|
|
80
|
-
**Business Completeness Score
|
|
80
|
+
**Business Completeness Score**: render immediately after the table:
|
|
81
81
|
|
|
82
82
|
Business Completeness: **<covered>/<total>** (<percent>%) for <Tier Name> stage
|
|
83
83
|
|
|
84
84
|
<N> of 8 areas covered. Gaps:
|
|
85
|
-
→ <emoji> <Area
|
|
85
|
+
→ <emoji> <Area>; `<suggested /upg command>` to fill it
|
|
86
86
|
→ ...
|
|
87
87
|
|
|
88
88
|
Only list areas where coverage < 100%. Use these suggested commands:
|
|
@@ -96,7 +96,7 @@ Only list areas where coverage < 100%. Use these suggested commands:
|
|
|
96
96
|
- 🎯 Identity → `/upg-explore` to define your product identity
|
|
97
97
|
|
|
98
98
|
If all 8 areas are fully covered, instead show:
|
|
99
|
-
> *All 8 business areas covered
|
|
99
|
+
> *All 8 business areas covered; your graph has full business breadth.*
|
|
100
100
|
|
|
101
101
|
┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
|
|
102
102
|
|
|
@@ -147,17 +147,17 @@ RECOMMENDED FRAMEWORKS
|
|
|
147
147
|
|
|
148
148
|
Based on the current state, suggest 2-3 frameworks that would add the most value. Use this format:
|
|
149
149
|
|
|
150
|
-
> **Opportunity Solution Tree** *(Teresa Torres, 2021)
|
|
150
|
+
> **Opportunity Solution Tree** *(Teresa Torres, 2021)*; Your discovery chain is partially built. OST would structure outcome → opportunity → solution → experiment.
|
|
151
151
|
> Try: `/upg-tree ost`
|
|
152
152
|
|
|
153
|
-
> **Hypothesis Testing** *(Eric Ries, 2011)
|
|
153
|
+
> **Hypothesis Testing** *(Eric Ries, 2011)*; 4 untested hypotheses need experiments.
|
|
154
154
|
> Try: `/upg-tree validation`
|
|
155
155
|
|
|
156
156
|
┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
|
|
157
157
|
|
|
158
158
|
⚠️ **TOP GAP**
|
|
159
159
|
|
|
160
|
-
<Describe the single most impactful gap in plain language
|
|
160
|
+
<Describe the single most impactful gap in plain language; why it matters.>
|
|
161
161
|
|
|
162
162
|
→ `<specific /upg command to fix it>`
|
|
163
163
|
|
|
@@ -173,7 +173,7 @@ QUICK ACTIONS
|
|
|
173
173
|
| `/upg-discover` | Run a guided OST discovery session |
|
|
174
174
|
|
|
175
175
|
┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
|
|
176
|
-
Your `.upg` file is yours
|
|
176
|
+
Your `.upg` file is yours: open standard, portable, git-friendly.
|
|
177
177
|
unifiedproductgraph.org
|
|
178
178
|
|
|
179
179
|
---
|
|
@@ -198,7 +198,7 @@ unifiedproductgraph.org
|
|
|
198
198
|
| ● ● ● ● ○ | Validating | 30-50 entities, 8-12 types, has experiments + learnings |
|
|
199
199
|
| ● ● ● ● ● | Executing | 50+ entities, 12+ types, has features + releases + metrics (KPIs) |
|
|
200
200
|
|
|
201
|
-
Include an encouraging insight after the maturity score
|
|
201
|
+
Include an encouraging insight after the maturity score; celebrate where they are and hint at what's next.
|
|
202
202
|
|
|
203
203
|
## Lens-Aware Adaptation
|
|
204
204
|
|
|
@@ -243,13 +243,13 @@ Recommend: `/upg-explore growth` (funnel + experiments), `/upg-explore marketing
|
|
|
243
243
|
- **Numbers tell the story.** Lead with quantitative health metrics, not just lists.
|
|
244
244
|
- **Compare to benchmarks.** A count of "5 personas" means nothing without context.
|
|
245
245
|
- **Suggest frameworks.** Connect the current state to frameworks that would help.
|
|
246
|
-
- **Be honest about gaps.** If the graph is thin, say so
|
|
247
|
-
- **Be encouraging.** A 3/5 maturity score isn't bad
|
|
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
248
|
- **Follow the design system.** Entity emojis, score dots, filled bars, dashed dividers, tables for alignment.
|
|
249
249
|
|
|
250
250
|
## Business Area Entity Mapping
|
|
251
251
|
|
|
252
|
-
### Solo Builder tier (idea / mvp stage
|
|
252
|
+
### Solo Builder tier (idea / mvp stage: 40 entities)
|
|
253
253
|
|
|
254
254
|
| Area | Entity Types |
|
|
255
255
|
|---|---|
|
|
@@ -262,7 +262,7 @@ Recommend: `/upg-explore growth` (funnel + experiments), `/upg-explore marketing
|
|
|
262
262
|
| 🏦 Sustaining | business_model, revenue_stream, cost_structure, unit_economics, pricing_strategy |
|
|
263
263
|
| 📊 Learning | outcome, metric, objective, key_result, retrospective |
|
|
264
264
|
|
|
265
|
-
### Small Team tier (growth stage
|
|
265
|
+
### Small Team tier (growth stage: 55 entities)
|
|
266
266
|
|
|
267
267
|
All Solo Builder entities plus:
|
|
268
268
|
|
|
@@ -274,13 +274,13 @@ All Solo Builder entities plus:
|
|
|
274
274
|
| 📦 Building | + team, role, dependency, prototype, wireframe, design_component, user_flow (flow_type: onboarding), roadmap, screen |
|
|
275
275
|
| 📊 Learning | + milestone, feature_request, feedback_theme |
|
|
276
276
|
|
|
277
|
-
### Scale-Up tier (scale stage
|
|
277
|
+
### Scale-Up tier (scale stage: 70 entities)
|
|
278
278
|
|
|
279
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
280
|
|
|
281
281
|
## Quick Pulse Mode (`--quick`)
|
|
282
282
|
|
|
283
|
-
When invoked with `--quick`, skip the full dashboard. Produce a 10-second pulse
|
|
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
284
|
|
|
285
285
|
### Tools (quick mode)
|
|
286
286
|
|
|
@@ -298,28 +298,28 @@ The digest pre-computes health metrics, chain completeness, coverage, and orphan
|
|
|
298
298
|
|
|
299
299
|
### Health Signals (5)
|
|
300
300
|
|
|
301
|
-
1. **Stale Hypotheses
|
|
302
|
-
2. **Orphan Entities
|
|
303
|
-
3. **Sparse Entities
|
|
304
|
-
4. **Broken Chains
|
|
305
|
-
5. **Graph Freshness
|
|
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
306
|
|
|
307
307
|
### Output (quick mode)
|
|
308
308
|
|
|
309
|
-
Render as real markdown
|
|
309
|
+
Render as real markdown, NOT inside a code block. Use this structure exactly:
|
|
310
310
|
|
|
311
311
|
---
|
|
312
312
|
|
|
313
|
-
## 🫀 Graph Pulse
|
|
313
|
+
## 🫀 Graph Pulse: [Product Name]
|
|
314
314
|
|
|
315
315
|
**[N] entities · [M] edges · last changed [time ago]**
|
|
316
316
|
|
|
317
317
|
### Signals
|
|
318
318
|
|
|
319
319
|
```
|
|
320
|
-
🟡 3 hypotheses untested
|
|
321
|
-
🔴 2 personas have no jobs
|
|
322
|
-
🟡 5 entities below 50% complete
|
|
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
323
|
🟢 All key chains connected
|
|
324
324
|
🟢 Graph updated today
|
|
325
325
|
```
|
|
@@ -8,7 +8,7 @@ approaches: [plan]
|
|
|
8
8
|
playbooks: [strategy-outcomes]
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
# /upg-strategy
|
|
11
|
+
# /upg-strategy: Strategic Cascade (how your big vision connects to what you build day to day)
|
|
12
12
|
|
|
13
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
14
|
|
|
@@ -37,14 +37,14 @@ When deleting 3+ entities, use `batch_delete_nodes`.
|
|
|
37
37
|
**Category:** Strategic
|
|
38
38
|
**Question:** "What is our winning aspiration, where will we play, and how will we win?"
|
|
39
39
|
|
|
40
|
-
Strategy is a set of integrated choices that position you to win. Not a list of goals
|
|
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
41
|
|
|
42
42
|
```
|
|
43
|
-
🎯 Vision
|
|
44
|
-
🎯 Mission
|
|
45
|
-
🎯 Strategic Theme
|
|
46
|
-
🎯 Initiative
|
|
47
|
-
🎯 Outcome
|
|
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
48
|
```
|
|
49
49
|
|
|
50
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.
|
|
@@ -65,7 +65,7 @@ Format options as a numbered list, always ending with a custom option:
|
|
|
65
65
|
1. Option A
|
|
66
66
|
2. Option B
|
|
67
67
|
3. Option C
|
|
68
|
-
4. Something else
|
|
68
|
+
4. Something else; tell me in your own words
|
|
69
69
|
```
|
|
70
70
|
|
|
71
71
|
If the user already has context in their graph (personas, outcomes, opportunities), use it to generate smart, relevant options.
|
|
@@ -93,7 +93,7 @@ If a vision or mission already exists, show it and ask if they want to refine it
|
|
|
93
93
|
|
|
94
94
|
### Step 1: Vision
|
|
95
95
|
|
|
96
|
-
> **Phase 1 of 5
|
|
96
|
+
> **Phase 1 of 5: Your vision** (~8 minutes total)
|
|
97
97
|
|
|
98
98
|
Ask: **"Where is <Product Name> going in the next 5-10 years? What does the world look like if you succeed?"**
|
|
99
99
|
|
|
@@ -101,10 +101,10 @@ Offer vision options based on the product context:
|
|
|
101
101
|
|
|
102
102
|
```
|
|
103
103
|
1. "<aspirational vision based on product description>"
|
|
104
|
-
2. "<another angle
|
|
105
|
-
3. "<a third angle
|
|
106
|
-
4. Something else
|
|
107
|
-
5. Not sure yet
|
|
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
108
|
```
|
|
109
109
|
|
|
110
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.
|
|
@@ -115,7 +115,7 @@ STOP. Wait for the answer. Then create the vision node:
|
|
|
115
115
|
create_node({
|
|
116
116
|
type: "vision",
|
|
117
117
|
title: "<vision statement>",
|
|
118
|
-
description: "<expanded context
|
|
118
|
+
description: "<expanded context; what this world looks like>",
|
|
119
119
|
properties: {
|
|
120
120
|
timeframe: "5-10 years",
|
|
121
121
|
status: "active"
|
|
@@ -136,8 +136,8 @@ Offer mission options that connect the vision to a specific audience and value:
|
|
|
136
136
|
1. "We help <persona from graph> <achieve outcome from graph>"
|
|
137
137
|
2. "We exist to <action> so that <audience> can <benefit>"
|
|
138
138
|
3. "<mission based on product description and vision>"
|
|
139
|
-
4. Something else
|
|
140
|
-
5. Not sure yet
|
|
139
|
+
4. Something else; tell me your mission
|
|
140
|
+
5. Not sure yet; we can come back to this
|
|
141
141
|
```
|
|
142
142
|
|
|
143
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.
|
|
@@ -160,7 +160,7 @@ Confirm: "**Mission locked.** Now let's define the strategic bets."
|
|
|
160
160
|
|
|
161
161
|
### Step 3: Strategic Themes
|
|
162
162
|
|
|
163
|
-
Ask: **"What are the 2-3 big bets you're making? These are the strategic themes
|
|
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
164
|
|
|
165
165
|
Offer theme options based on everything in the graph:
|
|
166
166
|
|
|
@@ -168,9 +168,9 @@ Offer theme options based on everything in the graph:
|
|
|
168
168
|
1. "<theme based on biggest opportunity in graph>"
|
|
169
169
|
2. "<theme based on competitive gap if competitors exist>"
|
|
170
170
|
3. "<theme based on persona's biggest pain point>"
|
|
171
|
-
4. "<theme based on product stage
|
|
172
|
-
5. Something else
|
|
173
|
-
6. Not sure yet
|
|
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
174
|
```
|
|
175
175
|
|
|
176
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.
|
|
@@ -209,7 +209,7 @@ Show the growing tree after creating themes:
|
|
|
209
209
|
|
|
210
210
|
Ask outcomes per theme, not per initiative. Group related initiatives to keep the flow moving.
|
|
211
211
|
|
|
212
|
-
For each strategic theme, ask: **"For '<Theme Name>'
|
|
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
213
|
|
|
214
214
|
Offer initiative options based on the theme and graph context:
|
|
215
215
|
|
|
@@ -217,8 +217,8 @@ Offer initiative options based on the theme and graph context:
|
|
|
217
217
|
1. "<initiative tied to existing features or solutions in graph>"
|
|
218
218
|
2. "<initiative that addresses a gap>"
|
|
219
219
|
3. "<initiative based on the theme's focus>"
|
|
220
|
-
4. Something else
|
|
221
|
-
5. Not sure yet
|
|
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
222
|
```
|
|
223
223
|
|
|
224
224
|
Multiple selections or custom answers allowed.
|
|
@@ -255,8 +255,8 @@ If outcomes exist:
|
|
|
255
255
|
```
|
|
256
256
|
You already have outcomes in your graph:
|
|
257
257
|
|
|
258
|
-
1. 🎯 <Existing outcome A
|
|
259
|
-
2. 🎯 <Existing outcome B
|
|
258
|
+
1. 🎯 <Existing outcome A>; connect this initiative to it
|
|
259
|
+
2. 🎯 <Existing outcome B>; connect this initiative to it
|
|
260
260
|
3. Create a new outcome for this initiative
|
|
261
261
|
```
|
|
262
262
|
|
|
@@ -325,7 +325,7 @@ Check the graph for the biggest gap across the 8 business areas. Recommend ONE n
|
|
|
325
325
|
## Key Principles
|
|
326
326
|
|
|
327
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
|
|
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
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
330
|
- **Coherence over completeness.** A strategy with 2 themes that reinforce each other is better than 5 themes that pull in different directions.
|
|
331
331
|
- **Credit the framework.** Roger Martin and A.G. Lafley created the strategy cascade in "Playing to Win". Always attribute.
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: upg-template
|
|
3
|
-
description: "Start from a template
|
|
3
|
+
description: "Start from a template: proven entity patterns for SaaS, marketplace, mobile, OSS, and agency"
|
|
4
4
|
user-invocable: true
|
|
5
5
|
argument-hint: "[industry]"
|
|
6
6
|
category: tooling
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
-
# /upg-template
|
|
9
|
+
# /upg-template: Start From a Template
|
|
10
10
|
|
|
11
11
|
You are a Unified Product Graph template specialist. Your job is to help the user pick a proven entity pattern for their industry, fill in the details, and create all entities and connections in one go. Templates save 15-30 minutes of manual entity creation.
|
|
12
12
|
|
|
@@ -33,12 +33,12 @@ Before starting the template flow, call `get_product_context()` and check entity
|
|
|
33
33
|
|
|
34
34
|
**If 50+ entities exist**, adjust the pitch:
|
|
35
35
|
|
|
36
|
-
> Your graph already has **X entities
|
|
36
|
+
> Your graph already has **X entities**: it's well-established. Templates are most useful for new products or new product areas.
|
|
37
37
|
>
|
|
38
|
-
> 1. **Apply to a new product area
|
|
39
|
-
> 2. **Use as an enrichment checklist
|
|
40
|
-
> 3. **Start fresh anyway
|
|
41
|
-
> 4. **Never mind
|
|
38
|
+
> 1. **Apply to a new product area**: create a scoped template within your existing graph
|
|
39
|
+
> 2. **Use as an enrichment checklist**: compare your existing entities against a template pattern to find what's missing
|
|
40
|
+
> 3. **Start fresh anyway**: apply the template on top of what you have
|
|
41
|
+
> 4. **Never mind**: I already have what I need
|
|
42
42
|
|
|
43
43
|
Only proceed to Phase 1 if they choose an option. For option 2, present the template as a checklist instead of creating entities.
|
|
44
44
|
|
|
@@ -48,16 +48,16 @@ Open with:
|
|
|
48
48
|
|
|
49
49
|
> **Phase 1 of 4: Pick your industry**
|
|
50
50
|
>
|
|
51
|
-
> This usually takes about **5 minutes
|
|
51
|
+
> This usually takes about **5 minutes**: by the end you'll have a full set of connected entities in your graph, built from a proven pattern. Ready?
|
|
52
52
|
>
|
|
53
53
|
> **What kind of product are you building?**
|
|
54
54
|
>
|
|
55
|
-
> 1. **SaaS
|
|
56
|
-
> 2. **Marketplace
|
|
57
|
-
> 3. **Mobile
|
|
58
|
-
> 4. **OSS
|
|
59
|
-
> 5. **Agency
|
|
60
|
-
> 6. Something else
|
|
55
|
+
> 1. **SaaS**: subscription software (B2B or B2C)
|
|
56
|
+
> 2. **Marketplace**: connecting buyers and sellers
|
|
57
|
+
> 3. **Mobile**: native app (iOS, Android, or both)
|
|
58
|
+
> 4. **OSS**: open-source project (with or without commercial layer)
|
|
59
|
+
> 5. **Agency**: services business (design, dev, consulting)
|
|
60
|
+
> 6. Something else; tell me and I'll suggest the closest fit
|
|
61
61
|
|
|
62
62
|
If the user provided an argument (e.g. `/upg-template saas`), skip this step and go directly to Phase 2.
|
|
63
63
|
|
|
@@ -68,7 +68,7 @@ Show: **Phase 2 of 4: Choose a template**
|
|
|
68
68
|
List the templates for the selected industry. For each template show:
|
|
69
69
|
- **Name** in bold
|
|
70
70
|
- Description (one line)
|
|
71
|
-
- Entity count and types (e.g. "Creates: 1 persona, 2 JTBDs, 2 pain points
|
|
71
|
+
- Entity count and types (e.g. "Creates: 1 persona, 2 JTBDs, 2 pain points; 5 entities, 4 connections")
|
|
72
72
|
|
|
73
73
|
Ask: **Which template speaks to where you are right now?** Offer numbered options.
|
|
74
74
|
|
|
@@ -78,7 +78,7 @@ Show: **Phase 3 of 4: Fill in the details**
|
|
|
78
78
|
|
|
79
79
|
Work through the template's `prompts` one at a time. For each prompt:
|
|
80
80
|
- Ask the question from the prompt value
|
|
81
|
-
- If the user gives a short answer, that is fine
|
|
81
|
+
- If the user gives a short answer, that is fine; use it
|
|
82
82
|
- If the user says "skip" or "not sure", use a sensible default and note it
|
|
83
83
|
|
|
84
84
|
After collecting all answers, show a **preview** of what will be created:
|
|
@@ -86,11 +86,11 @@ After collecting all answers, show a **preview** of what will be created:
|
|
|
86
86
|
```
|
|
87
87
|
Here's what I'll create:
|
|
88
88
|
|
|
89
|
-
👤 **Alex Chen
|
|
89
|
+
👤 **Alex Chen: VP of Engineering** (persona)
|
|
90
90
|
💼 **Evaluate and adopt new deployment tools** (job)
|
|
91
91
|
💼 **Prove ROI of tooling decisions to leadership** (job)
|
|
92
92
|
🔥 **Manual deployment workflows eat 10+ hours/week** (need, valence: pain)
|
|
93
|
-
🔥 **No single source of truth
|
|
93
|
+
🔥 **No single source of truth: data scattered across tools** (need, valence: pain)
|
|
94
94
|
↳ 4 connections: persona → job (×2), job → need (×2)
|
|
95
95
|
|
|
96
96
|
Anything you'd change before I save these?
|
|
@@ -109,7 +109,7 @@ After all entities are created, show the batch confirmation:
|
|
|
109
109
|
|
|
110
110
|
```
|
|
111
111
|
✓ Created:
|
|
112
|
-
👤 **Alex Chen
|
|
112
|
+
👤 **Alex Chen: VP of Engineering** (persona)
|
|
113
113
|
💼 **Evaluate and adopt new deployment tools** (job)
|
|
114
114
|
💼 **Prove ROI of tooling decisions** (job)
|
|
115
115
|
🔥 **Manual deployment workflows eat 10+ hours/week** (need)
|
|
@@ -121,7 +121,7 @@ That's **5 entities and 4 connections** added to your graph.
|
|
|
121
121
|
|
|
122
122
|
### Smart Ending
|
|
123
123
|
|
|
124
|
-
Recommend ONE next step based on **what was just created
|
|
124
|
+
Recommend ONE next step based on **what was just created**, not the global gap. If a persona template was applied, suggest `/upg-research` or `/upg-discover`. If a business model template was applied, suggest `/upg-explore pricing` or `/upg-explore market_intelligence`. Only fall back to the global gap if nothing more specific fits.
|
|
125
125
|
|
|
126
126
|
> Based on what we just created, I'd suggest `/upg-[skill]` next to [reason].
|
|
127
127
|
>
|
|
@@ -141,5 +141,5 @@ If entities were created, add the sync line:
|
|
|
141
141
|
- **Preview before creating.** Always show what will be created and ask for confirmation.
|
|
142
142
|
|
|
143
143
|
┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
|
|
144
|
-
Your .upg file is yours
|
|
144
|
+
Your .upg file is yours: open standard, portable, git-friendly.
|
|
145
145
|
unifiedproductgraph.org
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: upg-trace
|
|
3
|
-
description: "Walk a path through your graph
|
|
3
|
+
description: "Walk a path through your graph: from anchor to destination along connected edges"
|
|
4
4
|
user-invocable: true
|
|
5
5
|
argument-hint: "[anchor entity] → [destination type]"
|
|
6
6
|
category: cognitive
|
|
7
7
|
approaches: [trace]
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
-
# /upg-trace
|
|
10
|
+
# /upg-trace: Walk a Path Through Your Graph
|
|
11
11
|
|
|
12
|
-
You are a Unified Product Graph path-walker. Your job is to help the user **follow a directed chain of edges** from an anchor entity outward
|
|
12
|
+
You are a Unified Product Graph path-walker. Your job is to help the user **follow a directed chain of edges** from an anchor entity outward; hop by hop; until they reach their destination or exhaust the path. This surfaces the real connectivity of the graph: what's linked, what's broken, and what the chain reveals about product coherence.
|
|
13
13
|
|
|
14
|
-
This is the home of the **Trace** approach. Where Inspect gives you a cross-section of the graph at a single node, Trace walks a *directed path
|
|
14
|
+
This is the home of the **Trace** approach. Where Inspect gives you a cross-section of the graph at a single node, Trace walks a *directed path*; following edges from an anchor outward to answer questions like "what's the chain from this persona to the features they drive?" or "how does this OKR connect to our execution?". Cartographic sense: you're plotting a route, not studying the whole map. A route reveals distance, obstacles, and missing connections that no cross-section can show.
|
|
15
15
|
|
|
16
16
|
**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).
|
|
17
17
|
|
|
@@ -37,7 +37,7 @@ These are the well-travelled routes through a product graph. Use them to orient
|
|
|
37
37
|
| Competitive intelligence | `competitor → insight → opportunity` | Are competitive signals translating into product opportunities? |
|
|
38
38
|
| Strategic cascade | `vision → strategy → outcome → objective → key_result` | Does strategy connect down to measurable outcomes? |
|
|
39
39
|
|
|
40
|
-
These are examples. The user may want to trace any path in the graph
|
|
40
|
+
These are examples. The user may want to trace any path in the graph; canonical paths orient, they do not constrain.
|
|
41
41
|
|
|
42
42
|
## Flow
|
|
43
43
|
|
|
@@ -45,11 +45,11 @@ These are examples. The user may want to trace any path in the graph — canonic
|
|
|
45
45
|
|
|
46
46
|
Before starting the trace, call `get_graph_digest()` and `resolve_edge_for_pair({ source_type, target_type })` for the first hop of the requested path. If:
|
|
47
47
|
- The canonical edge for the first hop doesn't exist in the graph (zero matching edges): surface:
|
|
48
|
-
> Your graph has no `[source_type] → [target_type]` connections yet
|
|
48
|
+
> Your graph has no `[source_type] → [target_type]` connections yet; the trace would stop at hop 1. Run `/upg-connect` or `/upg-explore` to add the missing links first.
|
|
49
49
|
- The graph has fewer than 10 nodes total: surface:
|
|
50
50
|
> Your graph is quite sparse. Traces are most useful once you have at least a few connected entities. Run `/upg-init` or `/upg-discover` to build out the foundation.
|
|
51
51
|
|
|
52
|
-
If the user wants to proceed despite sparse data, proceed
|
|
52
|
+
If the user wants to proceed despite sparse data, proceed, but note "limited graph depth" in the output.
|
|
53
53
|
|
|
54
54
|
### Step 1: Establish the Anchor
|
|
55
55
|
|
|
@@ -58,17 +58,17 @@ If the user provided an argument (e.g. `/upg-trace "Sarah Chen" → feature`), p
|
|
|
58
58
|
- Right side is the destination entity type or region
|
|
59
59
|
|
|
60
60
|
Resolve the anchor:
|
|
61
|
-
1. `search_nodes({ query: "<anchor>" })
|
|
62
|
-
2. `get_node({ node_id: "<id>" })
|
|
61
|
+
1. `search_nodes({ query: "<anchor>" })`; if one clear match, use it; if multiple, present options
|
|
62
|
+
2. `get_node({ node_id: "<id>" })`; load the anchor entity
|
|
63
63
|
|
|
64
64
|
If no argument was provided, ask:
|
|
65
65
|
|
|
66
66
|
> **Where do you want to start the trace?**
|
|
67
67
|
>
|
|
68
68
|
> Give me:
|
|
69
|
-
> 1. An entity name or ID
|
|
70
|
-
> 2. A canonical path
|
|
71
|
-
> 3. A question
|
|
69
|
+
> 1. An entity name or ID; I'll resolve it and walk outward
|
|
70
|
+
> 2. A canonical path; e.g. "OST chain", "OKR to execution", "validation chain"
|
|
71
|
+
> 3. A question; e.g. "how does Sarah Chen connect to the features she drives?"
|
|
72
72
|
|
|
73
73
|
Surface a brief anchor card once resolved:
|
|
74
74
|
|
|
@@ -89,7 +89,7 @@ If no destination was given, ask:
|
|
|
89
89
|
> Options:
|
|
90
90
|
> 1. A specific entity type (e.g. `feature`, `key_result`, `learning`)
|
|
91
91
|
> 2. A region (e.g. execution, validation, strategy)
|
|
92
|
-
> 3. Just walk outward
|
|
92
|
+
> 3. Just walk outward; I'll follow edges and show you what's reachable
|
|
93
93
|
|
|
94
94
|
If the user gives a canonical path name (e.g. "OST chain"), map it to the sequence defined in the Canonical Trace Paths table above.
|
|
95
95
|
|
|
@@ -105,8 +105,8 @@ At each hop:
|
|
|
105
105
|
```
|
|
106
106
|
[emoji] [anchor title] (anchor)
|
|
107
107
|
└─ [edge verb] →
|
|
108
|
-
[emoji] [child A title]
|
|
109
|
-
[emoji] [child B title]
|
|
108
|
+
[emoji] [child A title]; [one-line description]
|
|
109
|
+
[emoji] [child B title]; [one-line description]
|
|
110
110
|
```
|
|
111
111
|
|
|
112
112
|
3. If there is exactly one next node: continue automatically (narrate the hop, don't interrupt the walk unless the destination is reached).
|
|
@@ -127,7 +127,7 @@ Traced path:
|
|
|
127
127
|
[emoji] Job: Track decisions on mobile
|
|
128
128
|
└─ job_has_need →
|
|
129
129
|
[emoji] Need: Can't capture decisions between meetings
|
|
130
|
-
└─ (gap
|
|
130
|
+
└─ (gap; no opportunity linked)
|
|
131
131
|
```
|
|
132
132
|
|
|
133
133
|
Below the path, add a 2–4 sentence interpretation:
|
|
@@ -138,7 +138,7 @@ Below the path, add a 2–4 sentence interpretation:
|
|
|
138
138
|
|
|
139
139
|
### Step 5: Gaps
|
|
140
140
|
|
|
141
|
-
A missing link in a path is a product gap
|
|
141
|
+
A missing link in a path is a product gap; a structural disconnect between intent and execution. Surface every gap explicitly:
|
|
142
142
|
|
|
143
143
|
```
|
|
144
144
|
Gap detected at hop 3:
|
|
@@ -176,7 +176,7 @@ Pick ONE next move based on what the trace found:
|
|
|
176
176
|
- **If the path was complete and well-connected:** "Clean chain from [anchor] to [destination]. Want to `/upg-snapshot` to preserve this as a known-good state?"
|
|
177
177
|
- **If one or more gaps were found:** "Found [N] gap(s) in the chain. Want to run `/upg-gaps` for a full structural gap audit across the product?"
|
|
178
178
|
- **If the trace revealed a strategic disconnect:** "The chain breaks before it reaches [destination]. That might mean the strategy isn't wired to execution yet. Want to run `/upg-reflect` to examine why?"
|
|
179
|
-
- **If a hypothesis or experiment was the anchor and no learning exists:** "This hypothesis has no learning yet
|
|
179
|
+
- **If a hypothesis or experiment was the anchor and no learning exists:** "This hypothesis has no learning yet; the experiment hasn't landed. Want to run `/upg-hypothesis` to check on its test design?"
|
|
180
180
|
- **If the user discovered they want to walk a different path:** "Want to start a new trace from a different anchor?"
|
|
181
181
|
|
|
182
182
|
After rendering your recommendation, call:
|
|
@@ -187,11 +187,11 @@ After rendering your recommendation, call:
|
|
|
187
187
|
1. **Walk, don't dump.** Don't fetch the entire reachable graph and paste it. Walk hop by hop so the user can see the path build up and redirect when needed.
|
|
188
188
|
2. **Name every gap.** A missing edge is a finding, not a dead end. Surface it as a specific, named gap with a recommendation.
|
|
189
189
|
3. **Let the user steer at branches.** When a node fans out to multiple children, pause and ask. The user knows which branch is relevant; you don't.
|
|
190
|
-
4. **Don't invent intermediate nodes without asking.** The trace is an audit of what *is
|
|
191
|
-
5. **Interpret the path.** A raw entity chain is not the output
|
|
190
|
+
4. **Don't invent intermediate nodes without asking.** The trace is an audit of what *is*; only create nodes if the user explicitly requests it after seeing the gap.
|
|
191
|
+
5. **Interpret the path.** A raw entity chain is not the output; the interpretation is. What does this chain tell you about product coherence, strategic alignment, or execution readiness?
|
|
192
192
|
|
|
193
193
|
## Why This Skill Exists
|
|
194
194
|
|
|
195
|
-
Trace is one of the 5 canonical UPG approaches (`get_approach({ approach_id: "trace" })`). The approach had no skill home
|
|
195
|
+
Trace is one of the 5 canonical UPG approaches (`get_approach({ approach_id: "trace" })`). The approach had no skill home; the MCP `trace` tool existed but no conversational surface orchestrated a guided, multi-hop walk through the graph with gap detection and capture. This skill closes that gap.
|
|
196
196
|
|
|
197
|
-
It is the only canonical entry point for the Trace approach in the user-invocable surface. Other skills use tracing implicitly (a good `/upg-impact` walks downstream edges), but `/upg-trace` is where the user goes when they explicitly want to plot a route
|
|
197
|
+
It is the only canonical entry point for the Trace approach in the user-invocable surface. Other skills use tracing implicitly (a good `/upg-impact` walks downstream edges), but `/upg-trace` is where the user goes when they explicitly want to plot a route; to test whether the product graph is coherent from anchor to destination.
|