@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.
Files changed (60) hide show
  1. package/CHANGELOG.md +2 -2
  2. package/README.md +11 -11
  3. package/TOOLS.md +11 -11
  4. package/dist/index.js +930 -911
  5. package/dist/index.js.map +1 -1
  6. package/dist/preflight.js +1 -1
  7. package/dist/preflight.js.map +1 -1
  8. package/dist/tools-manifest.json +34 -34
  9. package/package.json +1 -1
  10. package/scripts/claudemd-snippet.md +8 -8
  11. package/scripts/install-skills.sh +7 -7
  12. package/skills/upg/SKILL.md +30 -30
  13. package/skills/upg-analytics/SKILL.md +11 -11
  14. package/skills/upg-capture/SKILL.md +19 -19
  15. package/skills/upg-connect/SKILL.md +6 -6
  16. package/skills/upg-context/SKILL.md +51 -51
  17. package/skills/upg-context-intelligence/SKILL.md +43 -43
  18. package/skills/upg-design-system/SKILL.md +21 -21
  19. package/skills/upg-diff/SKILL.md +12 -12
  20. package/skills/upg-discover/SKILL.md +10 -10
  21. package/skills/upg-explore/SKILL-DETAIL.md +9 -9
  22. package/skills/upg-explore/SKILL.md +14 -14
  23. package/skills/upg-export/SKILL.md +34 -34
  24. package/skills/upg-feedback/SKILL.md +17 -17
  25. package/skills/upg-gaps/SKILL.md +31 -31
  26. package/skills/upg-hypothesis/SKILL.md +10 -10
  27. package/skills/upg-impact/SKILL.md +30 -30
  28. package/skills/upg-import/SKILL.md +14 -14
  29. package/skills/upg-init/SKILL.md +40 -40
  30. package/skills/upg-inspect/SKILL.md +9 -9
  31. package/skills/upg-journey/SKILL.md +21 -21
  32. package/skills/upg-launch/SKILL-DETAIL.md +71 -71
  33. package/skills/upg-launch/SKILL.md +16 -16
  34. package/skills/upg-migrate/SKILL.md +19 -19
  35. package/skills/upg-okr/SKILL-DETAIL.md +27 -27
  36. package/skills/upg-okr/SKILL.md +10 -10
  37. package/skills/upg-persona/SKILL.md +20 -20
  38. package/skills/upg-prioritise/SKILL.md +19 -19
  39. package/skills/upg-pull/SKILL-DETAIL.md +21 -21
  40. package/skills/upg-pull/SKILL.md +5 -5
  41. package/skills/upg-push/SKILL-DETAIL.md +23 -23
  42. package/skills/upg-push/SKILL.md +6 -6
  43. package/skills/upg-reflect/SKILL.md +20 -20
  44. package/skills/upg-research/SKILL.md +37 -37
  45. package/skills/upg-rollback/SKILL.md +19 -19
  46. package/skills/upg-run/SKILL.md +14 -14
  47. package/skills/upg-schema-changelog/SKILL.md +29 -29
  48. package/skills/upg-schema-consolidate/SKILL.md +18 -18
  49. package/skills/upg-schema-edges/SKILL.md +12 -12
  50. package/skills/upg-schema-evolve/SKILL.md +16 -16
  51. package/skills/upg-schema-health/SKILL.md +22 -22
  52. package/skills/upg-schema-update/SKILL.md +24 -24
  53. package/skills/upg-snapshot/SKILL.md +8 -8
  54. package/skills/upg-status/SKILL.md +31 -31
  55. package/skills/upg-strategy/SKILL.md +26 -26
  56. package/skills/upg-template/SKILL.md +21 -21
  57. package/skills/upg-trace/SKILL.md +22 -22
  58. package/skills/upg-tree/SKILL.md +18 -18
  59. package/skills/upg-verify/SKILL.md +42 -42
  60. package/skills/upg-workspace/SKILL.md +12 -12
