@unified-product-graph/mcp-server 0.7.1 → 0.7.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/TOOLS.md +11 -11
  2. package/dist/index.js +930 -911
  3. package/dist/index.js.map +1 -1
  4. package/dist/preflight.js +1 -1
  5. package/dist/preflight.js.map +1 -1
  6. package/dist/tools-manifest.json +11 -11
  7. package/package.json +1 -1
  8. package/skills/upg/SKILL.md +30 -30
  9. package/skills/upg-analytics/SKILL.md +11 -11
  10. package/skills/upg-capture/SKILL.md +19 -19
  11. package/skills/upg-connect/SKILL.md +6 -6
  12. package/skills/upg-context/SKILL.md +51 -51
  13. package/skills/upg-context-intelligence/SKILL.md +43 -43
  14. package/skills/upg-design-system/SKILL.md +21 -21
  15. package/skills/upg-diff/SKILL.md +12 -12
  16. package/skills/upg-discover/SKILL.md +10 -10
  17. package/skills/upg-explore/SKILL-DETAIL.md +9 -9
  18. package/skills/upg-explore/SKILL.md +14 -14
  19. package/skills/upg-export/SKILL.md +34 -34
  20. package/skills/upg-feedback/SKILL.md +17 -17
  21. package/skills/upg-gaps/SKILL.md +31 -31
  22. package/skills/upg-hypothesis/SKILL.md +10 -10
  23. package/skills/upg-impact/SKILL.md +30 -30
  24. package/skills/upg-import/SKILL.md +14 -14
  25. package/skills/upg-init/SKILL.md +40 -40
  26. package/skills/upg-inspect/SKILL.md +9 -9
  27. package/skills/upg-journey/SKILL.md +21 -21
  28. package/skills/upg-launch/SKILL-DETAIL.md +71 -71
  29. package/skills/upg-launch/SKILL.md +16 -16
  30. package/skills/upg-migrate/SKILL.md +19 -19
  31. package/skills/upg-okr/SKILL-DETAIL.md +27 -27
  32. package/skills/upg-okr/SKILL.md +10 -10
  33. package/skills/upg-persona/SKILL.md +20 -20
  34. package/skills/upg-prioritise/SKILL.md +19 -19
  35. package/skills/upg-pull/SKILL-DETAIL.md +21 -21
  36. package/skills/upg-pull/SKILL.md +5 -5
  37. package/skills/upg-push/SKILL-DETAIL.md +23 -23
  38. package/skills/upg-push/SKILL.md +6 -6
  39. package/skills/upg-reflect/SKILL.md +20 -20
  40. package/skills/upg-research/SKILL.md +37 -37
  41. package/skills/upg-rollback/SKILL.md +19 -19
  42. package/skills/upg-run/SKILL.md +14 -14
  43. package/skills/upg-schema-changelog/SKILL.md +29 -29
  44. package/skills/upg-schema-consolidate/SKILL.md +18 -18
  45. package/skills/upg-schema-edges/SKILL.md +12 -12
  46. package/skills/upg-schema-evolve/SKILL.md +16 -16
  47. package/skills/upg-schema-health/SKILL.md +22 -22
  48. package/skills/upg-schema-update/SKILL.md +24 -24
  49. package/skills/upg-snapshot/SKILL.md +8 -8
  50. package/skills/upg-status/SKILL.md +31 -31
  51. package/skills/upg-strategy/SKILL.md +26 -26
  52. package/skills/upg-template/SKILL.md +21 -21
  53. package/skills/upg-trace/SKILL.md +22 -22
  54. package/skills/upg-tree/SKILL.md +18 -18
  55. package/skills/upg-verify/SKILL.md +42 -42
  56. package/skills/upg-workspace/SKILL.md +12 -12
@@ -7,9 +7,9 @@ category: cognitive
7
7
  approaches: [inspect]
8
8
  ---
9
9
 
10
- # /upg-diff Semantic Graph 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) not raw JSON, but semantic product changes.
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 there's nothing to diff against.
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 Senior PM at Series B startup
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" status: ⚪ untested → 🟡 in_progress
85
- ~ 📊 Day-7 retention target_value: 55% → 65%
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 Check if these changes closed any gaps
110
- /upg-tree See the updated graph structure
111
- /upg-status Full health dashboard
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 might be worth
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 in that order. Additions are the most interesting.
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 open standard, portable, git-friendly.
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 OST-Guided Discovery Session
11
+ # /upg-discover: OST-Guided Discovery Session
12
12
 
