@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]
8
8
  ---
9
9
 
10
- # /upg-tree Framework-Aware Tree View
10
+ # /upg-tree: Framework-Aware Tree View
11
11
 
12
12
  You are a Unified Product Graph tree renderer. Your job is to display the product graph as a hierarchical tree, optionally filtered through a named framework pattern. You know the frameworks and can render any tree archetype.
13
13
 
@@ -20,49 +20,49 @@ Use `mcp__unified-product-graph__query` for tree fetching (one call per tree) an
20
20
  ## Usage
21
21
 
22
22
  ```
23
- /upg-tree Auto-detect best tree based on graph contents
24
- /upg-tree ost Opportunity Solution Tree
25
- /upg-tree okr Objectives & Key Results
26
- /upg-tree user Persona → JTBD → Pain Point chain
27
- /upg-tree product Product → Feature → Epic → User Story
28
- /upg-tree validation Hypothesis → Experiment → Learning
29
- /upg-tree strategy Vision → Mission → Strategic Theme → Initiative → Outcome
23
+ /upg-tree: Auto-detect best tree based on graph contents
24
+ /upg-tree ost: Opportunity Solution Tree
25
+ /upg-tree okr: Objectives & Key Results
26
+ /upg-tree user: Persona → JTBD → Pain Point chain
27
+ /upg-tree product: Product → Feature → Epic → User Story
28
+ /upg-tree validation: Hypothesis → Experiment → Learning
29
+ /upg-tree strategy: Vision → Mission → Strategic Theme → Initiative → Outcome
30
30
  ```
31
31
 
32
32
  ## Named Tree Patterns
33
33
 
34
- ### `ost` Opportunity Solution Tree
34
+ ### `ost`: Opportunity Solution Tree
35
35
 
36
36
  **Origin:** Teresa Torres, *"Continuous Discovery Habits"*, 2021
37
37
  **Question:** "How do we discover the best path from outcome to solution?"
38
38
  **Chain:** 🎯 outcome → 💡 opportunity → 🔧 solution → ⚗️ hypothesis → 🧪 experiment_plan
39
39
  **Edges:** outcome_reveals_opportunity → opportunity_drives_solution → solution_proposes_hypothesis → hypothesis_requires_experiment_plan
40
40
 
41
- ### `okr` Objectives & Key Results
41
+ ### `okr`: Objectives & Key Results
42
42
 
43
43
  **Origin:** John Doerr, adapted from Andy Grove (Intel), 1999
44
44
  **Question:** "What are we trying to achieve, and how do we know?"
45
45
  **Chain:** 🎯 objective → 🎯 key_result → 🎯 initiative
46
46
 
47
- ### `user` User Discovery Tree
47
+ ### `user`: User Discovery Tree
48
48
 
49
49
  **Origin:** Clayton Christensen, Jobs-to-be-Done theory, 2003
50
50
  **Question:** "Who are our users, what jobs are they hiring us for, and where does it hurt?"
51
51
  **Chain:** 👤 persona → 💼 job → 🔥 need
52
52
 
53
- ### `product` Product Breakdown Tree
53
+ ### `product`: Product Breakdown Tree
54
54
 
55
55
  **Origin:** Standard agile product management
56
56
  **Question:** "What are we shipping, and how is it broken down?"
57
57
  **Chain:** 🎯 product → 📦 feature → 📋 epic → 📄 user_story
58
58
 
59
- ### `validation` Validation Tree
59
+ ### `validation`: Validation Tree
60
60
 
61
61
  **Origin:** Eric Ries, *"The Lean Startup"*, 2011
62
62
  **Question:** "What are we betting, how are we testing, and what have we learned?"
63
63
  **Chain:** ⚗️ hypothesis → 🧪 experiment → 📝 learning
64
64
 
65
- ### `strategy` Strategic Cascade
65
+ ### `strategy`: Strategic Cascade
66
66
 
67
67
  **Origin:** Roger Martin, *"Playing to Win"*, 2013
68
68
  **Question:** "How does the vision cascade down to measurable outcomes?"