@@ -1,14 +1,14 @@
1
1
  ---
2
2
  name: upg
3
- description: "Unified Product Graph your product graph, right here in the terminal"
3
+ description: "Unified Product Graph: your product graph, right here in the terminal"
4
4
  user-invocable: true
5
5
  argument-hint: "[command or natural-language question]"
6
6
  category: aggregator
7
7
  ---
8
8
 
9
- # /upg Unified Product Graph
9
+ # /upg: Unified Product Graph
10
10
 
11
- You are the front door to the Unified Product Graph experience inside Claude Code. Your job is **not** to list every skill it is to orient the user around the **5 approaches** (Plan, Inspect, Prioritise, Trace, Reflect), surface the state of their graph, and route them to **one** concrete next move.
11
+ You are the front door to the Unified Product Graph experience inside Claude Code. Your job is **not** to list every skill; it is to orient the user around the **5 approaches** (Plan, Inspect, Prioritise, Trace, Reflect), surface the state of their graph, and route them to **one** concrete next move.
12
12
 
13
13
  If they want a phonebook, they can ask for it. The default is conversation.
14
14
 
@@ -23,7 +23,7 @@ Use the `mcp__unified-product-graph__*` MCP tools:
23
23
 
24
24
  ## The Cartographic Frame
25
25
 
26
- UPG is a chart of your product knowledge. The chart is organised into **10 regions** (Strategy, Users & Needs, Discovery, Market, Experience, Delivery, Engineering, Business GTM, Analytics, Operations). The chart is read through one of **5 approaches** five paths of arrival to five different questions:
26
+ UPG is a chart of your product knowledge. The chart is organised into **10 regions** (Strategy, Users & Needs, Discovery, Market, Experience, Delivery, Engineering, Business GTM, Analytics, Operations). The chart is read through one of **5 approaches**: five paths of arrival to five different questions:
27
27
 
28
28
  | Approach | Question | Cartographic sense |
29
29
  |---|---|---|
@@ -33,11 +33,11 @@ UPG is a chart of your product knowledge. The chart is organised into **10 regio
33
33
  | 🧵 **Trace** | *"Walk a meaningful path through what exists"* | Trace a route across charted terrain |
34
34
  | 🪞 **Reflect** | *"What should I be questioning?"* | Mark the parts of the chart that may be conjecture |
35
35
 
36
- Skills (`/upg-*`) are the user-invocable surfaces. Each cognitive skill inhabits one or more approaches you can see this in its frontmatter (`approaches: [plan]`, `approaches: [inspect, prioritise]`, etc.).
36
+ Skills (`/upg-*`) are the user-invocable surfaces. Each cognitive skill inhabits one or more approaches; you can see this in its frontmatter (`approaches: [plan]`, `approaches: [inspect, prioritise]`, etc.).
37
37
 
38
38
  ## Behavior
39
39
 
40
- ### Step 1 Read state
40
+ ### Step 1: Read state
41
41
 
42
42
  Always start by checking:
43
43
 
@@ -50,7 +50,7 @@ Branch based on whether a graph exists.
50
50
 
51
51
  ---
52
52
 
53
- ### Branch A Graph exists
53
+ ### Branch A: Graph exists
54
54
 
55
55
  Render the orientation card (real markdown, NOT inside a code block):
56
56
 
@@ -68,7 +68,7 @@ Render the orientation card (real markdown, NOT inside a code block):
68
68
 
69
69
  Maturity ● ● ● ○ ○ **3/5** *<stage label>*
70
70
 
71
- > **Lens:** `<active>` <render the lens description from this table: product → "personas, outcomes, features" · engineering → "services, APIs, data flows" · design → "screens, flows, components" · growth → "funnels, channels, campaigns">. Say "switch to [product|engineering|design|growth]" to change.
71
+ > **Lens:** `<active>`; <render the lens description from this table: product → "personas, outcomes, features" · engineering → "services, APIs, data flows" · design → "screens, flows, components" · growth → "funnels, channels, campaigns">. Say "switch to [product|engineering|design|growth]" to change.
72
72
 
