@unified-product-graph/cli 0.6.0
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 +24 -0
- package/LICENSE +21 -0
- package/README.md +247 -0
- package/dist/cli.cjs +141010 -0
- package/package.json +65 -0
- package/skills/README.md +10 -0
- package/skills/upg/SKILL.md +245 -0
- package/skills/upg-analytics/SKILL.md +135 -0
- package/skills/upg-capture/SKILL.md +274 -0
- package/skills/upg-connect/SKILL.md +167 -0
- package/skills/upg-context/SKILL.md +506 -0
- package/skills/upg-context-intelligence/SKILL.md +227 -0
- package/skills/upg-design-system/SKILL.md +265 -0
- package/skills/upg-diff/SKILL.md +150 -0
- package/skills/upg-discover/SKILL.md +290 -0
- package/skills/upg-explore/SKILL-DETAIL.md +481 -0
- package/skills/upg-explore/SKILL.md +297 -0
- package/skills/upg-export/SKILL.md +385 -0
- package/skills/upg-feedback/SKILL.md +141 -0
- package/skills/upg-gaps/SKILL.md +376 -0
- package/skills/upg-hypothesis/SKILL.md +190 -0
- package/skills/upg-impact/SKILL.md +229 -0
- package/skills/upg-import/SKILL.md +189 -0
- package/skills/upg-init/SKILL.md +410 -0
- package/skills/upg-inspect/SKILL.md +167 -0
- package/skills/upg-journey/SKILL.md +207 -0
- package/skills/upg-launch/SKILL-DETAIL.md +392 -0
- package/skills/upg-launch/SKILL.md +141 -0
- package/skills/upg-migrate/SKILL.md +146 -0
- package/skills/upg-okr/SKILL-DETAIL.md +351 -0
- package/skills/upg-okr/SKILL.md +88 -0
- package/skills/upg-persona/SKILL.md +230 -0
- package/skills/upg-prioritise/SKILL.md +195 -0
- package/skills/upg-pull/SKILL-DETAIL.md +398 -0
- package/skills/upg-pull/SKILL.md +57 -0
- package/skills/upg-push/SKILL-DETAIL.md +385 -0
- package/skills/upg-push/SKILL.md +113 -0
- package/skills/upg-reflect/SKILL.md +201 -0
- package/skills/upg-research/SKILL.md +336 -0
- package/skills/upg-rollback/SKILL.md +163 -0
- package/skills/upg-run/SKILL.md +126 -0
- package/skills/upg-schema-changelog/SKILL.md +231 -0
- package/skills/upg-schema-consolidate/SKILL.md +243 -0
- package/skills/upg-schema-edges/SKILL.md +287 -0
- package/skills/upg-schema-evolve/SKILL.md +313 -0
- package/skills/upg-schema-health/SKILL.md +279 -0
- package/skills/upg-schema-update/SKILL.md +206 -0
- package/skills/upg-snapshot/SKILL.md +108 -0
- package/skills/upg-status/SKILL.md +340 -0
- package/skills/upg-strategy/SKILL.md +334 -0
- package/skills/upg-template/SKILL.md +145 -0
- package/skills/upg-trace/SKILL.md +197 -0
- package/skills/upg-tree/SKILL.md +233 -0
- package/skills/upg-verify/SKILL.md +223 -0
- package/skills/upg-workspace/SKILL.md +103 -0
|
@@ -0,0 +1,481 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: upg-explore-detail
|
|
3
|
+
description: "Full property schemas and edge type reference for /upg-explore"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /upg-explore — Property Schemas & Edge Types (Detail)
|
|
7
|
+
|
|
8
|
+
This file contains the full property schemas and edge type reference for entity creation. It is loaded on demand by /upg-explore when the agent needs to know the specific properties or valid connections for an entity type.
|
|
9
|
+
|
|
10
|
+
## Full Property Schemas
|
|
11
|
+
|
|
12
|
+
When creating an entity, actively prompt for the key properties. Do not just set title and description.
|
|
13
|
+
|
|
14
|
+
### outcome
|
|
15
|
+
```json
|
|
16
|
+
{
|
|
17
|
+
"timeline": "When this should be achieved"
|
|
18
|
+
}
|
|
19
|
+
```
|
|
20
|
+
Ask: "What's the timeline for this outcome?"
|
|
21
|
+
|
|
22
|
+
### metric (KPI)
|
|
23
|
+
```json
|
|
24
|
+
{
|
|
25
|
+
"designation": "kpi",
|
|
26
|
+
"current_value": 0,
|
|
27
|
+
"target_value": 100,
|
|
28
|
+
"unit": "%, users, seconds, etc.",
|
|
29
|
+
"range_min": 0,
|
|
30
|
+
"range_max": 100
|
|
31
|
+
}
|
|
32
|
+
```
|
|
33
|
+
Ask: "What's the current value? What's the target? What unit?" (KPIs are `metric` nodes with `designation: "kpi"` — the `kpi` type was consolidated into `metric` in v0.1.0.)
|
|
34
|
+
|
|
35
|
+
### objective
|
|
36
|
+
```json
|
|
37
|
+
{
|
|
38
|
+
"timeframe": "Q1 2026, H2 2026, etc.",
|
|
39
|
+
"status": "active | achieved | deferred"
|
|
40
|
+
}
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### key_result
|
|
44
|
+
```json
|
|
45
|
+
{
|
|
46
|
+
"current_value": 0,
|
|
47
|
+
"target_value": 100,
|
|
48
|
+
"unit": "metric unit",
|
|
49
|
+
"status": "on_track | at_risk | behind | achieved"
|
|
50
|
+
}
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### opportunity
|
|
54
|
+
```json
|
|
55
|
+
{
|
|
56
|
+
"status": "identified | validated | deferred | closed",
|
|
57
|
+
"reach": 1-5,
|
|
58
|
+
"frequency": 1-5,
|
|
59
|
+
"pain": 1-5
|
|
60
|
+
}
|
|
61
|
+
```
|
|
62
|
+
Ask: "How many people does this affect (reach 1-5)? How often (frequency 1-5)? How painful (1-5)?"
|
|
63
|
+
|
|
64
|
+
### solution
|
|
65
|
+
```json
|
|
66
|
+
{
|
|
67
|
+
"status": "proposed | in_progress | shipped | deferred",
|
|
68
|
+
"reach": 1-5,
|
|
69
|
+
"impact": 1-5,
|
|
70
|
+
"confidence": 1-5,
|
|
71
|
+
"effort": 1-5,
|
|
72
|
+
"rice_score": "(reach x impact x confidence) / effort"
|
|
73
|
+
}
|
|
74
|
+
```
|
|
75
|
+
Ask: "Let's RICE-score this. Reach (1-5)? Impact (1-5)? Confidence (1-5)? Effort (1-5)?"
|
|
76
|
+
|
|
77
|
+
### experiment
|
|
78
|
+
```json
|
|
79
|
+
{
|
|
80
|
+
"method": "Description of the test method",
|
|
81
|
+
"status": "planned | running | analysing | complete",
|
|
82
|
+
"start_date": "ISO date",
|
|
83
|
+
"end_date": "ISO date"
|
|
84
|
+
}
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### learning
|
|
88
|
+
```json
|
|
89
|
+
{
|
|
90
|
+
"result": "What happened",
|
|
91
|
+
"metric": "What was measured",
|
|
92
|
+
"result_value": 0,
|
|
93
|
+
"confidence_impact": "strengthens | weakens | neutral"
|
|
94
|
+
}
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### competitor
|
|
98
|
+
```json
|
|
99
|
+
{
|
|
100
|
+
"positioning": "How they position themselves",
|
|
101
|
+
"pricing_model": "Their pricing approach",
|
|
102
|
+
"strengths": ["What they do well"],
|
|
103
|
+
"weaknesses": ["Where they fall short"],
|
|
104
|
+
"website": "URL"
|
|
105
|
+
}
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### feature
|
|
109
|
+
```json
|
|
110
|
+
{
|
|
111
|
+
"status": "planned | in_progress | shipped | deprecated"
|
|
112
|
+
}
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### user_story
|
|
116
|
+
```json
|
|
117
|
+
{
|
|
118
|
+
"as_a": "persona name",
|
|
119
|
+
"i_want_to": "action",
|
|
120
|
+
"so_that": "outcome",
|
|
121
|
+
"status": "backlog | in_progress | done",
|
|
122
|
+
"effort": 0
|
|
123
|
+
}
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### need
|
|
127
|
+
```json
|
|
128
|
+
{
|
|
129
|
+
"valence": "pain | gap | desire | constraint",
|
|
130
|
+
"frequency": 1-5,
|
|
131
|
+
"severity": 1-5
|
|
132
|
+
}
|
|
133
|
+
```
|
|
134
|
+
Ask: "How often does this happen (1-5)? How bad is it (1-5)? Is this a pain, gap, desire, or constraint?" (The old `pain_point` type was consolidated into `need` with `valence: "pain"` in v0.1.0.)
|
|
135
|
+
|
|
136
|
+
### research_study
|
|
137
|
+
```json
|
|
138
|
+
{
|
|
139
|
+
"method": "interview | usability_test | survey | diary_study | field_study | other",
|
|
140
|
+
"status": "planned | in_progress | analysing | complete",
|
|
141
|
+
"participant_count": 0
|
|
142
|
+
}
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
### insight (research insight)
|
|
146
|
+
```json
|
|
147
|
+
{
|
|
148
|
+
"source_domain": "research | ux | product | support",
|
|
149
|
+
"insight_level": "observation | finding | insight",
|
|
150
|
+
"confidence": "low | medium | high",
|
|
151
|
+
"evidence_count": 0
|
|
152
|
+
}
|
|
153
|
+
```
|
|
154
|
+
(The old `research_insight`, `finding`, and `ux_insight` types were all consolidated into `insight` in v0.1.0.)
|
|
155
|
+
|
|
156
|
+
### business_model
|
|
157
|
+
```json
|
|
158
|
+
{
|
|
159
|
+
"canvas_type": "lean | bmc | custom",
|
|
160
|
+
"customer_segments": ["Who you serve"],
|
|
161
|
+
"channels": ["How you reach them"],
|
|
162
|
+
"key_activities": ["What you do"],
|
|
163
|
+
"key_resources": ["What you need"],
|
|
164
|
+
"key_partners": ["Who helps you"],
|
|
165
|
+
"status": "draft | validated | active | pivoting"
|
|
166
|
+
}
|
|
167
|
+
```
|
|
168
|
+
Ask: "What type of canvas is this — lean, BMC, or custom? Who are the customer segments? What are the key activities?"
|
|
169
|
+
|
|
170
|
+
### value_proposition
|
|
171
|
+
```json
|
|
172
|
+
{
|
|
173
|
+
"for_segment": "Which customer segment this serves",
|
|
174
|
+
"gains": ["What gains you create"],
|
|
175
|
+
"pain_relievers": ["What pains you relieve"],
|
|
176
|
+
"products_and_services": ["What you offer"],
|
|
177
|
+
"differentiator": "Why this is unique vs. alternatives",
|
|
178
|
+
"status": "draft | testing | validated"
|
|
179
|
+
}
|
|
180
|
+
```
|
|
181
|
+
Ask: "Which customer segment is this for? What gains does it create? What pains does it relieve? What makes it different from alternatives?"
|
|
182
|
+
|
|
183
|
+
### gtm_strategy
|
|
184
|
+
```json
|
|
185
|
+
{
|
|
186
|
+
"target_market": "Primary market",
|
|
187
|
+
"motion": "product_led | sales_led | community_led | hybrid",
|
|
188
|
+
"channels": ["Distribution channels"],
|
|
189
|
+
"timeline": "Launch timeline",
|
|
190
|
+
"success_metrics": ["How you'll measure success"],
|
|
191
|
+
"status": "draft | in_progress | launched | iterating"
|
|
192
|
+
}
|
|
193
|
+
```
|
|
194
|
+
Ask: "What's the target market? Is this product-led, sales-led, or community-led? What channels will you use?"
|
|
195
|
+
|
|
196
|
+
### ideal_customer_profile
|
|
197
|
+
```json
|
|
198
|
+
{
|
|
199
|
+
"company_size": "1-10 | 11-50 | 51-200 | 201-1000 | 1000+",
|
|
200
|
+
"industry": "Target industry",
|
|
201
|
+
"budget_range": "Typical budget",
|
|
202
|
+
"buying_triggers": ["What causes them to look for a solution"],
|
|
203
|
+
"disqualifiers": ["Red flags — who is NOT a fit"],
|
|
204
|
+
"decision_makers": ["Roles involved in the buying decision"]
|
|
205
|
+
}
|
|
206
|
+
```
|
|
207
|
+
Ask: "What size company is the ideal fit? What industry? What triggers them to start looking for a solution like yours?"
|
|
208
|
+
|
|
209
|
+
### positioning
|
|
210
|
+
```json
|
|
211
|
+
{
|
|
212
|
+
"for_whom": "Target audience",
|
|
213
|
+
"who_need": "Their primary need",
|
|
214
|
+
"our_product_is": "Category or frame",
|
|
215
|
+
"that_provides": "Key benefit",
|
|
216
|
+
"unlike": "Primary alternative",
|
|
217
|
+
"we_differentiate_by": "Unique differentiator",
|
|
218
|
+
"framework": "april_dunford | moore | custom"
|
|
219
|
+
}
|
|
220
|
+
```
|
|
221
|
+
Ask: "Let's use a positioning statement. For whom? Who need what? What category is your product? How do you differentiate?"
|
|
222
|
+
|
|
223
|
+
### user_journey
|
|
224
|
+
```json
|
|
225
|
+
{
|
|
226
|
+
"persona": "Which persona takes this journey",
|
|
227
|
+
"scenario": "The specific context or trigger",
|
|
228
|
+
"stages": ["awareness", "consideration", "decision", "onboarding", "retention"],
|
|
229
|
+
"emotional_arc": "How feelings change across stages",
|
|
230
|
+
"status": "draft | mapped | validated"
|
|
231
|
+
}
|
|
232
|
+
```
|
|
233
|
+
Ask: "Which persona takes this journey? What's the scenario? What stages does it cover?"
|
|
234
|
+
|
|
235
|
+
### decision (architecture / design / product)
|
|
236
|
+
```json
|
|
237
|
+
{
|
|
238
|
+
"layer": "engineering | design | product",
|
|
239
|
+
"context": "Why this decision was needed",
|
|
240
|
+
"decision": "What was decided",
|
|
241
|
+
"alternatives_considered": ["What else was evaluated"],
|
|
242
|
+
"consequences": ["Trade-offs and implications"],
|
|
243
|
+
"status": "proposed | accepted | deprecated | superseded",
|
|
244
|
+
"decided_by": "Who made the decision",
|
|
245
|
+
"decided_on": "ISO date"
|
|
246
|
+
}
|
|
247
|
+
```
|
|
248
|
+
Ask: "What's the context — why was this decision needed? What was decided? What alternatives were considered? Which layer does this belong to — engineering, design, or product?" (`architecture_decision`, `design_decision`, and `product_decision` were consolidated into the single `decision` type with a `layer` property in v0.2.0.)
|
|
249
|
+
|
|
250
|
+
### growth_loop
|
|
251
|
+
```json
|
|
252
|
+
{
|
|
253
|
+
"loop_type": "viral | content | paid | product",
|
|
254
|
+
"trigger": "What starts the loop",
|
|
255
|
+
"action": "What the user does",
|
|
256
|
+
"output": "What the action produces",
|
|
257
|
+
"reinvestment": "How the output feeds back into the trigger",
|
|
258
|
+
"time_to_complete": "How long one cycle takes",
|
|
259
|
+
"status": "theoretical | testing | proven | scaling"
|
|
260
|
+
}
|
|
261
|
+
```
|
|
262
|
+
Ask: "What type of loop — viral, content, paid, or product? What triggers it? What action does the user take? How does the output feed back into the trigger?"
|
|
263
|
+
|
|
264
|
+
### pricing_strategy
|
|
265
|
+
```json
|
|
266
|
+
{
|
|
267
|
+
"model": "freemium | free_trial | usage_based | flat_rate | per_seat | tiered | custom",
|
|
268
|
+
"anchor_price": "Primary price point",
|
|
269
|
+
"willingness_to_pay": "Researched WTP range",
|
|
270
|
+
"competitive_position": "cheaper | parity | premium",
|
|
271
|
+
"tiers": ["Tier names"],
|
|
272
|
+
"status": "research | testing | launched | iterating"
|
|
273
|
+
}
|
|
274
|
+
```
|
|
275
|
+
Ask: "What pricing model — freemium, usage-based, per-seat, etc.? What's the anchor price? How does this compare to competitors — cheaper, parity, or premium?"
|
|
276
|
+
|
|
277
|
+
### ai_model
|
|
278
|
+
```json
|
|
279
|
+
{
|
|
280
|
+
"model_type": "llm | classifier | recommender | generative | embedding | custom",
|
|
281
|
+
"provider": "openai | anthropic | google | huggingface | self_hosted | other",
|
|
282
|
+
"use_case": "What this model does in the product",
|
|
283
|
+
"input_type": "text | image | audio | structured | multimodal",
|
|
284
|
+
"output_type": "text | classification | embedding | structured | multimodal",
|
|
285
|
+
"latency_target": "Target response time",
|
|
286
|
+
"cost_per_call": "Estimated cost",
|
|
287
|
+
"status": "prototyping | evaluating | staging | production | deprecated"
|
|
288
|
+
}
|
|
289
|
+
```
|
|
290
|
+
Ask: "What type of model — LLM, classifier, recommender? Which provider? What's its use case in the product?"
|
|
291
|
+
|
|
292
|
+
## Edge Types — Valid Connections
|
|
293
|
+
|
|
294
|
+
After creating an entity, search for related entities and suggest connections. Use these valid edge types:
|
|
295
|
+
|
|
296
|
+
### Core Product Graph
|
|
297
|
+
|
|
298
|
+
| Edge Type | From | To |
|
|
299
|
+
|---|---|---|
|
|
300
|
+
| `product_has_outcome` | product | outcome |
|
|
301
|
+
| `product_has_objective` | product | objective |
|
|
302
|
+
| `product_has_competitor` | product | competitor |
|
|
303
|
+
| `product_has_feature` | product | feature |
|
|
304
|
+
| `product_has_release` | product | release |
|
|
305
|
+
| `product_has_research_study` | product | research_study |
|
|
306
|
+
| `product_has_persona` | product | persona |
|
|
307
|
+
| `product_has_business_model` | product | business_model |
|
|
308
|
+
| `product_has_gtm_strategy` | product | gtm_strategy |
|
|
309
|
+
| `product_has_pricing_strategy` | product | pricing_strategy |
|
|
310
|
+
| `product_has_ai_model` | product | ai_model |
|
|
311
|
+
| `outcome_has_metric` | outcome | metric |
|
|
312
|
+
| `outcome_has_opportunity` | outcome | opportunity |
|
|
313
|
+
| `objective_has_key_result` | objective | key_result |
|
|
314
|
+
| `persona_pursues_job` | persona | job |
|
|
315
|
+
| `job_has_need` | job | need |
|
|
316
|
+
| `opportunity_has_solution` | opportunity | solution |
|
|
317
|
+
| `solution_has_hypothesis` | solution | hypothesis |
|
|
318
|
+
| `hypothesis_has_experiment` | hypothesis | experiment |
|
|
319
|
+
| `experiment_produces_learning` | experiment | learning |
|
|
320
|
+
| `feature_has_epic` | feature | epic |
|
|
321
|
+
| `epic_has_user_story` | epic | user_story |
|
|
322
|
+
| `research_study_has_insight` | research_study | insight |
|
|
323
|
+
| `insight_informs_opportunity` | insight | opportunity |
|
|
324
|
+
|
|
325
|
+
### Market Intelligence
|
|
326
|
+
|
|
327
|
+
| Edge Type | From | To |
|
|
328
|
+
|---|---|---|
|
|
329
|
+
| `competitor_has_competitor_feature` | competitor | competitor_feature |
|
|
330
|
+
| `market_segment_has_persona` | market_segment | persona |
|
|
331
|
+
| `competitive_analysis_has_competitor` | competitive_analysis | competitor |
|
|
332
|
+
| `market_trend_informs_opportunity` | market_trend | opportunity |
|
|
333
|
+
|
|
334
|
+
### UX Research
|
|
335
|
+
|
|
336
|
+
| Edge Type | From | To |
|
|
337
|
+
|---|---|---|
|
|
338
|
+
| `research_study_has_participant` | research_study | participant |
|
|
339
|
+
| `research_study_has_interview_guide` | research_study | interview_guide |
|
|
340
|
+
| `participant_has_observation` | participant | observation |
|
|
341
|
+
| `observation_yields_insight` | observation | insight |
|
|
342
|
+
| `insight_refines_insight` | insight | insight |
|
|
343
|
+
|
|
344
|
+
### Design
|
|
345
|
+
|
|
346
|
+
| Edge Type | From | To |
|
|
347
|
+
|---|---|---|
|
|
348
|
+
| `persona_has_user_journey` | persona | user_journey |
|
|
349
|
+
| `user_journey_has_journey_step` | user_journey | journey_step |
|
|
350
|
+
| `user_flow_has_screen` | user_flow | screen |
|
|
351
|
+
| `screen_has_design_component` | screen | design_component |
|
|
352
|
+
| `design_component_has_design_token` | design_component | design_token |
|
|
353
|
+
| `feature_has_wireframe` | feature | wireframe |
|
|
354
|
+
| `wireframe_has_prototype` | wireframe | prototype |
|
|
355
|
+
| `feature_has_user_flow` | feature | user_flow |
|
|
356
|
+
|
|
357
|
+
### Engineering
|
|
358
|
+
|
|
359
|
+
| Edge Type | From | To |
|
|
360
|
+
|---|---|---|
|
|
361
|
+
| `feature_has_service` | feature | service |
|
|
362
|
+
| `service_has_api_contract` | service | api_contract |
|
|
363
|
+
| `service_has_database_schema` | service | database_schema |
|
|
364
|
+
| `service_has_library_dependency` | service | library_dependency |
|
|
365
|
+
| `feature_has_feature_flag` | feature | feature_flag |
|
|
366
|
+
| `service_has_decision` | service | decision (with `layer: "engineering"`) |
|
|
367
|
+
| `service_has_technical_debt_item` | service | technical_debt_item |
|
|
368
|
+
|
|
369
|
+
### Growth
|
|
370
|
+
|
|
371
|
+
| Edge Type | From | To |
|
|
372
|
+
|---|---|---|
|
|
373
|
+
| `funnel_has_funnel_step` | funnel | funnel_step |
|
|
374
|
+
| `acquisition_channel_feeds_funnel` | acquisition_channel | funnel |
|
|
375
|
+
| `growth_campaign_targets_acquisition_channel` | growth_campaign | acquisition_channel |
|
|
376
|
+
| `cohort_measured_by_metric` | cohort | metric |
|
|
377
|
+
| `growth_loop_has_experiment` | growth_loop | experiment (with `experiment_type: "growth"`) |
|
|
378
|
+
| `experiment_produces_learning` | experiment | learning |
|
|
379
|
+
|
|
380
|
+
### Business Model
|
|
381
|
+
|
|
382
|
+
| Edge Type | From | To |
|
|
383
|
+
|---|---|---|
|
|
384
|
+
| `business_model_has_value_proposition` | business_model | value_proposition |
|
|
385
|
+
| `business_model_has_revenue_stream` | business_model | revenue_stream |
|
|
386
|
+
| `business_model_has_cost_structure` | business_model | cost_structure |
|
|
387
|
+
| `business_model_has_partnership` | business_model | partnership |
|
|
388
|
+
| `value_proposition_targets_persona` | value_proposition | persona |
|
|
389
|
+
| `revenue_stream_has_pricing_tier` | revenue_stream | pricing_tier |
|
|
390
|
+
| `pricing_tier_has_unit_economics` | pricing_tier | unit_economics |
|
|
391
|
+
|
|
392
|
+
### Go-To-Market
|
|
393
|
+
|
|
394
|
+
| Edge Type | From | To |
|
|
395
|
+
|---|---|---|
|
|
396
|
+
| `gtm_strategy_has_ideal_customer_profile` | gtm_strategy | ideal_customer_profile |
|
|
397
|
+
| `gtm_strategy_has_positioning` | gtm_strategy | positioning |
|
|
398
|
+
| `gtm_strategy_has_messaging` | gtm_strategy | messaging |
|
|
399
|
+
| `gtm_strategy_has_launch` | gtm_strategy | launch |
|
|
400
|
+
| `launch_has_release` | launch | release |
|
|
401
|
+
| `positioning_has_competitive_battle_card` | positioning | competitive_battle_card |
|
|
402
|
+
| `competitive_battle_card_references_competitor` | competitive_battle_card | competitor |
|
|
403
|
+
|
|
404
|
+
### Team & Organisation
|
|
405
|
+
|
|
406
|
+
| Edge Type | From | To |
|
|
407
|
+
|---|---|---|
|
|
408
|
+
| `team_has_role` | team | role |
|
|
409
|
+
| `team_has_stakeholder` | team | stakeholder |
|
|
410
|
+
| `team_has_retrospective` | team | retrospective |
|
|
411
|
+
| `team_has_dependency` | team | dependency |
|
|
412
|
+
|
|
413
|
+
### Data & Analytics
|
|
414
|
+
|
|
415
|
+
| Edge Type | From | To |
|
|
416
|
+
|---|---|---|
|
|
417
|
+
| `metric_drives_metric` | metric (KPI) | metric (definition) |
|
|
418
|
+
| `data_source_defines_metric` | data_source | metric |
|
|
419
|
+
| `metric_has_event_schema` | metric | event_schema |
|
|
420
|
+
| `dashboard_tracks_metric` | dashboard | metric |
|
|
421
|
+
| `experiment_produces_learning` | experiment (with `experiment_type: "ab_test"`) | learning |
|
|
422
|
+
|
|
423
|
+
### DevOps & Platform
|
|
424
|
+
|
|
425
|
+
| Edge Type | From | To |
|
|
426
|
+
|---|---|---|
|
|
427
|
+
| `service_has_service_level_indicator` | service | service_level_indicator |
|
|
428
|
+
| `service_level_objective_measured_by_service_level_indicator` | service_level_objective | service_level_indicator |
|
|
429
|
+
| `service_has_monitor` | service | monitor |
|
|
430
|
+
| `incident_has_postmortem` | incident | postmortem |
|
|
431
|
+
| `postmortem_produces_runbook` | postmortem | runbook |
|
|
432
|
+
|
|
433
|
+
### Security
|
|
434
|
+
|
|
435
|
+
| Edge Type | From | To |
|
|
436
|
+
|---|---|---|
|
|
437
|
+
| `service_has_threat_model` | service | threat_model |
|
|
438
|
+
| `threat_model_has_vulnerability` | threat_model | vulnerability |
|
|
439
|
+
| `vulnerability_has_security_control` | vulnerability | security_control |
|
|
440
|
+
|
|
441
|
+
### QA & Testing
|
|
442
|
+
|
|
443
|
+
| Edge Type | From | To |
|
|
444
|
+
|---|---|---|
|
|
445
|
+
| `feature_has_test_suite` | feature | test_suite |
|
|
446
|
+
| `test_suite_has_test_case` | test_suite | test_case |
|
|
447
|
+
| `release_has_qa_session` | release | qa_session |
|
|
448
|
+
|
|
449
|
+
### Feedback & VoC
|
|
450
|
+
|
|
451
|
+
| Edge Type | From | To |
|
|
452
|
+
|---|---|---|
|
|
453
|
+
| `feature_request_informs_opportunity` | feature_request | opportunity |
|
|
454
|
+
| `feedback_theme_has_feature_request` | feedback_theme | feature_request |
|
|
455
|
+
| `nps_campaign_produces_feedback_theme` | nps_campaign | feedback_theme |
|
|
456
|
+
| `beta_program_produces_learning` | beta_program | learning |
|
|
457
|
+
|
|
458
|
+
### Pricing & Packaging
|
|
459
|
+
|
|
460
|
+
| Edge Type | From | To |
|
|
461
|
+
|---|---|---|
|
|
462
|
+
| `pricing_strategy_has_experiment` | pricing_strategy | experiment (with `experiment_type: "pricing"`) |
|
|
463
|
+
| `pricing_strategy_has_pricing_tier` | pricing_strategy | pricing_tier |
|
|
464
|
+
| `pricing_tier_has_trial_config` | pricing_tier | trial_config |
|
|
465
|
+
|
|
466
|
+
### AI/ML Operations
|
|
467
|
+
|
|
468
|
+
| Edge Type | From | To |
|
|
469
|
+
|---|---|---|
|
|
470
|
+
| `ai_model_has_prompt_version` | ai_model | prompt_version |
|
|
471
|
+
| `ai_model_has_eval_benchmark` | ai_model | eval_benchmark |
|
|
472
|
+
| `eval_benchmark_produces_learning` | eval_benchmark | learning |
|
|
473
|
+
|
|
474
|
+
### Portfolio
|
|
475
|
+
|
|
476
|
+
| Edge Type | From | To |
|
|
477
|
+
|---|---|---|
|
|
478
|
+
| `organization_has_portfolio` | organization | portfolio |
|
|
479
|
+
| `portfolio_has_product_area` | portfolio | product_area |
|
|
480
|
+
| `product_area_has_product` | product_area | product |
|
|
481
|
+
|