@unified-product-graph/mcp-server 0.8.1 → 0.8.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 (61) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/README.md +1 -1
  3. package/TOOLS.md +79 -16
  4. package/dist/index.js +1440 -290
  5. package/dist/index.js.map +1 -1
  6. package/dist/tools-manifest.json +197 -82
  7. package/package.json +1 -1
  8. package/scripts/claudemd-snippet.md +7 -7
  9. package/scripts/install-skills.sh +2 -2
  10. package/skills/upg/SKILL.md +41 -41
  11. package/skills/{upg-gaps → upg-check-gaps}/SKILL.md +40 -43
  12. package/skills/{upg-schema-health → upg-check-schema}/SKILL.md +7 -7
  13. package/skills/{upg-schema-evolve → upg-check-schema-coverage}/SKILL.md +12 -12
  14. package/skills/{upg-schema-edges → upg-check-schema-edges}/SKILL.md +3 -3
  15. package/skills/{upg-schema-consolidate → upg-check-schema-merge}/SKILL.md +5 -5
  16. package/skills/upg-context/SKILL.md +96 -72
  17. package/skills/upg-context-intelligence/SKILL.md +23 -27
  18. package/skills/upg-design-system/SKILL.md +21 -26
  19. package/skills/{upg-verify → upg-find-untracked}/SKILL.md +7 -12
  20. package/skills/{upg-rollback → upg-fix-rollback}/SKILL.md +6 -12
  21. package/skills/{upg-migrate → upg-fix-types}/SKILL.md +5 -9
  22. package/skills/upg-link/SKILL.md +125 -0
  23. package/skills/{upg-discover → upg-new-discovery}/SKILL.md +42 -58
  24. package/skills/{upg-capture → upg-new-from-session}/SKILL.md +13 -15
  25. package/skills/{upg-template → upg-new-from-template}/SKILL.md +8 -12
  26. package/skills/{upg-init → upg-new-graph}/SKILL.md +50 -82
  27. package/skills/{upg-hypothesis → upg-new-hypothesis}/SKILL.md +27 -36
  28. package/skills/{upg-launch → upg-new-launch}/SKILL-DETAIL.md +36 -92
  29. package/skills/{upg-launch → upg-new-launch}/SKILL.md +8 -18
  30. package/skills/{upg-okr → upg-new-okr}/SKILL-DETAIL.md +28 -46
  31. package/skills/{upg-okr → upg-new-okr}/SKILL.md +3 -3
  32. package/skills/{upg-persona → upg-new-persona}/SKILL.md +35 -67
  33. package/skills/{upg-research → upg-new-research}/SKILL.md +25 -33
  34. package/skills/{upg-schema-update → upg-new-schema-type}/SKILL.md +2 -2
  35. package/skills/{upg-strategy → upg-new-strategy}/SKILL.md +21 -27
  36. package/skills/upg-prioritise/SKILL.md +4 -4
  37. package/skills/upg-reflect/SKILL.md +7 -7
  38. package/skills/{upg-feedback → upg-send-feedback}/SKILL.md +30 -51
  39. package/skills/{upg-diff → upg-show-diff}/SKILL.md +6 -12
  40. package/skills/{upg-inspect → upg-show-entity}/SKILL.md +7 -9
  41. package/skills/{upg-impact → upg-show-impact}/SKILL.md +11 -15
  42. package/skills/{upg-journey → upg-show-journey}/SKILL.md +31 -32
  43. package/skills/{upg-analytics → upg-show-metrics}/SKILL.md +9 -12
  44. package/skills/{upg-schema-changelog → upg-show-schema-changelog}/SKILL.md +5 -5
  45. package/skills/{upg-status → upg-show-status}/SKILL.md +39 -40
  46. package/skills/{upg-tree → upg-show-tree}/SKILL.md +15 -15
  47. package/skills/{upg-export → upg-sync-export}/SKILL.md +10 -13
  48. package/skills/{upg-import → upg-sync-import}/SKILL.md +7 -13
  49. package/skills/{upg-pull → upg-sync-pull}/SKILL-DETAIL.md +13 -17
  50. package/skills/{upg-pull → upg-sync-pull}/SKILL.md +3 -3
  51. package/skills/{upg-push → upg-sync-push}/SKILL-DETAIL.md +4 -10
  52. package/skills/{upg-push → upg-sync-push}/SKILL.md +4 -4
  53. package/skills/{upg-snapshot → upg-sync-snapshot}/SKILL.md +2 -6
  54. package/skills/upg-trace/SKILL.md +7 -7
  55. package/skills/{upg-workspace → upg-use-workspace}/SKILL.md +8 -14
  56. package/skills/{upg-run → upg-walk-playbook}/SKILL.md +10 -10
  57. package/skills/upg-walk-region/SKILL-DETAIL.md +320 -0
  58. package/skills/upg-walk-region/SKILL.md +89 -0
  59. package/skills/upg-connect/SKILL.md +0 -167
  60. package/skills/upg-explore/SKILL-DETAIL.md +0 -481
  61. package/skills/upg-explore/SKILL.md +0 -297
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unified-product-graph/mcp-server",
3
- "version": "0.8.1",
3
+ "version": "0.8.4",
4
4
  "description": "Local MCP server for .upg files. Read and write product knowledge graphs offline.",
5
5
  "license": "MIT",
6
6
  "author": "The Product Creator <hello@theproductcreator.com>",