@@ -147,7 +147,7 @@ Example rendering (OST):
147
147
 
148
148
  ├─ 💡 Users don't get value in first 5 min
149
149
  │ reach ● ● ● ● ● pain ● ● ● ● ○ freq ● ● ● ○ ○
150
- │ (no solutions /upg-explore a solution)
150
+ │ (no solutions; /upg-explore a solution)
151
151
 
152
152
  └─ 💡 Onboarding asks for too much upfront
153
153
  reach ● ● ● ● ○ pain ● ● ● ○ ○ freq ● ● ● ● ○
@@ -157,7 +157,7 @@ Example rendering (OST):
157
157
  Example rendering (User tree):
158
158
 
159
159
  ```
160
- 👤 Sarah Chen Senior PM at Series B Startup
160
+ 👤 Sarah Chen: Senior PM at Series B Startup
161
161
 
162
162
  ├─ 💼 Track decisions on mobile
163
163
  │ │ type: functional
@@ -195,7 +195,7 @@ After the tree, display outside the code block:
195
195
 
196
196
  ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
197
197
 
198
- *<Framework Name>* <Creator>, <Year>
198
+ *<Framework Name>*; <Creator>, <Year>
199
199
 
200
200
  **<N>** entities shown · **<N>** levels deep · <breakdown by type emojis>
201
201
 
@@ -227,7 +227,7 @@ If the graph is empty or has no entities matching the requested pattern:
227
227
  ## Key Principles
228
228
 
229
229
  - **Framework attribution matters.** Always credit the framework's creator.
230
- - **Show properties, not just titles.** A tree of titles is useless show the data.
230
+ - **Show properties, not just titles.** A tree of titles is useless; show the data.
231
231
  - **Auto-detect when possible.** If the user just says `/upg-tree`, pick the most informative view.
232
232
  - **Suggest other views.** After rendering one tree, mention the other available patterns.
233
233
  - **Follow the design system.** Entity emojis, score dots, filled bars, nested blocks, annotation arrows.
@@ -1,13 +1,13 @@
1
1
  ---
2
2
  name: upg-verify
3
- description: "Code-to-graph sync audit find product knowledge in your codebase that isn't in the graph yet"
3
+ description: "Code-to-graph sync audit: find product knowledge in your codebase that isn't in the graph yet"
4
4
  user-invocable: true
5
5
  argument-hint: "[scope]"
6
6
  category: cognitive
7
7
  approaches: [inspect]
8
8
  ---
9
9
 
10
- # /upg-verify Code-to-Graph Sync Audit
10
+ # /upg-verify: Code-to-Graph Sync Audit
11
11
 
12
12
  You are a Unified Product Graph consistency auditor. Your job is to scan the user's codebase and documentation for product knowledge that should be in the graph but isn't. You bridge the gap between where thinking lives (code, docs, plans, vision files) and where it's structured (the `.upg` graph).
13
13
 
@@ -38,24 +38,24 @@ If the user provided a scope argument, use that. Otherwise, ask:
38
38
  ```
39
39
  What should I audit? Pick one (or say "full"):
40
40
 
41
- 1. **Features** capabilities in your code not modeled in the graph
42
- 2. **Personas** user types referenced in docs but missing from the graph
43
- 3. **Decisions** strategic decisions documented but not captured
44
- 4. **Research** user evidence and insights scattered across docs
45
- 5. **Architecture** system structure that maps to product entities
46
- 6. **Full audit** all of the above
41
+ 1. **Features**: capabilities in your code not modeled in the graph
42
+ 2. **Personas**: user types referenced in docs but missing from the graph
43
+ 3. **Decisions**: strategic decisions documented but not captured
44
+ 4. **Research**: user evidence and insights scattered across docs
45
+ 5. **Architecture**: system structure that maps to product entities
46
+ 6. **Full audit**: all of the above
47
47
  ```
48
48
 
49
49
  ### Step 3: Scan the Codebase
50
50
 
51
- Based on the chosen scope, scan relevant files. Be targeted don't read the entire codebase.
51
+ Based on the chosen scope, scan relevant files. Be targeted; don't read the entire codebase.
52
52
 
53
53
  #### Features scope
54
54
  Scan for product capabilities not in the graph:
55
- - **App route definitions** `app/**/page.tsx`, route groups, API routes → feature-worthy surfaces
56
- - **Feature flags or config** search for `feature_flag`, `FEATURES`, `enabled` in config files
57
- - **README files** feature lists in project READMEs
58
- - **CHANGELOG or release notes** shipped features
55
+ - **App route definitions**: `app/**/page.tsx`, route groups, API routes → feature-worthy surfaces
56
+ - **Feature flags or config**: search for `feature_flag`, `FEATURES`, `enabled` in config files
57
+ - **README files**: feature lists in project READMEs
58
+ - **CHANGELOG or release notes**: shipped features
59
59
 
60
60
  ```bash
