@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.
@@ -1,496 +1,222 @@
1
- # Operations workspace template — the company's OPERATING SYSTEM.
2
- # The head-of-ops / chief-of-staff layer: how the business actually runs day to
3
- # day — the documented procedures (SOPs), the recurring processes (workflows),
4
- # the tool stack and vendors behind them, the metrics/SLAs that keep them
5
- # honest, and the rituals/cadences that keep everyone aligned.
6
- # Provider of the `operations` domain. Validated against types.ts at build time.
1
+ # Operations workspace template — client-delivery domain.
2
+ # How client work gets delivered end to end: the engagements you're running, the
3
+ # deliverables due inside them, and the contracts that govern them. Consumes the `crm` domain, provides `operations`.
4
+ # Validated against types.ts at build time.
7
5
 
8
6
  meta:
9
7
  slug: operations
10
8
  name: Operations
11
- description: The company's operating system — SOPs, workflows, vendors, tools, metrics, and rituals that keep the business running.
12
- icon: settings-2
13
- color: "#64748B"
14
- tags: [operations, sops, vendors, workflows]
9
+ description: "Deliver client work end to end — the engagements you're running, the deliverables due inside them, and the contracts that govern them. Won deals from CRM hand off into engagements here."
10
+ icon: briefcase
11
+ color: "#0F766E"
12
+ tags: [operations, delivery, clients, engagements]
15
13
  isPublic: true
16
14
 
17
15
  workspace:
18
16
  name: Operations
19
- description: The operating layer of the company — documented procedures, recurring processes, the tool stack and vendors behind them, operational metrics, and the rituals that keep the team aligned.
20
- proposalId: operations-v1
17
+ description: "The client-delivery layer — active engagements, their deliverables, and the contracts that govern them."
21
18
  subtype: operations
22
- visibility: members
23
- workspaceType: operational
19
+ visibility: pod_visible
24
20
  capabilities:
25
- - operations.sops
26
- - operations.vendors
27
- - operations.workflows
21
+ - operations.engagements
22
+ - operations.deliverables
23
+ - operations.contracts
28
24
  sourceRoles:
25
+ crm: consumer
29
26
  operations: provider
30
27
 
31
28
  profiles:
32
- - slug: sop
33
- displayName: SOP
34
- icon: book-open
35
- color: "#64748B"
36
- description: "A standard operating procedure or runbook — the documented, repeatable way to do a thing."
37
- scope: WORKSPACE
29
+ - slug: engagement
30
+ displayName: Engagement
31
+ icon: briefcase
32
+ color: "#0F766E"
33
+ description: "A unit of client work — a project or retainer delivered for a company, with scope, dates, and value."
38
34
  properties:
39
- - slug: category
40
- label: Category
41
- valueType: string
42
- inputType: select
43
- enumValues: [Onboarding, Finance, People, IT, Support, Sales, Legal, Facilities, Other]
44
- - slug: sop-status
35
+ - slug: engagement-status
45
36
  label: Status
46
37
  valueType: string
47
38
  inputType: select
48
- enumValues: [Draft, Active, Needs Review, Deprecated]
49
- constraints: { defaultValue: Draft }
50
- - slug: owner
51
- label: Owner
52
- valueType: string
53
- inputType: text
54
- placeholder: Who owns this procedure?
55
- - slug: trigger
56
- label: When to run
57
- valueType: string
58
- inputType: textarea
59
- placeholder: What situation triggers this procedure?
60
- - slug: last-reviewed
61
- label: Last Reviewed
39
+ enumValues: [proposed, active, on-hold, completed, cancelled]
40
+ constraints: { defaultValue: proposed }
41
+ - slug: engagement-client
42
+ label: Client
43
+ valueType: entity_id
44
+ targetProfileSlug: company
45
+ inputType: entity_select
46
+ - slug: engagement-start
47
+ label: Start Date
48
+ valueType: date
49
+ inputType: date
50
+ - slug: engagement-end
51
+ label: End Date
62
52
  valueType: date
63
53
  inputType: date