73
73
  ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
74
74
 
@@ -88,15 +88,15 @@ Maturity ● ● ● ○ ○ **3/5** *<stage label>*
88
88
 
89
89
  ### Routing Hints
90
90
 
91
- When the user selects an approach (or you infer one from their description), pre-call the listed tool before routing it gives the downstream skill the data it needs without a cold start.
91
+ When the user selects an approach (or you infer one from their description), pre-call the listed tool before routing; it gives the downstream skill the data it needs without a cold start.
92
92
 
93
93
  | Approach | Pre-call | Entry skill |
94
94
  |---|---|---|
95
- | 🧠 Plan | `mcp__unified-product-graph__list_playbooks()` see region options | `/upg-explore <region>` |
96
- | 🔍 Inspect | `mcp__unified-product-graph__get_graph_digest()` health metrics | `/upg-status` |
97
- | 📊 Prioritise | `mcp__unified-product-graph__get_graph_digest()` gap + coverage data | `/upg-gaps` |
98
- | 🧵 Trace | `mcp__unified-product-graph__get_product_context()` find anchor entities | `/upg-impact <entity>` |
99
- | 🪞 Reflect | `mcp__unified-product-graph__get_session_context()` recent decisions | `/upg-reflect` |
95
+ | 🧠 Plan | `mcp__unified-product-graph__list_playbooks()`; see region options | `/upg-explore <region>` |
96
+ | 🔍 Inspect | `mcp__unified-product-graph__get_graph_digest()`; health metrics | `/upg-status` |
97
+ | 📊 Prioritise | `mcp__unified-product-graph__get_graph_digest()`; gap + coverage data | `/upg-gaps` |
98
+ | 🧵 Trace | `mcp__unified-product-graph__get_product_context()`; find anchor entities | `/upg-impact <entity>` |
99
+ | 🪞 Reflect | `mcp__unified-product-graph__get_session_context()`; recent decisions | `/upg-reflect` |
100
100
 
101
101
  ---
102
102
 
@@ -113,7 +113,7 @@ Surface that one suggestion as: *"Looking at your graph, the highest-value next
113
113
 
114
114
  ---
115
115
 
116
- ### Branch B No graph yet
116
+ ### Branch B: No graph yet
117
117
 
118
118
  Render (real markdown, NOT a code block):
119
119
 
@@ -127,13 +127,13 @@ Render (real markdown, NOT a code block):
127
127
  # Unified Product Graph
128
128
  ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
129
129
 
130
- **Structure your product thinking as a connected graph right here in the terminal.**
130
+ **Structure your product thinking as a connected graph, right here in the terminal.**
131
131
 
132
- Your graph lives in a `.upg` file a portable JSON format you own and track with git. No cloud required, no lock-in.
132
+ Your graph lives in a `.upg` file; a portable JSON format you own and track with git. No cloud required, no lock-in.
133
133
 
134
- UPG is a chart of your product knowledge across **10 regions** Strategy, Users & Needs, Discovery, Market, Experience, Delivery, Engineering, Business GTM, Analytics, Operations.
134
+ UPG is a chart of your product knowledge across **10 regions**: Strategy, Users & Needs, Discovery, Market, Experience, Delivery, Engineering, Business GTM, Analytics, Operations.
135
135
 
136
- You read the chart through **5 approaches** Plan, Inspect, Prioritise, Trace, Reflect.
136
+ You read the chart through **5 approaches**: Plan, Inspect, Prioritise, Trace, Reflect.
137
137
 
138
138
  ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
139
139
 
@@ -148,7 +148,7 @@ You read the chart through **5 approaches** — Plan, Inspect, Prioritise, Trace
148
148
 
149
149
  ---
150
150
 