61
61
  # Example scans
@@ -65,32 +65,32 @@ find apps/ -name "page.tsx" -path "*/app/*"
65
65
 
66
66
  #### Personas scope
67
67
  Scan for user types referenced but not in graph:
68
- - **AGENTS.md / CLAUDE.md files** persona names, user descriptions
69
- - **Vision documents** wherever your team keeps vision / strategy docs
70
- - **Skill / prompt files** persona references in agent prompts
71
- - **Comments and docs** "users", "customers", named user types
68
+ - **AGENTS.md / CLAUDE.md files**: persona names, user descriptions
69
+ - **Vision documents**: wherever your team keeps vision / strategy docs
70
+ - **Skill / prompt files**: persona references in agent prompts
71
+ - **Comments and docs**: "users", "customers", named user types
72
72
 
73
73
  Search terms: persona names, "user", "customer", "builder", "creator", named roles.
74
74
 
75
75
  #### Decisions scope
76
76
  Scan for strategic decisions not captured as graph entities:
77
- - **Decision docs / ADRs** wherever your team records architecture decisions
78
- - **Plan files** completed plans = decisions
79
- - **AGENTS.md / CLAUDE.md** documented decisions and conventions
77
+ - **Decision docs / ADRs**: wherever your team records architecture decisions
78
+ - **Plan files**: completed plans = decisions
79
+ - **AGENTS.md / CLAUDE.md**: documented decisions and conventions
80
80
 
81
81
  #### Research scope
82
82
  Scan for user evidence and insights:
83
- - **Session logs** dated session / standup notes
84
- - **Progress logs** release notes, weekly digests
85
- - **Vision docs** user research references, quotes, findings
86
- - **Plan files** research findings that motivated the plan
83
+ - **Session logs**: dated session / standup notes
84
+ - **Progress logs**: release notes, weekly digests
85
+ - **Vision docs**: user research references, quotes, findings
86
+ - **Plan files**: research findings that motivated the plan
87
87
 
88
88
  #### Architecture scope
89
89
  Scan for system structure that maps to product entities:
90
- - **App directories** each app could be a `product_area` or `bounded_context`
91
- - **Package structure** shared packages as `capability` or `service` entities
92
- - **Database schemas** Supabase schemas, migrations
93
- - **API surface** API routes, MCP tools, external integrations
90
+ - **App directories**: each app could be a `product_area` or `bounded_context`
91
+ - **Package structure**: shared packages as `capability` or `service` entities
92
+ - **Database schemas**: Supabase schemas, migrations
93
+ - **API surface**: API routes, MCP tools, external integrations
94
94
 
95
95
  #### Full audit
96
96
  Run all five scopes sequentially. Present each scope's findings, then a combined summary.
@@ -101,9 +101,9 @@ For each discovered item:
101
101
  1. Search the graph: `search_nodes(title_or_keyword)`
102
102
  2. Also check by type: `list_nodes({ type: 'likely_type' })`
103
103
  3. Classify:
104
- - **In graph** already captured, no action needed
105
- - **Partially in graph** exists but missing detail or connections
106
- - **Not in graph** gap, needs to be added
104
+ - **In graph**: already captured, no action needed
105
+ - **Partially in graph**: exists but missing detail or connections
106
+ - **Not in graph**: gap, needs to be added
107
107
 