64
- - slug: steps
65
- label: Steps
54
+ - slug: engagement-value
55
+ label: Value
56
+ valueType: number
57
+ inputType: number
58
+ - slug: engagement-scope
59
+ label: Scope
66
60
  valueType: string
67
61
  inputType: textarea
68
- placeholder: The step-by-step procedure...
69
-
70
- - slug: workflow
71
- displayName: Workflow
72
- icon: workflow
73
- color: "#0EA5E9"
74
- description: "A recurring business process — a repeatable flow with an owner, a cadence, and an input/output."
75
- scope: WORKSPACE
76
- properties:
77
- - slug: workflow-status
78
- label: Status
79
- valueType: string
80
- inputType: select
81
- enumValues: [Backlog, Active, Blocked, Optimizing, Retired]
82
- constraints: { defaultValue: Active }
83
- - slug: frequency
84
- label: Frequency
85
- valueType: string
86
- inputType: select
87
- enumValues: [Ad-hoc, Daily, Weekly, Monthly, Quarterly]
88
- - slug: owner
62
+ - slug: engagement-owner
89
63
  label: Owner
90
64
  valueType: string
91
65
  inputType: text
92
- placeholder: Process owner
93
- - slug: automation-level
94
- label: Automation
95
- valueType: string
96
- inputType: select
97
- enumValues: [Manual, Semi-automated, Automated]
98
- - slug: input
99
- label: Input
100
- valueType: string
101
- inputType: text
102
- placeholder: What kicks it off?
103
- - slug: output
104
- label: Output
66
+ - slug: engagement-notes
67
+ label: Notes
105
68
  valueType: string
106
- inputType: text
107
- placeholder: What it produces
69
+ inputType: textarea
108
70
 
109
- - slug: vendor
110
- displayName: Vendor
111
- icon: truck
112
- color: "#8B5CF6"
113
- description: "A supplier, contractor, or service provider the company pays and depends on."
114
- scope: WORKSPACE
71
+ - slug: deliverable
72
+ displayName: Deliverable
73
+ icon: package-check
74
+ color: "#0EA5E9"
75
+ description: "A concrete output owed inside an engagement — with a due date, an owner, and a status."
115
76
  properties:
116
- - slug: vendor-category
117
- label: Category
118
- valueType: string
119
- inputType: select
120
- enumValues: [Software, Service, Supplier, Contractor, Agency, Other]
121
- - slug: vendor-status
77
+ - slug: deliverable-status
122
78
  label: Status
123
79
  valueType: string
124
80
  inputType: select
125
- enumValues: [Active, Trial, Evaluating, Paused, Churned]
126
- constraints: { defaultValue: Active }
127
- - slug: owner
128
- label: Owner
129
- valueType: string
130
- inputType: text
131
- placeholder: Internal relationship owner
132
- - slug: monthly-cost
133
- label: "Monthly Cost (€)"
134
- valueType: number
135
- inputType: number
136
- placeholder: "0"
137
- - slug: renewal-date
138
- label: Renewal Date
81
+ enumValues: [not-started, in-progress, in-review, delivered, accepted]
82
+ constraints: { defaultValue: not-started }
83
+ - slug: deliverable-engagement
84
+ label: Engagement
85
+ valueType: entity_id
86
+ targetProfileSlug: engagement
87
+ inputType: entity_select
88
+ - slug: due-date
89
+ label: Due Date
90
+ valueType: date
91
+ inputType: date
92
+ - slug: delivered-date
93
+ label: Delivered Date
139
94
  valueType: date
140
95
  inputType: date
141
- - slug: website
142
- label: Website
96
+ - slug: deliverable-owner
97
+ label: Owner
143
98
  valueType: string
144
- inputType: url
145
- placeholder: "https://..."
146
- - slug: notes
99
+ inputType: text
100
+ - slug: deliverable-notes
147
101
  label: Notes
148
102
  valueType: string
149
103
  inputType: textarea
150
104
 