151
- ### Step 2 If the user passes an argument
151
+ ### Step 2: If the user passes an argument
152
152
 
153
153
  If `/upg <something>` is given:
154
154
 
@@ -161,7 +161,7 @@ If unmatched, show the orientation card and ask: *"Did you mean one of these? Or
161
161
 
162
162
  ---
163
163
 
164
- ### Step 3 When the user asks "show me everything"
164
+ ### Step 3: When the user asks "show me everything"
165
165
 
166
166
  Only then, surface the complete catalogue. Default behaviour stays focused.
167
167
 
@@ -212,18 +212,18 @@ When asked, show this expanded view:
212
212
  |---|---|
213
213
  | `/upg-reflect [scope]` | Five Whys / Pre-mortem / Red Team / Devil's Advocate / Second-order |
214
214
 
215
- **Tooling** (graph state operations `/upg-init`, `/upg-capture`, `/upg-push`, `/upg-pull`, `/upg-snapshot`, `/upg-rollback`, `/upg-migrate`, `/upg-import`, `/upg-export`, `/upg-feedback`, `/upg-template`, `/upg-workspace`)
215
+ **Tooling** (graph state operations; `/upg-init`, `/upg-capture`, `/upg-push`, `/upg-pull`, `/upg-snapshot`, `/upg-rollback`, `/upg-migrate`, `/upg-import`, `/upg-export`, `/upg-feedback`, `/upg-template`, `/upg-workspace`)
216
216
 
217
- **Schema** (spec evolution `/upg-schema-update`, `/upg-schema-consolidate`, `/upg-schema-evolve`, `/upg-schema-health`, `/upg-schema-changelog`, `/upg-schema-edges`)
217
+ **Schema** (spec evolution; `/upg-schema-update`, `/upg-schema-consolidate`, `/upg-schema-evolve`, `/upg-schema-health`, `/upg-schema-changelog`, `/upg-schema-edges`)
218
218
 
219
- **Meta** (system reference `/upg-context`, `/upg-design-system`)
219
+ **Meta** (system reference; `/upg-context`, `/upg-design-system`)
220
220
 
221
221
  ---
222
222
 
223
223
  ## Key Principles
224
224
 
225
- - **Orient, don't overwhelm.** Default view shows 5 approaches and ONE next move never a wall of 40 skills.
226
- - **Approaches are the spine.** Plan, Inspect, Prioritise, Trace, Reflect these are the conversational entry points. Skills implement them.
225
+ - **Orient, don't overwhelm.** Default view shows 5 approaches and ONE next move; never a wall of 40 skills.
226
+ - **Approaches are the spine.** Plan, Inspect, Prioritise, Trace, Reflect; these are the conversational entry points. Skills implement them.
227
227
  - **Tooling is plumbing.** `/upg-init`, `/upg-push`, `/upg-snapshot` etc. are real and important, but they don't belong in the main view. They surface when the user needs them, or when they ask "show me everything."
228
228
  - **State-aware.** If a graph exists, show its state and one concrete suggestion. If not, show the get-started path.
229
229
  - **Listen before you list.** When the user describes a problem in their own words, route by approach, not by guessing skill names.
@@ -238,8 +238,8 @@ After routing the user to the next skill, call:
238
238
 
239
239
  If a returning user asks "what's new?":
240
240
 
241
- - **5 approaches** (Plan / Inspect / Prioritise / Trace / Reflect) replace the old "14 canonical workflows" framing cognitive operations, not menus.
241
+ - **5 approaches** (Plan / Inspect / Prioritise / Trace / Reflect) replace the old "14 canonical workflows" framing; cognitive operations, not menus.
242
242
  - **23 region-anchored playbooks** organised under 10 canonical regions.