13
- > **This skill runs a structured Opportunity Solution Tree (OST) session** it creates new Outcome → Opportunity → Solution → Hypothesis → Experiment chains from scratch.
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 Setting the frame** (~10 minutes total)
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 which lever?)
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 let's discover some)
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 things you've observed, not things you've assumed."**
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 where did you observe this?>",
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 '<opportunity title>' what solutions could address it? Think broadly: what are 2-3 different approaches?"**
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 short-circuiting through opportunity produces an
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 open standard, portable, git-friendly.
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 Property Schemas & Edge Types (Detail)
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"` the `kpi` type was consolidated into `metric` in v0.1.0.)
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 lean, BMC, or custom? Who are the customer segments? What are the key activities?"
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 who is NOT a fit"],
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 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.)
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 viral, content, paid, or product? What triggers it? What action does the user take? How does the output feed back into the trigger?"
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 freemium, usage-based, per-seat, etc.? What's the anchor price? How does this compare to competitors cheaper, parity, or premium?"
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 LLM, classifier, recommender? Which provider? What's its use case in the product?"
290
+ Ask: "What type of model; LLM, classifier, recommender? Which provider? What's its use case in the product?"
291
291
 
292
- ## Edge Types Valid Connections
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 walk its canonical playbook"
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 Explore a UPG Region
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 ask if ambiguous.
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 logo, guideline, template | `brand_asset` | Content & Knowledge |
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 only when you've identified the entity type.
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 use desired_outcome + need with edges)
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 Senior PM`) and score dots for 1-5 values (e.g. `importance ● ● ● ● ○`)
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 want me to connect them?"
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 after creating:**
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 after creating:**
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 after creating:**
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 it represents the job she's hiring your product to do."
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 it builds confidence that this isn't arbitrary 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; it builds confidence that this isn't arbitrary structure.
289
289
 
290
290
  ```
291
291
  ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
292
- Your .upg file is yours open standard, portable, git-friendly.
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 Export Graph as Shareable Artifact
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** 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
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> Product Graph Export
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> <Role>
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> <current> / <target> <unit> (<status>)
103
- - KR: <key result 2> <current> / <target> <unit> (<status>)
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 <level name>
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 open standard, portable, git-friendly.
185
+ Your .upg file is yours: open standard, portable, git-friendly.
186
186
  unifiedproductgraph.org
187
187
 
188
- *Structured using the Unified Product Graph an open standard for product knowledge.*
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 Indie Dev"]
201
- persona2["👤 Maria PM"]
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 if there are more than 30 nodes, suggest splitting into domain-specific diagrams
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 no filtering
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 X entities total.
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 less detailed than the full export, focused on readability for stakeholders who don't need every property.
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> Product Report
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 narrative style.>
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 what's shipped, what's in progress, what's planned.>
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 an open standard for product knowledge.*
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 this is for humans reading, not data processing
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" not just what exists, but why it matters
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** that's a large export. Want me to:
347
+ > Your graph has **X entities**: that's a large export. Want me to:
348
348
  >
349
- > 1. **Write to file** save as `<product-name>-export.<ext>` (recommended saves context)
350
- > 2. **Print here** output directly in the conversation
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>` X entities exported.
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> 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
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 this is what makes the export useful, not just entity titles.
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 bugs, feature requests, ideas. Sent directly to the UPG team."
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 Share Feedback with the UPG Team
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 this is about THEIR feedback to US.
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` for automatic context gathering only
18
- - `WebFetch` to POST the feedback payload
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 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
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 what were you doing, what happened, what did you expect? For feature requests: what would this unlock for you?
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 no questions)
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 just your feedback + metadata above.
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 thank you!
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 you can send it manually or try again later.
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 YYYY-MM-DD
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 no entities created.
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 open standard, portable, git-friendly.
140
+ Your .upg file is yours: open standard, portable, git-friendly.
141
141
  unifiedproductgraph.org