151
- - slug: tool
152
- displayName: Tool
153
- icon: wrench
154
- color: "#F59E0B"
155
- description: "A tool in the company stack — the software the team actually uses to get work done."
156
- scope: WORKSPACE
105
+ - slug: contract
106
+ displayName: Contract
107
+ icon: file-signature
108
+ color: "#8B5CF6"
109
+ description: "The agreement that governs an engagement — its status, value, term, and signed document."
157
110
  properties:
158
- - slug: tool-category
159
- label: Category
160
- valueType: string
161
- inputType: select
162
- enumValues: [Productivity, Comms, Finance, Sales, Marketing, Dev, Design, Data, HR, Other]
163
- - slug: tool-status
111
+ - slug: contract-status
164
112
  label: Status
165
113
  valueType: string
166
114
  inputType: select
167
- enumValues: [Active, Trial, Deprecated]
168
- constraints: { defaultValue: Active }
169
- - slug: owner
170
- label: Owner
171
- valueType: string
172
- inputType: text
173
- placeholder: Admin / owner
174
- - slug: seats
175
- label: Seats
176
- valueType: number
177
- inputType: number
178
- placeholder: "0"
179
- - slug: monthly-cost
180
- label: "Monthly Cost (€)"
115
+ enumValues: [draft, sent, signed, active, expired, terminated]
116
+ constraints: { defaultValue: draft }
117
+ - slug: contract-engagement
118
+ label: Engagement
119
+ valueType: entity_id
120
+ targetProfileSlug: engagement
121
+ inputType: entity_select
122
+ - slug: contract-value
123
+ label: Value
181
124
  valueType: number
182
125
  inputType: number
183
- placeholder: "0"
184
- - slug: url
185
- label: URL
186
- valueType: string
187
- inputType: url
188
- placeholder: "https://..."
189
-
190
- - slug: process-metric
191
- displayName: Metric
192
- icon: gauge
193
- color: "#10B981"
194
- description: "An operational SLA or KPI — a number the team commits to and tracks against a target."
195
- scope: WORKSPACE
196
- properties:
197
- - slug: metric-type
198
- label: Type
199
- valueType: string
200
- inputType: select
201
- enumValues: [SLA, KPI, Health]
202
- - slug: metric-status
203
- label: Status
204
- valueType: string
205
- inputType: select
206
- enumValues: [On Track, At Risk, Off Track]
207
- constraints: { defaultValue: On Track }
208
- - slug: target
209
- label: Target
210
- valueType: string
211
- inputType: text
212
- placeholder: e.g. < 4h, > 95%
213
- - slug: current
214
- label: Current
215
- valueType: string
216
- inputType: text
217
- placeholder: Latest reading
218
- - slug: cadence
219
- label: Cadence
220
- valueType: string
221
- inputType: select
222
- enumValues: [Daily, Weekly, Monthly, Quarterly]
223
- - slug: owner
224
- label: Owner
225
- valueType: string
226
- inputType: text
227
- placeholder: Who's accountable?
228
-
229
- - slug: ritual
230
- displayName: Ritual
231
- icon: repeat
232
- color: "#EC4899"
233
- description: "A recurring meeting or cadence — standups, reviews, retros, planning — that keeps the team aligned."
234
- scope: WORKSPACE
235
- properties:
236
- - slug: cadence
237
- label: Cadence
238
- valueType: string
239
- inputType: select
240
- enumValues: [Daily, Weekly, Biweekly, Monthly, Quarterly]
241
- - slug: ritual-date
242
- label: Next Occurrence
126
+ - slug: start-date
127
+ label: Start Date
243
128
  valueType: date
244
129
  inputType: date
245
- - slug: owner
246
- label: Facilitator
247
- valueType: string
248
- inputType: text
249
- placeholder: Who runs it?
250
- - slug: attendees
251
- label: Attendees
130
+ - slug: end-date
131
+ label: End Date
132
+ valueType: date
133
+ inputType: date
134
+ - slug: contract-url
135
+ label: Document
252
136
  valueType: string
253
- inputType: text
254
- placeholder: Who attends?
255
- - slug: duration-min
256
- label: Duration (min)
257
- valueType: number
258
- inputType: number
259
- placeholder: "30"
260
- - slug: agenda
261
- label: Agenda
137
+ inputType: url
138
+ - slug: contract-notes
139
+ label: Notes
262
140
  valueType: string