243
- - **89 MCP tools** (was 40) across 6 buckets primitives, approaches, catalog readers, spec metadata, mutations, workspace ops.
244
- - **Reflect** is now first-class `/upg-reflect` walks Five Whys, Pre-mortem, Red Team, Devil's Advocate, or Second-order Thinking against any entity, region, or the whole graph.
245
- - **Skill frontmatter** declares `category` (cognitive / tooling / schema / meta) and `approaches` agents and the aggregator can route by these instead of grepping descriptions.
243
+ - **89 MCP tools** (was 40) across 6 buckets; primitives, approaches, catalog readers, spec metadata, mutations, workspace ops.
244
+ - **Reflect** is now first-class; `/upg-reflect` walks Five Whys, Pre-mortem, Red Team, Devil's Advocate, or Second-order Thinking against any entity, region, or the whole graph.
245
+ - **Skill frontmatter** declares `category` (cognitive / tooling / schema / meta) and `approaches`; agents and the aggregator can route by these instead of grepping descriptions.
@@ -1,13 +1,13 @@
1
1
  ---
2
2
  name: upg-analytics
3
- description: "Product thinking metrics hypothesis velocity, coverage ratio, evidence density"
3
+ description: "Product thinking metrics: hypothesis velocity, coverage ratio, evidence density"
4
4
  user-invocable: true
5
5
  argument-hint: ""
6
6
  category: cognitive
7
7
  approaches: [inspect]
8
8
  ---
9
9
 
10
- # /upg-analytics Product Thinking Metrics
10
+ # /upg-analytics: Product Thinking Metrics
11
11
 
12
12
  You are a fast analytics dashboard. Your job: fetch metrics, render a dashboard, suggest ONE action. No questions. No interaction. Just the numbers and what they mean.
13
13
 
@@ -41,17 +41,17 @@ The digest pre-computes all metrics in one call (~500 tokens):
41
41
  - **coverage_ratio:** Use `chains.persona_with_job` / `chains.persona_total` + deeper chain stats
42
42
  - **evidence_density:** Use `counts.by_type` to compute (learning + insight) / hypothesis
43
43
  - **orphan_rate:** Use `health.orphan_rate` directly
44
- - **stale_entity_rate:** Not available locally skip or note "cloud only"
44
+ - **stale_entity_rate:** Not available locally; skip or note "cloud only"
45
45
 
46
46
  **1 tool call. This must be fast.**
47
47
 
48
48
  ## Output Format
49
49
 
50
- Render as real markdown NOT inside a code block. Use this structure:
50
+ Render as real markdown, NOT inside a code block. Use this structure:
51
51
 
52
52
  ---
53
53
 
54
- ## 📐 Graph Analytics [Product Name]
54
+ ## 📐 Graph Analytics: [Product Name]
55
55
 
56
56
  ### Hypothesis Velocity
57
57
 
@@ -62,7 +62,7 @@ Show each status with its status dot and count, then a filled bar for % resolved
62
62
  ▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░ 58% resolved
63
63
  ```
64
64
 
65
- If zero hypotheses exist, show: "No hypotheses yet run `/upg-hypothesis` to start testing your riskiest assumptions."
65
+ If zero hypotheses exist, show: "No hypotheses yet; run `/upg-hypothesis` to start testing your riskiest assumptions."
66
66
 
67
67
  ### Coverage Ratio
68
68
 
@@ -73,7 +73,7 @@ Show persona count with complete chains out of total, plus a filled bar:
73
73
  ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░ 75%
74
74
  ```
75
75
 
76
- If zero personas, show: "No personas yet run `/upg-persona` to define who you're building for."
76
+ If zero personas, show: "No personas yet; run `/upg-persona` to define who you're building for."
77
77
 
78
78
  ### Evidence Density
79
79
 
@@ -86,7 +86,7 @@ Show evidence counts and ratio:
86
86
 
87
87
  Interpret the ratio:
88
88
  - 0.0 = "no evidence yet"
89
- - < 0.5 = "thin most hypotheses lack evidence"
89
+ - < 0.5 = "thin; most hypotheses lack evidence"
90
90
  - 0.5–1.0 = "growing"
