@unified-product-graph/mcp-server 0.8.1 → 0.8.2

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 +11 -0
  2. package/README.md +1 -1
  3. package/TOOLS.md +19 -13
  4. package/dist/index.js +1286 -285
  5. package/dist/index.js.map +1 -1
  6. package/dist/tools-manifest.json +94 -75
  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
@@ -1,14 +1,14 @@
1
1
  ---
2
- name: upg-strategy
2
+ name: upg-new-strategy
3
3
  description: "Build a Strategic Cascade (how your big vision connects to what you build day to day)"
4
4
  user-invocable: true
5
5
  argument-hint: "[vision or strategic theme]"
6
6
  category: cognitive
7
7
  approaches: [plan]
8
- playbooks: [strategy-outcomes]
8
+ playbooks: [playbook:strategy-outcomes]
9
9
  ---
10
10
 
11
- # /upg-strategy: Strategic Cascade (how your big vision connects to what you build day to day)
11
+ # /upg-new-strategy: Strategic Cascade (how your big vision connects to what you build day to day)
12
12
 
13
13
  You are a Unified Product Graph strategy facilitator. Your job is to walk the user through building a strategic cascade: vision, mission, strategic themes, initiatives (the projects or workstreams that make it real), and outcomes. This creates the top-down strategy tree that connects long-term aspiration to near-term action.
14
14
 