@@ -4,16 +4,16 @@ This project uses the Unified Product Graph to structure product thinking. A `.u
4
4
 
5
5
  ### Available Commands
6
6
  - `/upg`: See your product graph status and all available commands
7
- - `/upg-journey`: Guided 7-phase product journey with progress tracking
8
- - `/upg-init`: Bootstrap a new product graph (~5 min guided setup)
9
- - `/upg-explore`: Create any entity (90+ types across 32 domains)
10
- - `/upg-status`: Health dashboard with maturity scoring
11
- - `/upg-gaps`: Gap analysis across 8 business areas
12
- - `/upg-capture`: Capture session work into the graph
7
+ - `/upg-show-journey`: Guided 7-phase product journey with progress tracking
8
+ - `/upg-new-graph`: Bootstrap a new product graph (~5 min guided setup)
9
+ - `/upg-walk-region`: Create any entity (90+ types across 32 domains)
10
+ - `/upg-show-status`: Health dashboard with maturity scoring
11
+ - `/upg-check-gaps`: Gap analysis across 8 business areas
12
+ - `/upg-new-from-session`: Capture session work into the graph
13
13
 
14
14
  ### Graph Awareness
15
15
  When a `.upg` file exists, be aware of the product graph context. During conversations about product decisions, features, user research, or business strategy, offer to capture relevant insights into the graph. Don't be pushy; only suggest when the work is clearly graph-worthy (new features, strategic decisions, user insights). Routine code changes are not graph-worthy.
16
16
 
17
- At natural checkpoints (after commits, before session end, after design discussions), suggest running `/upg-capture` to review and save session work.
17
+ At natural checkpoints (after commits, before session end, after design discussions), suggest running `/upg-new-from-session` to review and save session work.
18
18
 
19
19
  Learn more: unifiedproductgraph.org
@@ -252,8 +252,8 @@ fi
252
252
  echo ""
253
253
  echo "Quick start:"
254
254
  echo " /upg: see your product graph"
255
- echo " /upg-init: bootstrap a new graph (~5 min)"
256
- echo " /upg-journey: guided product journey"
255
+ echo " /upg-new-graph: bootstrap a new graph (~5 min)"
256
+ echo " /upg-show-journey: guided product journey"
257
257
  echo ""
258
258
  echo "Skills are symlinked; edits in the source are live immediately."
259
259
  echo ""
@@ -76,10 +76,10 @@ Maturity ● ● ● ○ ○ **3/5** *<stage label>*
76
76
 
77
77
  | | Approach | Question | Common entry |
78
78
  |---|---|---|---|
79
- | 🧠 | **Plan** | What should I build next? | `/upg-explore <region>` · `/upg-strategy` · `/upg-journey` |
80
- | 🔍 | **Inspect** | What's broken? | `/upg-status` · `/upg-tree` · `/upg-inspect <entity>` |
81
- | 📊 | **Prioritise** | What's most important? | `/upg-prioritise` · `/upg-gaps` · `/upg-impact` |
82
- | 🧵 | **Trace** | Walk a path through what exists | `/upg-trace <anchor> → <destination>` · `/upg-impact <entity>` · `/upg-connect` |
79
+ | 🧠 | **Plan** | What should I build next? | `/upg-walk-region <region>` · `/upg-new-strategy` · `/upg-show-journey` |
80
+ | 🔍 | **Inspect** | What's broken? | `/upg-show-status` · `/upg-show-tree` · `/upg-show-entity <entity>` |
81
+ | 📊 | **Prioritise** | What's most important? | `/upg-prioritise` · `/upg-check-gaps` · `/upg-show-impact` |
82
+ | 🧵 | **Trace** | Walk a path through what exists | `/upg-trace <anchor> → <destination>` · `/upg-show-impact <entity>` · `/upg-link` |
83
83
  | 🪞 | **Reflect** | What should I be questioning? | `/upg-reflect` · *Five Whys · Pre-mortem · Red Team · Devil's Advocate · Second-order* |
84
84
 
85
85
  **Tell me which approach, or just describe what's on your mind.**
@@ -92,22 +92,22 @@ When the user selects an approach (or you infer one from their description), pre
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>` |
95
+ | 🧠 Plan | `mcp__unified-product-graph__list_playbooks()`; see region options | `/upg-walk-region <region>` |
96
+ | 🔍 Inspect | `mcp__unified-product-graph__get_graph_digest()`; health metrics | `/upg-show-status` |
97
+ | 📊 Prioritise | `mcp__unified-product-graph__get_graph_digest()`; gap + coverage data | `/upg-check-gaps` |
98
+ | 🧵 Trace | `mcp__unified-product-graph__get_product_context()`; find anchor entities | `/upg-show-impact <entity>` |
99
99
  | 🪞 Reflect | `mcp__unified-product-graph__get_session_context()`; recent decisions | `/upg-reflect` |
100
100
 
101
101
  ---
102
102
 
103
103
  After the card, **make ONE concrete suggestion** based on the graph state. Pick the highest-value next move from this priority order:
104
104
 
105
- 1. **No anchor entity for an active region** → suggest `/upg-explore <region>` to fill the missing scaffolding (Plan)
106
- 2. **Anti-pattern violations present** → suggest `/upg-status` then `/upg-gaps` (Inspect)
105
+ 1. **No anchor entity for an active region** → suggest `/upg-walk-region <region>` to fill the missing scaffolding (Plan)
106
+ 2. **Anti-pattern violations present** → suggest `/upg-show-status` then `/upg-check-gaps` (Inspect)
107
107
  3. **A `decision` entity has no rationale or has gone stale** → suggest `/upg-reflect <decision>` (Reflect)
