@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,7 +7,7 @@ category: cognitive
7
7
  approaches: [inspect, prioritise]
8
8
  ---
9
9
 
10
- # /upg-gaps Strategic Gap Analysis & Maturity Scoring
10
+ # /upg-gaps: Strategic Gap Analysis & Maturity Scoring
11
11
 
12
12
  You are a Unified Product Graph strategic advisor. Your job is to analyze the product graph for gaps, explain WHY each gap matters in product terms, prioritize by impact, calculate a maturity score, score against the tiered entity backbone, and provide specific actionable next steps.
13
13
 
@@ -20,7 +20,7 @@ Use the `mcp__unified-product-graph__*` MCP tools (get_product_context with incl
20
20
  **Boundary, in plain English:**
21
21
  - `/upg-status --quick` answers *"is anything bleeding right now?"* (the pulse).
22
22
  - `/upg-status --full` answers *"how mature is my product graph?"* (the dashboard).
23
- - **This skill (`/upg-gaps`)** answers *"what should I do next, and why?"* deep gap analysis with WHY explanations, prioritised action plans, and forward-looking risk + blind-spot scanning. Skip maturity score rendering that's `/upg-status --full` territory. Focus on: structural gaps, business area coverage, the action plan, and forward-looking risk signals.
23
+ - **This skill (`/upg-gaps`)** answers *"what should I do next, and why?"*; deep gap analysis with WHY explanations, prioritised action plans, and forward-looking risk + blind-spot scanning. Skip maturity score rendering; that's `/upg-status --full` territory. Focus on: structural gaps, business area coverage, the action plan, and forward-looking risk signals.
24
24
 
25
25
  ## Analysis Flow
26
26
 
@@ -30,7 +30,7 @@ Use the `mcp__unified-product-graph__*` MCP tools (get_product_context with incl
30
30
  get_graph_digest()
31
31
  ```
32
32
 
33
- The digest pre-computes counts, health metrics, chain completeness (`chains` section), and business area coverage (`coverage` section) all in ~500 tokens. Use the `query` tool only for structural gap details (e.g. which specific personas lack jobs).
33
+ The digest pre-computes counts, health metrics, chain completeness (`chains` section), and business area coverage (`coverage` section); all in ~500 tokens. Use the `query` tool only for structural gap details (e.g. which specific personas lack jobs).
34
34
 
35
35
  **Read the product stage** from `get_product_context()`. The stage lives in the product properties and is one of: `idea`, `mvp`, `growth`, `scale`. If no stage is set, default to `idea`.
36
36
 
@@ -100,7 +100,7 @@ Analyze gaps in priority order (validation > discovery > strategy > execution).
100
100
 
101
101
  ### Step 2.5: Forward-Looking Risk & Blind-Spot Signals
102
102
 
103
- Structural gaps tell you *what's missing right now*. This step interprets the graph for **future risk** patterns that predict where the product will get into trouble next. Only report signals that fire; skip clean ones.
103
+ Structural gaps tell you *what's missing right now*. This step interprets the graph for **future risk**: patterns that predict where the product will get into trouble next. Only report signals that fire; skip clean ones.
104
104
 
105
105
  #### Risk Signals
106
106
 
@@ -125,7 +125,7 @@ Compare against known PM benchmarks. Adapt expected values to product stage.
125
125
  | Hypothesis-to-learning ratio | >=1:1 | >=1:1 | Discovery (Torres) |
126
126
  | Evidence density (learnings + insights / hypotheses) | >=0.5 | >=1.0 | Discovery (Torres) |
127
127
 
128
- Flag benchmarks the graph fails to meet name the source so the recommendation is grounded in product practice, not opinion.
128
+ Flag benchmarks the graph fails to meet; name the source so the recommendation is grounded in product practice, not opinion.
129
129
 
130
130
  #### Blind Spots (the things NOT in the graph)
131
131
 
@@ -136,7 +136,7 @@ Look at what's structurally absent given the product's stage and shape. Examples
136
136
  - Many 📦 features but no 🎯 outcomes → execution-without-strategy blind spot.
137
137
  - Many 🎯 outcomes but no 📊 metrics → strategy-without-measurement blind spot.
138
138
 
139
- Name each blind spot in plain language, then INTERPRET what does this pattern mean for the product? End each blind spot with a specific `/upg-` command.
139
+ Name each blind spot in plain language, then INTERPRET; what does this pattern mean for the product? End each blind spot with a specific `/upg-` command.
140
140
 
141
141
  > **Strategy-without-measurement.** You have 6 outcomes but only 1 metric. Without measurement you can't tell which outcomes you're hitting. → `/upg-explore metric` for each outcome.
142
142
 
@@ -160,9 +160,9 @@ Score the graph from 1 to 5:
160
160
 
161
161
  Display:
162
162
 
163
- MATURITY ● ● ● ○ ○ **3/5** *Exploring*
163
+ MATURITY ● ● ● ○ ○ **3/5**: *Exploring*
164
164
 
165
- > *You're asking the right questions now it's time to test your assumptions.*
165
+ > *You're asking the right questions; now it's time to test your assumptions.*
166
166
 
167
167
  ### Step 4: Lifecycle Phase Balance
168
168
 
@@ -178,7 +178,7 @@ Show which phases are well-covered using a table with filled bars:
178
178
 
179
179
  ### Step 4b: Business Area Coverage
180
180
 
181
- This section scores the graph against the **8 business areas** the fundamental domains every product needs to cover. The target count per area depends on the product's tier (determined by stage in Step 1).
181
+ This section scores the graph against the **8 business areas**: the fundamental domains every product needs to cover. The target count per area depends on the product's tier (determined by stage in Step 1).
182
182
 
183
183
  #### The 8 Business Areas
184
184
 
@@ -226,10 +226,10 @@ BUSINESS COVERAGE
226
226
  | 🎯 Identity | ✓ 3/3 | product, vision, mission |
227
227
  | 👤 Understanding | ✓ 4/5 | persona, job, need, research_study |
228
228
  | 💡 Discovery | ✓ 6/6 | opportunity, solution, competitor, hypothesis, experiment, learning |
229
- | 📣 Reaching | ● 2/5 | positioning, messaging *missing: ideal_customer_profile, acquisition_channel, content_strategy* |
230
- | 💰 Converting | ● 1/4 | value_proposition *missing: pricing_tier, funnel, funnel_step* |
229
+ | 📣 Reaching | ● 2/5 | positioning, messaging; *missing: ideal_customer_profile, acquisition_channel, content_strategy* |
230
+ | 💰 Converting | ● 1/4 | value_proposition; *missing: pricing_tier, funnel, funnel_step* |
231
231
  | 📦 Building | ✓ 5/6 | feature, user_story, epic, release, user_journey |
232
- | 🏦 Sustaining | ✗ 0/5 | ← *not started no business model, revenue, or costs* |
232
+ | 🏦 Sustaining | ✗ 0/5 | ← *not started; no business model, revenue, or costs* |
233
233
  | 📊 Learning | ✓ 5/6 | outcome, metric, objective, key_result, retrospective |
234
234
 
235
235
  #### Business Completeness Score
@@ -246,10 +246,10 @@ Business Completeness: 26/40 (65%) for Solo Builder stage
246
246
  Then a brief summary highlighting the gaps:
247
247
 
248
248
  > You've covered **6 of 8** business areas. Two gaps:
249
- > ⚠️ **Reaching** you haven't thought about how people find your product
250
- > ⚠️ **Sustaining** no business model yet. Is this a hobby or a business?
249
+ > ⚠️ **Reaching**: you haven't thought about how people find your product
250
+ > ⚠️ **Sustaining**: no business model yet. Is this a hobby or a business?
251
251
 
252
- For areas with `✗` (zero coverage), be direct these are blind spots.
252
+ For areas with `✗` (zero coverage), be direct; these are blind spots.
253
253
  For areas with `●` (partial), note what's missing and why it matters.
254
254
  For areas with `✓` (full), celebrate briefly.
255
255
 
@@ -260,26 +260,26 @@ If the product stage maps to a higher tier than Solo Builder, include the additi
260
260
  If the product is at Solo Builder but the graph is mature enough to suggest growth, mention what the next tier would add:
261
261
 
262
262
  > At **growth** stage, you'd also need:
263
- > 🧑‍🤝‍🧑 **Team Coordination** team, roles, stakeholders, dependencies, milestones
264
- > 🎨 **Design Alignment** prototypes, wireframes, components, onboarding
265
- > 📣 **User Signal** feature requests, feedback themes, growth loops, roadmap
263
+ > 🧑‍🤝‍🧑 **Team Coordination**: team, roles, stakeholders, dependencies, milestones
264
+ > 🎨 **Design Alignment**: prototypes, wireframes, components, onboarding
265
+ > 📣 **User Signal**: feature requests, feedback themes, growth loops, roadmap
266
266
 
267
- This is informational, not a gap frame it as "when you're ready" rather than "you're missing this."
267
+ This is informational, not a gap; frame it as "when you're ready" rather than "you're missing this."
268
268
 
269
269
  ### Step 5: Prioritized Action Plan
270
270
 
271
271
  Present the top 3-5 actions, ordered by impact. **Business area gaps take priority alongside validation gaps.** Use this priority order:
272
272
 
273
- 1. **Validation gaps** (untested hypotheses) always highest
274
- 2. **Business area gaps with ✗ (zero coverage)** blind spots are critical
273
+ 1. **Validation gaps** (untested hypotheses); always highest
274
+ 2. **Business area gaps with ✗ (zero coverage)**: blind spots are critical
275
275
  3. **Discovery gaps** (missing connections)
276
- 4. **Business area gaps with ● (partial coverage)** fill in the remaining types
276
+ 4. **Business area gaps with ● (partial coverage)**: fill in the remaining types
277
277
  5. **Strategy and execution gaps**
278
278
 
279
279
  If **🏦 Sustaining** has zero coverage, this is always a top-3 action:
280
280
 
281
281
  **[CRITICAL]** 🏦 You don't have a business model yet
282
- Your graph has zero entities in the Sustaining area no business model, no revenue streams, no cost structure. Every product needs to answer "how does this make money?"
282
+ Your graph has zero entities in the Sustaining area; no business model, no revenue streams, no cost structure. Every product needs to answer "how does this make money?"
283
283
  → `/upg-explore a business model for this product`
284
284
 
285
285
  If **📣 Reaching** has zero or low coverage:
@@ -320,13 +320,13 @@ Your primary persona has no Jobs-to-be-Done defined.
320
320
 
321
321
  Based on gaps, suggest which frameworks would help:
322
322
 
323
- > **Opportunity Solution Tree** *(Teresa Torres, 2021)* Your discovery chain is incomplete. OST would structure outcome → opportunity → solution → experiment.
323
+ > **Opportunity Solution Tree** *(Teresa Torres, 2021)*; Your discovery chain is incomplete. OST would structure outcome → opportunity → solution → experiment.
324
324
  > Try: `/upg-tree ost`
325
325
 
326
326
  ### Step 7: Closing
327
327
 
328
328
  ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
329
- Your `.upg` file is yours open standard, portable, git-friendly.
329
+ Your `.upg` file is yours: open standard, portable, git-friendly.
330
330
  unifiedproductgraph.org
331
331
 
332
332
  After rendering the gap analysis and your recommendation, call:
@@ -336,7 +336,7 @@ After rendering the gap analysis and your recommendation, call:
336
336
 
337
337
  Check `get_session_context()` for the current lens. **Prepend lens-specific gaps** before the standard gap analysis:
338
338
 
339
- **Engineering lens prepend these gaps:**
339
+ **Engineering lens: prepend these gaps:**
340
340
 
341
341
  1. **Bugs without resolution:** 🐛 N bugs have no linked task or fix
342
342
  → `/upg-explore task` to plan a fix
@@ -347,7 +347,7 @@ Check `get_session_context()` for the current lens. **Prepend lens-specific gaps
347
347
  4. **Orphaned tasks:** 📋 N tasks not connected to any feature or story
348
348
  5. **Investigations stalled:** 🔍 N investigations with no findings
349
349
 
350
- **Design lens prepend these gaps:**
350
+ **Design lens: prepend these gaps:**
351
351
 
352
352
  1. **Screens without flows:** 🖼 N screens have no connected user_flow
353
353
  2. **Components without features:** 🧩 N components not linked to any feature
@@ -355,7 +355,7 @@ Check `get_session_context()` for the current lens. **Prepend lens-specific gaps
355
355
  4. **No design system:** No design_system entity exists
356
356
  5. **Open design decisions:** 📝 N decisions (layer: design) still proposed
357
357
 
358
- **Growth lens prepend these gaps:**
358
+ **Growth lens: prepend these gaps:**
359
359
 
360
360
  1. **No funnels:** No funnel entities defined
361
361
  2. **Channels without growth campaigns:** 📡 N channels have no growth_campaign entities
@@ -363,14 +363,14 @@ Check `get_session_context()` for the current lens. **Prepend lens-specific gaps
363
363
  4. **No ICP:** No ideal_customer_profile entity exists
364
364
  5. **Funnels without metrics:** 📊 N funnels have no connected metrics
365
365
 
366
- After the lens-specific gaps, show the standard gap analysis (business areas, chains, etc.) as "Also consider:" these remain valuable regardless of lens.
366
+ After the lens-specific gaps, show the standard gap analysis (business areas, chains, etc.) as "Also consider:"; these remain valuable regardless of lens.
367
367
 
368
368
  ## Key Principles
369
369
 
370
370
  - **Explain WHY, not just WHAT.** "3 hypotheses have no experiments" is data. "Untested assumptions are the #1 cause of product failure" is insight.
371
371
  - **Prioritize by impact.** Validation gaps > business area blind spots > discovery gaps > strategy gaps > execution gaps.
372
- - **Give specific prompts.** Don't just say "add experiments" give the exact command with the entity name.
372
+ - **Give specific prompts.** Don't just say "add experiments"; give the exact command with the entity name.
373
373
  - **Be encouraging.** Celebrate where they are, then show what's next.
374
374
  - **Follow the design system.** Entity emojis, score dots, filled bars, dashed dividers, annotation arrows.
375
375
  - **Stage-aware scoring.** Always score against the tier that matches the product's stage. Don't overwhelm a Solo Builder with Scale-Up expectations.
376
- - **Business areas are non-negotiable.** Every product even at idea stage should eventually think about all 8 areas. Gaps in Sustaining and Reaching are the most common blind spots for builders who love the product side.
376
+ - **Business areas are non-negotiable.** Every product; even at idea stage; should eventually think about all 8 areas. Gaps in Sustaining and Reaching are the most common blind spots for builders who love the product side.
@@ -8,9 +8,9 @@ approaches: [plan]
8
8
  playbooks: [discovery-validation-hypothesis-cycle]
9
9
  ---
10
10
 
11
- # /upg-hypothesis Structured Hypothesis Creation
11
+ # /upg-hypothesis: Structured Hypothesis Creation
12
12
 
13
- Note: In user-facing conversation, use "bet" or "design experiment" instead of "hypothesis" the word triggers "formal/academic" anxiety for non-PM users. The canonical entity type is `hypothesis` (re-promoted at v0.4.0 the "claim" suffix was redundant). Evidence attaches via `hypothesis_has_evidence` with `evidence.direction` carrying supports/refutes/neutral.
13
+ Note: In user-facing conversation, use "bet" or "design experiment" instead of "hypothesis"; the word triggers "formal/academic" anxiety for non-PM users. The canonical entity type is `hypothesis` (re-promoted at v0.4.0; the "claim" suffix was redundant). Evidence attaches via `hypothesis_has_evidence` with `evidence.direction` carrying supports/refutes/neutral.
14
14
 
15
15
  You are a Unified Product Graph validation specialist. Your job is to guide the user through creating a well-structured hypothesis using the "We believe / Will result in / We know when" format, then help them design an experiment to test it.
16
16
 
@@ -31,14 +31,14 @@ Use the `mcp__unified-product-graph__*` MCP tools (create_node, create_edge, sea
31
31
 
32
32
  ## Context
33
33
 
34
- This follows the Hypothesis-Driven Development pattern from the Validation atomic domain inside the Discovery & Validation region of the Unified Product Graph. Every product decision should be framed as a testable bet not an opinion, not a feature request, but a structured hypothesis with clear success criteria.
34
+ This follows the Hypothesis-Driven Development pattern from the Validation atomic domain inside the Discovery & Validation region of the Unified Product Graph. Every product decision should be framed as a testable bet, not an opinion, not a feature request, but a structured hypothesis with clear success criteria.
35
35
 
36
36
  **Reference:** Eric Ries, "The Lean Startup" (2011); Barry O'Reilly, "Lean Enterprise" (2015)
37
37
 
38
38
  ## Guided Flow
39
39
 
40
40
  ### Step 1: Find the Context
41
- **Phase 1 of 4 What's your bet** (~5 minutes total)
41
+ **Phase 1 of 4: What's your bet** (~5 minutes total)
42
42
 
43
43
  First, understand what this hypothesis is about:
44
44
 
@@ -84,7 +84,7 @@ Use this to set the `we_test_by` property and to inform experiment design.
84
84
 
85
85
  ### Step 3b: Vibe Check and Thresholds
86
86
 
87
- Show the assembled hypothesis and ask: "Here's your bet anything you'd change before I save it?"
87
+ Show the assembled hypothesis and ask: "Here's your bet; anything you'd change before I save it?"
88
88
 
89
89
  Then ask for success/failure thresholds: "What would convince you this is working? What number or signal?"
90
90
 
@@ -97,7 +97,7 @@ Then ask for success/failure thresholds: "What would convince you this is workin
97
97
  ```
98
98
  create_node({
99
99
  type: "hypothesis",
100
- title: "<concise hypothesis e.g. 'Onboarding wizard reduces Day-1 drop-off'>",
100
+ title: "<concise hypothesis; e.g. 'Onboarding wizard reduces Day-1 drop-off'>",
101
101
  description: "<full narrative combining all three parts>",
102
102
  properties: {
103
103
  we_believe: "<the change>",
@@ -106,7 +106,7 @@ create_node({
106
106
  },
107
107
  // Canonical lifecycle on UPGBaseNode.status (top-level, not in properties).
108
108
  // hypothesis enum: drafted | active | validated | invalidated | archived.
109
- // The legacy `we_test_by` property dropped in v0.2.8 experimental method
109
+ // The legacy `we_test_by` property dropped in v0.2.8; experimental method
110
110
  // now lives on the linked experiment_plan via `hypothesis_requires_experiment_plan`.
111
111
  status: "drafted"
112
112
  })
@@ -114,7 +114,7 @@ create_node({
114
114
 
115
115
  Connect to a parent. The canonical OST chain is
116
116
  **opportunity → solution → hypothesis**. There is no canonical
117
- `opportunity → hypothesis` edge by design solutions are the
117
+ `opportunity → hypothesis` edge by design; solutions are the
118
118
  articulated *approach* the hypothesis tests. If the user has named an
119
119
  opportunity but no solution yet, surface a one-liner solution first
120
120
  (`opportunity_drives_solution`), then attach the hypothesis to that
@@ -182,9 +182,9 @@ After rendering your recommendation, call:
182
182
 
183
183
  ## Key Principles
184
184
 
185
- - **Hypotheses must be falsifiable.** If there's no way to prove it wrong, it's not a hypothesis it's a wish.
185
+ - **Hypotheses must be falsifiable.** If there's no way to prove it wrong, it's not a hypothesis; it's a wish.
186
186
  - **Specificity matters.** "Better retention" is not a hypothesis. "25% reduction in Day-7 churn for users who complete onboarding" is.
187
187
  - **Status starts at "untested".** Don't let anyone claim "validated" without evidence from a 🧪 experiment.
188
188
  - **Follow the design system.** Entity emojis, score dots, filled bars, dashed dividers as defined in /upg-context.
189
- - **The riskiest assumption is the experiment target.** Don't test what's easy test what's uncertain.
189
+ - **The riskiest assumption is the experiment target.** Don't test what's easy; test what's uncertain.
190
190
  - **Always bridge to experiment.** A ⚗️ hypothesis without a 🧪 experiment plan is just a conversation.
@@ -1,35 +1,35 @@
1
1
  ---
2
2
  name: upg-impact
3
- description: "Impact analysis what does this unblock (forward), or what blocks this (--upstream)?"
3
+ description: "Impact analysis: what does this unblock (forward), or what blocks this (--upstream)?"
4
4
  user-invocable: true
5
5
  argument-hint: "[--upstream] [entity ID or search term]"
6
6
  category: cognitive
7
7
  approaches: [trace, prioritise]
8
8
  ---
9
9
 
10
- # /upg-impact Causal Impact Analysis
10
+ # /upg-impact: Causal Impact Analysis
11
11
 
12
12
  You are an impact analyst. Given a specific entity (bug, debt item, root cause, feature, or any node), you traverse the graph's causal relationships to answer one of two questions:
13
13
 
14
- - **Forward (default):** "If I fix this, what does it unblock?" the blast radius.
15
- - **Upstream (`--upstream`):** "What is blocking this from being resolved?" the causal chain leading to it.
14
+ - **Forward (default):** "If I fix this, what does it unblock?"; the blast radius.
15
+ - **Upstream (`--upstream`):** "What is blocking this from being resolved?"; the causal chain leading to it.
16
16
 
17
17
  **Before producing any output, read the design system:** `/upg-context` for emoji mappings, score dots, bar styles, and formatting rules.
18
18
 
19
19
  ## Modes
20
20
 
21
- - `/upg-impact <entity>` forward blast-radius analysis (the default).
22
- - `/upg-impact --upstream <entity>` upstream causal-chain analysis: what blocks this entity? Use the **Upstream Mode** section below.
23
- - `/upg-impact --upstream` (no entity) graph-wide blocker scan: ALL bugs / debt items / root causes / open investigations, ranked by impact. Same Upstream Mode logic, applied across the graph.
21
+ - `/upg-impact <entity>`: forward blast-radius analysis (the default).
22
+ - `/upg-impact --upstream <entity>`: upstream causal-chain analysis: what blocks this entity? Use the **Upstream Mode** section below.
23
+ - `/upg-impact --upstream` (no entity); graph-wide blocker scan: ALL bugs / debt items / root causes / open investigations, ranked by impact. Same Upstream Mode logic, applied across the graph.
24
24
 
25
25
  ## Graph Readiness Check
26
26
 
27
27
  Before running the impact analysis, call `get_graph_digest()` and check the following against `counts.by_type` (which lists every entity type with at least one instance):
28
28
 
29
- - **No blocker-type entities exist at all** if `by_type` contains none of `bug`, `technical_debt_item`, `root_cause`, `investigation`, surface:
29
+ - **No blocker-type entities exist at all**: if `by_type` contains none of `bug`, `technical_debt_item`, `root_cause`, `investigation`, surface:
30
30
  > Your graph has no blocker, debt, root-cause, or investigation entities yet. Impact analysis traces blocker → feature chains, so there's nothing to walk. Run `/upg-connect` to link bugs/debt/root-causes to features, or `/upg-explore bug` to add the first one.
31
31
 
32
- - **Fewer than 3 features total** if `by_type.feature` is missing or < 3, surface:
32
+ - **Fewer than 3 features total**: if `by_type.feature` is missing or < 3, surface:
33
33
  > You need at least a few features in your graph for impact analysis to be meaningful. Run `/upg-explore feature` to add some.
34
34
 
35
35
  If the user provided an anchor entity, also call `get_node({ node_id })` and inspect its `edges`. If the anchor has zero outgoing edges of types `bug_affects_feature` / `debt_blocks_feature` / `root_cause_affects_feature` / `causes` / `blocks`, surface (do not silently return an empty blast radius):
@@ -75,11 +75,11 @@ If the user provided:
75
75
  ### Step 2: Traverse Forward
76
76
 
77
77
  Use the `query` tool to traverse downstream from the entity. Follow these edge types:
78
- - `debt_blocks_feature` this debt blocks features
79
- - `causes` / `root_cause_causes_bug` this root cause produces bugs
80
- - `bug_affects_feature` / `root_cause_affects_feature` issue affects features
81
- - `feature_has_epic` / `epic_has_user_story` / `story_has_task` feature breakdown
82
- - `service_powers_feature` service enables feature
78
+ - `debt_blocks_feature`: this debt blocks features
79
+ - `causes` / `root_cause_causes_bug`: this root cause produces bugs
80
+ - `bug_affects_feature` / `root_cause_affects_feature`: issue affects features
81
+ - `feature_has_epic` / `epic_has_user_story` / `story_has_task`; feature breakdown
82
+ - `service_powers_feature`: service enables feature
83
83
  - Any edge containing `blocks` or `enables`
84
84
 
85
85
  ### Step 3: Compute Blast Radius
@@ -97,7 +97,7 @@ Look for planned features that depend on decisions made now:
97
97
 
98
98
  ## Output Format
99
99
 
100
- Render as real markdown NOT inside a code block:
100
+ Render as real markdown; NOT inside a code block:
101
101
 
102
102
  ---
103
103
 
@@ -110,11 +110,11 @@ Render as real markdown — NOT inside a code block:
110
110
  (Show as an indented tree)
111
111
 
112
112
  ```
113
- ├─ 📦 [Feature] (status) directly unblocked
113
+ ├─ 📦 [Feature] (status); directly unblocked
114
114
  │ ├─ 📄 N user stories become startable
115
- │ └─ 📦 [Feature] (planned) transitively unblocked
116
- │ └─ 🎯 [Outcome] measurable
117
- └─ 📦 [Feature] (planned) directly unblocked
115
+ │ └─ 📦 [Feature] (planned); transitively unblocked
116
+ │ └─ 🎯 [Outcome]; measurable
117
+ └─ 📦 [Feature] (planned); directly unblocked
118
118
  ```
119
119
 
120
120
  ### Blast Radius
@@ -127,8 +127,8 @@ Render as real markdown — NOT inside a code block:
127
127
 
128
128
  (What stays blocked and the consequences)
129
129
 
130
- → [Feature] stays blocked affects [outcome/metric]
131
- → [Feature] stays blocked affects [revenue/growth]
130
+ → [Feature] stays blocked; affects [outcome/metric]
131
+ → [Feature] stays blocked; affects [revenue/growth]
132
132
 
133
133
  ### Future Awareness
134
134
 
@@ -159,24 +159,24 @@ Switch direction. Instead of "what does fixing this enable?" the question become
159
159
  ### Flow (single entity)
160
160
 
161
161
  1. Find the entity (`search_nodes` or `get_node`).
162
- 2. Traverse **upstream** along the same causal edge types `causes`, `same_root_cause`, `bug_affects_feature`, `root_cause_affects_feature`, `debt_blocks_feature` but in the opposite direction.
162
+ 2. Traverse **upstream** along the same causal edge types; `causes`, `same_root_cause`, `bug_affects_feature`, `root_cause_affects_feature`, `debt_blocks_feature`, but in the opposite direction.
163
163
  3. Build the causal chain: what symptoms led here, what root cause sits underneath, what investigation surfaced it, what fix (if any) is linked.
164
- 4. Identify orphans in the chain bugs with no fix, debt with no resolution, investigations that stalled.
164
+ 4. Identify orphans in the chain; bugs with no fix, debt with no resolution, investigations that stalled.
165
165
 
166
166
  ### Flow (graph-wide, no entity)
167
167
 
168
168
  1. Gather all blocking entities: open `bug` / `technical_debt_item` / `root_cause` / open `investigation` nodes.
169
169
  2. For each, traverse upstream and downstream to build causal chains.
170
- 3. Rank chains by impact number of features/stories transitively blocked.
170
+ 3. Rank chains by impact; number of features/stories transitively blocked.
171
171
  4. Identify orphan blockers (no fix, no resolution, no task).
172
172
 
173
173
  ### Output (upstream mode)
174
174
 
175
- Render as real markdown NOT inside a code block:
175
+ Render as real markdown; NOT inside a code block:
176
176
 
177
177
  ---
178
178
 
179
- ## 🔴 Blocker Analysis [Entity Title or Product Name]
179
+ ## 🔴 Blocker Analysis: [Entity Title or Product Name]
180
180
 
181
181
  **[N] blocking chains · [M] entities affected · [O] orphan blockers**
182
182
 
@@ -185,7 +185,7 @@ Render as real markdown — NOT inside a code block:
185
185
  (Sorted by impact, highest first. Show up to 10 chains.)
186
186
 
187
187
  ```
188
- Chain 1: [title] Impact: HIGH (blocks N features)
188
+ Chain 1: [title]; Impact: HIGH (blocks N features)
189
189
  🌿 "[root cause]" (severity 4)
190
190
  → causes 🐛 "[bug]" (critical)
191
191
  → affects 📦 "[feature]" (in_progress)
@@ -205,7 +205,7 @@ Chain 1: [title] — Impact: HIGH (blocks N features)
205
205
 
206
206
  (Blockers with no resolution plan)
207
207
 
208
- 🔴 [title] no linked fix or task
208
+ 🔴 [title]; no linked fix or task
209
209
  → Create a resolution with `/upg-explore task` or `/upg-explore fix`
210
210
 
211
211
  ---
@@ -220,10 +220,10 @@ If yes, use `create_node` to create task or fix entities and `create_edge` to li
220
220
 
221
221
  - **Chains, not lists.** Show the causal web, not isolated bugs.
222
222
  - **Impact-first ranking.** The blocker that affects the most features goes first.
223
- - **Offer resolution.** Don't just diagnose offer to create the fix/task.
223
+ - **Offer resolution.** Don't just diagnose; offer to create the fix/task.
224
224
  - **Edge confidence matters.** If an edge is `speculative`, flag it as uncertain.
225
225
  - **Engineering emojis:** 🐛 bug, 🔧 debt, 🌿 root_cause, 💊 fix, 🔍 investigation, 📦 feature, 🔴 blocker
226
226
 
227
227
  ---
228
- Your .upg file is yours open standard, portable, git-friendly.
228
+ Your .upg file is yours: open standard, portable, git-friendly.
229
229
  unifiedproductgraph.org
@@ -1,12 +1,12 @@
1
1
  ---
2
2
  name: upg-import
3
- description: "Import product knowledge from external tools into your .upg graph Markdown, GitHub, Linear, Jira, Dovetail, Vistaly, Notion, and 30+ more adapters"
3
+ description: "Import product knowledge from external tools into your .upg graph: Markdown, GitHub, Linear, Jira, Dovetail, Vistaly, Notion, and 30+ more adapters"
4
4
  user-invocable: true
5
5
  argument-hint: "[tool]"
6
6
  category: tooling
7
7
  ---
8
8
 
9
- # /upg-import Import Product Knowledge
9
+ # /upg-import: Import Product Knowledge
10
10
 
11
11
  You are a UPG import engine. Pull structured product knowledge from external tools into the user's .upg graph.
12
12
 
@@ -14,7 +14,7 @@ You are a UPG import engine. Pull structured product knowledge from external too
14
14
 
15
15
  ## Tools
16
16
 
17
- `mcp__unified-product-graph__*` create_node, create_edge, list_nodes, get_product_context.
17
+ `mcp__unified-product-graph__*`; create_node, create_edge, list_nodes, get_product_context.
18
18
 
19
19
  ## Time Estimate
20
20
 
@@ -40,8 +40,8 @@ Where do you want to import from?
40
40
 
41
41
  ── MCP-guided (agent-driven, no CLI yet) ───────────────
42
42
 
43
- 7. 📝 Notion uses Notion MCP + upg-notion-sync
44
- 8. 🔀 Other (37 adapters available see /integrations)
43
+ 7. 📝 Notion: uses Notion MCP + upg-notion-sync
44
+ 8. 🔀 Other (37 adapters available; see /integrations)
45
45
  ```
46
46
 
47
47
  ---
@@ -109,7 +109,7 @@ upg import --from linear --dry-run --yes # skip confirmation
109
109
 
110
110
  ## Step 2c: Notion (MCP-guided, bidirectional sync available)
111
111
 
112
- Notion uses a different path the Notion MCP server + the `upg-notion-sync` package.
112
+ Notion uses a different path; the Notion MCP server + the `upg-notion-sync` package.
113
113
 
114
114
  **Import (Notion → UPG):**
115
115
  ```bash
@@ -122,7 +122,7 @@ Notion uses a different path — the Notion MCP server + the `upg-notion-sync` p
122
122
  # 2. upg import --from markdown --file ./notion-export/
123
123
  ```
124
124
 
125
- **Bidirectional sync (UPG ↔ Notion LIVE TODAY):**
125
+ **Bidirectional sync (UPG ↔ Notion; LIVE TODAY):**
126
126
  ```bash
127
127
  npx @unified-product-graph/notion-sync push # UPG → Notion
128
128
  npx @unified-product-graph/notion-sync pull # Notion → UPG
@@ -134,7 +134,7 @@ The sync package creates one Notion database per UPG entity type and maps edges
134
134
 
135
135
  ## Step 2d: 30+ other adapters (convert() works for pre-fetched data)
136
136
 
137
- The following adapters have a working `convert()` method you can pass pre-fetched data:
137
+ The following adapters have a working `convert()` method; you can pass pre-fetched data:
138
138
 
139
139
  **Strategy & Discovery:** Productboard, Aha!, Quantive, Shortcut, Chisel, Craft.io, Airfocus, ProdPad, Coda
140
140
  **Delivery:** GitLab, Jira (via CLI above)
@@ -165,21 +165,21 @@ After any successful import:
165
165
 
166
166
  ```
167
167
  Your graph just grew! Suggested next steps:
168
- - /upg-tree see the full structure
169
- - /upg-gaps check what's still missing
170
- - /upg-status health dashboard with completeness scores
171
- - /upg-discover AI-powered entity discovery from what you just imported
168
+ - /upg-tree: see the full structure
169
+ - /upg-gaps: check what's still missing
170
+ - /upg-status: health dashboard with completeness scores
171
+ - /upg-discover: AI-powered entity discovery from what you just imported
172
172
  ```
173
173
 
174
174
  ---
175
175
 
176
176
  ## Key Principles
177
177
 
178
- - **Preview before creating.** Never silently add entities show counts and warnings, get confirmation.
178
+ - **Preview before creating.** Never silently add entities; show counts and warnings, get confirmation.
179
179
  - **Infer conservatively.** Only create when content clearly maps to a UPG type. When uncertain, ask.
180
180
  - **Preserve source context.** Store `source_id`, `source_type`, `external_tool` on every imported node.
181
181
  - **Deduplicate.** Check existing nodes with `search_nodes` before creating. Flag potential matches.
182
- - **Respect mapping_confidence.** Adapters set `'high'` / `'medium'` / `'low'` surface `'low'` items for human review.
182
+ - **Respect mapping_confidence.** Adapters set `'high'` / `'medium'` / `'low'`; surface `'low'` items for human review.
183
183
  - **Never auto-emit `insight_informs_opportunity`.** This edge always requires PM judgment. Emit a warning instead.
184
184
 
185
185
  ---