263
141
  inputType: textarea
264
- placeholder: Standing agenda...
265
142
 
143
+ # CURATED views — the delivery motion, not one per profile
266
144
  views:
267
- - name: SOPs
268
- slug: sops
269
- type: table
270
- scopeProfileSlug: sop
271
- description: The documented procedures, by category and review status.
272
- defaultView: true
273
- config:
274
- visibleColumns: [category, sop-status, owner, last-reviewed]
275
- defaultSort: { field: last-reviewed, direction: asc }
276
- - name: Workflows
277
- slug: workflows
145
+ - name: Engagements
146
+ slug: engagements
278
147
  type: kanban
279
- scopeProfileSlug: workflow
280
- groupBy: workflow-status
281
- description: Recurring processes on a board by status.
282
- config:
283
- groupByField: workflow-status
284
- cardFields: [frequency, owner, automation-level]
285
- - name: Vendors
286
- slug: vendors
287
- type: table
288
- scopeProfileSlug: vendor
289
- description: Suppliers and service providers, with cost, owner, and renewal.
290
- config:
291
- visibleColumns: [vendor-category, vendor-status, owner, monthly-cost, renewal-date]
292
- defaultSort: { field: monthly-cost, direction: desc }
293
- - name: Tool Stack
294
- slug: tool-stack
295
- type: table
296
- scopeProfileSlug: tool
297
- description: The software the team runs on.
298
- config:
299
- visibleColumns: [tool-category, tool-status, owner, seats, monthly-cost]
300
- defaultSort: { field: monthly-cost, direction: desc }
301
- - name: Metrics
302
- slug: metrics
148
+ scopeProfileSlug: engagement
149
+ groupBy: engagement-status
150
+ description: "Client engagements on a board by status."
151
+ - name: Deliverables
152
+ slug: deliverables
153
+ type: kanban
154
+ scopeProfileSlug: deliverable
155
+ groupBy: deliverable-status
156
+ description: "Deliverables on a board by status."
157
+ - name: Contracts
158
+ slug: contracts
303
159
  type: table
304
- scopeProfileSlug: process-metric
305
- description: Operational SLAs and KPIs against target.
306
- config:
307
- visibleColumns: [metric-type, metric-status, target, current, cadence, owner]
308
- - name: Rituals
309
- slug: rituals
310
- type: calendar
311
- scopeProfileSlug: ritual
312
- description: Recurring meetings and cadences on a calendar.
313
- config:
314
- dateField: ritual-date
315
- colorField: cadence
316
-
317
- # Schema-level links — give the relation picker and graph domain-specific
318
- # edges from day one, not just pod defaults.
319
- entityLinks:
320
- - sourceProfileSlug: sop
321
- targetProfileSlug: workflow
322
- type: documents
323
- label: Documents
324
- - sourceProfileSlug: workflow
325
- targetProfileSlug: tool
326
- type: uses
327
- label: Uses
328
- - sourceProfileSlug: tool
329
- targetProfileSlug: vendor
330
- type: provided_by
331
- label: Provided by
332
- - sourceProfileSlug: process-metric
333
- targetProfileSlug: workflow
334
- type: measures
335
- label: Measures
336
- - sourceProfileSlug: ritual
337
- targetProfileSlug: workflow
338
- type: reviews
339
- label: Reviews
160
+ scopeProfileSlug: contract
161
+ description: "Contracts with their status, value, and term."
340
162
 
341
163
  onboarding:
342
- goal: Capture how the company actually runs — its core SOPs, its recurring workflows, the vendors and tools behind them, and the rituals that keep the team aligned — so the workspace mirrors the real operating system, not a generic template.
164
+ goal: >
165
+ Capture the real client-delivery motion — the engagements running now, the
166
+ deliverables due inside them, and the contracts that govern them — so the
167
+ workspace mirrors how client work actually ships here.
343
168
  framing: >
