@unified-product-graph/mcp-server 0.8.0 → 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.
- package/CHANGELOG.md +11 -0
- package/README.md +1 -1
- package/TOOLS.md +20 -14
- package/dist/index.js +1289 -485
- package/dist/index.js.map +1 -1
- package/dist/tools-manifest.json +95 -76
- package/package.json +1 -1
- package/scripts/claudemd-snippet.md +7 -7
- package/scripts/install-skills.sh +2 -2
- package/skills/upg/SKILL.md +41 -41
- package/skills/{upg-gaps → upg-check-gaps}/SKILL.md +40 -43
- package/skills/{upg-schema-health → upg-check-schema}/SKILL.md +7 -7
- package/skills/{upg-schema-evolve → upg-check-schema-coverage}/SKILL.md +12 -12
- package/skills/{upg-schema-edges → upg-check-schema-edges}/SKILL.md +3 -3
- package/skills/{upg-schema-consolidate → upg-check-schema-merge}/SKILL.md +5 -5
- package/skills/upg-context/SKILL.md +96 -72
- package/skills/upg-context-intelligence/SKILL.md +23 -27
- package/skills/upg-design-system/SKILL.md +21 -26
- package/skills/{upg-verify → upg-find-untracked}/SKILL.md +7 -12
- package/skills/{upg-rollback → upg-fix-rollback}/SKILL.md +6 -12
- package/skills/{upg-migrate → upg-fix-types}/SKILL.md +5 -9
- package/skills/upg-link/SKILL.md +125 -0
- package/skills/{upg-discover → upg-new-discovery}/SKILL.md +42 -58
- package/skills/{upg-capture → upg-new-from-session}/SKILL.md +13 -15
- package/skills/{upg-template → upg-new-from-template}/SKILL.md +8 -12
- package/skills/{upg-init → upg-new-graph}/SKILL.md +50 -82
- package/skills/{upg-hypothesis → upg-new-hypothesis}/SKILL.md +27 -36
- package/skills/{upg-launch → upg-new-launch}/SKILL-DETAIL.md +36 -92
- package/skills/{upg-launch → upg-new-launch}/SKILL.md +8 -18
- package/skills/{upg-okr → upg-new-okr}/SKILL-DETAIL.md +28 -46
- package/skills/{upg-okr → upg-new-okr}/SKILL.md +3 -3
- package/skills/{upg-persona → upg-new-persona}/SKILL.md +35 -67
- package/skills/{upg-research → upg-new-research}/SKILL.md +25 -33
- package/skills/{upg-schema-update → upg-new-schema-type}/SKILL.md +2 -2
- package/skills/{upg-strategy → upg-new-strategy}/SKILL.md +21 -27
- package/skills/upg-prioritise/SKILL.md +4 -4
- package/skills/upg-reflect/SKILL.md +7 -7
- package/skills/{upg-feedback → upg-send-feedback}/SKILL.md +30 -51
- package/skills/{upg-diff → upg-show-diff}/SKILL.md +6 -12
- package/skills/{upg-inspect → upg-show-entity}/SKILL.md +7 -9
- package/skills/{upg-impact → upg-show-impact}/SKILL.md +11 -15
- package/skills/{upg-journey → upg-show-journey}/SKILL.md +31 -32
- package/skills/{upg-analytics → upg-show-metrics}/SKILL.md +9 -12
- package/skills/{upg-schema-changelog → upg-show-schema-changelog}/SKILL.md +5 -5
- package/skills/{upg-status → upg-show-status}/SKILL.md +39 -40
- package/skills/{upg-tree → upg-show-tree}/SKILL.md +15 -15
- package/skills/{upg-export → upg-sync-export}/SKILL.md +10 -13
- package/skills/{upg-import → upg-sync-import}/SKILL.md +7 -13
- package/skills/{upg-pull → upg-sync-pull}/SKILL-DETAIL.md +13 -17
- package/skills/{upg-pull → upg-sync-pull}/SKILL.md +3 -3
- package/skills/{upg-push → upg-sync-push}/SKILL-DETAIL.md +4 -10
- package/skills/{upg-push → upg-sync-push}/SKILL.md +4 -4
- package/skills/{upg-snapshot → upg-sync-snapshot}/SKILL.md +2 -6
- package/skills/upg-trace/SKILL.md +7 -7
- package/skills/{upg-workspace → upg-use-workspace}/SKILL.md +8 -14
- package/skills/{upg-run → upg-walk-playbook}/SKILL.md +14 -14
- package/skills/upg-walk-region/SKILL-DETAIL.md +320 -0
- package/skills/upg-walk-region/SKILL.md +89 -0
- package/skills/upg-connect/SKILL.md +0 -167
- package/skills/upg-explore/SKILL-DETAIL.md +0 -481
- 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.
|
|
3
|
+
"version": "0.8.2",
|
|
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-
|
|
9
|
-
- `/upg-
|
|
10
|
-
- `/upg-status`: Health dashboard with maturity scoring
|
|
11
|
-
- `/upg-gaps`: Gap analysis across 8 business areas
|
|
12
|
-
- `/upg-
|
|
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-
|
|
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-
|
|
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 ""
|
package/skills/upg/SKILL.md
CHANGED
|
@@ -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-
|
|
80
|
-
| 🔍 | **Inspect** | What's broken? | `/upg-status` · `/upg-tree` · `/upg-
|
|
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-
|
|
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-
|
|
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-
|
|
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
|
|
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-
|
|
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-
|
|
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-
|
|
176
|
-
| `/upg-
|
|
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-
|
|
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-
|
|
192
|
-
| `/upg-
|
|
193
|
-
| `/upg-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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.**
|
|
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
|
|
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 |
|
|
40
|
-
|
|
41
|
-
|
|
|
42
|
-
|
|
|
43
|
-
|
|
|
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
|
-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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 `
|
|
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 (
|
|
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-
|
|
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
|
-
|
|
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 (
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
35
|
+
/upg-check-schema
|
|
36
36
|
```
|
|
37
37
|
|
|
38
38
|
**Mode 3: Audit a specific domain against real data**
|
|
39
39
|
```
|
|
40
|
-
/upg-schema
|
|
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-
|
|
256
|
-
2. [Second action]; /upg-schema-
|
|
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-
|
|
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-
|
|
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-
|
|
30
|
+
/upg-check-schema-coverage engineering
|
|
31
31
|
```
|
|
32
32
|
|
|
33
33
|
**Mode 2: Requirement-driven**
|
|
34
34
|
```
|
|
35
|
-
/upg-schema-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
282
|
-
2. **Consolidations** → hand off to `/upg-schema-
|
|
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-
|
|
297
|
+
🔀 Consolidation candidates: [list; run /upg-check-schema-merge]
|
|
298
298
|
⏸️ Deferred: [list with revisit conditions]
|
|
299
299
|
|
|
300
|
-
Next: /upg-schema-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
171
|
+
**5d. Cascade the change** using `/upg-new-schema-type`
|
|
172
172
|
|
|
173
173
|
### Step 5 (Alternative): If Keeping Separate: Document Why
|
|
174
174
|
|