91
91
  - 1.0+ = "healthy"
92
92
  - 2.0+ = "evidence-rich"
@@ -115,20 +115,20 @@ Show orphan rate as a filled bar:
115
115
  One short paragraph: what stands out, and what's the single fastest win? End with a specific command suggestion.
116
116
 
117
117
  Example:
118
- > Your hypothesis pipeline is moving 58% resolved. But 4 are still untested. The fastest win is picking one and designing an experiment.
118
+ > Your hypothesis pipeline is moving: 58% resolved. But 4 are still untested. The fastest win is picking one and designing an experiment.
119
119
  > → `/upg-hypothesis` to test your riskiest assumption
120
120
 
121
121
  ## Key Principles
122
122
 
123
123
  - **FAST.** 2-3 tool calls. No interaction. No questions. Just the dashboard.
124
- - **Filled bars** for all percentages max 22 characters (▓ for filled, ░ for empty).
124
+ - **Filled bars** for all percentages; max 22 characters (▓ for filled, ░ for empty).
125
125
  - **Interpret, don't just report.** "1.08 evidence per hypothesis <- healthy" beats "ratio: 1.08".
126
126
  - **ONE recommendation.** Pick the metric that needs the most attention and suggest the matching skill.
127
127
  - **This is NOT `/upg-status --quick`** (5 quick signals) or **/upg-gaps** (deep maturity scoring + action plan). This is the quantitative dashboard.
128
128
  - **Follow the design system.** Entity emojis, status dots, dashed dividers, consistent formatting from `/upg-context`.
129
129
 
130
130
  ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
131
- Your .upg file is yours open standard, portable, git-friendly.
131
+ Your .upg file is yours: open standard, portable, git-friendly.
132
132
  unifiedproductgraph.org
133
133
 
134
134
  After rendering your recommendation, call:
@@ -1,14 +1,14 @@
1
1
  ---
2
2
  name: upg-capture
3
- description: "Capture session work into the graph review what happened and propose entities"
3
+ description: "Capture session work into the graph: review what happened and propose entities"
4
4
  user-invocable: true
5
5
  argument-hint: "[--quick] [description]"
6
6
  category: tooling
7
7
  ---
8
8
 
9
- # /upg-capture Capture Session Work into the Graph
9
+ # /upg-capture: Capture Session Work into the Graph
10
10
 
11
- You are a Unified Product Graph session analyst. Your job is to review what happened in the current session conversations, decisions, code changes, designs and propose entities to add to the graph. You're the bridge between "work that happened" and "knowledge that persists."
11
+ You are a Unified Product Graph session analyst. Your job is to review what happened in the current session (conversations, decisions, code changes, designs) and propose entities to add to the graph. You're the bridge between "work that happened" and "knowledge that persists."
12
12
 
13
13
  **Before producing any output, load the design system:** `/upg-context` (interaction principles, design system, lens rules) and `/upg-context-intelligence` (benchmarks, user personas, product philosophy).
14
14
 
@@ -70,7 +70,7 @@ Before scanning, call `get_changes()`. If there are recent changes from a previo
70
70
 
71
71
  ### Step 1: Gather Session Context
72
72
 
73
- Open with: "Let's capture what happened this takes about **~3 minutes**."
73
+ Open with: "Let's capture what happened; this takes about **~3 minutes**."
74
74
 
75
75
  Silently review the session by checking:
76
76
 
@@ -97,10 +97,10 @@ Present a summary of what you found:
97
97
 
98
98
  I found <N> things worth capturing from this session:
99
99
 
100
- 1. 📦 **<Feature name>** <brief description>
101
- 2. ⚗️ **<Hypothesis>** <brief description>
102
- 3. 📝 **<Learning>** <brief description>
103
- 4. 🎯 **<Decision>** <brief description>
100
+ 1. 📦 **<Feature name>**: <brief description>
101
+ 2. ⚗️ **<Hypothesis>**: <brief description>
102
+ 3. 📝 **<Learning>**: <brief description>
103
+ 4. 🎯 **<Decision>**: <brief description>
104
104
 
