@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
package/skills/upg-diff/SKILL.md
CHANGED
|
@@ -7,9 +7,9 @@ category: cognitive
|
|
|
7
7
|
approaches: [inspect]
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
-
# /upg-diff
|
|
10
|
+
# /upg-diff: Semantic Graph Diff
|
|
11
11
|
|
|
12
|
-
You are a Unified Product Graph diff engine. Your job is to show meaningful, human-readable changes to the product graph since the last git commit (or a specified ref)
|
|
12
|
+
You are a Unified Product Graph diff engine. Your job is to show meaningful, human-readable changes to the product graph since the last git commit (or a specified ref), not raw JSON, but semantic product changes.
|
|
13
13
|
|
|
14
14
|
**Before producing any output, read the design system:** /upg-context for emoji mappings, score dots, bar styles, and formatting rules.
|
|
15
15
|
|
|
@@ -31,7 +31,7 @@ git diff HEAD -- "*.upg"
|
|
|
31
31
|
|
|
32
32
|
If the `.upg` file isn't tracked by git yet:
|
|
33
33
|
```
|
|
34
|
-
This .upg file isn't tracked by git yet
|
|
34
|
+
This .upg file isn't tracked by git yet; there's nothing to diff against.
|
|
35
35
|
|
|
36
36
|
Run: git add product.upg && git commit -m "Initial product graph"
|
|
37
37
|
|
|
@@ -76,13 +76,13 @@ Format as a clear, scannable summary:
|
|
|
76
76
|
+ 4 connections added
|
|
77
77
|
|
|
78
78
|
### Added
|
|
79
|
-
+ 👤 Sarah Chen
|
|
79
|
+
+ 👤 Sarah Chen: Senior PM at Series B startup
|
|
80
80
|
+ 💼 Track decisions on mobile (functional, importance ● ● ● ● ●)
|
|
81
81
|
+ 🎯 Reduce time-to-value by 40%
|
|
82
82
|
|
|
83
83
|
### Modified
|
|
84
|
-
~ ⚗️ "Wizard reduces drop-off"
|
|
85
|
-
~ 📊 Day-7 retention
|
|
84
|
+
~ ⚗️ "Wizard reduces drop-off": status: ⚪ untested → 🟡 in_progress
|
|
85
|
+
~ 📊 Day-7 retention: target_value: 55% → 65%
|
|
86
86
|
|
|
87
87
|
### Removed
|
|
88
88
|
- ⚔️ OldRival (removed from graph)
|
|
@@ -106,9 +106,9 @@ This is a good checkpoint. Consider:
|
|
|
106
106
|
git add product.upg && git commit -m "Add Sarah persona + retention outcome"
|
|
107
107
|
|
|
108
108
|
Or keep going:
|
|
109
|
-
/upg-gaps
|
|
110
|
-
/upg-tree
|
|
111
|
-
/upg-status
|
|
109
|
+
/upg-gaps: Check if these changes closed any gaps
|
|
110
|
+
/upg-tree: See the updated graph structure
|
|
111
|
+
/upg-status: Full health dashboard
|
|
112
112
|
```
|
|
113
113
|
|
|
114
114
|
## Handling Edge Cases
|
|
@@ -127,7 +127,7 @@ Group by entity type and show counts, then offer to expand:
|
|
|
127
127
|
+ 12 connections added
|
|
128
128
|
~ 3 entities modified
|
|
129
129
|
|
|
130
|
-
Want me to show the full details? That's a lot of changes
|
|
130
|
+
Want me to show the full details? That's a lot of changes; might be worth
|
|
131
131
|
committing as a checkpoint first.
|
|
132
132
|
```
|
|
133
133
|
|
|
@@ -137,7 +137,7 @@ If the repo has multiple `.upg` files, list them and ask which one to diff.
|
|
|
137
137
|
## Key Principles
|
|
138
138
|
|
|
139
139
|
- **Semantic, not syntactic.** "Added 👤 Sarah Chen" is useful. A JSON diff line is not.
|
|
140
|
-
- **Group by action.** Added, modified, removed
|
|
140
|
+
- **Group by action.** Added, modified, removed, in that order. Additions are the most interesting.
|
|
141
141
|
- **Show the important properties.** For modified entities, show what changed (old → new).
|
|
142
142
|
- **Follow the design system.** Entity emojis, score dots, filled bars, dashed dividers as defined in /upg-context.
|
|
143
143
|
- **Suggest git hygiene.** Encourage committing at natural checkpoints.
|
|
@@ -145,6 +145,6 @@ If the repo has multiple `.upg` files, list them and ask which one to diff.
|
|
|
145
145
|
|
|
146
146
|
```
|
|
147
147
|
┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
|
|
148
|
-
Your .upg file is yours
|
|
148
|
+
Your .upg file is yours: open standard, portable, git-friendly.
|
|
149
149
|
unifiedproductgraph.org
|
|
150
150
|
```
|
|
@@ -8,9 +8,9 @@ approaches: [plan]
|
|
|
8
8
|
playbooks: [discovery-research-validation, users-needs]
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
# /upg-discover
|
|
11
|
+
# /upg-discover: OST-Guided Discovery Session
|
|
12
12
|
|
|
13
|
-
> **This skill runs a structured Opportunity Solution Tree (OST) session
|
|
13
|
+
> **This skill runs a structured Opportunity Solution Tree (OST) session**: it creates new Outcome → Opportunity → Solution → Hypothesis → Experiment chains from scratch.
|
|
14
14
|
>
|
|
15
15
|
> Looking to explore what's already in your graph? Use `/upg-explore` (add entities) or `/upg-inspect` (audit an entity).
|
|
16
16
|
|
|
@@ -53,7 +53,7 @@ Every level must be grounded in evidence, not opinion. Outcomes come from busine
|
|
|
53
53
|
## Discovery Flow
|
|
54
54
|
|
|
55
55
|
### Step 1: Check Existing State
|
|
56
|
-
**Phase 1 of 5
|
|
56
|
+
**Phase 1 of 5: Setting the frame** (~10 minutes total)
|
|
57
57
|
|
|
58
58
|
First, check what already exists:
|
|
59
59
|
|
|
@@ -79,7 +79,7 @@ Good outcomes are:
|
|
|
79
79
|
Bad outcomes:
|
|
80
80
|
- "Make the product better" (not measurable)
|
|
81
81
|
- "Ship feature X" (that's a solution, not an outcome)
|
|
82
|
-
- "Increase revenue" (too broad
|
|
82
|
+
- "Increase revenue" (too broad, which lever?)
|
|
83
83
|
|
|
84
84
|
If they give a solution disguised as an outcome, coach them: **"That sounds more like a solution. What outcome would that solution drive? What changes for the user or the business?"**
|
|
85
85
|
|
|
@@ -97,12 +97,12 @@ create_node({
|
|
|
97
97
|
Show the tree so far:
|
|
98
98
|
```
|
|
99
99
|
🎯 <title>
|
|
100
|
-
(no opportunities yet
|
|
100
|
+
(no opportunities yet; let's discover some)
|
|
101
101
|
```
|
|
102
102
|
|
|
103
103
|
### Step 3: Discover Opportunities
|
|
104
104
|
|
|
105
|
-
Ask: **"What opportunities have you discovered through research? These should be user needs, pain points, or unmet desires
|
|
105
|
+
Ask: **"What opportunities have you discovered through research? These should be user needs, pain points, or unmet desires; things you've observed, not things you've assumed."**
|
|
106
106
|
|
|
107
107
|
Coach them on the difference:
|
|
108
108
|
- **Opportunity (good):** "Users spend 15 minutes manually copying data between tools" (observed friction)
|
|
@@ -114,7 +114,7 @@ Help them generate 2-3 opportunities. For each:
|
|
|
114
114
|
create_node({
|
|
115
115
|
type: "opportunity",
|
|
116
116
|
title: "<user need or problem observed>",
|
|
117
|
-
description: "<evidence
|
|
117
|
+
description: "<evidence; where did you observe this?>",
|
|
118
118
|
properties: {
|
|
119
119
|
status: "identified",
|
|
120
120
|
reach: <1-5>,
|
|
@@ -140,7 +140,7 @@ Show the growing tree with score dots:
|
|
|
140
140
|
|
|
141
141
|
### Step 4: Generate Solutions
|
|
142
142
|
|
|
143
|
-
For the highest-pain opportunity, ask: **"For this opportunity
|
|
143
|
+
For the highest-pain opportunity, ask: **"For this opportunity, '<opportunity title>', what solutions could address it? Think broadly: what are 2-3 different approaches?"**
|
|
144
144
|
|
|
145
145
|
Coach divergent thinking:
|
|
146
146
|
- "What's the simplest version?"
|
|
@@ -195,7 +195,7 @@ Create the experiment chain:
|
|
|
195
195
|
//
|
|
196
196
|
// Hypothesis MUST attach to a solution (`solution_proposes_hypothesis`),
|
|
197
197
|
// never directly to an opportunity. The OST chain is opportunity → solution
|
|
198
|
-
// → hypothesis
|
|
198
|
+
// → hypothesis; short-circuiting through opportunity produces an
|
|
199
199
|
// orphan hypothesis because there is no canonical
|
|
200
200
|
// `opportunity → hypothesis` edge by design. If you find yourself
|
|
201
201
|
// wanting to skip the solution layer, that is a signal you have not
|
|
@@ -286,5 +286,5 @@ After rendering your recommendation, call:
|
|
|
286
286
|
- **Credit the framework.** Teresa Torres created OST. Always attribute.
|
|
287
287
|
|
|
288
288
|
┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
|
|
289
|
-
Your `.upg` file is yours
|
|
289
|
+
Your `.upg` file is yours: open standard, portable, git-friendly.
|
|
290
290
|
unifiedproductgraph.org
|
|
@@ -3,7 +3,7 @@ name: upg-explore-detail
|
|
|
3
3
|
description: "Full property schemas and edge type reference for /upg-explore"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
# /upg-explore
|
|
6
|
+
# /upg-explore: Property Schemas & Edge Types (Detail)
|
|
7
7
|
|
|
8
8
|
This file contains the full property schemas and edge type reference for entity creation. It is loaded on demand by /upg-explore when the agent needs to know the specific properties or valid connections for an entity type.
|
|
9
9
|
|
|
@@ -30,7 +30,7 @@ Ask: "What's the timeline for this outcome?"
|
|
|
30
30
|
"range_max": 100
|
|
31
31
|
}
|
|
32
32
|
```
|
|
33
|
-
Ask: "What's the current value? What's the target? What unit?" (KPIs are `metric` nodes with `designation: "kpi"
|
|
33
|
+
Ask: "What's the current value? What's the target? What unit?" (KPIs are `metric` nodes with `designation: "kpi"`; the `kpi` type was consolidated into `metric` in v0.1.0.)
|
|
34
34
|
|
|
35
35
|
### objective
|
|
36
36
|
```json
|
|
@@ -165,7 +165,7 @@ Ask: "How often does this happen (1-5)? How bad is it (1-5)? Is this a pain, gap
|
|
|
165
165
|
"status": "draft | validated | active | pivoting"
|
|
166
166
|
}
|
|
167
167
|
```
|
|
168
|
-
Ask: "What type of canvas is this
|
|
168
|
+
Ask: "What type of canvas is this; lean, BMC, or custom? Who are the customer segments? What are the key activities?"
|
|
169
169
|
|
|
170
170
|
### value_proposition
|
|
171
171
|
```json
|
|
@@ -200,7 +200,7 @@ Ask: "What's the target market? Is this product-led, sales-led, or community-led
|
|
|
200
200
|
"industry": "Target industry",
|
|
201
201
|
"budget_range": "Typical budget",
|
|
202
202
|
"buying_triggers": ["What causes them to look for a solution"],
|
|
203
|
-
"disqualifiers": ["Red flags
|
|
203
|
+
"disqualifiers": ["Red flags; who is NOT a fit"],
|
|
204
204
|
"decision_makers": ["Roles involved in the buying decision"]
|
|
205
205
|
}
|
|
206
206
|
```
|
|
@@ -245,7 +245,7 @@ Ask: "Which persona takes this journey? What's the scenario? What stages does it
|
|
|
245
245
|
"decided_on": "ISO date"
|
|
246
246
|
}
|
|
247
247
|
```
|
|
248
|
-
Ask: "What's the context
|
|
248
|
+
Ask: "What's the context; why was this decision needed? What was decided? What alternatives were considered? Which layer does this belong to; engineering, design, or product?" (`architecture_decision`, `design_decision`, and `product_decision` were consolidated into the single `decision` type with a `layer` property in v0.2.0.)
|
|
249
249
|
|
|
250
250
|
### growth_loop
|
|
251
251
|
```json
|
|
@@ -259,7 +259,7 @@ Ask: "What's the context — why was this decision needed? What was decided? Wha
|
|
|
259
259
|
"status": "theoretical | testing | proven | scaling"
|
|
260
260
|
}
|
|
261
261
|
```
|
|
262
|
-
Ask: "What type of loop
|
|
262
|
+
Ask: "What type of loop; viral, content, paid, or product? What triggers it? What action does the user take? How does the output feed back into the trigger?"
|
|
263
263
|
|
|
264
264
|
### pricing_strategy
|
|
265
265
|
```json
|
|
@@ -272,7 +272,7 @@ Ask: "What type of loop — viral, content, paid, or product? What triggers it?
|
|
|
272
272
|
"status": "research | testing | launched | iterating"
|
|
273
273
|
}
|
|
274
274
|
```
|
|
275
|
-
Ask: "What pricing model
|
|
275
|
+
Ask: "What pricing model; freemium, usage-based, per-seat, etc.? What's the anchor price? How does this compare to competitors; cheaper, parity, or premium?"
|
|
276
276
|
|
|
277
277
|
### ai_model
|
|
278
278
|
```json
|
|
@@ -287,9 +287,9 @@ Ask: "What pricing model — freemium, usage-based, per-seat, etc.? What's the a
|
|
|
287
287
|
"status": "prototyping | evaluating | staging | production | deprecated"
|
|
288
288
|
}
|
|
289
289
|
```
|
|
290
|
-
Ask: "What type of model
|
|
290
|
+
Ask: "What type of model; LLM, classifier, recommender? Which provider? What's its use case in the product?"
|
|
291
291
|
|
|
292
|
-
## Edge Types
|
|
292
|
+
## Edge Types: Valid Connections
|
|
293
293
|
|
|
294
294
|
After creating an entity, search for related entities and suggest connections. Use these valid edge types:
|
|
295
295
|
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: upg-explore
|
|
3
|
-
description: "Explore a UPG region
|
|
3
|
+
description: "Explore a UPG region: walk its canonical playbook"
|
|
4
4
|
user-invocable: true
|
|
5
5
|
argument-hint: "[region or description]"
|
|
6
6
|
category: cognitive
|
|
7
7
|
approaches: [plan]
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
-
# /upg-explore
|
|
10
|
+
# /upg-explore: Explore a UPG Region
|
|
11
11
|
|
|
12
12
|
You are a Unified Product Graph-aware product assistant. When the user describes something they want to add to their product graph, you map it to the correct entity type, actively prompt for the key properties of that type, create it with full properties, connect it to related entities, and explain which domain it belongs to.
|
|
13
13
|
|
|
@@ -19,7 +19,7 @@ Use the `mcp__unified-product-graph__*` MCP tools (create_node, create_edge, sea
|
|
|
19
19
|
|
|
20
20
|
## Entity Type Mapping
|
|
21
21
|
|
|
22
|
-
Map the user's intent to the correct UPG entity type. Don't guess
|
|
22
|
+
Map the user's intent to the correct UPG entity type. Don't guess; ask if ambiguous.
|
|
23
23
|
|
|
24
24
|
### 🎯 Strategic
|
|
25
25
|
|
|
@@ -171,7 +171,7 @@ Map the user's intent to the correct UPG entity type. Don't guess — ask if amb
|
|
|
171
171
|
|---|---|---|
|
|
172
172
|
| A blog post, article, video, asset | `content_piece` | Content & Knowledge |
|
|
173
173
|
| A help article, docs page | `knowledge_base_article` | Content & Knowledge |
|
|
174
|
-
| A brand asset
|
|
174
|
+
| A brand asset; logo, guideline, template | `brand_asset` | Content & Knowledge |
|
|
175
175
|
|
|
176
176
|
### 🛡️ DevOps & Platform
|
|
177
177
|
|
|
@@ -236,10 +236,10 @@ Map the user's intent to the correct UPG entity type. Don't guess — ask if amb
|
|
|
236
236
|
|
|
237
237
|
## Property Schemas & Edge Types
|
|
238
238
|
|
|
239
|
-
**Full property schemas and edge type reference are in `SKILL-DETAIL.md`.** Read that file when you need to create a specific entity type and need to know its properties or valid connections. Don't load it upfront
|
|
239
|
+
**Full property schemas and edge type reference are in `SKILL-DETAIL.md`.** Read that file when you need to create a specific entity type and need to know its properties or valid connections. Don't load it upfront; only when you've identified the entity type.
|
|
240
240
|
|
|
241
241
|
**Quick reference for the most common types:**
|
|
242
|
-
- **persona**: context, motivation, experience_level (goals[] and frustrations[] are separate nodes
|
|
242
|
+
- **persona**: context, motivation, experience_level (goals[] and frustrations[] are separate nodes; use desired_outcome + need with edges)
|
|
243
243
|
- **job**: statement (When I... I want to... So I can...), job_type, importance 1-5
|
|
244
244
|
- **hypothesis**: we_believe, will_result_in, we_know_when, status: drafted
|
|
245
245
|
- **opportunity**: status, reach 1-5, frequency 1-5, pain 1-5
|
|
@@ -250,9 +250,9 @@ For all other types, read SKILL-DETAIL.md.
|
|
|
250
250
|
|
|
251
251
|
## After Creation
|
|
252
252
|
|
|
253
|
-
1. Show what was created with all properties, using entity type emojis (e.g. `👤 Sarah Chen
|
|
253
|
+
1. Show what was created with all properties, using entity type emojis (e.g. `👤 Sarah Chen: Senior PM`) and score dots for 1-5 values (e.g. `importance ● ● ● ● ○`)
|
|
254
254
|
2. Search for related entities using `search_nodes`
|
|
255
|
-
3. Suggest connections: "I found these related entities
|
|
255
|
+
3. Suggest connections: "I found these related entities; want me to connect them?"
|
|
256
256
|
4. Mention which Unified Product Graph domain this entity belongs to
|
|
257
257
|
5. Suggest the logical next entity: "⚗️ Hypotheses need 🧪 experiments to be validated. Want to create one?"
|
|
258
258
|
|
|
@@ -260,7 +260,7 @@ For all other types, read SKILL-DETAIL.md.
|
|
|
260
260
|
|
|
261
261
|
Check `get_session_context()` for the current lens. After creating certain entity types, prompt for causal/structural edges:
|
|
262
262
|
|
|
263
|
-
**Engineering lens
|
|
263
|
+
**Engineering lens: after creating:**
|
|
264
264
|
- `bug`: "Which feature does this bug affect?" → create `bug_affects_feature` edge
|
|
265
265
|
- `task`: "Which user story or feature is this task for?" → create `story_has_task` or connect to feature
|
|
266
266
|
- `technical_debt_item`: "Does this debt block any features?" → create `debt_blocks_feature` edge
|
|
@@ -269,12 +269,12 @@ Check `get_session_context()` for the current lens. After creating certain entit
|
|
|
269
269
|
- `fix`: "Which bug or root cause does this fix?" → create `fix_resolved_bug` or `fix_resolved_root_cause` edge
|
|
270
270
|
- `feature`: "Does this feature depend on or block anything?" → create blocking edges
|
|
271
271
|
|
|
272
|
-
**Design lens
|
|
272
|
+
**Design lens: after creating:**
|
|
273
273
|
- `screen`: "Which feature does this screen implement?" → use existing `screen_uses_feature` edge
|
|
274
274
|
- `design_component`: "Which design system does this belong to?" → connect to design_system
|
|
275
275
|
- `decision` (layer: design): "Does this affect any engineering decisions?" → create `decision_informs_decision` edge
|
|
276
276
|
|
|
277
|
-
**Growth lens
|
|
277
|
+
**Growth lens: after creating:**
|
|
278
278
|
- `acquisition_channel`: "Which funnel does this channel feed?" → connect to funnel
|
|
279
279
|
- `growth_campaign`: "Which channel is this campaign for?" → create `channel_has_growth_campaign` edge
|
|
280
280
|
|
|
@@ -282,14 +282,14 @@ Check `get_session_context()` for the current lens. After creating certain entit
|
|
|
282
282
|
|
|
283
283
|
- **Always prompt for properties.** Never create a node with just title and description.
|
|
284
284
|
- **Auto-connect when obvious.** If creating a JTBD and there's only one persona, connect them.
|
|
285
|
-
- **Explain the graph structure.** "This 💼 Job connects to 👤 Sarah via persona_pursues_job
|
|
285
|
+
- **Explain the graph structure.** "This 💼 Job connects to 👤 Sarah via persona_pursues_job; it represents the job she's hiring your product to do."
|
|
286
286
|
- **Follow the design system.** Entity emojis, score dots, filled bars, dashed dividers as defined in /upg-context.
|
|
287
287
|
- **Suggest the next step.** Every entity has a natural next entity in the Unified Product Graph structure.
|
|
288
|
-
- **Reference the standard.** The entity type, its properties, and its connections are defined by the Unified Product Graph standard (unifiedproductgraph.org). Mention this naturally when explaining entity types
|
|
288
|
+
- **Reference the standard.** The entity type, its properties, and its connections are defined by the Unified Product Graph standard (unifiedproductgraph.org). Mention this naturally when explaining entity types; it builds confidence that this isn't arbitrary structure.
|
|
289
289
|
|
|
290
290
|
```
|
|
291
291
|
┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
|
|
292
|
-
Your .upg file is yours
|
|
292
|
+
Your .upg file is yours: open standard, portable, git-friendly.
|
|
293
293
|
unifiedproductgraph.org
|
|
294
294
|
```
|
|
295
295
|
|
|
@@ -6,7 +6,7 @@ argument-hint: "[description]"
|
|
|
6
6
|
category: tooling
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
-
# /upg-export
|
|
9
|
+
# /upg-export: Export Graph as Shareable Artifact
|
|
10
10
|
|
|
11
11
|
You are a Unified Product Graph export engine. Your job is to produce a well-formatted export of the entire product graph that can be shared with stakeholders, pasted into documents, or used as a snapshot for review.
|
|
12
12
|
|
|
@@ -25,10 +25,10 @@ If the user specified a format as an argument (e.g., `/upg-export mermaid`), ski
|
|
|
25
25
|
```
|
|
26
26
|
Which export format?
|
|
27
27
|
|
|
28
|
-
1. 📋 **Full Markdown
|
|
29
|
-
2. 🔀 **Mermaid
|
|
30
|
-
3. 📊 **CSV
|
|
31
|
-
4. 📝 **Markdown Report
|
|
28
|
+
1. 📋 **Full Markdown**: full product graph document (default)
|
|
29
|
+
2. 🔀 **Mermaid**: visual graph diagram you can paste anywhere
|
|
30
|
+
3. 📊 **CSV**: flat table of all entities for spreadsheets
|
|
31
|
+
4. 📝 **Markdown Report**: concise business report grouped by area
|
|
32
32
|
```
|
|
33
33
|
|
|
34
34
|
### Step 2: Fetch Everything
|
|
@@ -48,7 +48,7 @@ Build a complete picture of the graph. For entities with important properties, u
|
|
|
48
48
|
Produce a markdown document with these sections:
|
|
49
49
|
|
|
50
50
|
```markdown
|
|
51
|
-
# <Product Name
|
|
51
|
+
# <Product Name>: Product Graph Export
|
|
52
52
|
|
|
53
53
|
> Exported from the Unified Product Graph (UPG)
|
|
54
54
|
> Date: <current date>
|
|
@@ -64,7 +64,7 @@ Produce a markdown document with these sections:
|
|
|
64
64
|
|
|
65
65
|
## Personas
|
|
66
66
|
|
|
67
|
-
### 👤 <Persona Name
|
|
67
|
+
### 👤 <Persona Name>: <Role>
|
|
68
68
|
|
|
69
69
|
**Context:** <context>
|
|
70
70
|
|
|
@@ -99,8 +99,8 @@ Produce a markdown document with these sections:
|
|
|
99
99
|
## Objectives & Key Results
|
|
100
100
|
|
|
101
101
|
### <Objective 1> (<timeframe>)
|
|
102
|
-
- KR: <key result 1
|
|
103
|
-
- KR: <key result 2
|
|
102
|
+
- KR: <key result 1>; <current> / <target> <unit> (<status>)
|
|
103
|
+
- KR: <key result 2>; <current> / <target> <unit> (<status>)
|
|
104
104
|
|
|
105
105
|
(Repeat for each objective, if any exist)
|
|
106
106
|
|
|
@@ -163,7 +163,7 @@ Produce a markdown document with these sections:
|
|
|
163
163
|
|
|
164
164
|
## Graph Health
|
|
165
165
|
|
|
166
|
-
- **Maturity:** X/5
|
|
166
|
+
- **Maturity:** X/5: <level name>
|
|
167
167
|
- **Connectivity:** X% (Y/Z entities connected)
|
|
168
168
|
- **Domains covered:** X of 32
|
|
169
169
|
- **Lifecycle balance:**
|
|
@@ -182,10 +182,10 @@ Produce a markdown document with these sections:
|
|
|
182
182
|
---
|
|
183
183
|
|
|
184
184
|
┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
|
|
185
|
-
Your .upg file is yours
|
|
185
|
+
Your .upg file is yours: open standard, portable, git-friendly.
|
|
186
186
|
unifiedproductgraph.org
|
|
187
187
|
|
|
188
|
-
*Structured using the Unified Product Graph
|
|
188
|
+
*Structured using the Unified Product Graph; an open standard for product knowledge.*
|
|
189
189
|
```
|
|
190
190
|
|
|
191
191
|
---
|
|
@@ -197,8 +197,8 @@ Generate a Mermaid flowchart that visualises the graph structure. Use entity emo
|
|
|
197
197
|
```mermaid
|
|
198
198
|
graph TD
|
|
199
199
|
subgraph Users
|
|
200
|
-
persona1["👤 Kai
|
|
201
|
-
persona2["👤 Maria
|
|
200
|
+
persona1["👤 Kai; Indie Dev"]
|
|
201
|
+
persona2["👤 Maria; PM"]
|
|
202
202
|
job1["💼 Ship fast without losing context"]
|
|
203
203
|
job2["💼 Align team on product direction"]
|
|
204
204
|
need1["🔥 Too many tools"]
|
|
@@ -240,7 +240,7 @@ graph TD
|
|
|
240
240
|
- Use `subgraph` blocks to group by domain: Users, Strategy, Discovery, Validation, Execution
|
|
241
241
|
- Only include subgraphs that have entities
|
|
242
242
|
- Edges follow the actual relationships from the .upg file
|
|
243
|
-
- Keep it readable
|
|
243
|
+
- Keep it readable: if there are more than 30 nodes, suggest splitting into domain-specific diagrams
|
|
244
244
|
|
|
245
245
|
After generating, tell the user:
|
|
246
246
|
|
|
@@ -267,12 +267,12 @@ id,type,title,description,status,tags,parent_id,created_at
|
|
|
267
267
|
- Escape commas and quotes properly
|
|
268
268
|
- Use empty string for missing fields (not "null" or "undefined")
|
|
269
269
|
- Sort by type, then by title alphabetically
|
|
270
|
-
- Include ALL entities
|
|
270
|
+
- Include ALL entities: no filtering
|
|
271
271
|
|
|
272
272
|
Output the CSV in a code block. Then tell the user:
|
|
273
273
|
|
|
274
274
|
```
|
|
275
|
-
CSV exported
|
|
275
|
+
CSV exported; X entities total.
|
|
276
276
|
|
|
277
277
|
Paste into Google Sheets, Excel, or any spreadsheet tool.
|
|
278
278
|
Column order: id, type, title, description, status, tags, parent_id, created_at
|
|
@@ -282,10 +282,10 @@ Column order: id, type, title, description, status, tags, parent_id, created_at
|
|
|
282
282
|
|
|
283
283
|
### Format 4: Markdown Report
|
|
284
284
|
|
|
285
|
-
Generate a concise business report
|
|
285
|
+
Generate a concise business report; less detailed than the full export, focused on readability for stakeholders who don't need every property.
|
|
286
286
|
|
|
287
287
|
```markdown
|
|
288
|
-
# <Product Name
|
|
288
|
+
# <Product Name>: Product Report
|
|
289
289
|
|
|
290
290
|
> <one-line product description>
|
|
291
291
|
> Date: <current date> | Stage: <stage> | Entities: X
|
|
@@ -294,7 +294,7 @@ Generate a concise business report — less detailed than the full export, focus
|
|
|
294
294
|
|
|
295
295
|
## Who We're Building For
|
|
296
296
|
|
|
297
|
-
<For each persona, 2-3 sentences summarising who they are, what they need, and their key pain points. No tables
|
|
297
|
+
<For each persona, 2-3 sentences summarising who they are, what they need, and their key pain points. No tables; narrative style.>
|
|
298
298
|
|
|
299
299
|
---
|
|
300
300
|
|
|
@@ -318,7 +318,7 @@ Generate a concise business report — less detailed than the full export, focus
|
|
|
318
318
|
|
|
319
319
|
## What We're Building
|
|
320
320
|
|
|
321
|
-
<Features and epics grouped logically. Status overview
|
|
321
|
+
<Features and epics grouped logically. Status overview; what's shipped, what's in progress, what's planned.>
|
|
322
322
|
|
|
323
323
|
---
|
|
324
324
|
|
|
@@ -329,14 +329,14 @@ Generate a concise business report — less detailed than the full export, focus
|
|
|
329
329
|
---
|
|
330
330
|
|
|
331
331
|
┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
|
|
332
|
-
*Structured using the Unified Product Graph
|
|
332
|
+
*Structured using the Unified Product Graph; an open standard for product knowledge.*
|
|
333
333
|
```
|
|
334
334
|
|
|
335
335
|
**Rules for Markdown Report:**
|
|
336
|
-
- Narrative style, not tables
|
|
336
|
+
- Narrative style, not tables; this is for humans reading, not data processing
|
|
337
337
|
- Skip empty sections entirely
|
|
338
338
|
- Keep each section to 3-5 sentences max
|
|
339
|
-
- Focus on "so what"
|
|
339
|
+
- Focus on "so what", not just what exists, but why it matters
|
|
340
340
|
|
|
341
341
|
---
|
|
342
342
|
|
|
@@ -344,14 +344,14 @@ Generate a concise business report — less detailed than the full export, focus
|
|
|
344
344
|
|
|
345
345
|
Before rendering the export, check the entity count. If the graph has **100+ entities**, offer to write to a file instead of printing to the conversation:
|
|
346
346
|
|
|
347
|
-
> Your graph has **X entities
|
|
347
|
+
> Your graph has **X entities**: that's a large export. Want me to:
|
|
348
348
|
>
|
|
349
|
-
> 1. **Write to file
|
|
350
|
-
> 2. **Print here
|
|
349
|
+
> 1. **Write to file**: save as `<product-name>-export.<ext>` (recommended; saves context)
|
|
350
|
+
> 2. **Print here**: output directly in the conversation
|
|
351
351
|
|
|
352
352
|
If the user picks file output, write the export to disk using the Write tool and confirm:
|
|
353
353
|
|
|
354
|
-
> Saved to `<filename
|
|
354
|
+
> Saved to `<filename>`; X entities exported.
|
|
355
355
|
|
|
356
356
|
### Step 3: Present the Export
|
|
357
357
|
|
|
@@ -364,11 +364,11 @@ Stats: X entities, Y edges, Z domains
|
|
|
364
364
|
Format: <Full Markdown | Mermaid | CSV | Markdown Report>
|
|
365
365
|
|
|
366
366
|
Next steps:
|
|
367
|
-
- /upg-export <other format
|
|
368
|
-
- /upg-discover
|
|
369
|
-
- /upg-gaps
|
|
370
|
-
- /upg-status
|
|
371
|
-
- /upg-diff
|
|
367
|
+
- /upg-export <other format>: try a different format
|
|
368
|
+
- /upg-discover: run another discovery session
|
|
369
|
+
- /upg-gaps: check for gaps
|
|
370
|
+
- /upg-status: live dashboard view
|
|
371
|
+
- /upg-diff: see what changed since your last commit
|
|
372
372
|
```
|
|
373
373
|
|
|
374
374
|
## Conditional Sections
|
|
@@ -378,7 +378,7 @@ Only include sections that have entities. If there are no competitors, skip "Com
|
|
|
378
378
|
## Key Principles
|
|
379
379
|
|
|
380
380
|
- **Complete but not redundant.** Include all entities, but don't repeat the same data in multiple sections.
|
|
381
|
-
- **Properties matter.** Show the full property data
|
|
381
|
+
- **Properties matter.** Show the full property data; this is what makes the export useful, not just entity titles.
|
|
382
382
|
- **Follow the design system.** Entity emojis, score dots, filled bars, dashed dividers as defined in /upg-context.
|
|
383
383
|
- **Tables for comparison.** Use tables for hypotheses, competitors, and features where side-by-side comparison helps.
|
|
384
384
|
- **Trees for hierarchy.** Use the indented tree format for parent-child relationships.
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: upg-feedback
|
|
3
|
-
description: "Share feedback about the Unified Product Graph
|
|
3
|
+
description: "Share feedback about the Unified Product Graph: bugs, feature requests, ideas. Sent directly to the UPG team."
|
|
4
4
|
user-invocable: true
|
|
5
5
|
argument-hint: "[bug|feature|observation]"
|
|
6
6
|
category: tooling
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
-
# /upg-feedback
|
|
9
|
+
# /upg-feedback: Share Feedback with the UPG Team
|
|
10
10
|
|
|
11
|
-
You collect user feedback about the UPG and send it to the team. Fast, transparent, private. No graph mutations
|
|
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
12
|
|
|
13
13
|
**Before producing any output, read the design system:** `/upg-context` for emoji mappings, formatting rules, and shared interaction patterns.
|
|
14
14
|
|
|
15
15
|
## Tools
|
|
16
16
|
|
|
17
|
-
- `mcp__unified-product-graph__get_product_context` and `mcp__unified-product-graph__get_graph_digest
|
|
18
|
-
- `WebFetch
|
|
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
19
|
|
|
20
20
|
## Flow
|
|
21
21
|
|
|
@@ -30,10 +30,10 @@ Skip this if the user provided `bug`, `feature`, or `observation` as an argument
|
|
|
30
30
|
```
|
|
31
31
|
What kind of feedback?
|
|
32
32
|
|
|
33
|
-
1. bug
|
|
34
|
-
2. feature_request
|
|
35
|
-
3. observation
|
|
36
|
-
4. general
|
|
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
37
|
```
|
|
38
38
|
|
|
39
39
|
ONE question. Wait for answer.
|
|
@@ -46,11 +46,11 @@ Wait for answer.
|
|
|
46
46
|
|
|
47
47
|
### Step 4: Ask Description
|
|
48
48
|
|
|
49
|
-
> Now the details
|
|
49
|
+
> Now the details; what were you doing, what happened, what did you expect? For feature requests: what would this unlock for you?
|
|
50
50
|
|
|
51
51
|
Wait for answer.
|
|
52
52
|
|
|
53
|
-
### Step 5: Gather Context (silent
|
|
53
|
+
### Step 5: Gather Context (silent: no questions)
|
|
54
54
|
|
|
55
55
|
Collect metadata automatically. **Never read or send node titles, descriptions, or graph content.**
|
|
56
56
|
|
|
@@ -73,7 +73,7 @@ Here's what I'll send to the UPG team:
|
|
|
73
73
|
Description: "<description>"
|
|
74
74
|
Context: UPG v<version> · <stage> stage · <N> entities · from <skill>
|
|
75
75
|
|
|
76
|
-
No product graph data is included
|
|
76
|
+
No product graph data is included; just your feedback + metadata above.
|
|
77
77
|
|
|
78
78
|
Send it? (y/n)
|
|
79
79
|
```
|
|
@@ -103,7 +103,7 @@ POST to `https://cloud.unifiedproductgraph.org/api/feedback` with JSON body:
|
|
|
103
103
|
On success:
|
|
104
104
|
|
|
105
105
|
```
|
|
106
|
-
Feedback sent
|
|
106
|
+
Feedback sent; thank you!
|
|
107
107
|
|
|
108
108
|
Your input directly shapes the Unified Product Graph.
|
|
109
109
|
The team reviews every submission.
|
|
@@ -113,13 +113,13 @@ On failure (network error, non-2xx response): save feedback as markdown in the p
|
|
|
113
113
|
|
|
114
114
|
```
|
|
115
115
|
I couldn't reach the server right now. I've saved your feedback locally
|
|
116
|
-
as upg-feedback-YYYY-MM-DD.md
|
|
116
|
+
as upg-feedback-YYYY-MM-DD.md; you can send it manually or try again later.
|
|
117
117
|
```
|
|
118
118
|
|
|
119
119
|
The fallback file format:
|
|
120
120
|
|
|
121
121
|
```markdown
|
|
122
|
-
# UPG Feedback
|
|
122
|
+
# UPG Feedback: YYYY-MM-DD
|
|
123
123
|
|
|
124
124
|
**Type:** <type>
|
|
125
125
|
**Title:** <title>
|
|
@@ -133,9 +133,9 @@ The fallback file format:
|
|
|
133
133
|
- **One question at a time.** Never batch questions.
|
|
134
134
|
- **NEVER send product graph data.** Only feedback text + opt-in metadata shown in the payload preview.
|
|
135
135
|
- **Show before sending.** The user must see and approve the exact payload.
|
|
136
|
-
- **No graph mutations.** Feedback only
|
|
136
|
+
- **No graph mutations.** Feedback only; no entities created.
|
|
137
137
|
- **Graceful degradation.** If MCP calls or the POST fail, keep going with defaults and local fallback.
|
|
138
138
|
|
|
139
139
|
┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
|
|
140
|
-
Your .upg file is yours
|
|
140
|
+
Your .upg file is yours: open standard, portable, git-friendly.
|
|
141
141
|
unifiedproductgraph.org
|