108
- 4. **A `hypothesis` has no `evidence`** → suggest `/upg-hypothesis` to design the experiment (Plan)
109
- 5. **A `feature` is `in_progress` with no linked outcome** → suggest `/upg-impact <feature>` (Trace)
110
- 6. **Otherwise** → suggest `/upg-status` for a 30-second pulse
108
+ 4. **A `hypothesis` has no `evidence`** → suggest `/upg-new-hypothesis` to design the experiment (Plan)
109
+ 5. **A `feature` is `in_progress` with no linked outcome** → suggest `/upg-show-impact <feature>` (Trace)
110
+ 6. **Otherwise** → suggest `/upg-show-status` for a 30-second pulse
111
111
 
112
112
  Surface that one suggestion as: *"Looking at your graph, the highest-value next move is **X**. Want to start there?"*
113
113
 
@@ -129,7 +129,7 @@ Render (real markdown, NOT a code block):
129
129
 
130
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 JSON format you own and track with git, with no cloud required.
133
133
 
134
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
 
@@ -141,8 +141,8 @@ You read the chart through **5 approaches**: Plan, Inspect, Prioritise, Trace, R
141
141
 
142
142
  | | Command | What it does |
143
143
  |---|---|---|
144
- | 🌱 | `/upg-init` | Bootstrap your first product graph (guided, ~5 minutes) |
145
- | 📋 | `/upg-template` | Start from a proven pattern (SaaS, marketplace, mobile, OSS, agency) |
144
+ | 🌱 | `/upg-new-graph` | Bootstrap your first product graph (guided, ~5 minutes) |
145
+ | 📋 | `/upg-new-from-template` | Start from a proven pattern (SaaS, marketplace, mobile, OSS, agency) |
146
146
 
147
147
  > Learn more: **unifiedproductgraph.org**
148
148
 
@@ -154,7 +154,7 @@ If `/upg <something>` is given:
154
154
 
155
155
  1. **Match a subcommand:** `init`, `status`, `tree`, `gaps`, `inspect`, `reflect`, `explore`, `journey`, etc. → run the corresponding `/upg-<x>` skill.
156
156
  2. **Match an approach name:** `plan`, `inspect`, `prioritise`, `trace`, `reflect` → call `get_approach({ approach_id })` and route the user to the most-fitting skill for their graph state.
157
- 3. **Match a region name:** `strategy`, `users_needs`, `experience_design_brand`, etc. → suggest `/upg-explore <region>`.
157
+ 3. **Match a region name:** `strategy`, `users_needs`, `experience_design_brand`, etc. → suggest `/upg-walk-region <region>`.
158
158
  4. **Free-text question:** parse intent into one of the 5 approaches, then suggest a skill.
159
159
 
160
160
  If unmatched, show the orientation card and ask: *"Did you mean one of these? Or tell me in your own words."*
@@ -172,49 +172,49 @@ When asked, show this expanded view:
172
172
  🧠 **Plan**
173
173
  | Skill | What |
174
174
  |---|---|
175
- | `/upg-explore <region>` | Walk a region's canonical playbook |
176
- | `/upg-run <playbook-id>` | Run any canonical playbook directly |
177
- | `/upg-journey` | 7-phase product journey |
178
- | `/upg-strategy` | Vision → mission → themes → outcomes |
179
- | `/upg-okr` | Objectives & key results |
180
- | `/upg-launch` | Go-to-market planning |
181
- | `/upg-research` | User research session |
182
- | `/upg-discover` | OST-guided discovery |
183
- | `/upg-hypothesis` | Structured hypothesis creation |
184
- | `/upg-persona` | Guided persona building |
175
+ | `/upg-walk-region <region>` | Walk a region's canonical playbook |
176
+ | `/upg-walk-playbook <playbook-id>` | Run any canonical playbook directly |
177
+ | `/upg-show-journey` | 7-phase product journey |
178
+ | `/upg-new-strategy` | Vision → mission → themes → outcomes |
179
+ | `/upg-new-okr` | Objectives & key results |
180
+ | `/upg-new-launch` | Go-to-market planning |
181
+ | `/upg-new-research` | User research session |
182
+ | `/upg-new-discovery` | OST-guided discovery |
183
+ | `/upg-new-hypothesis` | Structured hypothesis creation |
184
+ | `/upg-new-persona` | Guided persona building |
185
185
 
186
186
  🔍 **Inspect**
187
187
  | Skill | What |
188
188
  |---|---|
189
- | `/upg-status` | Health dashboard |
190
- | `/upg-tree` | Framework-aware tree view |
191
- | `/upg-inspect <entity>` | Deep-dive on one entity |
192
- | `/upg-analytics` | Product thinking metrics |
193
- | `/upg-verify` | Code-to-graph sync audit |
194
- | `/upg-diff` | What changed since last commit |
189
+ | `/upg-show-status` | Health dashboard |
190
+ | `/upg-show-tree` | Framework-aware tree view |
191
+ | `/upg-show-entity <entity>` | Deep-dive on one entity |
192
+ | `/upg-show-metrics` | Product thinking metrics |
193
+ | `/upg-find-untracked` | Code-to-graph sync audit |
194
+ | `/upg-show-diff` | What changed since last commit |
195
195
 