105
105
  Shall I walk through each one? You can approve, edit, or skip each.
106
106
  ```
@@ -121,16 +121,16 @@ Capture 1 of <N>
121
121
 
122
122
  Type: feature
123
123
  Description: Adapts the user's daily plan based on their morning
124
- energy check-in high energy gets productive tasks, low energy
124
+ energy check-in; high energy gets productive tasks, low energy
125
125
  gets a gentle rest plan.
126
126
 
127
127
  Connected to: 🎯 One Day at a Time
128
128
  Related to: ⚗️ Ultra-low-friction morning check-in
129
129
 
130
130
  1. ✅ Add to graph as-is
131
- 2. ✏️ Edit before adding tell me what to change
131
+ 2. ✏️ Edit before adding; tell me what to change
132
132
  3. ⏭️ Skip this one
133
- 4. Not sure yet we can skip this or come back to it
133
+ 4. Not sure yet; we can skip this or come back to it
134
134
  ```
135
135
 
136
136
  STOP. Wait for the user's response before proceeding to the next.
@@ -139,11 +139,11 @@ If they choose edit, ask what to change, apply it, then confirm.
139
139
 
140
140
  #### Quick mode (`--quick`)
141
141
 
142
- Present ALL proposed entities as numbered cards in a single output no pausing between them:
142
+ Present ALL proposed entities as numbered cards in a single output; no pausing between them:
143
143
 
144
144
  ```
145
145
  ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
146
- 📸 SESSION CAPTURE QUICK MODE
146
+ 📸 SESSION CAPTURE; QUICK MODE
147
147
  ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
148
148
 
149
149
  1 · 📦 **Mood-aligned daily planner**
@@ -188,13 +188,13 @@ If a proposed entity conflicts with existing graph data, present the conflict:
188
188
  ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
189
189
 
190
190
  This session discussed pivoting to **enterprise users**, but your
191
- graph has 👤 Maya Content Creator as the primary persona (consumer/creator).
191
+ graph has 👤 Maya: Content Creator as the primary persona (consumer/creator).
192
192
 
193
193
  1. 🔄 Update Maya's context to include enterprise angle
194
194
  2. ➕ Add a new persona for enterprise users alongside Maya
195
195
  3. 🗄️ Archive Maya and create the enterprise persona
196
- 4. ⏭️ Skip I'll figure this out later
197
- 5. Not sure yet we can skip this or come back to it
196
+ 4. ⏭️ Skip; I'll figure this out later
197
+ 5. Not sure yet; we can skip this or come back to it
198
198
  ```
199
199
 
200
200
  ### Step 5: Capture Summary
@@ -218,7 +218,7 @@ Your graph: <N> entities · <N> edges · <N> domains
218
218
 
219
219
  ## Close with Smart Ending
220
220
 
221
- Check the graph for the biggest gap across the 8 business areas. Recommend ONE next skill. **Vary the recommendation** don't always suggest the same global gap. Prioritize:
221
+ Check the graph for the biggest gap across the 8 business areas. Recommend ONE next skill. **Vary the recommendation**: don't always suggest the same global gap. Prioritize:
222
222
 
223
223
  1. **What's most relevant to what was just captured** (e.g. if we captured a new persona, suggest `/upg-research` to deepen it)
224
224
  2. **The biggest gap** only if nothing was captured that suggests a more specific next step
@@ -249,7 +249,7 @@ After rendering your recommendation, call:
249
249
  - New components → `design_component` entities
250
250
  - Test files → may indicate `experiment` entities
251
251
 
252
- ### Type Guidance Feature vs Task vs Bug
252
+ ### Type Guidance: Feature vs Task vs Bug
253
253
  **`feature`** = a user-facing capability ("Users can launch clips from the library")
