@synap-core/workspace-templates 0.5.0 → 0.6.1
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/dist/index.d.ts +734 -17
- package/dist/index.js +25031 -20
- package/dist/index.js.map +1 -0
- package/package.json +7 -5
- package/src/agent-fleet.yaml +16 -8
- package/src/blockchain-ecosystem.yaml +372 -0
- package/src/catalog.test.ts +156 -0
- package/src/catalog.ts +285 -0
- package/src/communication.yaml +689 -0
- package/src/content-os.yaml +252 -771
- package/src/crm.yaml +181 -2071
- package/src/define.ts +292 -6
- package/src/dev-dashboard.yaml +3 -0
- package/src/ecosystem.yaml +478 -0
- package/src/enterprise-os.yaml +183 -0
- package/src/foundation.yaml +226 -0
- package/src/grants.yaml +1096 -0
- package/src/hr.yaml +6 -0
- package/src/index.ts +32 -5
- package/src/internal-runbook.yaml +499 -0
- package/src/legal.yaml +6 -6
- package/src/marketing.yaml +48 -12
- package/src/operations.yaml +146 -420
- package/src/social.yaml +246 -0
- package/src/templates.ts +12812 -12260
- package/src/the-arch.yaml +182 -0
- package/src/types.ts +105 -0
- package/dist/define.d.ts +0 -97
- package/dist/define.d.ts.map +0 -1
- package/dist/define.js +0 -91
- package/dist/index.d.ts.map +0 -1
- package/dist/templates.d.ts +0 -7
- package/dist/templates.d.ts.map +0 -1
- package/dist/templates.js +0 -24237
- package/dist/types.d.ts +0 -350
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -8
- package/src/radar.yaml +0 -297
|
@@ -0,0 +1,478 @@
|
|
|
1
|
+
# Ecosystem workspace template
|
|
2
|
+
# The BASE market-graph domain: the players you operate around (partners,
|
|
3
|
+
# competitors, companies, people), the segments and trends that matter, and —
|
|
4
|
+
# the net-new value — the TYPED RELATIONSHIPS between actors (who partners with,
|
|
5
|
+
# competes with, invested in, integrates with whom).
|
|
6
|
+
# Merges + supersedes the old Radar template (carries its market-segment, trend,
|
|
7
|
+
# inspiration kinds, its competitor role, and its graph "Radar Map" view forward).
|
|
8
|
+
|
|
9
|
+
meta:
|
|
10
|
+
slug: ecosystem
|
|
11
|
+
name: Ecosystem
|
|
12
|
+
description: Map the market you operate in — the partners, competitors, and players, the segments and trends, and the relationships between them.
|
|
13
|
+
icon: radar
|
|
14
|
+
color: "#0EA5E9"
|
|
15
|
+
tags: [ecosystem, market, partners, competitors, graph]
|
|
16
|
+
isPublic: true
|
|
17
|
+
|
|
18
|
+
# SSOT ordering guarantee — this template REFERENCES foundation's pod-wide
|
|
19
|
+
# shared `partner` role. The apply engine seeds a shared profile's pod-wide BASE
|
|
20
|
+
# property body from whichever template creates it FIRST, and adds a REUSING
|
|
21
|
+
# template's extra props as workspace OVERLAYS. Requiring foundation makes the
|
|
22
|
+
# resolver install it first (deps-first), so the base is always foundation's
|
|
23
|
+
# SSOT body and never this template's. `require`, not `compose`: foundation is a
|
|
24
|
+
# real workspace, not an overlay. (`competitor` is owned HERE — not foundation's.)
|
|
25
|
+
dependencies:
|
|
26
|
+
- slug: foundation
|
|
27
|
+
kind: workspace
|
|
28
|
+
relation: require
|
|
29
|
+
reason: "Provides the pod-wide partner role vocabulary this workspace reuses."
|
|
30
|
+
|
|
31
|
+
workspace:
|
|
32
|
+
name: Ecosystem
|
|
33
|
+
description: Map the market you operate in — the partners, competitors, and players, the segments and trends, and the relationships between them.
|
|
34
|
+
subtype: ecosystem
|
|
35
|
+
visibility: pod_visible
|
|
36
|
+
capabilities:
|
|
37
|
+
- ecosystem.actors
|
|
38
|
+
- ecosystem.graph
|
|
39
|
+
- ecosystem.segments
|
|
40
|
+
sourceRoles:
|
|
41
|
+
ecosystem: provider
|
|
42
|
+
|
|
43
|
+
profiles:
|
|
44
|
+
# ── Actors ────────────────────────────────────────────────────────────────
|
|
45
|
+
# The pod-wide person and company kinds — declared minimally here so facets
|
|
46
|
+
# (competitor/partner) and actor↔actor relations resolve. Kept light on
|
|
47
|
+
# purpose: this is the base agnostic identity, not a full CRM record.
|
|
48
|
+
- slug: person
|
|
49
|
+
displayName: Person
|
|
50
|
+
icon: user
|
|
51
|
+
color: amber
|
|
52
|
+
description: A person in the ecosystem — a founder, operator, or contact.
|
|
53
|
+
properties:
|
|
54
|
+
- slug: email
|
|
55
|
+
label: Email
|
|
56
|
+
valueType: string
|
|
57
|
+
inputType: email
|
|
58
|
+
- slug: notes
|
|
59
|
+
label: Notes
|
|
60
|
+
valueType: string
|
|
61
|
+
inputType: textarea
|
|
62
|
+
|
|
63
|
+
- slug: company
|
|
64
|
+
displayName: Company
|
|
65
|
+
icon: building-2
|
|
66
|
+
color: "#10B981"
|
|
67
|
+
description: A company in the ecosystem — a player you operate around.
|
|
68
|
+
properties:
|
|
69
|
+
- slug: website
|
|
70
|
+
label: Website
|
|
71
|
+
valueType: string
|
|
72
|
+
inputType: url
|
|
73
|
+
- slug: industry
|
|
74
|
+
label: Industry
|
|
75
|
+
valueType: string
|
|
76
|
+
inputType: text
|
|
77
|
+
- slug: notes
|
|
78
|
+
label: Notes
|
|
79
|
+
valueType: string
|
|
80
|
+
inputType: textarea
|
|
81
|
+
|
|
82
|
+
# ── Market structure (carried verbatim from Radar) ──────────────────────────
|
|
83
|
+
- slug: market-segment
|
|
84
|
+
displayName: Market Segment
|
|
85
|
+
icon: pie-chart
|
|
86
|
+
color: blue
|
|
87
|
+
description: A slice of the market with its own size, maturity, and dynamics.
|
|
88
|
+
properties:
|
|
89
|
+
- slug: description
|
|
90
|
+
label: Description
|
|
91
|
+
valueType: string
|
|
92
|
+
inputType: textarea
|
|
93
|
+
- slug: tam
|
|
94
|
+
label: TAM
|
|
95
|
+
valueType: string
|
|
96
|
+
inputType: text
|
|
97
|
+
- slug: sam
|
|
98
|
+
label: SAM
|
|
99
|
+
valueType: string
|
|
100
|
+
inputType: text
|
|
101
|
+
- slug: som
|
|
102
|
+
label: SOM
|
|
103
|
+
valueType: string
|
|
104
|
+
inputType: text
|
|
105
|
+
- slug: ocean
|
|
106
|
+
label: Ocean
|
|
107
|
+
valueType: string
|
|
108
|
+
inputType: select
|
|
109
|
+
enumValues: [blue, red]
|
|
110
|
+
- slug: maturity
|
|
111
|
+
label: Maturity
|
|
112
|
+
valueType: string
|
|
113
|
+
inputType: select
|
|
114
|
+
enumValues: [emerging, growing, mature, declining]
|
|
115
|
+
|
|
116
|
+
- slug: trend
|
|
117
|
+
displayName: Trend
|
|
118
|
+
icon: trending-up
|
|
119
|
+
color: violet
|
|
120
|
+
description: A directional shift in the market, tech, or behavior worth tracking.
|
|
121
|
+
properties:
|
|
122
|
+
- slug: description
|
|
123
|
+
label: Description
|
|
124
|
+
valueType: string
|
|
125
|
+
inputType: textarea
|
|
126
|
+
- slug: direction
|
|
127
|
+
label: Direction
|
|
128
|
+
valueType: string
|
|
129
|
+
inputType: select
|
|
130
|
+
enumValues: [rising, steady, fading]
|
|
131
|
+
- slug: sources
|
|
132
|
+
label: Sources
|
|
133
|
+
valueType: array
|
|
134
|
+
inputType: text
|
|
135
|
+
- slug: relevance
|
|
136
|
+
label: Relevance
|
|
137
|
+
valueType: string
|
|
138
|
+
inputType: select
|
|
139
|
+
enumValues: [low, medium, high]
|
|
140
|
+
constraints: { defaultValue: medium }
|
|
141
|
+
|
|
142
|
+
- slug: inspiration
|
|
143
|
+
displayName: Inspiration
|
|
144
|
+
icon: sparkles
|
|
145
|
+
color: amber
|
|
146
|
+
description: A brand, founder, product, or campaign worth learning from.
|
|
147
|
+
properties:
|
|
148
|
+
- slug: kind
|
|
149
|
+
label: Kind
|
|
150
|
+
valueType: string
|
|
151
|
+
inputType: select
|
|
152
|
+
enumValues: [brand, founder, product, campaign]
|
|
153
|
+
- slug: why
|
|
154
|
+
label: Why
|
|
155
|
+
valueType: string
|
|
156
|
+
inputType: textarea
|
|
157
|
+
- slug: url
|
|
158
|
+
label: URL
|
|
159
|
+
valueType: string
|
|
160
|
+
inputType: url
|
|
161
|
+
|
|
162
|
+
# ── Market event (NEW) ──────────────────────────────────────────────────────
|
|
163
|
+
- slug: ecosystem-event
|
|
164
|
+
displayName: Ecosystem Event
|
|
165
|
+
icon: zap
|
|
166
|
+
color: orange
|
|
167
|
+
description: A notable market event — a raise, partnership, launch, acquisition, or listing.
|
|
168
|
+
properties:
|
|
169
|
+
- slug: event-type
|
|
170
|
+
label: Type
|
|
171
|
+
valueType: string
|
|
172
|
+
inputType: select
|
|
173
|
+
enumValues: [raise, partnership, launch, acquisition, listing, conference, other]
|
|
174
|
+
- slug: event-date
|
|
175
|
+
label: Date
|
|
176
|
+
valueType: date
|
|
177
|
+
inputType: date
|
|
178
|
+
- slug: event-actor
|
|
179
|
+
label: Actor
|
|
180
|
+
valueType: entity_id
|
|
181
|
+
targetProfileSlug: company
|
|
182
|
+
inputType: entity_select
|
|
183
|
+
- slug: event-summary
|
|
184
|
+
label: Summary
|
|
185
|
+
valueType: string
|
|
186
|
+
inputType: textarea
|
|
187
|
+
- slug: event-url
|
|
188
|
+
label: URL
|
|
189
|
+
valueType: string
|
|
190
|
+
inputType: url
|
|
191
|
+
- slug: event-impact
|
|
192
|
+
label: Impact
|
|
193
|
+
valueType: string
|
|
194
|
+
inputType: select
|
|
195
|
+
enumValues: [low, medium, high]
|
|
196
|
+
|
|
197
|
+
# ── Actor roles (facets — the generic hats an actor plays) ──────────────────
|
|
198
|
+
# Competitor: carried verbatim from Radar.
|
|
199
|
+
- slug: competitor
|
|
200
|
+
displayName: Competitor
|
|
201
|
+
icon: crosshair
|
|
202
|
+
color: red
|
|
203
|
+
description: A rival or alternative a buyer would compare you to.
|
|
204
|
+
# Shared like the other actor roles (partner/client/sponsor): defined once,
|
|
205
|
+
# pod-wide, so any workspace that needs the hat reuses THIS row + a grant
|
|
206
|
+
# rather than forking a workspace-scoped twin.
|
|
207
|
+
scope: shared
|
|
208
|
+
profileKind: role
|
|
209
|
+
applicableKinds:
|
|
210
|
+
- company
|
|
211
|
+
properties:
|
|
212
|
+
- slug: positioning
|
|
213
|
+
label: Positioning
|
|
214
|
+
valueType: string
|
|
215
|
+
inputType: textarea
|
|
216
|
+
- slug: strengths
|
|
217
|
+
label: Strengths
|
|
218
|
+
valueType: string
|
|
219
|
+
inputType: textarea
|
|
220
|
+
- slug: weaknesses
|
|
221
|
+
label: Weaknesses
|
|
222
|
+
valueType: string
|
|
223
|
+
inputType: textarea
|
|
224
|
+
- slug: pricing
|
|
225
|
+
label: Pricing
|
|
226
|
+
valueType: string
|
|
227
|
+
inputType: text
|
|
228
|
+
- slug: url
|
|
229
|
+
label: URL
|
|
230
|
+
valueType: string
|
|
231
|
+
inputType: url
|
|
232
|
+
- slug: status
|
|
233
|
+
label: Status
|
|
234
|
+
valueType: string
|
|
235
|
+
inputType: select
|
|
236
|
+
enumValues: [watching, active-threat, adjacent, archived]
|
|
237
|
+
constraints: { defaultValue: watching }
|
|
238
|
+
|
|
239
|
+
# Partner (shared ecosystem role — SSOT is foundation.yaml) ─────────────────
|
|
240
|
+
# `scope: shared` dedups to the ONE pod-wide `partner` profile seeded by
|
|
241
|
+
# foundation; provisioning grants THIS workspace access to it (SHARED profiles
|
|
242
|
+
# are grant-gated, so the reference is required). Shapes match foundation
|
|
243
|
+
# verbatim, so no property drift.
|
|
244
|
+
- slug: partner
|
|
245
|
+
displayName: Partner
|
|
246
|
+
icon: handshake
|
|
247
|
+
color: teal
|
|
248
|
+
description: A partner relationship — both a referral source and a co-delivery collaborator, distinguished by partner type.
|
|
249
|
+
scope: shared
|
|
250
|
+
profileKind: role
|
|
251
|
+
applicableKinds:
|
|
252
|
+
- company
|
|
253
|
+
- person
|
|
254
|
+
properties:
|
|
255
|
+
- slug: partnerStatus
|
|
256
|
+
label: Status
|
|
257
|
+
valueType: string
|
|
258
|
+
inputType: select
|
|
259
|
+
enumValues:
|
|
260
|
+
- prospect
|
|
261
|
+
- active
|
|
262
|
+
- paused
|
|
263
|
+
- churned
|
|
264
|
+
- slug: partnerType
|
|
265
|
+
label: Partner Type
|
|
266
|
+
valueType: string
|
|
267
|
+
inputType: select
|
|
268
|
+
enumValues:
|
|
269
|
+
- referral
|
|
270
|
+
- co-delivery
|
|
271
|
+
- both
|
|
272
|
+
- slug: accountManager
|
|
273
|
+
label: Account Manager
|
|
274
|
+
valueType: string
|
|
275
|
+
inputType: text
|
|
276
|
+
- slug: engagementStartDate
|
|
277
|
+
label: Engagement Start
|
|
278
|
+
valueType: date
|
|
279
|
+
inputType: date
|
|
280
|
+
- slug: satisfactionScore
|
|
281
|
+
label: Satisfaction
|
|
282
|
+
valueType: number
|
|
283
|
+
inputType: number
|
|
284
|
+
- slug: lifetimeValue
|
|
285
|
+
label: Lifetime Value
|
|
286
|
+
valueType: number
|
|
287
|
+
inputType: number
|
|
288
|
+
- slug: notes
|
|
289
|
+
label: Notes
|
|
290
|
+
valueType: string
|
|
291
|
+
inputType: textarea
|
|
292
|
+
- slug: contractValue
|
|
293
|
+
label: Contract Value
|
|
294
|
+
valueType: number
|
|
295
|
+
inputType: number
|
|
296
|
+
- slug: renewalDate
|
|
297
|
+
label: Renewal Date
|
|
298
|
+
valueType: date
|
|
299
|
+
inputType: date
|
|
300
|
+
- slug: healthScore
|
|
301
|
+
label: Health
|
|
302
|
+
valueType: string
|
|
303
|
+
inputType: select
|
|
304
|
+
enumValues:
|
|
305
|
+
- healthy
|
|
306
|
+
- at_risk
|
|
307
|
+
- critical
|
|
308
|
+
|
|
309
|
+
views:
|
|
310
|
+
- name: Ecosystem Map
|
|
311
|
+
slug: ecosystem-map
|
|
312
|
+
type: graph
|
|
313
|
+
scopeProfileSlugs: [company, market-segment, trend, ecosystem-event]
|
|
314
|
+
description: The market landscape as a connected map — actors, segments, trends, and events, with the edges between them.
|
|
315
|
+
defaultView: true
|
|
316
|
+
- name: Segments
|
|
317
|
+
slug: segments
|
|
318
|
+
type: table
|
|
319
|
+
scopeProfileSlug: market-segment
|
|
320
|
+
description: Market slices with rough size, ocean, and maturity.
|
|
321
|
+
config:
|
|
322
|
+
columns: [title, ocean, tam, maturity]
|
|
323
|
+
- name: Trends
|
|
324
|
+
slug: trends
|
|
325
|
+
type: table
|
|
326
|
+
scopeProfileSlug: trend
|
|
327
|
+
description: Directional shifts to track, by relevance.
|
|
328
|
+
config:
|
|
329
|
+
columns: [title, direction, relevance, description]
|
|
330
|
+
- name: Events
|
|
331
|
+
slug: events
|
|
332
|
+
type: table
|
|
333
|
+
scopeProfileSlug: ecosystem-event
|
|
334
|
+
description: Notable market events — raises, partnerships, launches, and more.
|
|
335
|
+
config:
|
|
336
|
+
columns: [title, event-type, event-date, event-impact]
|
|
337
|
+
|
|
338
|
+
# Schema-level relations — the market GRAPH. This is the net-new value: actor↔actor
|
|
339
|
+
# edges are first-class (source and target can both be `company`), so the Ecosystem
|
|
340
|
+
# Map and relation picker carry domain-specific links from day one.
|
|
341
|
+
entityLinks:
|
|
342
|
+
- sourceProfileSlug: company
|
|
343
|
+
targetProfileSlug: company
|
|
344
|
+
type: partners_with
|
|
345
|
+
label: Partners with
|
|
346
|
+
- sourceProfileSlug: company
|
|
347
|
+
targetProfileSlug: company
|
|
348
|
+
type: competes_with
|
|
349
|
+
label: Competes with
|
|
350
|
+
- sourceProfileSlug: company
|
|
351
|
+
targetProfileSlug: company
|
|
352
|
+
type: invested_in
|
|
353
|
+
label: Invested in
|
|
354
|
+
- sourceProfileSlug: company
|
|
355
|
+
targetProfileSlug: company
|
|
356
|
+
type: integrates_with
|
|
357
|
+
label: Integrates with
|
|
358
|
+
- sourceProfileSlug: competitor
|
|
359
|
+
targetProfileSlug: market-segment
|
|
360
|
+
type: competes_in
|
|
361
|
+
label: Competes in
|
|
362
|
+
- sourceProfileSlug: trend
|
|
363
|
+
targetProfileSlug: market-segment
|
|
364
|
+
type: shapes
|
|
365
|
+
label: Shapes
|
|
366
|
+
- sourceProfileSlug: ecosystem-event
|
|
367
|
+
targetProfileSlug: company
|
|
368
|
+
type: involves
|
|
369
|
+
label: Involves
|
|
370
|
+
|
|
371
|
+
onboarding:
|
|
372
|
+
goal: >
|
|
373
|
+
Map the real ecosystem — the key players (companies and people), who partners
|
|
374
|
+
and competes with whom, and the segments and trends that matter — so strategy
|
|
375
|
+
is grounded in the actual market, not a vague "the market".
|
|
376
|
+
framing: |
|
|
377
|
+
THE ECOSYSTEM LEAD: Act as a sharp ecosystem lead who maps the market
|
|
378
|
+
landscape AND the relationships inside it. Push for REAL named players — not
|
|
379
|
+
"the incumbents", but the actual companies — and for the concrete edges
|
|
380
|
+
between them: who partners with whom, who competes, who invested in whom.
|
|
381
|
+
A map with no edges is just a list; the value is in the relationships.
|
|
382
|
+
expertise:
|
|
383
|
+
starters:
|
|
384
|
+
- >
|
|
385
|
+
Name the actors, then draw the edges. A list of logos tells strategy
|
|
386
|
+
nothing; the market is a GRAPH. For every company you log, propose at least
|
|
387
|
+
one real relationship — partners_with, competes_with, invested_in,
|
|
388
|
+
integrates_with — because the edges are where the leverage and the threats
|
|
389
|
+
live.
|
|
390
|
+
- >
|
|
391
|
+
Map the CATEGORY, not just named rivals. Buyers compare across tiers:
|
|
392
|
+
direct competitors, adjacent tools that solve the same job differently, and
|
|
393
|
+
the status quo ("a spreadsheet", "do nothing"). Attach the competitor role
|
|
394
|
+
to real companies and place each one in the segment it competes in.
|
|
395
|
+
- >
|
|
396
|
+
Separate players from structure. Companies and people are the ACTORS;
|
|
397
|
+
segments and trends are the STRUCTURE they move within. Anchor each trend to
|
|
398
|
+
a direction and a "so what for us", and each segment to a rough size and
|
|
399
|
+
ocean — an untimed "AI is big" tells strategy nothing.
|
|
400
|
+
blindSpots:
|
|
401
|
+
- >
|
|
402
|
+
"We have no competitors" is a red flag, not a moat — it usually means the
|
|
403
|
+
category is undefined or the buyer's real alternative (a manual workaround)
|
|
404
|
+
hasn't been named. Push to name what a buyer does TODAY instead of buying.
|
|
405
|
+
- >
|
|
406
|
+
Founders over-watch the loud incumbent and miss the fast-moving insurgent
|
|
407
|
+
one tier down, and they log companies with no relationships at all. Surface
|
|
408
|
+
the insurgents, and force at least one real edge per key player.
|
|
409
|
+
- >
|
|
410
|
+
A trend or event with no stance is just a headline. Every trend needs a
|
|
411
|
+
direction (rising/steady/fading) and a "so what"; every logged event needs
|
|
412
|
+
an actor and an impact. Force the meaning, not just the mention.
|
|
413
|
+
bar: >
|
|
414
|
+
The map reads like a real ecosystem: named companies placed in their segments,
|
|
415
|
+
real edges between them (who partners, competes, invested), and each trend
|
|
416
|
+
carrying a direction and a "so what" — so a strategist can see the alliances,
|
|
417
|
+
the threats, and the open lane, not just a pile of logos.
|
|
418
|
+
collect:
|
|
419
|
+
- profileSlug: company
|
|
420
|
+
what: The real companies in your ecosystem — the players you operate around.
|
|
421
|
+
cardinality: several
|
|
422
|
+
keyFields: [industry, website]
|
|
423
|
+
- profileSlug: market-segment
|
|
424
|
+
what: The market slices you play in, with rough size and ocean.
|
|
425
|
+
cardinality: few
|
|
426
|
+
keyFields: [ocean, tam]
|
|
427
|
+
- profileSlug: trend
|
|
428
|
+
what: Directional shifts in tech, market, or behavior that affect you.
|
|
429
|
+
cardinality: few
|
|
430
|
+
keyFields: [direction, relevance]
|
|
431
|
+
openingQuestions:
|
|
432
|
+
- "Who are the key players in your space — the 3-5 companies that matter most?"
|
|
433
|
+
- "How do they relate — who partners with, competes with, or invested in whom?"
|
|
434
|
+
- "Which market segment matters most right now, and what trend is reshaping it?"
|
|
435
|
+
doneWhen: A few companies captured, with at least one relationship edge between them, plus one market segment.
|
|
436
|
+
|
|
437
|
+
app:
|
|
438
|
+
kind: stored
|
|
439
|
+
cellKey: entity-detail
|
|
440
|
+
|
|
441
|
+
layout:
|
|
442
|
+
defaultView: Ecosystem Map
|
|
443
|
+
defaultApp: null
|
|
444
|
+
pinnedApps: [dashboard, data]
|
|
445
|
+
sidebarItems:
|
|
446
|
+
- kind: view
|
|
447
|
+
viewName: Ecosystem Map
|
|
448
|
+
label: Ecosystem Map
|
|
449
|
+
icon: radar
|
|
450
|
+
- kind: view
|
|
451
|
+
viewName: Segments
|
|
452
|
+
label: Segments
|
|
453
|
+
icon: pie-chart
|
|
454
|
+
- kind: view
|
|
455
|
+
viewName: Trends
|
|
456
|
+
label: Trends
|
|
457
|
+
icon: trending-up
|
|
458
|
+
- kind: view
|
|
459
|
+
viewName: Events
|
|
460
|
+
label: Events
|
|
461
|
+
icon: zap
|
|
462
|
+
- kind: app
|
|
463
|
+
appId: data
|
|
464
|
+
label: Data
|
|
465
|
+
icon: database
|
|
466
|
+
|
|
467
|
+
bento:
|
|
468
|
+
viewName: Ecosystem Map
|
|
469
|
+
blocks:
|
|
470
|
+
- kind: view
|
|
471
|
+
viewName: Ecosystem Map
|
|
472
|
+
pos: { x: 0, y: 0, w: 8, h: 6 }
|
|
473
|
+
- kind: view
|
|
474
|
+
viewName: Segments
|
|
475
|
+
pos: { x: 8, y: 0, w: 4, h: 3 }
|
|
476
|
+
- kind: view
|
|
477
|
+
viewName: Trends
|
|
478
|
+
pos: { x: 8, y: 3, w: 4, h: 3 }
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
# Enterprise OS — the public operating system suite
|
|
2
|
+
# ==================================================
|
|
3
|
+
# A SUITE template: it stands up a whole company's public operating core in one
|
|
4
|
+
# install by REQUIRING its constituent workspaces (deps-first), then adds a thin
|
|
5
|
+
# "command tower" home of its own — a place to track the company's objectives
|
|
6
|
+
# across the lenses it just installed.
|
|
7
|
+
#
|
|
8
|
+
# What it composes (all public, all bundled):
|
|
9
|
+
# • foundation — strategic DNA (mission, audience, positioning, principles)
|
|
10
|
+
# • ecosystem — the market graph (partners, competitors, segments, trends)
|
|
11
|
+
# • operations — how the company runs (the operational lens)
|
|
12
|
+
# • crm — the pipeline (contacts, leads, clients, deals)
|
|
13
|
+
#
|
|
14
|
+
# It uses `require` (not `compose`): each constituent is a REAL workspace, not an
|
|
15
|
+
# overlay. Deps-first resolution installs foundation first (the SSOT role
|
|
16
|
+
# vocabulary provider), so every downstream lens reuses foundation's pod-wide
|
|
17
|
+
# roles rather than forking twins. Installing Enterprise OS a second time is
|
|
18
|
+
# idempotent — the resolver reuses existing constituent workspaces by slug.
|
|
19
|
+
|
|
20
|
+
meta:
|
|
21
|
+
slug: enterprise-os
|
|
22
|
+
name: Enterprise OS
|
|
23
|
+
description: Stand up a company's public operating core in one install — strategy, market, operations, and pipeline — plus a command tower to track objectives across them.
|
|
24
|
+
icon: layout-dashboard
|
|
25
|
+
color: "#4F46E5"
|
|
26
|
+
tags: [suite, enterprise, os, foundation, crm, operations, ecosystem]
|
|
27
|
+
isPublic: true
|
|
28
|
+
|
|
29
|
+
# Deps-first: foundation is the pod-wide role-vocabulary provider, so it must
|
|
30
|
+
# resolve before ecosystem/operations/crm reuse its shared roles. `require` (not
|
|
31
|
+
# `compose`): each is a standalone workspace, not an additive overlay.
|
|
32
|
+
dependencies:
|
|
33
|
+
- slug: foundation
|
|
34
|
+
kind: workspace
|
|
35
|
+
relation: require
|
|
36
|
+
reason: "Strategic DNA + the pod-wide role vocabulary (partner/client/lead) every other lens reuses. Must resolve first."
|
|
37
|
+
- slug: ecosystem
|
|
38
|
+
kind: workspace
|
|
39
|
+
relation: require
|
|
40
|
+
reason: "The market graph — the players, segments, and trends the company operates around."
|
|
41
|
+
- slug: operations
|
|
42
|
+
kind: workspace
|
|
43
|
+
relation: require
|
|
44
|
+
reason: "How the company runs — the operational lens."
|
|
45
|
+
- slug: crm
|
|
46
|
+
kind: workspace
|
|
47
|
+
relation: require
|
|
48
|
+
reason: "The pipeline — contacts, leads, clients, and deals."
|
|
49
|
+
|
|
50
|
+
workspace:
|
|
51
|
+
name: Enterprise OS
|
|
52
|
+
description: The command tower for the company operating system — track strategic objectives across the strategy, market, operations, and pipeline lenses this suite installs.
|
|
53
|
+
subtype: enterprise-os
|
|
54
|
+
visibility: pod_visible
|
|
55
|
+
sourceRoles:
|
|
56
|
+
strategy: consumer
|
|
57
|
+
|
|
58
|
+
profiles:
|
|
59
|
+
# The one native profile the command tower owns: a strategic objective the
|
|
60
|
+
# company is driving across the lenses this suite installs. Deliberately light
|
|
61
|
+
# — the depth lives in the constituent workspaces; this is the cross-cutting
|
|
62
|
+
# scoreboard that ties them together.
|
|
63
|
+
- slug: objective
|
|
64
|
+
displayName: Objective
|
|
65
|
+
icon: target
|
|
66
|
+
color: "#4F46E5"
|
|
67
|
+
description: A company objective the operating system is driving toward — the cross-cutting outcome the lenses serve.
|
|
68
|
+
properties:
|
|
69
|
+
- slug: outcome
|
|
70
|
+
label: Outcome
|
|
71
|
+
valueType: string
|
|
72
|
+
inputType: textarea
|
|
73
|
+
- slug: status
|
|
74
|
+
label: Status
|
|
75
|
+
valueType: string
|
|
76
|
+
inputType: select
|
|
77
|
+
enumValues: [on-track, at-risk, off-track, achieved]
|
|
78
|
+
constraints: { defaultValue: on-track }
|
|
79
|
+
- slug: horizon
|
|
80
|
+
label: Horizon
|
|
81
|
+
valueType: string
|
|
82
|
+
inputType: select
|
|
83
|
+
enumValues: [now, next, later]
|
|
84
|
+
constraints: { defaultValue: now }
|
|
85
|
+
- slug: owner
|
|
86
|
+
label: Owner
|
|
87
|
+
valueType: string
|
|
88
|
+
inputType: text
|
|
89
|
+
- slug: targetDate
|
|
90
|
+
label: Target Date
|
|
91
|
+
valueType: date
|
|
92
|
+
inputType: date
|
|
93
|
+
|
|
94
|
+
views:
|
|
95
|
+
- name: Objectives
|
|
96
|
+
slug: objectives
|
|
97
|
+
type: table
|
|
98
|
+
scopeProfileSlug: objective
|
|
99
|
+
description: The company's strategic objectives across every lens, by horizon and status.
|
|
100
|
+
defaultView: true
|
|
101
|
+
config:
|
|
102
|
+
columns: [title, status, horizon, owner, targetDate]
|
|
103
|
+
- name: Objective Board
|
|
104
|
+
slug: objective-board
|
|
105
|
+
type: kanban
|
|
106
|
+
scopeProfileSlug: objective
|
|
107
|
+
description: Objectives grouped by status — a running scoreboard for the operating system.
|
|
108
|
+
config:
|
|
109
|
+
groupBy: status
|
|
110
|
+
|
|
111
|
+
onboarding:
|
|
112
|
+
goal: >
|
|
113
|
+
Stand up the company's operating core and name the handful of strategic
|
|
114
|
+
objectives it is driving — so strategy, market, operations, and pipeline are
|
|
115
|
+
all in place and pointed at the same outcomes from day one.
|
|
116
|
+
framing: |
|
|
117
|
+
THE CHIEF OF STAFF: Act as a sharp chief of staff standing up the company OS.
|
|
118
|
+
The four lenses (foundation, ecosystem, operations, CRM) are already
|
|
119
|
+
installed — your job is to name the 3-5 objectives that cut across them, so
|
|
120
|
+
the operating system has a scoreboard, not just structure.
|
|
121
|
+
expertise:
|
|
122
|
+
starters:
|
|
123
|
+
- >
|
|
124
|
+
Name few, real objectives. An operating system with 20 objectives has
|
|
125
|
+
none; force the 3-5 that actually decide the year, each with an owner and
|
|
126
|
+
a horizon (now / next / later).
|
|
127
|
+
- >
|
|
128
|
+
Tie each objective to a lens. A good objective names where it lives —
|
|
129
|
+
pipeline growth (CRM), a market move (ecosystem), an operational fix
|
|
130
|
+
(operations), or a positioning shift (foundation) — so the scoreboard
|
|
131
|
+
maps to the structure underneath it.
|
|
132
|
+
blindSpots:
|
|
133
|
+
- >
|
|
134
|
+
Objectives with no owner and no date are wishes. Every one needs a single
|
|
135
|
+
owner and a target date, or it will not move.
|
|
136
|
+
- >
|
|
137
|
+
"Grow the business" is not an objective — it is a category. Push for the
|
|
138
|
+
specific outcome that would make this quarter a win.
|
|
139
|
+
bar: >
|
|
140
|
+
A short, honest scoreboard: 3-5 objectives, each owned, dated, placed on a
|
|
141
|
+
horizon, and tied to the lens that serves it — sitting on top of a fully
|
|
142
|
+
installed operating core.
|
|
143
|
+
collect:
|
|
144
|
+
- profileSlug: objective
|
|
145
|
+
what: The 3-5 strategic objectives the company is driving this horizon.
|
|
146
|
+
cardinality: few
|
|
147
|
+
keyFields: [status, horizon, owner]
|
|
148
|
+
openingQuestions:
|
|
149
|
+
- "What are the 3-5 objectives that will decide this year for the company?"
|
|
150
|
+
- "Who owns each one, and is it a now, next, or later horizon?"
|
|
151
|
+
doneWhen: A few objectives captured, each with an owner and a horizon.
|
|
152
|
+
|
|
153
|
+
app:
|
|
154
|
+
kind: stored
|
|
155
|
+
cellKey: entity-detail
|
|
156
|
+
|
|
157
|
+
layout:
|
|
158
|
+
defaultView: Objectives
|
|
159
|
+
defaultApp: null
|
|
160
|
+
pinnedApps: [dashboard, data]
|
|
161
|
+
sidebarItems:
|
|
162
|
+
- kind: view
|
|
163
|
+
viewName: Objectives
|
|
164
|
+
label: Objectives
|
|
165
|
+
icon: target
|
|
166
|
+
- kind: view
|
|
167
|
+
viewName: Objective Board
|
|
168
|
+
label: Board
|
|
169
|
+
icon: kanban-square
|
|
170
|
+
- kind: app
|
|
171
|
+
appId: data
|
|
172
|
+
label: Data
|
|
173
|
+
icon: database
|
|
174
|
+
|
|
175
|
+
bento:
|
|
176
|
+
viewName: Objectives
|
|
177
|
+
blocks:
|
|
178
|
+
- kind: view
|
|
179
|
+
viewName: Objectives
|
|
180
|
+
pos: { x: 0, y: 0, w: 8, h: 4 }
|
|
181
|
+
- kind: view
|
|
182
|
+
viewName: Objective Board
|
|
183
|
+
pos: { x: 8, y: 0, w: 4, h: 4 }
|