196
196
  📊 **Prioritise**
197
197
  | Skill | What |
198
198
  |---|---|
199
199
  | `/upg-prioritise` | RICE / WSJF / Eisenhower / ICE scoring across candidate items |
200
- | `/upg-gaps` | Strategic gap analysis + maturity scoring |
201
- | `/upg-impact` | Forward blast radius (Trace + Prioritise) |
200
+ | `/upg-check-gaps` | Strategic gap analysis + maturity scoring |
201
+ | `/upg-show-impact` | Forward blast radius (Trace + Prioritise) |
202
202
 
203
203
  🧵 **Trace**
204
204
  | Skill | What |
205
205
  |---|---|
206
206
  | `/upg-trace <anchor> → <destination>` | Walk a directed path through the graph (canonical Trace entry) |
207
- | `/upg-impact <entity>` | Forward / `--upstream` causal chain |
208
- | `/upg-connect` | Wire relationships between entities |
207
+ | `/upg-show-impact <entity>` | Forward / `--upstream` causal chain |
208
+ | `/upg-link` | Wire relationships between entities |
209
209
 
210
210
  🪞 **Reflect**
211
211
  | Skill | What |
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-new-graph`, `/upg-new-from-session`, `/upg-sync-push`, `/upg-sync-pull`, `/upg-sync-snapshot`, `/upg-fix-rollback`, `/upg-fix-types`, `/upg-sync-import`, `/upg-sync-export`, `/upg-send-feedback`, `/upg-new-from-template`, `/upg-use-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-new-schema-type`, `/upg-check-schema-merge`, `/upg-check-schema-coverage`, `/upg-check-schema`, `/upg-show-schema-changelog`, `/upg-check-schema-edges`)
218
218
 
219
219
  **Meta** (system reference; `/upg-context`, `/upg-design-system`)
220
220
 
@@ -224,11 +224,11 @@ When asked, show this expanded view:
224
224
 
225
225
  - **Orient, don't overwhelm.** Default view shows 5 approaches and ONE next move; never a wall of 40 skills.
226
226
  - **Approaches are the spine.** Plan, Inspect, Prioritise, Trace, Reflect; these are the conversational entry points. Skills implement them.
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."
227
+ - **Tooling is plumbing.** `/upg-new-graph`, `/upg-sync-push`, `/upg-sync-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.
230
230
  - **Always write "Unified Product Graph" in full** when introducing it. Never abbreviate to "UPG" in user-facing text.
231
- - **The `.upg` file is the hero.** Open standard, portable, git-friendly. Reinforce ownership.
231
+ - **The `.upg` file is the hero.** The graph lives in a file the user owns and tracks with git. Reinforce ownership.
232
232
  - **Follow the design system.** Use entity emojis, score dots, dashed dividers, and the logo mark from `/upg-context`.
233
233
 
234
234
  After routing the user to the next skill, call:
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: upg-gaps
2
+ name: upg-check-gaps
3
3
  description: "Strategic Gap Analysis & Maturity Scoring"
4
4
  user-invocable: true
5
5
  argument-hint: "[description]"
@@ -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-check-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
 
@@ -18,9 +18,9 @@ You are a Unified Product Graph strategic advisor. Your job is to analyze the pr
18
18
  Use the `mcp__unified-product-graph__*` MCP tools (get_product_context with include_summary: true, list_nodes, get_node, search_nodes, query).
19
19
 
20
20
  **Boundary, in plain English:**