@@ -20,6 +20,8 @@ Use the `mcp__unified-product-graph__*` MCP tools (create_node, create_edge, sea
20
20
  When creating 3+ entities, use `batch_create_nodes` with `parent_ref` chaining.
21
21
  When deleting 3+ entities, use `batch_delete_nodes`.
22
22
 
23
+ > **MCP-first (applies to every create below).** Before creating a vision, mission, strategic theme, initiative, or outcome, call `get_entity_schema(<type>)`. Build `properties` from its `expected_properties`, set `status` **top-level** from one of the lifecycle phases the schema returns (don't hard-code the status enum), and pass any assessment as `{ value, label }`. Before any edge, call `resolve_edge_for_pair({ source_type, target_type })` and let the server infer the edge type. The payloads below show shape and intent; the authoritative keys and phases come from the schema at runtime.
24
+
23
25
  ## Phase Map
24
26
 
25
27
  | Phase | Label | Steps |
@@ -112,14 +114,13 @@ Offer vision options based on the product context:
112
114
  STOP. Wait for the answer. Then create the vision node:
113
115
 
114
116
  ```
117
+ // Read get_entity_schema("vision") first, then:
115
118
  create_node({
116
119
  type: "vision",
117
120
  title: "<vision statement>",
118
121
  description: "<expanded context; what this world looks like>",
119
- properties: {
120
- timeframe: "5-10 years",
121
- status: "active"
122
- },
122
+ status: "<ratified phase from the schema>",
123
+ properties: { /* keys from the schema, e.g. timeframe */ },
123
124
  parent_id: "<product_id>"
124
125
  })
125
126
  ```
@@ -145,13 +146,12 @@ Offer mission options that connect the vision to a specific audience and value:
145
146
  STOP. Wait for the answer. Then create the mission node:
146
147
 
147
148
  ```
149
+ // Read get_entity_schema("mission") first, then:
148
150
  create_node({
149
151
  type: "mission",
150
152
  title: "<mission statement>",
151
153
  description: "<who you serve and why it matters>",
152
- properties: {
153
- status: "active"
154
- },
154
+ status: "<active phase from the schema>",
155
155
  parent_id: "<vision_id>"
156
156
  })
157
157
  ```
@@ -184,13 +184,12 @@ STOP. Wait for the answer.
184
184
  For each theme the user provides, create a node:
185
185
 
186
186
  ```
187
+ // Read get_entity_schema("strategic_theme") first, then:
187
188
  create_node({
188
189
  type: "strategic_theme",
189
190
  title: "<theme name>",
190
191
  description: "<why this is a bet worth making>",
191
- properties: {
192
- status: "active"
193
- },
192
+ status: "<active phase from the schema>",
194
193
  parent_id: "<mission_id>"
195
194
  })
196
195
  ```
@@ -228,14 +227,13 @@ STOP. Wait for the answer.
228
227
  For each initiative:
229
228
 
230
229
  ```
230
+ // Read get_entity_schema("initiative") first, then:
231
231
  create_node({
232
232
  type: "initiative",
233
233
  title: "<initiative name>",
234
234
  description: "<what this involves and why it matters for the theme>",
235
- properties: {
236
- status: "planned",
237
- timeline: "<quarter or timeframe if given>"
238
- },
235
+ status: "<proposed phase from the schema>",
236
+ properties: { /* keys from the schema, e.g. timeline */ },
239
237
  parent_id: "<strategic_theme_id>"
240
238
  })
241
239
  ```
@@ -263,25 +261,21 @@ You already have outcomes in your graph:
263
261
  If creating a new outcome:
264
262
 
265
263
  ```
264
+ // Read get_entity_schema("outcome") first, then:
266
265
  create_node({
267
266
  type: "outcome",
268
267
  title: "<measurable outcome>",
269
268
  description: "<what success looks like>",
270
- properties: {
271
- status: "planned"
272
- },
269
+ status: "<identified phase from the schema>",
273
270
  parent_id: "<initiative_id>"
274
271
  })
275
272
  ```
276
273
 
277
- If linking to an existing outcome:
274
+ If linking to an existing outcome, resolve the edge first:
278
275
 
279
276
  ```
280
- create_edge({
281
- source_id: "<initiative_id>",
282
- target_id: "<existing_outcome_id>",
283
- type: "initiative_drives_outcome"
284
- })
277
+ // edge = resolve_edge_for_pair({ source_type: "initiative", target_type: "outcome" })
278
+ create_edge({ source_id: "<initiative_id>", target_id: "<existing_outcome_id>" }) // server infers type
285
279
  ```
286
280
 
287
281
  Repeat for each initiative, one at a time.
@@ -320,7 +314,7 @@ Check the graph for the biggest gap across the 8 business areas. Recommend ONE n
320
314
 
321
315
  > Based on what we built, your biggest gap is **[area]**. I'd suggest running `/upg-[skill]` next to [reason].
322
316
  >
323
- > Or run `/upg-journey` to see where you are in the bigger picture.
317
+ > Or run `/upg-show-journey` to see where you are in the bigger picture.
324
318
 
325
319
  ## Key Principles
326
320
 
@@ -171,11 +171,11 @@ Always confirm before writing. Never silently mutate graph nodes.
171
171
 
172
172
  Pick ONE next move based on what the ranking revealed:
173
173
 
174
- - **If a clear winner emerged with an unclear implementation path:** "The top-ranked item has a clear priority but no epic yet. Want me to run `/upg-inspect` on it to see what's missing?"
175
- - **If a high-value item scored low on confidence:** "Low confidence on that one might mean the hypothesis hasn't been tested. Want to run `/upg-hypothesis` to design an experiment?"
174
+ - **If a clear winner emerged with an unclear implementation path:** "The top-ranked item has a clear priority but no epic yet. Want me to run `/upg-show-entity` on it to see what's missing?"
175
+ - **If a high-value item scored low on confidence:** "Low confidence on that one might mean the hypothesis hasn't been tested. Want to run `/upg-new-hypothesis` to design an experiment?"
176
176
  - **If items scored similarly and the user is unsure which to commit to:** "Close scores like these suggest a risk/opportunity lens might help. Want to try `/upg-reflect` with a Value vs Effort pre-mortem?"
177
177
  - **If the Won't list was surprising:** "Three items ended up in the Won't bucket; that's a useful decision record. Want me to capture them as explicit deferrals in the graph?"
178
- - **If the ranking feels complete and actionable:** "Prioritisation done. Want to `/upg-snapshot` so this ranking is preserved?"
178
+ - **If the ranking feels complete and actionable:** "Prioritisation done. Want to `/upg-sync-snapshot` so this ranking is preserved?"
179
179
 
180
180
  After rendering your recommendation, call:
181
181
  `update_session_context({ skill_invoked: "upg-prioritise", recommendation: "<the next skill you recommended>" })`
@@ -192,4 +192,4 @@ After rendering your recommendation, call:
192
192
 
193
193
  Prioritise is one of the 5 canonical UPG approaches (`get_approach({ approach_id: "prioritise" })`). The approach had no skill home; the frameworks lived in the spec but no conversational surface invoked them for ranking workflows. This skill closes that gap.
194
194
 
195
- It is the only canonical entry point for the Prioritise approach in the user-invocable surface. Other skills use prioritisation implicitly (a good `/upg-launch` should sequence its phases), but `/upg-prioritise` is where the user goes when they explicitly need to rank a candidate set and commit to an order.
195
+ It is the only canonical entry point for the Prioritise approach in the user-invocable surface. Other skills use prioritisation implicitly (a good `/upg-new-launch` should sequence its phases), but `/upg-prioritise` is where the user goes when they explicitly need to rank a candidate set and commit to an order.
@@ -165,8 +165,8 @@ Common patterns and where they go:
165
165
  | A load-bearing belief that hasn't been tested | `assumption` entity, link to the anchor |
166
166
  | A risk to mitigate | `risk` entity, link to the target it threatens |
167
167
  | A decision that needs revisiting | `decision` entity with rationale field, link to original decision |
168
- | A new hypothesis to test | Suggest `/upg-hypothesis` |
169
- | A path through the graph the user wants to walk | Suggest `/upg-impact` or `/upg-connect` |
168
+ | A new hypothesis to test | Suggest `/upg-new-hypothesis` |
169
+ | A path through the graph the user wants to walk | Suggest `/upg-show-impact` or `/upg-link` |
170
170
  | Just notes; nothing structural | Skip capture; suggest user re-run `/upg-reflect` after they sit with it |
171
171
 
172
172
  Use `create_node` + `create_edge` to capture. Always confirm before writing.
@@ -175,10 +175,10 @@ Use `create_node` + `create_edge` to capture. Always confirm before writing.
175
175
 
176
176
  Don't dump a menu. Pick ONE next move based on what surfaced:
177
177
 
178
- - **If a hypothesis emerged:** "The biggest assumption you surfaced sounds testable. Want me to run `/upg-hypothesis` to design that experiment?"
179
- - **If a risk landed:** "That risk is concrete. Want to capture it and connect it to its target so it's visible from `/upg-status`?"
180
- - **If a decision is now uncertain:** "Sounds like the decision needs a revisit. Want to `/upg-inspect` it to see what depends on it?"
181
- - **If reflection produced clarity, not action:** "That was the work. Want me to `/upg-snapshot` so the graph remembers this state?"
178
+ - **If a hypothesis emerged:** "The biggest assumption you surfaced sounds testable. Want me to run `/upg-new-hypothesis` to design that experiment?"
179
+ - **If a risk landed:** "That risk is concrete. Want to capture it and connect it to its target so it's visible from `/upg-show-status`?"
180
+ - **If a decision is now uncertain:** "Sounds like the decision needs a revisit. Want to `/upg-show-entity` it to see what depends on it?"
181
+ - **If reflection produced clarity, not action:** "That was the work. Want me to `/upg-sync-snapshot` so the graph remembers this state?"
182
182
  - **If the framework felt wrong for the scope:** "We can switch frameworks. Want me to walk this through Pre-mortem instead?"
183
183
 
184
184
  After rendering your recommendation, call:
@@ -198,4 +198,4 @@ A few rules that make this work:
198
198
 
199
199
  Reflect is one of the 5 canonical UPG approaches (`get_approach({ approach_id: "reflect" })`). Until v0.3.0, the approach had no skill home; the frameworks lived in the spec but no conversational surface invoked them. This skill closes that gap.
200
200
 
201
- It's the only canonical entry point for the Reflect approach in the user-invocable surface. Other skills *use* reflect implicitly (a good `/upg-launch` should have a Pre-mortem step), but `/upg-reflect` is where the user goes when they explicitly want to question rather than build.
201
+ It's the only canonical entry point for the Reflect approach in the user-invocable surface. Other skills *use* reflect implicitly (a good `/upg-new-launch` should have a Pre-mortem step), but `/upg-reflect` is where the user goes when they explicitly want to question rather than build.
@@ -1,21 +1,23 @@
1
1
  ---
2
- name: upg-feedback
3
- description: "Share feedback about the Unified Product Graph: bugs, feature requests, ideas. Sent directly to the UPG team."
2
+ name: upg-send-feedback
3
+ description: "Share feedback about the Unified Product Graph: bugs, feature requests, ideas. Captured locally as a portable file you can send to the team."
4
4
  user-invocable: true
5
5
  argument-hint: "[bug|feature|observation]"
6
6
  category: tooling
7
7
  ---
8
8
 
9
- # /upg-feedback: Share Feedback with the UPG Team
9
+ # /upg-send-feedback: Capture Feedback for the UPG Team
10
10
 
11
- You collect user feedback about the UPG and send it to the team. Fast, transparent, private. No graph mutations; this is about THEIR feedback to US.
11
+ You collect user feedback about the UPG and write it to a local Markdown file in the project root. Fast, transparent, private. No graph mutations; this is about THEIR feedback to US.
12
+
13
+ There is no public feedback endpoint to submit to, and the `WebFetch` tool cannot POST a body anyway. So the path is **capture locally, then the user sends the file** (paste into a GitHub issue, email, or attach it). The local file IS the deliverable, not a fallback.
12
14
 
13
15
  **Before producing any output, read the design system:** `/upg-context` for emoji mappings, formatting rules, and shared interaction patterns.
14
16
 
15
17
  ## Tools
16
18
 
17
19
  - `mcp__unified-product-graph__get_product_context` and `mcp__unified-product-graph__get_graph_digest`: for automatic context gathering only
18
- - `WebFetch`: to POST the feedback payload
20
+ - `Write`: to save the feedback file to the project root
19
21
 
20
22
  ## Flow
21
23
 
@@ -63,10 +65,10 @@ If MCP calls fail, use defaults silently. Don't slow down the flow.
63
65
 
64
66
  ### Step 6: Show Payload (mandatory)
65
67
 
66
- Transparency is critical. Show exactly what will be sent:
68
+ Transparency is critical. Show exactly what will be written to the file:
67
69
 
68
70
  ```
69
- Here's what I'll send to the UPG team:
71
+ Here's what I'll save for the UPG team:
70
72
 
71
73
  Type: <type>
72
74
  Title: "<title>"
@@ -75,67 +77,44 @@ Here's what I'll send to the UPG team:
75
77
 
76
78
  No product graph data is included; just your feedback + metadata above.
77
79
 
78
- Send it? (y/n)
80
+ Save it? (y/n)
79
81
  ```
80
82
 
81
83
  Wait for confirmation. If they say no, ask what to change or cancel gracefully.
82
84
 
83
- ### Step 7: Send
84
-
85
- POST to `https://cloud.unifiedproductgraph.org/api/feedback` with JSON body:
86
-
87
- ```json
88
- {
89
- "type": "<bug|feature_request|observation|general>",
90
- "title": "<title>",
91
- "description": "<description>",
92
- "context": {
93
- "upg_version": "<version>",
94
- "product_stage": "<stage>",
95
- "entity_count": <N>,
96
- "from_skill": "<skill or null>"
97
- }
98
- }
99
- ```
85
+ ### Step 7: Save
100
86
 
101
- ### Step 8: Confirm
87
+ Use the `Write` tool to save the feedback as Markdown in the project root, filename `upg-feedback-YYYY-MM-DD.md` (use today's date; if a file with that name already exists, append `-2`, `-3`, etc. so nothing is overwritten).
102
88
 
103
- On success:
89
+ The file format:
104
90
 
105
- ```
106
- Feedback sent; thank you!
91
+ ```markdown
92
+ # UPG Feedback: YYYY-MM-DD
107
93
 
108
- Your input directly shapes the Unified Product Graph.
109
- The team reviews every submission.
94
+ **Type:** <bug|feature_request|observation|general>
95
+ **Title:** <title>
96
+ **Description:** <description>
97
+ **Context:** UPG v<version> · <stage> · <N> entities · from <skill>
110
98
  ```
111
99
 
112
- On failure (network error, non-2xx response): save feedback as markdown in the project root:
100
+ ### Step 8: Confirm
113
101
 
114
102
  ```
115
- I couldn't reach the server right now. I've saved your feedback locally
116
- as upg-feedback-YYYY-MM-DD.md; you can send it manually or try again later.
117
- ```
118
-
119
- The fallback file format:
103
+ Saved to upg-feedback-YYYY-MM-DD.md; thank you!
120
104
 
121
- ```markdown
122
- # UPG Feedback: YYYY-MM-DD
105
+ To get it to the team, send the file however suits you:
106
+ - open an issue at github.com/unified-product-graph/spec and paste it in, or
107
+ - email it / attach the file.
123
108
 
124
- **Type:** <type>
125
- **Title:** <title>
126
- **Description:** <description>
127
- **Context:** UPG v<version> · <stage> · <N> entities · from <skill>
109
+ Your input directly shapes the Unified Product Graph.
128
110
  ```
129
111
 
130
112
  ## Key Principles
131
113
 
132
- - **FAST.** 30 seconds. Three questions max (type + title + description), then confirm and send.
114
+ - **FAST.** 30 seconds. Three questions max (type + title + description), then confirm and save.
133
115
  - **One question at a time.** Never batch questions.
134
- - **NEVER send product graph data.** Only feedback text + opt-in metadata shown in the payload preview.
135
- - **Show before sending.** The user must see and approve the exact payload.
116
+ - **Capture locally.** There is no submit endpoint; write the file, the user sends it. The file is the deliverable.
117
+ - **NEVER include product graph data.** Only feedback text + opt-in metadata shown in the preview.
118
+ - **Show before saving.** The user must see and approve the exact payload.
136
119
  - **No graph mutations.** Feedback only; no entities created.
137
- - **Graceful degradation.** If MCP calls or the POST fail, keep going with defaults and local fallback.
138
-
139
- ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
140
- Your .upg file is yours: open standard, portable, git-friendly.
141
- unifiedproductgraph.org
120
+ - **Graceful degradation.** If MCP context calls fail, use defaults silently and still write the file.
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: upg-diff
2
+ name: upg-show-diff
3
3
  description: "See what changed in your product graph since last commit"
4
4
  user-invocable: true
5
5
  argument-hint: "[ref]"
@@ -7,7 +7,7 @@ category: cognitive
7
7
  approaches: [inspect]
8
8
  ---
9
9
 
10
- # /upg-diff: Semantic Graph Diff
10
+ # /upg-show-diff: Semantic Graph Diff
11
11
 
12
12
  You are a Unified Product Graph diff engine. Your job is to show meaningful, human-readable changes to the product graph since the last git commit (or a specified ref), not raw JSON, but semantic product changes.
13
13
 
@@ -35,7 +35,7 @@ This .upg file isn't tracked by git yet; there's nothing to diff against.
35
35
 
36
36
  Run: git add product.upg && git commit -m "Initial product graph"
37
37
 
38
- Then /upg-diff will show changes from that baseline.
38
+ Then /upg-show-diff will show changes from that baseline.
39
39
  ```
40
40
 
41
41
  ### Step 2: Parse Both States
@@ -106,9 +106,9 @@ This is a good checkpoint. Consider:
106
106
  git add product.upg && git commit -m "Add Sarah persona + retention outcome"
107
107
 
108
108
  Or keep going:
109
- /upg-gaps: Check if these changes closed any gaps
110
- /upg-tree: See the updated graph structure
111
- /upg-status: Full health dashboard
109
+ /upg-check-gaps: Check if these changes closed any gaps
110
+ /upg-show-tree: See the updated graph structure
111
+ /upg-show-status: Full health dashboard
112
112
  ```
113
113
 
114
114
  ## Handling Edge Cases
@@ -142,9 +142,3 @@ If the repo has multiple `.upg` files, list them and ask which one to diff.
142
142
  - **Follow the design system.** Entity emojis, score dots, filled bars, dashed dividers as defined in /upg-context.
143
143
  - **Suggest git hygiene.** Encourage committing at natural checkpoints.
144
144
  - **Reference matters.** Always show which ref you're diffing against.
145
-
146
- ```
147
- ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
148
- Your .upg file is yours: open standard, portable, git-friendly.
149
- unifiedproductgraph.org
150
- ```
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: upg-inspect
2
+ name: upg-show-entity
3
3
  description: "Deep-dive into a single entity: connections, properties, gaps, enrichment suggestions"
4
4
  user-invocable: true
5
5
  argument-hint: "<entity name or type>"
@@ -7,7 +7,7 @@ category: cognitive
7
7
  approaches: [inspect]
8
8
  ---
9
9
 
10
- # /upg-inspect: Entity Deep-Dive
10
+ # /upg-show-entity: Entity Deep-Dive
11
11
 
12
12
  You are a Unified Product Graph entity analyst. Your job is to show everything about a single entity; its properties, all connections in and out, connected chains, missing fields, and actionable enrichment suggestions. You're the magnifying glass on any node in the graph.
13
13
 
@@ -134,8 +134,8 @@ ENRICHMENT CHECKLIST
134
134
  ```
135
135
 
136
136
  - [ ] Add a description
137
- - [ ] Connect to a job (`/upg-connect`)
138
- - [ ] Add needs (`/upg-explore a need for "<title>"`)
137
+ - [ ] Connect to a job (`/upg-link`)
138
+ - [ ] Add needs (`/upg-walk-region a need for "<title>"`)
139
139
  - [x] Has status
140
140
  - [x] Has 3 outgoing connections
141
141
 
@@ -145,8 +145,8 @@ Based on the gaps found, suggest 2-3 specific actions:
145
145
 
146
146
  > **Suggested next steps:**
147
147
  >
148
- > 1. `/upg-explore a job for "<entity title>"`; this persona needs Jobs-to-be-Done
149
- > 2. `/upg-connect`; wire this to related entities
148
+ > 1. `/upg-walk-region a job for "<entity title>"`; this persona needs Jobs-to-be-Done
149
+ > 2. `/upg-link`; wire this to related entities
150
150
  > 3. Update properties: `update_node({ node_id: "<id>", description: "..." })`
151
151
 
152
152
  ## Key Principles
@@ -160,8 +160,6 @@ Based on the gaps found, suggest 2-3 specific actions:
160
160
 
161
161
  ---
162
162
 
163
- Your `.upg` file is yours: open standard, portable, git-friendly.
164
- unifiedproductgraph.org
165
163
 
166
164
  After rendering your recommendation, call:
167
- `update_session_context({ skill_invoked: "upg-inspect", recommendation: "<the next skill you recommended>" })`
165
+ `update_session_context({ skill_invoked: "upg-show-entity", recommendation: "<the next skill you recommended>" })`
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: upg-impact
2
+ name: upg-show-impact
3
3
  description: "Impact analysis: what does this unblock (forward), or what blocks this (--upstream)?"
4
4
  user-invocable: true
5
5
  argument-hint: "[--upstream] [entity ID or search term]"
@@ -7,7 +7,7 @@ category: cognitive
7
7
  approaches: [trace, prioritise]
8
8
  ---
9
9
 
10
- # /upg-impact: Causal Impact Analysis
10
+ # /upg-show-impact: Causal Impact Analysis
11
11
 
12
12
  You are an impact analyst. Given a specific entity (bug, debt item, root cause, feature, or any node), you traverse the graph's causal relationships to answer one of two questions:
13
13
 
@@ -18,22 +18,22 @@ You are an impact analyst. Given a specific entity (bug, debt item, root cause,
18
18
 
19
19
  ## Modes
20
20
 
21
- - `/upg-impact <entity>`: forward blast-radius analysis (the default).
22
- - `/upg-impact --upstream <entity>`: upstream causal-chain analysis: what blocks this entity? Use the **Upstream Mode** section below.
23
- - `/upg-impact --upstream` (no entity); graph-wide blocker scan: ALL bugs / debt items / root causes / open investigations, ranked by impact. Same Upstream Mode logic, applied across the graph.
21
+ - `/upg-show-impact <entity>`: forward blast-radius analysis (the default).
22
+ - `/upg-show-impact --upstream <entity>`: upstream causal-chain analysis: what blocks this entity? Use the **Upstream Mode** section below.
23
+ - `/upg-show-impact --upstream` (no entity); graph-wide blocker scan: ALL bugs / debt items / root causes / open investigations, ranked by impact. Same Upstream Mode logic, applied across the graph.
24
24
 
25
25
  ## Graph Readiness Check
26
26
 
27
27
  Before running the impact analysis, call `get_graph_digest()` and check the following against `counts.by_type` (which lists every entity type with at least one instance):
28
28
 
29
29
  - **No blocker-type entities exist at all**: if `by_type` contains none of `bug`, `technical_debt_item`, `root_cause`, `investigation`, surface:
30
- > Your graph has no blocker, debt, root-cause, or investigation entities yet. Impact analysis traces blocker → feature chains, so there's nothing to walk. Run `/upg-connect` to link bugs/debt/root-causes to features, or `/upg-explore bug` to add the first one.
30
+ > Your graph has no blocker, debt, root-cause, or investigation entities yet. Impact analysis traces blocker → feature chains, so there's nothing to walk. Run `/upg-link` to link bugs/debt/root-causes to features, or `/upg-walk-region bug` to add the first one.
31
31
 
32
32
  - **Fewer than 3 features total**: if `by_type.feature` is missing or < 3, surface:
33
- > You need at least a few features in your graph for impact analysis to be meaningful. Run `/upg-explore feature` to add some.
33
+ > You need at least a few features in your graph for impact analysis to be meaningful. Run `/upg-walk-region feature` to add some.
34
34
 
35
35
  If the user provided an anchor entity, also call `get_node({ node_id })` and inspect its `edges`. If the anchor has zero outgoing edges of types `bug_affects_feature` / `debt_blocks_feature` / `root_cause_affects_feature` / `causes` / `blocks`, surface (do not silently return an empty blast radius):
36
- > `<anchor title>` has no outgoing impact edges in the graph, so its blast radius is empty by definition. Run `/upg-connect <anchor>` to wire it to the features or stories it affects, then re-run this analysis.
36
+ > `<anchor title>` has no outgoing impact edges in the graph, so its blast radius is empty by definition. Run `/upg-link <anchor>` to wire it to the features or stories it affects, then re-run this analysis.
37
37
 
38
38
  If the user is in the engineering lens, you may also consult `lens_digest.blockers` and `lens_digest.blocked_features` for a richer signal.
39
39
 
@@ -61,7 +61,7 @@ list_nodes({ type: "investigation", include_edges: true })
61
61
 
62
62
  After rendering, register this invocation:
63
63
  ```
64
- update_session_context({ skill_invoked: "upg-impact", direction: "forward" | "upstream" })
64
+ update_session_context({ skill_invoked: "upg-show-impact", direction: "forward" | "upstream" })
65
65
  ```
66
66
 
67
67
  ## Flow
@@ -206,7 +206,7 @@ Chain 1: [title]; Impact: HIGH (blocks N features)
206
206
  (Blockers with no resolution plan)
207
207
 
208
208
  🔴 [title]; no linked fix or task
209
- → Create a resolution with `/upg-explore task` or `/upg-explore fix`
209
+ → Create a resolution with `/upg-walk-region task` or `/upg-walk-region fix`
210
210
 
211
211
  ---
212
212
 
@@ -222,8 +222,4 @@ If yes, use `create_node` to create task or fix entities and `create_edge` to li
222
222
  - **Impact-first ranking.** The blocker that affects the most features goes first.
223
223
  - **Offer resolution.** Don't just diagnose; offer to create the fix/task.
224
224
  - **Edge confidence matters.** If an edge is `speculative`, flag it as uncertain.
225
- - **Engineering emojis:** 🐛 bug, 🔧 debt, 🌿 root_cause, 💊 fix, 🔍 investigation, 📦 feature, 🔴 blocker
226
-
227
- ---
228
- Your .upg file is yours: open standard, portable, git-friendly.
229
- unifiedproductgraph.org
225
+ - **Engineering emojis:** 🐛 bug, 🔧 debt, 🌿 root_cause, 💊 fix, 🔍 investigation, 📦 feature (a "blocker" is any of bug / debt / dependency / root_cause that blocks a feature; there is no `blocker` entity type)
@@ -1,13 +1,13 @@
1
1
  ---
2
- name: upg-journey
2
+ name: upg-show-journey
3
3
  description: "Guided product journey: 7 phases from idea to iteration"
4
4
  user-invocable: true
5
5
  category: cognitive
6
6
  approaches: [plan]
7
- playbooks: [strategy-outcomes, users-needs, discovery-research-validation, product-delivery, business-gtm-growth, analytics-data, operations-quality]
7
+ playbooks: [playbook:strategy-outcomes, playbook:users-needs, playbook:discovery-research-validation, playbook:product-delivery, playbook:business-gtm-growth, playbook:analytics-data, playbook:operations-quality]
8
8
  ---
9
9
 
10
- # /upg-journey: Guided Product Journey
10
+ # /upg-show-journey: Guided Product Journey
11
11
 
12
12
  You are a Unified Product Graph journey guide. Your job is to show where the user stands across all 7 phases of the solo builder journey, celebrate what they've accomplished, and recommend what to work on next.
13
13
 
@@ -31,7 +31,9 @@ The digest provides counts by type, chain completeness, and business area covera
31
31
 
32
32
  ### Step 2: Determine Phase Completion
33
33
 
34
- Check which entity types exist (at least 1 node of that type) to classify each phase:
34
+ The **7 phases are an editorial product-thinking framing** (stable). The **type-list backbone for each phase is derived from the spec, not hard-coded**: read counts-by-type and business-area coverage from `get_graph_digest` (Step 1), and treat the type names in the tables below as illustrative anchors — confirm any type still exists with `list_entity_types` before relying on it, and prefer the digest's `by_type` counts and chain/area fields for everything quantitative. If a type named below has been renamed or removed in the spec, fall back to the digest's business-area coverage for that phase.
35
+
36
+ Check which entity types have at least 1 node (from the digest) to classify each phase:
35
37
 
36
38
  | Phase | ✓ Complete if | Bonus if also |
37
39
  |---|---|---|
@@ -67,13 +69,13 @@ YOUR PRODUCT JOURNEY
67
69
 
68
70
  | | Phase | Status | Skills |
69
71
  |---|---|---|---|
70
- | 1 | Identity | ✓ complete | `/upg-init`, `/upg-strategy` |
71
- | 2 | Understanding | ● in progress | `/upg-persona`, `/upg-research` |
72
- | 3 | Discovery | ○ not started | `/upg-discover`, `/upg-hypothesis`, `/upg-explore market_intelligence` |
73
- | 4 | Business | ○ not started | `/upg-explore business_model`, `/upg-explore market_intelligence`, `/upg-okr` |
74
- | 5 | Reaching | ○ not started | `/upg-launch`, `/upg-explore marketing` |
75
- | 6 | Building | ○ not started | `/upg-explore product_spec`, `/upg-explore engineering` |
76
- | 7 | Learning | ○ not started | `/upg-explore team_org`, `/upg-gaps` |
72
+ | 1 | Identity | ✓ complete | `/upg-new-graph`, `/upg-new-strategy` |
73
+ | 2 | Understanding | ● in progress | `/upg-new-persona`, `/upg-new-research` |
74
+ | 3 | Discovery | ○ not started | `/upg-new-discovery`, `/upg-new-hypothesis`, `/upg-walk-region market_intelligence` |
75
+ | 4 | Business | ○ not started | `/upg-walk-region business_model`, `/upg-walk-region market_intelligence`, `/upg-new-okr` |
76
+ | 5 | Reaching | ○ not started | `/upg-new-launch`, `/upg-walk-region marketing` |
77
+ | 6 | Building | ○ not started | `/upg-walk-region product_spec`, `/upg-walk-region engineering` |
78
+ | 7 | Learning | ○ not started | `/upg-walk-region team_org`, `/upg-check-gaps` |
77
79
 
78
80
  Progress: ● ● ○ ○ ○ ○ ○ **2/7 phases**
79
81
 
@@ -117,11 +119,11 @@ List 3 numbered options based on the most impactful incomplete phases, followed
117
119
 
118
120
  If they pick a phase, respond with the specific skill to run:
119
121
 
120
- > Great; run `/upg-persona` to start deepening your understanding of who you're building for. When you're done, run `/upg-journey` again to see your updated progress.
122
+ > Great; run `/upg-new-persona` to start deepening your understanding of who you're building for. When you're done, run `/upg-show-journey` again to see your updated progress.
121
123
 
122
124
  If they pick option 5, close warmly:
123
125
 
124
- > Your graph is in good shape. Keep building; every entity you add makes the picture clearer. Run `/upg-journey` anytime to check in.
126
+ > Your graph is in good shape. Keep building; every entity you add makes the picture clearer. Run `/upg-show-journey` anytime to check in.
125
127
 
126
128
  ### Step 6: Completion Celebration
127
129
 
@@ -137,18 +139,18 @@ Your product graph spans the full journey; from identity to learning. This isn't
137
139
 
138
140
  | | |
139
141
  |---|---|
140
- | `/upg-status` | See your full health dashboard |
141
- | `/upg-gaps` | Find the deepest remaining gaps |
142
- | `/upg-push` | Sync your graph to the cloud |
142
+ | `/upg-show-status` | See your full health dashboard |
143
+ | `/upg-check-gaps` | Find the deepest remaining gaps |
144
+ | `/upg-sync-push` | Sync your graph to the cloud |
143
145
  | Keep iterating | The journey is a loop, not a line |
144
146
 
145
147
  ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
146
148
 
147
149
  ## Phase → Entity Type Reference
148
150
 
149
- Use this to check which entities belong to each phase when scanning the graph:
151
+ This grouping is **editorial (which phase a type belongs to), not authoritative for which types exist**. Confirm the live type set with `list_entity_types` and derive per-type counts from `get_graph_digest`; the lists below may lag the spec. The phase a type maps to is the product-thinking part; whether a type still exists is a live question.
150
152
 
151
- | Phase | Entity Types |
153
+ | Phase | Entity Types (illustrative) |
152
154
  |---|---|
153
155
  | 1. Identity | `product`, `vision`, `mission` |
154
156
  | 2. Understanding | `persona`, `job`, `need`, `research_study`, `insight` |
@@ -164,24 +166,21 @@ Use this when recommending which skill to run:
164
166
 
165
167
  | Phase | Primary Skill | Other Skills |
166
168
  |---|---|---|
167
- | 1. Identity | `/upg-init` | `/upg-strategy` |
168
- | 2. Understanding | `/upg-persona` | `/upg-research` |
169
- | 3. Discovery | `/upg-discover` | `/upg-hypothesis`, `/upg-explore market_intelligence` |
170
- | 4. Business | `/upg-explore business_model` | `/upg-explore market_intelligence`, `/upg-okr`, `/upg-explore pricing` |
171
- | 5. Reaching | `/upg-launch` | `/upg-explore marketing`, `/upg-explore growth`, `/upg-explore content` |
172
- | 6. Building | `/upg-explore product_spec` | `/upg-explore engineering`, `/upg-explore ux_design` |
173
- | 7. Learning | `/upg-explore team_org` | `/upg-gaps` |
169
+ | 1. Identity | `/upg-new-graph` | `/upg-new-strategy` |
170
+ | 2. Understanding | `/upg-new-persona` | `/upg-new-research` |
171
+ | 3. Discovery | `/upg-new-discovery` | `/upg-new-hypothesis`, `/upg-walk-region market_intelligence` |
172
+ | 4. Business | `/upg-walk-region business_model` | `/upg-walk-region market_intelligence`, `/upg-new-okr`, `/upg-walk-region pricing` |
173
+ | 5. Reaching | `/upg-new-launch` | `/upg-walk-region marketing`, `/upg-walk-region growth`, `/upg-walk-region content` |
174
+ | 6. Building | `/upg-walk-region product_spec` | `/upg-walk-region engineering`, `/upg-walk-region ux_design` |
175
+ | 7. Learning | `/upg-walk-region team_org` | `/upg-check-gaps` |
174
176
 
175
177
  ## Footer
176
178
 
177
179
  Always end with:
178
180
 
179
- ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
180
- Your `.upg` file is yours: open standard, portable, git-friendly.
181
- unifiedproductgraph.org
182
181
 
183
182
  After rendering your recommendation, call:
184
- `update_session_context({ skill_invoked: "upg-journey", recommendation: "<the next skill you recommended>" })`
183
+ `update_session_context({ skill_invoked: "upg-show-journey", recommendation: "<the next skill you recommended>" })`
185
184
 
186
185
  ## Lens-Aware Phase Emphasis
187
186
 
@@ -193,9 +192,9 @@ Check `get_session_context()` for the current lens. Visually emphasize the most
193
192
  - **product (default):** All phases weighted equally.
194
193
 
195
194
  For non-default lenses, recommend the most useful skill set:
196
- - engineering: "For a build-focused view, try `/upg-status` then `/upg-impact --upstream` to surface blockers."
197
- - design: "For a design-focused view, try `/upg-explore ux_design` (covers screens, flows, wireframes, audit)."
198
- - growth: "For a growth-focused view, try `/upg-explore growth`, `/upg-explore marketing`, and `/upg-launch`."
195
+ - engineering: "For a build-focused view, try `/upg-show-status` then `/upg-show-impact --upstream` to surface blockers."
196
+ - design: "For a design-focused view, try `/upg-walk-region ux_design` (covers screens, flows, wireframes, audit)."
197
+ - growth: "For a growth-focused view, try `/upg-walk-region growth`, `/upg-walk-region marketing`, and `/upg-new-launch`."
199
198
 
200
199
  ## Key Principles
201
200