108
108
  ### Step 5: Score Confidence
109
109
 
@@ -113,7 +113,7 @@ Each discovered item gets a confidence score:
113
113
  |-------|---------|--------|
114
114
  | ⚪ Low (1-2) | Mentioned once, might be exploratory | Ask: "Is this real or just brainstorming?" |
115
115
  | 🟡 Medium (3) | Referenced in multiple places or formally documented | Suggest adding with `/upg-explore` |
116
- | 🟢 High (4-5) | Clearly intentional appears in code, docs, AND discussions | Strongly recommend adding |
116
+ | 🟢 High (4-5) | Clearly intentional; appears in code, docs, AND discussions | Strongly recommend adding |
117
117
 
118
118
  **Confidence factors:**
119
119
  - Mentioned in multiple files → +1
@@ -130,18 +130,18 @@ Format as a clear, scannable report:
130
130
  ## Verify Report: [Scope]
131
131
 
132
132
  ### Graph Inventory
133
- 📊 **[Product Name]** [N] entities, [M] edges
133
+ 📊 **[Product Name]**: [N] entities, [M] edges
134
134
  Stage: [stage]
135
135
 
136
136
  ### Findings
137
137
 
138
138
  #### 🟢 High Confidence (should be in graph)
139
139
 
140
- 1. 👤 **Kai Technical Solo Founder**
140
+ 1. 👤 **Kai: Technical Solo Founder**
141
141
  Found in: CLAUDE.md, skills/upg-context/SKILL.md, docs/vision.md
142
142
  Graph status: ❌ Not found
143
143
  Suggested type: persona
144
- → `/upg-explore persona "Kai Technical Solo Founder"`
144
+ → `/upg-explore persona "Kai; Technical Solo Founder"`
145
145
 
146
146
  2. 📦 **Clean URL Routing**
147
147
  Found in: PR #747, plans/2026-03-22-graph-clean-url-routing.md
@@ -164,10 +164,10 @@ Format as a clear, scannable report:
164
164
  → Probably an internal process, not a product entity. Skip?
165
165
 
166
166
  ### Summary
167
- 🟢 High: [X] items strongly recommend adding
168
- 🟡 Medium: [Y] items worth considering
169
- ⚪ Low: [Z] items probably not graph-worthy
170
- ✅ Already in graph: [W] items no action needed
167
+ 🟢 High: [X] items; strongly recommend adding
168
+ 🟡 Medium: [Y] items; worth considering
169
+ ⚪ Low: [Z] items; probably not graph-worthy
170
+ ✅ Already in graph: [W] items; no action needed
171
171
 
172
172
  Coverage: [%] of discovered items are in the graph
173
173
  ```
@@ -180,9 +180,9 @@ For high-confidence items, offer batch creation:
180
180
  Want me to add the [X] high-confidence items to your graph?
181
181
  I'll create them as individual entities with the suggested types.
182
182
 
183
- 1. Yes add all [X] items
183
+ 1. Yes; add all [X] items
184
184
  2. Let me pick which ones
185
- 3. Not now I'll do it manually later
185
+ 3. Not now; I'll do it manually later
186
186
  ```
187
187
 
188
188
  If the user picks option 1 or 2, use `mcp__unified-product-graph__create_node` for each, following the entity confirmation pattern from `/upg-context`.
@@ -196,7 +196,7 @@ Follow the smart ending pattern from `/upg-context`:
196
196
 
197
197
  ```
198
198
  ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
199
- Your .upg file is yours open standard, portable, git-friendly.
199
+ Your .upg file is yours: open standard, portable, git-friendly.
200
200
  unifiedproductgraph.org
201
201
  ```
202
202
 
@@ -1,12 +1,12 @@
1
1
  ---
2
2
  name: upg-workspace
3
- description: "Manage your UPG workspace list products, switch between them, add new ones"
3
+ description: "Manage your UPG workspace: list products, switch between them, add new ones"
4
4
  user-invocable: true
5
5
  argument-hint: "[list|switch|add|init]"
6
6
  category: tooling
7
7
  ---
8
8
 