21
- - `/upg-status --quick` answers *"is anything bleeding right now?"* (the pulse).
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.
21
+ - `/upg-show-status --quick` answers *"is anything bleeding right now?"* (the pulse).
22
+ - `/upg-show-status --full` answers *"how mature is my product graph?"* (the dashboard).
23
+ - **This skill (`/upg-check-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-show-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
 
@@ -32,17 +32,17 @@ get_graph_digest()
32
32
 
33
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
- **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`.
35
+ **Read the product stage** from `get_product_context()`. The stage is a canonical product-stage value don't hard-code the enum; if you need the valid set, call `list_product_stages`. If no stage is set, default to the earliest (concept) stage.
36
36
 
37
- **Map stage to tier:**
37
+ **Map stage to tier** (the three tiers are an editorial maturity framing; stable):
38
38
 
39
- | Stage | Tier | Target Types |
40
- |---|---|---|
41
- | `idea` or `mvp` | Solo Builder | 40 core types |
42
- | `growth` | Small Team | 55 types |
43
- | `scale` | Scale-Up | 70 types |
39
+ | Stage | Tier |
40
+ |---|---|
41
+ | earliest stages (concept…beta) | Solo Builder |
42
+ | launch / growth | Small Team |
43
+ | mature / maintenance / sunset | Scale-Up |
44
44
 
45
- This tier determines the denominator for the business completeness score in Step 4b.
45
+ The tier sets the *denominator* for the business completeness score in Step 4b. **Derive that denominator from MCP, not a baked number**: prefer `get_graph_digest`'s `coverage` section (it already reports area coverage against the spec), or count the relevant types from `list_entity_types` / `get_region`. The "40/55/70" figures from earlier versions of this skill are drift-prone — use the live counts instead and report whatever the digest's coverage fields give you.
46
46
 
47
47
  ### Step 2: Check Structural Gaps
48
48
 
@@ -52,43 +52,43 @@ Analyze gaps in priority order (validation > discovery > strategy > execution).
52
52
 
53
53
  **Hypotheses without experiments:**
54
54
  > ⚗️ You have **X** hypotheses with no 🧪 experiments. Untested assumptions are the #1 cause of product failure. Every bet you're making is currently just an opinion.
55
- > → `/upg-explore an experiment to test "<hypothesis title>"`
55
+ > → `/upg-walk-region an experiment to test "<hypothesis title>"`
56
56
 
57
57
  **Experiments without learnings:**
58
58
  > 🧪 **X** experiments have no 📝 learnings. If you ran a test but didn't capture the result, the insight is lost.
59
- > → `/upg-explore a learning from the "<experiment title>" experiment`
59
+ > → `/upg-walk-region a learning from the "<experiment title>" experiment`
60
60
 
61
61
  **Solutions without hypotheses:**
62
62
  > 🔧 **X** solutions have no ⚗️ hypothesis. You're building without stating what you believe will happen.
63
- > → `/upg-hypothesis for "<solution title>"`
63
+ > → `/upg-new-hypothesis for "<solution title>"`
64
64
 
65
65
  #### 💡 Discovery Gaps (High Priority)
66
66
 
67
67
  **Personas without jobs:**
68
68
  > 👤 **X** personas have no 💼 jobs. Without knowing what job they're hiring your product to do, you're guessing at what to build.
69
- > → `/upg-explore a job for <persona name>`
69
+ > → `/upg-walk-region a job for <persona name>`
70
70
 
71
71
  **Jobs without needs:**
72
72
  > 💼 **X** jobs have no 🔥 needs. You know the job, but not where the experience breaks down.
73
- > → `/upg-explore a need for "<job title>"`
73
+ > → `/upg-walk-region a need for "<job title>"`
74
74
 
75
75
  **Outcomes without opportunities:**
76
76
  > 🎯 **X** outcomes have no 💡 opportunities. You know what success looks like but haven't identified problems worth solving.
77
- > → `/upg-discover` to run a guided discovery session
77
+ > → `/upg-new-discovery` to run a guided discovery session
78
78
 
79
79
  #### 🎯 Strategy Gaps (Medium Priority)
80
80
 
81
81
  **Outcomes without metrics (KPIs):**
82
82
  > 🎯 **X** outcomes have no 📊 metrics. A goal without a metric is just a wish.
83
- > → `/upg-explore a metric (designation: "kpi") for "<outcome title>"`
83
+ > → `/upg-walk-region a metric (designation: "kpi") for "<outcome title>"`
84
84
 
85
85
  **No personas at all:**
86
86
  > Your graph has zero 👤 personas. Who are you building for?
87
- > → `/upg-persona` to create a rich, detailed persona
87
+ > → `/upg-new-persona` to create a rich, detailed persona
88
88
 
89
89
  **No competitors mapped:**
90
90
  > No ⚔️ competitors in your graph. Your users are solving this problem somehow today.
91
- > → `/upg-explore a competitor`
91
+ > → `/upg-walk-region a competitor`
92
92
 
93
93
  #### 📦 Execution Gaps (Lower Priority)
94
94
 
@@ -109,7 +109,7 @@ Structural gaps tell you *what's missing right now*. This step interprets the gr
109
109
  | Untested bets | ⚗️ hypotheses with status `untested` (or no status), created >14 days ago | 🔴 High |
110
110
  | Assumption-based personas | 👤 personas with no connected 🔬 research_study or 💎 insight | 🟡 Medium |
111
111
  | Orphan features | 📦 features not connected to any 👤 persona (directly or via job chain) | 🔴 High |
112
- | Missing business model | Product at `mvp` or `growth` stage, zero 💰 business_model entities | 🔴 High |
112
+ | Missing business model | Product at `build`, `launch`, or `growth` stage, zero 💰 business_model entities | 🔴 High |
113
113
  | Need without response | 🔥 needs with no connected 💡 opportunity | 🟡 Medium |
114
114
  | Validated but unbuilt | ⚗️ hypotheses with status `validated` but no connected 📦 feature | 🟡 Medium |
115
115
  | No learning loop | Zero 🧪 experiment or 📝 learning entities, AND >10 📦 features | 🔴 High |
@@ -118,7 +118,7 @@ Structural gaps tell you *what's missing right now*. This step interprets the gr
118
118
 
119
119
  Compare against known PM benchmarks. Adapt expected values to product stage.
120
120
 
121
- | Benchmark | Expected (idea/mvp) | Expected (growth+) | Source |
121
+ | Benchmark | Expected (concept–beta) | Expected (launch+) | Source |
122
122
  |-----------|---------------------|---------------------|--------|
123
123
  | Personas | 2-4 | 3-6 | Lean Startup (Ries) |
124
124
  | Jobs per persona | >=2 | >=3 | JTBD (Christensen) |
@@ -138,7 +138,7 @@ Look at what's structurally absent given the product's stage and shape. Examples
138
138
 
139
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
- > **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.
141
+ > **Strategy-without-measurement.** You have 6 outcomes but only 1 metric. Without measurement you can't tell which outcomes you're hitting. → `/upg-walk-region metric` for each outcome.
142
142
 
143
143
  Render this section under a heading like:
144
144
 
@@ -182,9 +182,9 @@ This section scores the graph against the **8 business areas**: the fundamental
182
182
 
183
183
  #### The 8 Business Areas
184
184
 
185
- Each area maps to specific entity types. Count how many of the listed types have **at least 1 entity** in the graph.
185
+ The **8 areas are an editorial grouping** (stable). The **type lists below are illustrative anchors, not the authoritative spec**: prefer `get_graph_digest`'s `coverage`/`by_type` sections for which types exist and are populated, and confirm any type name against `list_entity_types` (or `get_region(<region>)` for a region's membership) before treating a missing type as a gap. If a type listed below has been renamed or removed, defer to the digest's area coverage rather than reporting a phantom gap. Count how many of the area's live types have **at least 1 entity**.
186
186
 