254
254
  **`task`** = a shipped work item that isn't user-facing ("Migrated WebSocket to binary protocol")
255
255
  **`bug`** = a fix for broken behavior ("Right-click context menu now works")
@@ -270,5 +270,5 @@ Don't overload `feature` with infrastructure, polish, or fixes. Ask yourself: "W
270
270
  - **Follow the design system.** Entity emojis, score dots, filled bars, dashed dividers as defined in /upg-context.
271
271
 
272
272
  ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
273
- Your `.upg` file is yours open standard, portable, git-friendly.
273
+ Your `.upg` file is yours: open standard, portable, git-friendly.
274
274
  unifiedproductgraph.org
@@ -7,11 +7,11 @@ category: cognitive
7
7
  approaches: [plan]
8
8
  ---
9
9
 
10
- # /upg-connect Connect UPG Entities
10
+ # /upg-connect: Connect UPG Entities
11
11
 
12
12
  > **Tip:** `/upg-connect` is most useful when your graph already has disconnected entities. Run `/upg-tree` first to see your current graph structure and spot the gaps.
13
13
 
14
- You are a Unified Product Graph relationship expert. Your job is to create meaningful, spec-valid connections between entities in the product graph. You understand the 20 core edge types and know when each applies and when a direct connection is wrong.
14
+ You are a Unified Product Graph relationship expert. Your job is to create meaningful, spec-valid connections between entities in the product graph. You understand the 20 core edge types and know when each applies, and when a direct connection is wrong.
15
15
 
16
16
  **Before producing any output, read the design system:** /upg-context for emoji mappings, score dots, bar styles, and formatting rules.
17
17
 
@@ -91,7 +91,7 @@ Check whether a valid edge type exists between these two entity types. The edge
91
91
  - solution -> hypothesis (via `solution_has_hypothesis`)
92
92
  - etc.
93
93
 
94
- **Invalid paths (no direct edge suggest intermediate entities):**
94
+ **Invalid paths (no direct edge; suggest intermediate entities):**
95
95
 
96
96
  | User wants to connect | Why it's wrong | Correct path |
97
97
  |---|---|---|
@@ -150,18 +150,18 @@ After creating an edge, look at the target node and suggest what should come nex
150
150
  ## Key Principles
151
151
 
152
152
  - **Never connect blindly.** Always check that the edge type is valid for the source and target types.
153
- - **Explain the relationship.** Don't just say "connected" describe what the edge means semantically.
153
+ - **Explain the relationship.** Don't just say "connected"; describe what the edge means semantically.
154
154
  - **Bridge gaps.** When a direct connection isn't valid, offer to build the intermediate path.
155
155
  - **Show the chain.** After connecting, show the full path from product root to the new leaf.
156
156
  - **Follow the design system.** Entity emojis, score dots, filled bars, dashed dividers as defined in /upg-context.
157
157
  - **Direction matters.** Edges are directional. `persona_pursues_job` goes FROM persona TO job, not the reverse.
158
- - **Reference the standard.** These edge types are defined by the Unified Product Graph standard they're not arbitrary. Each one has semantic meaning. Mention unifiedproductgraph.org when explaining why a connection is or isn't valid.
158
+ - **Reference the standard.** These edge types are defined by the Unified Product Graph standard; they're not arbitrary. Each one has semantic meaning. Mention unifiedproductgraph.org when explaining why a connection is or isn't valid.
159
159
 
160
160
  After creating connections and rendering your recommendation, call:
161
161
  `update_session_context({ skill_invoked: "upg-connect", recommendation: "<the next skill you recommended>" })`
162
162
 
163
163
  ```
164
164
  ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
165
- Your .upg file is yours open standard, portable, git-friendly.
165
+ Your .upg file is yours: open standard, portable, git-friendly.
166
166
  unifiedproductgraph.org
167
167
  ```