344
- THE OPERATOR: Act as a seasoned head of operations / chief of staff doing an
345
- ops walkthrough. Be systems-minded and pragmatic — hunt for the procedures
346
- that live only in someone's head, the processes that run every week, the
347
- tools quietly draining budget, and the meetings that must happen. Refuse
348
- vagueness: every workflow has an owner and a cadence, every SOP has a
349
- trigger. Translate their answers into SOPs, workflows, vendors, tools, and
350
- rituals.
351
- expertise:
352
- starters:
353
- - >
354
- Don't map the whole org or every process — start with the few recurring
355
- processes that actually BREAK: the ones that cause fire drills, missed
356
- handoffs, or "who was supposed to do that?" moments. Ask what went wrong last
357
- month and reverse-engineer the workflow from the failure, not from an
358
- idealized flowchart.
359
- - >
360
- SOP the highest-frequency × highest-pain work first. A daily task that hurts
361
- every time beats a quarterly one that's annoying once. Propose that
362
- prioritization out loud — "let's document the thing you do 50 times a month
363
- before the thing you do twice a year" — instead of documenting alphabetically.
364
- - >
365
- Give every workflow a single named owner and a cadence before anything else.
366
- Refuse "the team owns it" — that means no one does. If they can't name one
367
- accountable person, that's the finding, and the workflow's real status is
368
- "at risk", not "active".
369
- blindSpots:
370
- - >
371
- A process nobody owns doesn't exist — it just hasn't failed publicly yet.
372
- Hunt for the workflows that run on habit and goodwill with no owner; those
373
- are the ones that collapse the week someone is on holiday.
374
- - >
375
- "It's all in my head" is a single point of failure, not a system. The most
376
- dangerous SOPs are the undocumented ones the founder or one key person runs
377
- from memory. Ask directly: what breaks if that person is out for two weeks? —
378
- and document those first.
379
- - >
380
- Founders confuse activity with process. A recurring meeting or a busy Slack
381
- channel isn't a workflow unless it has a defined input, a defined output, and
382
- a trigger. If a "process" has no clear input→output, it's a habit; name it as
383
- one and either give it structure or drop it.
384
- bar: >
385
- The workspace captures the handful of processes that actually run (and break)
386
- the business — each with one accountable owner, a cadence, and a clear
387
- input→output — the highest-frequency/highest-pain procedures are documented as
388
- SOPs so they survive the owner leaving, and nothing critical lives only in one
389
- person's head.
169
+ THE DELIVERY LEAD: Act as a sharp delivery / operations lead. Anchor every
170
+ piece of work to a real client engagement — a deliverable that isn't tied to
171
+ an engagement is work nobody agreed to. Push for the concrete: named owners,
172
+ real due dates, real scope. Refuse "we're working on it" — ask which
173
+ engagement, who owns it, and when it's due.
390
174
  collect:
391
- - profileSlug: sop
392
- what: The core documented procedures / runbooks — the repeatable ways of doing key things.
393
- cardinality: several
394
- keyFields: [title, category, owner, sop-status]
395
- - profileSlug: workflow
396
- what: The recurring processes that run the business, each with an owner and a cadence.
175
+ - profileSlug: engagement
176
+ what: The client engagements live right now — one per real project or retainer, with its client and dates.
397
177
  cardinality: several
398
- keyFields: [title, workflow-status, frequency, owner]
399
- - profileSlug: vendor
400
- what: The suppliers and service providers the company pays and depends on.
401
- cardinality: few
402
- keyFields: [title, vendor-category, monthly-cost, owner]
403
- - profileSlug: tool
404
- what: The main tools in the stack the team runs on.
178
+ keyFields: [engagement-status, engagement-client, engagement-end]
179
+ - profileSlug: deliverable
180
+ what: The deliverables due inside those engagements, placed at their true status with a due date.
405
181
  cardinality: several
406
- keyFields: [title, tool-category, owner, monthly-cost]
407
- - profileSlug: ritual
408
- what: The recurring meetings and cadences that keep the team aligned.
409
- cardinality: few
410
- keyFields: [title, cadence, owner]
182
+ keyFields: [deliverable-status, due-date]
411
183
  openingQuestions:
412
- - "What are the procedures that live only in someone's head today — the ones you'd need to write down if that person left?"
413
- - "Which processes run on a fixed cadence — weekly, monthly — and who owns each?"
414
- - "What tools and vendors is the company paying for, and who's the owner of each?"
415
- doneWhen: A few core SOPs are documented with owners, the key recurring workflows exist with a cadence, the main vendors and tools are captured with cost, and the standing rituals are on the calendar.
184
+ - "Which client engagements are active right now, and who's the client on each?"
185
+ - "What's due next — which deliverables are in flight, and when are they owed?"
186
+ - "Which engagements have a contract behind them, and which are still on a handshake?"
187
+ doneWhen: at least one active engagement with a deliverable placed inside it.
416
188
 
189
+ # App reference — no custom app for operations
417
190
  app:
418
191
  kind: stored
419
192
  cellKey: entity-detail
420
193
 
194
+ # Layout config for browser sidebar
421
195
  layout:
422
- defaultView: SOPs
196
+ pinnedApps: [dashboard, data]
197
+ defaultView: Engagements
423
198
  defaultApp: null
424
- pinnedApps: [dashboard, data, chat]
425
199
  sidebarItems:
426
200
  - kind: view
427
- viewName: SOPs
428
- label: SOPs
429
- icon: book-open
201
+ viewName: Engagements
202
+ label: Engagements
203
+ icon: briefcase
430
204
  - kind: view
431
- viewName: Workflows
432
- label: Workflows
433
- icon: workflow
205
+ viewName: Deliverables
206
+ label: Deliverables
207
+ icon: package-check
434
208
  - kind: view
435
- viewName: Vendors
436
- label: Vendors
437
- icon: truck
438
- - kind: view
439
- viewName: Tool Stack
440
- label: Tool Stack
441
- icon: wrench
442
- - kind: view
443
- viewName: Metrics
444
- label: Metrics
445
- icon: gauge
446
- - kind: view
447
- viewName: Rituals
448
- label: Rituals
449
- icon: repeat
450
- - kind: app
451
- appId: data
452
- label: All Data
453
- icon: database
209
+ viewName: Contracts
210
+ label: Contracts
211
+ icon: file-signature
454
212
 
213
+ # Bento dashboard
455
214
  bento:
456
- viewName: Operations Command Center
215
+ viewName: Engagements
457
216
  blocks:
458
- - kind: widget
459
- widgetType: welcome-header
460
- pos: { x: 0, y: 0, w: 12, h: 2 }
461
- - kind: widget
462
- widgetType: entity-count
463
- pos: { x: 0, y: 2, w: 3, h: 2 }
464
- config:
465
- profileSlug: sop
466
- label: SOPs
467
- - kind: widget
468
- widgetType: entity-count
469
- pos: { x: 3, y: 2, w: 3, h: 2 }
470
- config:
471
- profileSlug: workflow
472
- label: Workflows
473
- - kind: widget
474
- widgetType: entity-count
475
- pos: { x: 6, y: 2, w: 3, h: 2 }
476
- config:
477
- profileSlug: vendor
478
- label: Vendors
479
- - kind: widget
480
- widgetType: entity-count
481
- pos: { x: 9, y: 2, w: 3, h: 2 }
482
- config:
483
- profileSlug: tool
484
- label: Tools
485
- - kind: view
486
- viewName: Workflows
487
- pos: { x: 0, y: 4, w: 8, h: 5 }
488
- - kind: view
489
- viewName: Metrics
490
- pos: { x: 8, y: 4, w: 4, h: 5 }
491
217
  - kind: view
492
- viewName: SOPs
493
- pos: { x: 0, y: 9, w: 6, h: 4 }
218
+ viewName: Deliverables
219
+ pos: { x: 0, y: 0, w: 6, h: 5 }
494
220
  - kind: view
495
- viewName: Vendors
496
- pos: { x: 6, y: 9, w: 6, h: 4 }
221
+ viewName: Contracts
222
+ pos: { x: 6, y: 0, w: 6, h: 5 }