187
- | Area | Entity Types (Solo Builder tier) |
187
+ | Area | Entity Types (illustrative, Solo Builder tier) |
188
188
  |---|---|
189
189
  | 🎯 **Identity** | product, vision, mission |
190
190
  | 👤 **Understanding** | persona, job, need, research_study, insight |
@@ -203,7 +203,7 @@ At **Small Team** tier (growth), add these clusters to the scoring:
203
203
  | 🎨 **Design Alignment** | prototype, wireframe, design_component, user_flow |
204
204
  | 📣 **User Signal** | feature_request, feedback_theme, growth_loop, roadmap, nps_campaign |
205
205
 
206
- At **Scale-Up** tier (scale), add further:
206
+ At **Scale-Up** tier (`mature`+), add further:
207
207
 
208
208
  | Cluster | Additional Types |
209
209
  |---|---|
@@ -280,57 +280,54 @@ 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
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
- → `/upg-explore a business model for this product`
283
+ → `/upg-walk-region a business model for this product`
284
284
 
285
285
  If **📣 Reaching** has zero or low coverage:
286
286
 
287
287
  **[HIGH]** 📣 No go-to-market thinking
288
288
  You've built the product in your graph but haven't thought about how people find it. Who's your ideal customer? What channels will you use?
289
- → `/upg-explore an ideal customer profile`
289
+ → `/upg-walk-region an ideal customer profile`
290
290
 
291
291
  If **💰 Converting** has zero or low coverage:
292
292
 
293
293
  **[HIGH]** 💰 No conversion path
294
294
  You know your value proposition but haven't mapped the journey from awareness to paying customer.
295
- → `/upg-explore a pricing model`
295
+ → `/upg-walk-region a pricing model`
296
296
 
297
297
  Example full action plan:
298
298
 
299
299
  **1. [CRITICAL]** ⚗️ Test your hypotheses
300
300
  You have 4 untested hypotheses. Pick the riskiest one and design an experiment.
301
- → `/upg-hypothesis` to structure a new one
301
+ → `/upg-new-hypothesis` to structure a new one
302
302
 
303
303
  **2. [CRITICAL]** 🏦 Define your business model
304
304
  Your graph has nothing in the Sustaining area. How does this product make money? What does it cost to run?
305
- → `/upg-explore a business model for this product`
305
+ → `/upg-walk-region a business model for this product`
306
306
 
307
307
  **3. [HIGH]** 📣 Think about distribution
308
308
  You've only covered 2 of 5 Reaching types. Who's your ideal customer profile? What channels will you use?
309
- → `/upg-explore an ideal customer profile`
309
+ → `/upg-walk-region an ideal customer profile`
310
310
 
311
311
  **4. [HIGH]** 💼 Add jobs for Sarah Chen
312
312
  Your primary persona has no Jobs-to-be-Done defined.
313
- → `/upg-explore a job for Sarah Chen`
313
+ → `/upg-walk-region a job for Sarah Chen`
314
314
 
315
315
  **5. [MEDIUM]** 📊 Measure your outcomes
316
316
  "Reduce time-to-value" has no metric. Define the metric and targets.
317
- → `/upg-explore a metric (designation: "kpi") for "Reduce time-to-value"`
317
+ → `/upg-walk-region a metric (designation: "kpi") for "Reduce time-to-value"`
318
318
 
319
319
  ### Step 6: Framework Recommendations
320
320
 
321
321
  Based on gaps, suggest which frameworks would help:
322
322
 
323
323
  > **Opportunity Solution Tree** *(Teresa Torres, 2021)*; Your discovery chain is incomplete. OST would structure outcome → opportunity → solution → experiment.
324
- > Try: `/upg-tree ost`
324
+ > Try: `/upg-show-tree ost`
325
325
 
326
326
  ### Step 7: Closing
327
327
 
328
- ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
329
- Your `.upg` file is yours: open standard, portable, git-friendly.
330
- unifiedproductgraph.org
331
328
 
332
329
  After rendering the gap analysis and your recommendation, call:
333
- `update_session_context({ skill_invoked: "upg-gaps", recommendation: "<the next skill you recommended>" })`
330
+ `update_session_context({ skill_invoked: "upg-check-gaps", recommendation: "<the next skill you recommended>" })`
334
331
 
335
332
  ## Lens-Aware Gap Analysis
336
333
 
@@ -339,9 +336,9 @@ Check `get_session_context()` for the current lens. **Prepend lens-specific gaps
339
336
  **Engineering lens: prepend these gaps:**
340
337
 
341
338
  1. **Bugs without resolution:** 🐛 N bugs have no linked task or fix
342
- → `/upg-explore task` to plan a fix
339
+ → `/upg-walk-region task` to plan a fix
343
340
  2. **Features without dependency tracking:** 📦 N in-progress features have no dependency edges
344
- → `/upg-connect` to add blocks/enables edges
341
+ → `/upg-link` to add blocks/enables edges
345
342
  3. **Blockers without resolution:** 🔴 N blocking edges have no resolution