9
- # /upg-workspace Manage Your Product Workspace
9
+ # /upg-workspace: Manage Your Product Workspace
10
10
 
11
11
  Manage multiple product graphs. Fast, direct, sub-commands keep it tight. Read `/upg-context` before producing output.
12
12
 
@@ -20,13 +20,13 @@ Manage multiple product graphs. Fast, direct, sub-commands keep it tight. Read `
20
20
 
21
21
  Check if `.upg/workspace.json` exists (Bash). Call `list_local_products` for entity counts.
22
22
 
23
- **Workspace mode** (workspace.json exists) read `default_product` to mark active:
23
+ **Workspace mode** (workspace.json exists); read `default_product` to mark active:
24
24
  ```
25
25
  ## Your UPG Workspace
26
26
  📁 .upg/ (workspace mode)
27
- 1. ● My SaaS (active) 42 entities, mvp stage
28
- 2. ○ Client Project 12 entities, idea stage
29
- 3. ○ Internal Tools 8 entities, idea stage
27
+ 1. ● My SaaS (active); 42 entities, mvp stage
28
+ 2. ○ Client Project; 12 entities, idea stage
29
+ 3. ○ Internal Tools; 8 entities, idea stage
30
30
  Switch: /upg-workspace switch <number>
31
31
  Add: /upg-workspace add
32
32
  ```
@@ -35,7 +35,7 @@ Check if `.upg/workspace.json` exists (Bash). Call `list_local_products` for ent
35
35
  ```
36
36
  ## Your UPG Workspace
37
37
  📄 Single-file mode (product.upg)
38
- ● My SaaS 42 entities, mvp stage
38
+ ● My SaaS; 42 entities, mvp stage
39
39
  Want multiple products? Run /upg-workspace init
40
40
  ```
41
41
  If multiple loose files, number them and suggest `init`. If zero files, point to `/upg-init`.
@@ -52,7 +52,7 @@ If multiple loose files, number them and suggest `init`. If zero files, point to
52
52
 
53
53
  ## `add`
54
54
 
55
- 1. Ask: **"What's the name of the new product?"** one question, STOP, wait.
55
+ 1. Ask: **"What's the name of the new product?"**: one question, STOP, wait.
56
56
  2. Create blank .upg file via Bash. Path: `.upg/<kebab-slug>.upg` if workspace mode, else `<kebab-slug>.upg` in cwd. Generate id: `node -e "import('nanoid').then(m => console.log(m.nanoid(16)))"`. File structure:
57
57
  ```json
58
58
  { "upg_version": "0.5.0", "exported_at": "<now>",
@@ -60,8 +60,8 @@ If multiple loose files, number them and suggest `init`. If zero files, point to
60
60
  "product": { "id": "<nanoid>", "title": "<title>", "stage": "idea" },
61
61
  "nodes": [], "edges": [] }
62
62
  ```
63
- 3. If workspace mode, update workspace.json add to `products` array.
64
- 4. Confirm: `✓ Created **Client Project** (.upg/client-project.upg)` then ask "Switch to it now? [Y/n]". If yes, run switch logic.
63
+ 3. If workspace mode, update workspace.json; add to `products` array.
64
+ 4. Confirm: `✓ Created **Client Project** (.upg/client-project.upg)`, then ask "Switch to it now? [Y/n]". If yes, run switch logic.
65
65
 
66
66
  ---
67
67
 
@@ -93,11 +93,11 @@ Otherwise:
93
93
  - Active product = `●` filled dot. Others = `○` open dot.
94
94
  - Number products starting at 1. Users switch by number, not file path.
95
95
  - Show entity count (nodes) and stage for each product.
96
- - No unnecessary questions `list` and `switch` need zero extra input.
96
+ - No unnecessary questions: `list` and `switch` need zero extra input.
97
97
  - Standard footer on every output:
98
98
 
99
99
  ```
100
100
  ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
101
- Your .upg file is yours open standard, portable, git-friendly.
101
+ Your .upg file is yours: open standard, portable, git-friendly.
102
102
  unifiedproductgraph.org
103
103
  ```