346
343
  → Update each with a resolution plan
347
344
  4. **Orphaned tasks:** 📋 N tasks not connected to any feature or story
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: upg-schema-health
2
+ name: upg-check-schema
3
3
  description: "Schema usage audit: dead types, empty properties, orphan patterns, real vs theoretical"
4
4
  user-invocable: false
5
5
  audience: advanced
@@ -9,7 +9,7 @@ category: schema
9
9
 
10
10
  > ⚠️ **Advanced skill**: intended for UPG contributors and power users who understand the spec internals. Not for general use. Running mutation skills (schema-update, schema-consolidate, schema-evolve) without understanding the cascade can corrupt your graph.
11
11
 
12
- # /upg-schema-health: Schema Usage Audit
12
+ # /upg-check-schema: Schema Usage Audit
13
13
 
14
14
  You are a schema health auditor. Your job is to compare what the UPG schema defines against what real graphs actually contain; surfacing dead types, empty properties, unused edges, and patterns the schema didn't anticipate.
15
15
 
@@ -27,17 +27,17 @@ You are a schema health auditor. Your job is to compare what the UPG schema defi
27
27
 
28
28
  **Mode 1: Audit a specific graph**
29
29
  ```
30
- /upg-schema-health .upg/entopo.upg
30
+ /upg-check-schema .upg/entopo.upg
31
31
  ```
32
32
 
33
33
  **Mode 2: Audit all graphs in workspace**
34
34
  ```
35
- /upg-schema-health
35
+ /upg-check-schema
36
36
  ```
37
37
 
38
38
  **Mode 3: Audit a specific domain against real data**
39
39
  ```
40
- /upg-schema-health engineering
40
+ /upg-check-schema engineering
41
41
  ```
42
42
 
43
43
  ## Phase 1: Gather Data
@@ -252,8 +252,8 @@ Graph: [name] · [N] nodes · [M] edges · [T] types used
252
252
  - [list things that need fixing]
253
253
 
254
254
  RECOMMENDATIONS:
255
- 1. [Most impactful action]; /upg-schema-evolve [domain]
256
- 2. [Second action]; /upg-schema-consolidate [types]
255
+ 1. [Most impactful action]; /upg-check-schema-coverage [domain]
256
+ 2. [Second action]; /upg-check-schema-merge [types]
257
257
  3. [Third action]; consider deprecating [types]
258
258
 
259
259
  DEAD TYPE CANDIDATES FOR DEPRECATION:
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: upg-schema-evolve
2
+ name: upg-check-schema-coverage
3
3
  description: "Domain deep-dive: audit entity coverage, surface gaps, design new types from real needs"
4
4
  user-invocable: false
5
5
  audience: advanced
@@ -9,7 +9,7 @@ category: schema
9
9
 
10
10
  > ⚠️ **Advanced skill**: intended for UPG contributors and power users who understand the spec internals. Not for general use. Running mutation skills (schema-update, schema-consolidate, schema-evolve) without understanding the cascade can corrupt your graph.
11
11
 
12
- # /upg-schema-evolve: Schema Evolution Through Domain Analysis
12
+ # /upg-check-schema-coverage: Schema Evolution Through Domain Analysis
13
13
 
14
14
  You are a schema evolution advisor. Your job is to help the UPG schema grow thoughtfully, not by adding types speculatively, but by analysing real domains, real user feedback, and real cross-domain requirements to determine what's genuinely missing.
15
15
 
@@ -27,17 +27,17 @@ You are a schema evolution advisor. Your job is to help the UPG schema grow thou
27
27
 
28
28
  **Mode 1: Domain audit**
29
29
  ```
30
- /upg-schema-evolve engineering
30
+ /upg-check-schema-coverage engineering
31
31
  ```
32
32
 
33
33
  **Mode 2: Requirement-driven**
34
34
  ```
35
- /upg-schema-evolve "Felix needs to track debugging sessions and how bugs relate to root causes"
35
+ /upg-check-schema-coverage "Felix needs to track debugging sessions and how bugs relate to root causes"
36
36
  ```
37
37
 
38
38
  **Mode 3: Cross-domain analysis**
39
39
  ```
40
- /upg-schema-evolve design engineering
40
+ /upg-check-schema-coverage design engineering
41
41
  ```
42
42
 
43
43
  ## Phase 1: Domain Audit
@@ -58,7 +58,7 @@ DOMAIN AUDIT: [Domain Name]
58
58
 
59
59
  | Entity Type | Properties | Edges | Skills | Graph UI | Status |
60
60
  |-------------|-----------|-------|--------|----------|--------|
61
- | service | ✓ ServiceProperties | 12 edges | `/upg-explore engineering` | ✓ | ✅ Complete |
61
+ | service | ✓ ServiceProperties | 12 edges | `/upg-walk-region engineering` | ✓ | ✅ Complete |
62
62
  | deployment | ✓ DeploymentProperties | 4 edges | (none) | ✓ | 🟡 No skill |
63
63
  | data_flow | ✓ DataFlowProperties | 3 edges | (none) | ✓ | 🟡 No skill |
64
64
  ```
@@ -254,7 +254,7 @@ Edges:
254
254
  - benchmark_measures_endpoint (performance_benchmark → api_endpoint)
255
255
 
256
256
  Lens relevance: Engineering (primary), DevOps (secondary)
257
- Skill: Would be created by `/upg-explore engineering` (or a new `/upg-explore performance` playbook if the domain emerges as separate).
257
+ Skill: Would be created by `/upg-walk-region engineering` (or a new `/upg-walk-region performance` playbook if the domain emerges as separate).
258
258
 
259
259
  Similar existing types:
260
260
  - metric: but lacks SLA/threshold semantics
@@ -272,14 +272,14 @@ Before approving any new type, run a quick consolidation check:
272
272
  2. Could this be a discriminator value on an existing type?
273
273
  3. Would this type have >3 instances in a typical graph?
274
274
 
275
- If any answer is "no", reconsider. Suggest running `/upg-schema-consolidate` for a deeper look.
275
+ If any answer is "no", reconsider. Suggest running `/upg-check-schema-merge` for a deeper look.
276
276
 
277
277
  ## Phase 4: Action
278
278
 
279
279
  Once analysis is complete and the user agrees on what to add/change:
280
280
 
281
- 1. **New types** → hand off to `/upg-schema-update` for the cascade
282
- 2. **Consolidations** → hand off to `/upg-schema-consolidate` for migration design
281
+ 1. **New types** → hand off to `/upg-new-schema-type` for the cascade
282
+ 2. **Consolidations** → hand off to `/upg-check-schema-merge` for migration design
283
283
  3. **New edges only** → add directly to `UPG_EDGE_CATALOG` in `catalog/edge-catalog.ts`
284
284
  4. **Defer** → document the decision in your project's decisions log for future reference
285
285
 
@@ -294,10 +294,10 @@ EVOLUTION SUMMARY
294
294
  ✅ Covered by existing schema: [list]
295
295
  🆕 New types recommended: [list with reasons]
296
296
  🔗 New edges recommended: [list]
297
- 🔀 Consolidation candidates: [list; run /upg-schema-consolidate]
297
+ 🔀 Consolidation candidates: [list; run /upg-check-schema-merge]
298
298
  ⏸️ Deferred: [list with revisit conditions]
299
299
 
300
- Next: /upg-schema-update [type] to implement approved additions
300
+ Next: /upg-new-schema-type [type] to implement approved additions
301
301
  ```
302
302
 
303
303
  ## Key Principles
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: upg-schema-edges
2
+ name: upg-check-schema-edges
3
3
  description: "Edge design advisor: when to add an edge, naming, direction, edge vs hierarchy vs entity"
4
4
  user-invocable: false
5
5
  audience: advanced
@@ -9,7 +9,7 @@ category: schema
9
9
 
10
10
  > ⚠️ **Advanced skill**: intended for UPG contributors and power users who understand the spec internals. Not for general use. Running mutation skills (schema-update, schema-consolidate, schema-evolve) without understanding the cascade can corrupt your graph.
11
11
 
12
- # /upg-schema-edges: Edge Design Advisor
12
+ # /upg-check-schema-edges: Edge Design Advisor
13
13
 
14
14
  You are an edge design advisor. Your job is to help decide whether a relationship between entities should be an edge, a parent-child hierarchy link, or a relationship entity, and if it's an edge, how to name and direct it.
15
15
 
@@ -212,7 +212,7 @@ grep "SOURCE_.*_TARGET" packages/upg-spec/src/catalog/edge-catalog.ts
212
212
  When called without arguments, audit the edge map for problems:
213
213
 
214
214
  ```
215
- /upg-schema-edges
215
+ /upg-check-schema-edges
216
216
  ```
217
217
 
218
218
  ### Check 1: Orphan Edges
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: upg-schema-consolidate
2
+ name: upg-check-schema-merge
3
3
  description: "Evaluate whether entity types should merge: shared properties, structural analysis, migration path"
4
4
  user-invocable: false
5
5
  audience: advanced
@@ -9,7 +9,7 @@ category: schema
9
9
 
10
10
  > ⚠️ **Advanced skill**: intended for UPG contributors and power users who understand the spec internals. Not for general use. Running mutation skills (schema-update, schema-consolidate, schema-evolve) without understanding the cascade can corrupt your graph.
11
11
 
12
- # /upg-schema-consolidate: Entity Type Consolidation
12
+ # /upg-check-schema-merge: Entity Type Consolidation
13
13
 
14
14
  You are a schema analyst. Your job is to evaluate whether two or more entity types should be consolidated into a single type with a discriminator property, or kept separate. You do this through structured analysis, not gut feeling.
15
15
 
@@ -27,12 +27,12 @@ You are a schema analyst. Your job is to evaluate whether two or more entity typ
27
27
 
28
28
  **Mode 1: Compare specific types**
29
29
  ```
30
- /upg-schema-consolidate architecture_decision design_decision
30
+ /upg-check-schema-merge architecture_decision design_decision
31
31
  ```
32
32
 
33
33
  **Mode 2: Scan a domain for candidates**
34
34
  ```
35
- /upg-schema-consolidate engineering
35
+ /upg-check-schema-merge engineering
36
36
  ```
37
37
 
38
38
  ## Analysis Framework
@@ -168,7 +168,7 @@ Parent migration:
168
168
  - `upg-migrate` skill handles the retyping
169
169
  - Old `.upg` files with `architecture_decision` still parse and auto-migrate
170
170
 
171
- **5d. Cascade the change** using `/upg-schema-update`
171
+ **5d. Cascade the change** using `/upg-new-schema-type`
172
172
 
173
173
  ### Step 5 (Alternative): If Keeping Separate: Document Why
174
174