@synap-core/workspace-templates 0.2.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/define.d.ts +97 -0
- package/dist/define.d.ts.map +1 -0
- package/dist/define.js +91 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +20 -0
- package/dist/templates.d.ts +7 -0
- package/dist/templates.d.ts.map +1 -0
- package/dist/templates.js +23354 -0
- package/dist/types.d.ts +328 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +8 -0
- package/package.json +37 -0
- package/src/agent-fleet.yaml +1434 -0
- package/src/brand-library.yaml +627 -0
- package/src/builder.yaml +1355 -0
- package/src/content-os.yaml +1424 -0
- package/src/content-studio.yaml +312 -0
- package/src/crm.yaml +2606 -0
- package/src/define.ts +184 -0
- package/src/dev-dashboard.yaml +1309 -0
- package/src/foundation.yaml +343 -0
- package/src/index.ts +62 -0
- package/src/life-os.yaml +1443 -0
- package/src/marketing.yaml +244 -0
- package/src/personal.yaml +114 -0
- package/src/project-management.yaml +1119 -0
- package/src/radar.yaml +274 -0
- package/src/templates.ts +23363 -0
- package/src/types.ts +426 -0
|
@@ -0,0 +1,1119 @@
|
|
|
1
|
+
# Project Management OS (PM OS) workspace template
|
|
2
|
+
# AI-generation-friendly YAML. Validated against types.ts at build time.
|
|
3
|
+
# Consolidated from synap-backend project-management.package.json (PRIMARY,
|
|
4
|
+
# extends inlined), synap-control-plane-api "PM OS Template.json" (richer
|
|
5
|
+
# cross-check — project profile, project views, content), and the
|
|
6
|
+
# project-management-pack (milestone profile + entityLinks + pack views).
|
|
7
|
+
|
|
8
|
+
meta:
|
|
9
|
+
slug: project-management
|
|
10
|
+
name: Project Management OS
|
|
11
|
+
description: "OKR-first project management workspace. Objectives, key results, projects, sprints, and tasks as connected entities — navigable from any direction in a relationship graph. Designed for solo founders and small teams who want goal-execution alignment without per-seat overhead."
|
|
12
|
+
icon: kanban-square
|
|
13
|
+
color: "#3B82F6"
|
|
14
|
+
tags: [projects, tasks, sprints, okrs, agile, milestones, team]
|
|
15
|
+
isPublic: true
|
|
16
|
+
|
|
17
|
+
workspace:
|
|
18
|
+
name: Project Management OS
|
|
19
|
+
description: "OKR-first project management workspace. Objectives, key results, projects, sprints, and tasks as connected entities — navigable from any direction in a relationship graph. Designed for solo founders and small teams who want goal-execution alignment without per-seat overhead."
|
|
20
|
+
proposalId: pm-os-v1
|
|
21
|
+
subtype: project-management
|
|
22
|
+
visibility: pod_visible
|
|
23
|
+
|
|
24
|
+
profiles:
|
|
25
|
+
- slug: okr
|
|
26
|
+
displayName: OKR
|
|
27
|
+
icon: target
|
|
28
|
+
color: "#2E4EAD"
|
|
29
|
+
description: "A quarterly objective with measurable key results"
|
|
30
|
+
scope: WORKSPACE
|
|
31
|
+
properties:
|
|
32
|
+
- slug: okr-status
|
|
33
|
+
label: Status
|
|
34
|
+
valueType: string
|
|
35
|
+
inputType: select
|
|
36
|
+
enumValues: [Planning, Active, On Track, At Risk, Completed, Cancelled]
|
|
37
|
+
constraints:
|
|
38
|
+
defaultValue: Active
|
|
39
|
+
- slug: okr-quarter
|
|
40
|
+
label: Quarter
|
|
41
|
+
valueType: string
|
|
42
|
+
inputType: select
|
|
43
|
+
enumValues: ["Q1 2025", "Q2 2025", "Q3 2025", "Q4 2025", "Q1 2026", "Q2 2026", "Q3 2026", "Q4 2026"]
|
|
44
|
+
- slug: okr-owner
|
|
45
|
+
label: Owner
|
|
46
|
+
valueType: entity_id
|
|
47
|
+
targetProfileSlug: person
|
|
48
|
+
- slug: okr-type
|
|
49
|
+
label: Type
|
|
50
|
+
valueType: string
|
|
51
|
+
inputType: select
|
|
52
|
+
enumValues: [Company, Team, Personal]
|
|
53
|
+
- slug: kr1-label
|
|
54
|
+
label: Key Result 1
|
|
55
|
+
valueType: string
|
|
56
|
+
- slug: kr1-target
|
|
57
|
+
label: KR1 Target
|
|
58
|
+
valueType: number
|
|
59
|
+
- slug: kr1-current
|
|
60
|
+
label: KR1 Current
|
|
61
|
+
valueType: number
|
|
62
|
+
- slug: kr1-unit
|
|
63
|
+
label: KR1 Unit
|
|
64
|
+
valueType: string
|
|
65
|
+
- slug: kr2-label
|
|
66
|
+
label: Key Result 2
|
|
67
|
+
valueType: string
|
|
68
|
+
- slug: kr2-target
|
|
69
|
+
label: KR2 Target
|
|
70
|
+
valueType: number
|
|
71
|
+
- slug: kr2-current
|
|
72
|
+
label: KR2 Current
|
|
73
|
+
valueType: number
|
|
74
|
+
- slug: kr2-unit
|
|
75
|
+
label: KR2 Unit
|
|
76
|
+
valueType: string
|
|
77
|
+
- slug: kr3-label
|
|
78
|
+
label: Key Result 3
|
|
79
|
+
valueType: string
|
|
80
|
+
- slug: kr3-target
|
|
81
|
+
label: KR3 Target
|
|
82
|
+
valueType: number
|
|
83
|
+
- slug: kr3-current
|
|
84
|
+
label: KR3 Current
|
|
85
|
+
valueType: number
|
|
86
|
+
- slug: kr3-unit
|
|
87
|
+
label: KR3 Unit
|
|
88
|
+
valueType: string
|
|
89
|
+
- slug: okr-confidence
|
|
90
|
+
label: Confidence
|
|
91
|
+
valueType: string
|
|
92
|
+
inputType: select
|
|
93
|
+
enumValues: [High, Medium, Low]
|
|
94
|
+
- slug: okr-review-date
|
|
95
|
+
label: Review Date
|
|
96
|
+
valueType: date
|
|
97
|
+
- slug: okr-notes
|
|
98
|
+
label: Notes
|
|
99
|
+
valueType: string
|
|
100
|
+
|
|
101
|
+
- slug: project
|
|
102
|
+
displayName: Project
|
|
103
|
+
icon: folder
|
|
104
|
+
color: "#7C3AED"
|
|
105
|
+
description: "A bounded body of work with a clear scope, owner, and deadline"
|
|
106
|
+
scope: WORKSPACE
|
|
107
|
+
properties:
|
|
108
|
+
- slug: project-status
|
|
109
|
+
label: Status
|
|
110
|
+
valueType: string
|
|
111
|
+
inputType: select
|
|
112
|
+
enumValues: [Backlog, Planning, In Progress, On Hold, Completed, Cancelled]
|
|
113
|
+
constraints:
|
|
114
|
+
defaultValue: In Progress
|
|
115
|
+
- slug: project-priority
|
|
116
|
+
label: Priority
|
|
117
|
+
valueType: string
|
|
118
|
+
inputType: select
|
|
119
|
+
enumValues: [Critical, High, Medium, Low]
|
|
120
|
+
- slug: project-linked-okr
|
|
121
|
+
label: Linked OKR
|
|
122
|
+
valueType: entity_id
|
|
123
|
+
targetProfileSlug: okr
|
|
124
|
+
- slug: project-owner
|
|
125
|
+
label: Owner
|
|
126
|
+
valueType: entity_id
|
|
127
|
+
targetProfileSlug: person
|
|
128
|
+
- slug: project-start
|
|
129
|
+
label: Start Date
|
|
130
|
+
valueType: date
|
|
131
|
+
- slug: project-deadline
|
|
132
|
+
label: Deadline
|
|
133
|
+
valueType: date
|
|
134
|
+
- slug: project-milestone
|
|
135
|
+
label: Milestone
|
|
136
|
+
valueType: string
|
|
137
|
+
- slug: project-health
|
|
138
|
+
label: Health
|
|
139
|
+
valueType: string
|
|
140
|
+
inputType: select
|
|
141
|
+
enumValues: [Green, Yellow, Red]
|
|
142
|
+
- slug: project-effort
|
|
143
|
+
label: Effort (days)
|
|
144
|
+
valueType: number
|
|
145
|
+
- slug: project-tags
|
|
146
|
+
label: Tags
|
|
147
|
+
valueType: array
|
|
148
|
+
inputType: select
|
|
149
|
+
enumValues: [Product, Marketing, Ops, Engineering, Design, Research]
|
|
150
|
+
- slug: project-outcome
|
|
151
|
+
label: Expected Outcome
|
|
152
|
+
valueType: string
|
|
153
|
+
- slug: project-description
|
|
154
|
+
label: Description
|
|
155
|
+
valueType: string
|
|
156
|
+
inputType: textarea
|
|
157
|
+
|
|
158
|
+
- slug: task
|
|
159
|
+
displayName: Task
|
|
160
|
+
icon: check-square
|
|
161
|
+
color: "#059669"
|
|
162
|
+
description: "An atomic unit of work with a clear owner and due date"
|
|
163
|
+
scope: WORKSPACE
|
|
164
|
+
properties:
|
|
165
|
+
- slug: task-status
|
|
166
|
+
label: Status
|
|
167
|
+
valueType: string
|
|
168
|
+
inputType: select
|
|
169
|
+
enumValues: [Backlog, Todo, In Progress, Review, Done, Cancelled]
|
|
170
|
+
constraints:
|
|
171
|
+
defaultValue: Todo
|
|
172
|
+
- slug: task-priority
|
|
173
|
+
label: Priority
|
|
174
|
+
valueType: string
|
|
175
|
+
inputType: select
|
|
176
|
+
enumValues: [Critical, High, Medium, Low]
|
|
177
|
+
constraints:
|
|
178
|
+
defaultValue: Medium
|
|
179
|
+
- slug: task-assignee
|
|
180
|
+
label: Assignee
|
|
181
|
+
valueType: entity_id
|
|
182
|
+
targetProfileSlug: person
|
|
183
|
+
- slug: task-project
|
|
184
|
+
label: Project
|
|
185
|
+
valueType: entity_id
|
|
186
|
+
targetProfileSlug: project
|
|
187
|
+
- slug: task-sprint
|
|
188
|
+
label: Sprint
|
|
189
|
+
valueType: entity_id
|
|
190
|
+
targetProfileSlug: sprint
|
|
191
|
+
- slug: task-due-date
|
|
192
|
+
label: Due Date
|
|
193
|
+
valueType: date
|
|
194
|
+
- slug: task-effort
|
|
195
|
+
label: Effort (hours)
|
|
196
|
+
valueType: number
|
|
197
|
+
- slug: task-type
|
|
198
|
+
label: Type
|
|
199
|
+
valueType: string
|
|
200
|
+
inputType: select
|
|
201
|
+
enumValues: [Feature, Bug, Research, Content, Ops, Review, Meeting]
|
|
202
|
+
- slug: task-blocked-by
|
|
203
|
+
label: Blocked By
|
|
204
|
+
valueType: string
|
|
205
|
+
- slug: task-tags
|
|
206
|
+
label: Tags
|
|
207
|
+
valueType: array
|
|
208
|
+
inputType: select
|
|
209
|
+
enumValues: [quick-win, deep-work, async, sync, waiting, recurring]
|
|
210
|
+
|
|
211
|
+
- slug: sprint
|
|
212
|
+
displayName: Sprint
|
|
213
|
+
icon: zap
|
|
214
|
+
color: "#D97706"
|
|
215
|
+
description: "A fixed execution cycle with a clear scope, start/end, and retrospective"
|
|
216
|
+
scope: WORKSPACE
|
|
217
|
+
properties:
|
|
218
|
+
- slug: sprint-status
|
|
219
|
+
label: Status
|
|
220
|
+
valueType: string
|
|
221
|
+
inputType: select
|
|
222
|
+
enumValues: [Planning, Active, Review, Completed]
|
|
223
|
+
constraints:
|
|
224
|
+
defaultValue: Active
|
|
225
|
+
- slug: sprint-number
|
|
226
|
+
label: Sprint #
|
|
227
|
+
valueType: number
|
|
228
|
+
- slug: sprint-start
|
|
229
|
+
label: Start Date
|
|
230
|
+
valueType: date
|
|
231
|
+
- slug: sprint-end
|
|
232
|
+
label: End Date
|
|
233
|
+
valueType: date
|
|
234
|
+
- slug: sprint-goal
|
|
235
|
+
label: Sprint Goal
|
|
236
|
+
valueType: string
|
|
237
|
+
- slug: sprint-capacity
|
|
238
|
+
label: Capacity (hours)
|
|
239
|
+
valueType: number
|
|
240
|
+
- slug: sprint-velocity
|
|
241
|
+
label: Velocity (hours completed)
|
|
242
|
+
valueType: number
|
|
243
|
+
- slug: sprint-task-count
|
|
244
|
+
label: Task Count
|
|
245
|
+
valueType: number
|
|
246
|
+
- slug: sprint-completed-count
|
|
247
|
+
label: Completed Count
|
|
248
|
+
valueType: number
|
|
249
|
+
- slug: sprint-linked-okr
|
|
250
|
+
label: Linked OKR
|
|
251
|
+
valueType: entity_id
|
|
252
|
+
targetProfileSlug: okr
|
|
253
|
+
|
|
254
|
+
- slug: person
|
|
255
|
+
displayName: Person
|
|
256
|
+
icon: user
|
|
257
|
+
color: "#0891B2"
|
|
258
|
+
description: "Team member or stakeholder"
|
|
259
|
+
scope: WORKSPACE
|
|
260
|
+
properties:
|
|
261
|
+
- slug: person-role
|
|
262
|
+
label: Role
|
|
263
|
+
valueType: string
|
|
264
|
+
inputType: select
|
|
265
|
+
enumValues: [Founder, Engineer, Designer, PM, Marketing, Ops, Advisor, Stakeholder]
|
|
266
|
+
- slug: person-email
|
|
267
|
+
label: Email
|
|
268
|
+
valueType: string
|
|
269
|
+
- slug: person-focus
|
|
270
|
+
label: Current Focus
|
|
271
|
+
valueType: string
|
|
272
|
+
- slug: person-okr-owner
|
|
273
|
+
label: OKR Owner
|
|
274
|
+
valueType: boolean
|
|
275
|
+
- slug: person-availability
|
|
276
|
+
label: Availability (hrs/week)
|
|
277
|
+
valueType: number
|
|
278
|
+
- slug: person-timezone
|
|
279
|
+
label: Timezone
|
|
280
|
+
valueType: string
|
|
281
|
+
|
|
282
|
+
# Inlined from project-management-pack (the only genuinely new profile).
|
|
283
|
+
- slug: milestone
|
|
284
|
+
displayName: Milestone
|
|
285
|
+
icon: flag
|
|
286
|
+
color: "#F59E0B"
|
|
287
|
+
description: "Key deliverables and checkpoints"
|
|
288
|
+
scope: WORKSPACE
|
|
289
|
+
properties:
|
|
290
|
+
- slug: due-date
|
|
291
|
+
label: Target Date
|
|
292
|
+
valueType: date
|
|
293
|
+
constraints:
|
|
294
|
+
required: true
|
|
295
|
+
- slug: status
|
|
296
|
+
label: Status
|
|
297
|
+
valueType: string
|
|
298
|
+
inputType: select
|
|
299
|
+
enumValues: [upcoming, in-progress, completed, missed]
|
|
300
|
+
- slug: description
|
|
301
|
+
label: Description
|
|
302
|
+
valueType: string
|
|
303
|
+
inputType: textarea
|
|
304
|
+
|
|
305
|
+
views:
|
|
306
|
+
- name: OKR Dashboard
|
|
307
|
+
slug: okr-dashboard
|
|
308
|
+
type: kanban
|
|
309
|
+
scopeProfileSlug: okr
|
|
310
|
+
defaultView: true
|
|
311
|
+
groupBy: okr-status
|
|
312
|
+
description: "All OKRs by status with progress indicators"
|
|
313
|
+
config:
|
|
314
|
+
groupByField: okr-status
|
|
315
|
+
|
|
316
|
+
- name: OKR → Projects → Tasks
|
|
317
|
+
slug: okr-hierarchy
|
|
318
|
+
type: graph
|
|
319
|
+
scopeProfileSlugs: [okr, project, task]
|
|
320
|
+
description: "Three-level drill-down: OKR expands to linked projects, projects expand to tasks"
|
|
321
|
+
config:
|
|
322
|
+
hierarchyEdges:
|
|
323
|
+
- { parent: okr, child: project, via: project-linked-okr }
|
|
324
|
+
- { parent: project, child: task, via: task-project }
|
|
325
|
+
|
|
326
|
+
- name: Sprint Board
|
|
327
|
+
slug: sprint-board
|
|
328
|
+
type: kanban
|
|
329
|
+
scopeProfileSlug: task
|
|
330
|
+
groupBy: task-status
|
|
331
|
+
description: "Active sprint tasks in Backlog / Todo / In Progress / Review / Done lanes"
|
|
332
|
+
config:
|
|
333
|
+
groupByField: task-status
|
|
334
|
+
filterBy:
|
|
335
|
+
field: task-sprint
|
|
336
|
+
operator: is_active
|
|
337
|
+
|
|
338
|
+
- name: All Sprints
|
|
339
|
+
slug: sprint-list
|
|
340
|
+
type: table
|
|
341
|
+
scopeProfileSlug: sprint
|
|
342
|
+
description: "Table of all sprints with velocity and completion stats"
|
|
343
|
+
config:
|
|
344
|
+
sortBy: sprint-number
|
|
345
|
+
sortOrder: desc
|
|
346
|
+
visibleColumns: [sprint-number, sprint-status, sprint-start, sprint-end, sprint-goal, sprint-velocity, sprint-completed-count]
|
|
347
|
+
defaultSort: { field: sprint-number, direction: desc }
|
|
348
|
+
|
|
349
|
+
- name: Project Timeline
|
|
350
|
+
slug: project-timeline
|
|
351
|
+
type: timeline
|
|
352
|
+
scopeProfileSlug: project
|
|
353
|
+
description: "Gantt-style timeline of all active projects"
|
|
354
|
+
config:
|
|
355
|
+
startField: project-start
|
|
356
|
+
endField: project-deadline
|
|
357
|
+
colorBy: project-status
|
|
358
|
+
|
|
359
|
+
- name: Project Board
|
|
360
|
+
slug: project-board
|
|
361
|
+
type: kanban
|
|
362
|
+
scopeProfileSlug: project
|
|
363
|
+
groupBy: project-status
|
|
364
|
+
description: "Projects by status lane"
|
|
365
|
+
config:
|
|
366
|
+
groupByField: project-status
|
|
367
|
+
|
|
368
|
+
- name: Task Inbox
|
|
369
|
+
slug: task-inbox
|
|
370
|
+
type: table
|
|
371
|
+
scopeProfileSlug: task
|
|
372
|
+
description: "All open tasks sorted by priority"
|
|
373
|
+
config:
|
|
374
|
+
sortBy: task-priority
|
|
375
|
+
visibleColumns: [task-status, task-priority, task-type, task-assignee, task-due-date, task-sprint]
|
|
376
|
+
defaultSort: { field: task-priority, direction: desc }
|
|
377
|
+
filterBy:
|
|
378
|
+
field: task-status
|
|
379
|
+
operator: not_in
|
|
380
|
+
value: [Done, Cancelled]
|
|
381
|
+
|
|
382
|
+
- name: Weekly Focus
|
|
383
|
+
slug: weekly-focus
|
|
384
|
+
type: table
|
|
385
|
+
scopeProfileSlug: task
|
|
386
|
+
description: "Tasks due this week — your daily planning view"
|
|
387
|
+
config:
|
|
388
|
+
sortBy: task-priority
|
|
389
|
+
filterBy:
|
|
390
|
+
field: task-due-date
|
|
391
|
+
operator: this_week
|
|
392
|
+
defaultSort: { field: task-priority, direction: desc }
|
|
393
|
+
|
|
394
|
+
- name: Relationship Graph
|
|
395
|
+
slug: relationship-graph
|
|
396
|
+
type: graph
|
|
397
|
+
scopeProfileSlugs: [okr, project, task, sprint, person]
|
|
398
|
+
description: "Full entity graph: OKR → Project → Task → Sprint → Person. The Synap PM OS structural demo."
|
|
399
|
+
config:
|
|
400
|
+
layout: force
|
|
401
|
+
showRelations: true
|
|
402
|
+
|
|
403
|
+
- name: Team Workload
|
|
404
|
+
slug: team-workload
|
|
405
|
+
type: table
|
|
406
|
+
scopeProfileSlug: person
|
|
407
|
+
description: "Team members with linked task count, sprint assignment, and availability"
|
|
408
|
+
config:
|
|
409
|
+
visibleColumns: [person-role, person-focus, person-availability, person-okr-owner]
|
|
410
|
+
|
|
411
|
+
- name: Retrospective Board
|
|
412
|
+
slug: retrospective-board
|
|
413
|
+
type: kanban
|
|
414
|
+
scopeProfileSlug: sprint
|
|
415
|
+
groupBy: sprint-status
|
|
416
|
+
description: "Sprint retrospectives — completed sprints with retrospective notes attached as documents"
|
|
417
|
+
config:
|
|
418
|
+
groupByField: sprint-status
|
|
419
|
+
|
|
420
|
+
- name: OKR Progress Table
|
|
421
|
+
slug: okr-progress
|
|
422
|
+
type: table
|
|
423
|
+
scopeProfileSlug: okr
|
|
424
|
+
description: "All OKRs with key result progress bars for quarterly review"
|
|
425
|
+
config:
|
|
426
|
+
visibleColumns: [okr-status, okr-quarter, okr-type, okr-owner, okr-confidence, okr-review-date]
|
|
427
|
+
defaultSort: { field: okr-quarter, direction: desc }
|
|
428
|
+
|
|
429
|
+
- name: Backlog
|
|
430
|
+
slug: backlog
|
|
431
|
+
type: table
|
|
432
|
+
scopeProfileSlug: task
|
|
433
|
+
description: "Unscheduled tasks awaiting sprint assignment"
|
|
434
|
+
config:
|
|
435
|
+
sortBy: task-priority
|
|
436
|
+
filterBy:
|
|
437
|
+
field: task-status
|
|
438
|
+
operator: is
|
|
439
|
+
value: Backlog
|
|
440
|
+
defaultSort: { field: task-priority, direction: desc }
|
|
441
|
+
|
|
442
|
+
- name: Calendar
|
|
443
|
+
slug: calendar
|
|
444
|
+
type: calendar
|
|
445
|
+
scopeProfileSlugs: [task, sprint, project]
|
|
446
|
+
description: "Unified calendar of task due dates, sprint cycles, and project deadlines"
|
|
447
|
+
config:
|
|
448
|
+
dateField: task-due-date
|
|
449
|
+
|
|
450
|
+
- name: OKRs by Quarter
|
|
451
|
+
slug: okr-by-quarter
|
|
452
|
+
type: table
|
|
453
|
+
scopeProfileSlug: okr
|
|
454
|
+
groupBy: okr-quarter
|
|
455
|
+
description: "Historical OKRs organized by quarter for retrospective planning"
|
|
456
|
+
config:
|
|
457
|
+
groupByField: okr-quarter
|
|
458
|
+
visibleColumns: [okr-status, okr-quarter, okr-type, okr-owner, okr-confidence]
|
|
459
|
+
|
|
460
|
+
# Pack views (inlined from project-management-pack).
|
|
461
|
+
- name: Task Board
|
|
462
|
+
slug: task-board
|
|
463
|
+
type: kanban
|
|
464
|
+
scopeProfileSlug: task
|
|
465
|
+
description: "Pack task board grouped by status"
|
|
466
|
+
config:
|
|
467
|
+
groupByField: status
|
|
468
|
+
|
|
469
|
+
- name: Projects
|
|
470
|
+
slug: projects
|
|
471
|
+
type: table
|
|
472
|
+
scopeProfileSlug: project
|
|
473
|
+
description: "Pack projects table"
|
|
474
|
+
config: {}
|
|
475
|
+
|
|
476
|
+
# Bento dashboard views (per-profile).
|
|
477
|
+
- name: OKR Dashboard
|
|
478
|
+
slug: okr-dashboard-bento
|
|
479
|
+
type: bento
|
|
480
|
+
scopeProfileSlug: okr
|
|
481
|
+
config:
|
|
482
|
+
layout: bento
|
|
483
|
+
blocks:
|
|
484
|
+
- { id: okr-header, kind: widget, widgetType: section-header, pos: { x: 0, y: 0, w: 12, h: 2 }, config: { title: OKRs, icon: Target, color: "#14B8A6", profileSlug: okr } }
|
|
485
|
+
- { id: okr-count-active, kind: widget, widgetType: stat-card, pos: { x: 0, y: 2, w: 3, h: 3 }, config: { label: Active OKRs, aggregation: count, profileSlug: okr, color: "#14B8A6", icon: Target } }
|
|
486
|
+
- { id: okr-count-on-track, kind: widget, widgetType: entity-count, pos: { x: 3, y: 2, w: 3, h: 3 }, config: { profileSlug: okr, label: On Track, icon: TrendingUp, filter: { status: on-track }, color: "#10B981" } }
|
|
487
|
+
- { id: okr-count-at-risk, kind: widget, widgetType: entity-count, pos: { x: 6, y: 2, w: 3, h: 3 }, config: { profileSlug: okr, label: At Risk, icon: AlertTriangle, filter: { status: at-risk }, color: "#F59E0B" } }
|
|
488
|
+
- { id: okr-count-completed, kind: widget, widgetType: entity-count, pos: { x: 9, y: 2, w: 3, h: 3 }, config: { profileSlug: okr, label: Completed, icon: CheckCircle, filter: { status: completed }, color: "#6366F1" } }
|
|
489
|
+
- { id: okr-spotlight, kind: widget, widgetType: entity-spotlight, pos: { x: 0, y: 5, w: 5, h: 4 }, config: { profileSlug: okr, seed: daily, layout: detail, subtitleField: owner, color: "#14B8A6" } }
|
|
490
|
+
- { id: okr-projects, kind: widget, widgetType: entity-list, pos: { x: 5, y: 5, w: 7, h: 4 }, config: { profileSlug: project, title: Active Projects, limit: 8, variant: compact } }
|
|
491
|
+
- { id: okr-table, kind: view, viewName: OKR Progress Table, pos: { x: 0, y: 9, w: 12, h: 8 } }
|
|
492
|
+
|
|
493
|
+
- name: Project Dashboard
|
|
494
|
+
slug: project-dashboard
|
|
495
|
+
type: bento
|
|
496
|
+
scopeProfileSlug: project
|
|
497
|
+
config:
|
|
498
|
+
layout: bento
|
|
499
|
+
blocks:
|
|
500
|
+
- { id: proj-header, kind: widget, widgetType: section-header, pos: { x: 0, y: 0, w: 12, h: 2 }, config: { title: Projects, icon: FolderOpen, color: "#F97316", profileSlug: project } }
|
|
501
|
+
- { id: proj-active, kind: widget, widgetType: entity-count, pos: { x: 0, y: 2, w: 3, h: 3 }, config: { profileSlug: project, label: Active, icon: Play, filter: { status: active }, color: "#10B981" } }
|
|
502
|
+
- { id: proj-planning, kind: widget, widgetType: entity-count, pos: { x: 3, y: 2, w: 3, h: 3 }, config: { profileSlug: project, label: Planning, icon: Map, filter: { status: planning }, color: "#3B82F6" } }
|
|
503
|
+
- { id: proj-hold, kind: widget, widgetType: entity-count, pos: { x: 6, y: 2, w: 3, h: 3 }, config: { profileSlug: project, label: On Hold, icon: PauseCircle, filter: { status: on-hold }, color: "#F59E0B" } }
|
|
504
|
+
- { id: proj-done, kind: widget, widgetType: entity-count, pos: { x: 9, y: 2, w: 3, h: 3 }, config: { profileSlug: project, label: Completed, icon: CheckCircle, filter: { status: completed }, color: "#8B5CF6" } }
|
|
505
|
+
- { id: proj-spotlight, kind: widget, widgetType: entity-spotlight, pos: { x: 0, y: 5, w: 5, h: 4 }, config: { profileSlug: project, seed: daily, layout: detail, subtitleField: area, color: "#F97316" } }
|
|
506
|
+
- { id: proj-tasks, kind: widget, widgetType: entity-list, pos: { x: 5, y: 5, w: 7, h: 4 }, config: { profileSlug: task, title: Open Tasks, limit: 8, variant: compact } }
|
|
507
|
+
- { id: proj-board, kind: view, viewName: Project Board, pos: { x: 0, y: 9, w: 12, h: 8 } }
|
|
508
|
+
|
|
509
|
+
- name: Task Dashboard
|
|
510
|
+
slug: task-dashboard
|
|
511
|
+
type: bento
|
|
512
|
+
scopeProfileSlug: task
|
|
513
|
+
config:
|
|
514
|
+
layout: bento
|
|
515
|
+
blocks:
|
|
516
|
+
- { id: task-header, kind: widget, widgetType: section-header, pos: { x: 0, y: 0, w: 12, h: 2 }, config: { title: Tasks, icon: CheckSquare, color: "#6366F1", profileSlug: task } }
|
|
517
|
+
- { id: task-todo, kind: widget, widgetType: entity-count, pos: { x: 0, y: 2, w: 3, h: 3 }, config: { profileSlug: task, label: To Do, icon: Circle, filter: { status: todo }, color: "#6B7280" } }
|
|
518
|
+
- { id: task-progress, kind: widget, widgetType: entity-count, pos: { x: 3, y: 2, w: 3, h: 3 }, config: { profileSlug: task, label: In Progress, icon: Loader, filter: { status: in-progress }, color: "#3B82F6" } }
|
|
519
|
+
- { id: task-review, kind: widget, widgetType: entity-count, pos: { x: 6, y: 2, w: 3, h: 3 }, config: { profileSlug: task, label: In Review, icon: Eye, filter: { status: review }, color: "#F59E0B" } }
|
|
520
|
+
- { id: task-done, kind: widget, widgetType: entity-count, pos: { x: 9, y: 2, w: 3, h: 3 }, config: { profileSlug: task, label: Done, icon: CheckCircle, filter: { status: done }, color: "#10B981" } }
|
|
521
|
+
- { id: task-capture, kind: widget, widgetType: quick-capture, pos: { x: 0, y: 5, w: 4, h: 3 }, config: { presetProfileSlug: task } }
|
|
522
|
+
- { id: task-list, kind: widget, widgetType: entity-list, pos: { x: 4, y: 5, w: 8, h: 3 }, config: { profileSlug: task, title: Recent Tasks, limit: 6, variant: compact } }
|
|
523
|
+
- { id: task-sprint-board, kind: view, viewName: Sprint Board, pos: { x: 0, y: 8, w: 12, h: 8 } }
|
|
524
|
+
|
|
525
|
+
- name: Sprint Dashboard
|
|
526
|
+
slug: sprint-dashboard
|
|
527
|
+
type: bento
|
|
528
|
+
scopeProfileSlug: sprint
|
|
529
|
+
config:
|
|
530
|
+
layout: bento
|
|
531
|
+
blocks:
|
|
532
|
+
- { id: sprint-header, kind: widget, widgetType: section-header, pos: { x: 0, y: 0, w: 12, h: 2 }, config: { title: Sprints, icon: Zap, color: "#8B5CF6", profileSlug: sprint } }
|
|
533
|
+
- { id: sprint-total, kind: widget, widgetType: stat-card, pos: { x: 0, y: 2, w: 3, h: 3 }, config: { label: Total Sprints, aggregation: count, profileSlug: sprint, color: "#8B5CF6", icon: Zap } }
|
|
534
|
+
- { id: sprint-active, kind: widget, widgetType: entity-count, pos: { x: 3, y: 2, w: 3, h: 3 }, config: { profileSlug: sprint, label: Active, icon: Play, filter: { status: active }, color: "#10B981" } }
|
|
535
|
+
- { id: sprint-tasks, kind: widget, widgetType: entity-count, pos: { x: 6, y: 2, w: 3, h: 3 }, config: { profileSlug: task, label: Sprint Tasks, icon: CheckSquare, color: "#6366F1" } }
|
|
536
|
+
- { id: sprint-velocity, kind: widget, widgetType: entity-list, pos: { x: 0, y: 5, w: 12, h: 4 }, config: { profileSlug: sprint, title: Recent Sprints, limit: 6, variant: detailed } }
|
|
537
|
+
- { id: sprint-board, kind: view, viewName: Sprint Board, pos: { x: 0, y: 9, w: 12, h: 8 } }
|
|
538
|
+
|
|
539
|
+
# Schema-level links between entity types (inlined from project-management-pack).
|
|
540
|
+
entityLinks:
|
|
541
|
+
- { sourceProfileSlug: task, targetProfileSlug: project, type: belongs_to, label: "Belongs to" }
|
|
542
|
+
- { sourceProfileSlug: milestone, targetProfileSlug: project, type: belongs_to, label: "Part of" }
|
|
543
|
+
|
|
544
|
+
displayTemplates:
|
|
545
|
+
- name: OKR Card
|
|
546
|
+
description: ""
|
|
547
|
+
entityType: okr
|
|
548
|
+
targetType: entity
|
|
549
|
+
isDefault: true
|
|
550
|
+
config:
|
|
551
|
+
layout:
|
|
552
|
+
structure:
|
|
553
|
+
header: { enabled: true, slots: [okr-status, okr-quarter, okr-type], layout: horizontal }
|
|
554
|
+
sidebar: { enabled: true, slots: [okr-owner, okr-confidence, okr-review-date], position: right, width: 260px, layout: vertical }
|
|
555
|
+
content: { enabled: true, slots: [kr1-label, kr1-current, kr2-label, kr2-current, kr3-label, kr3-current], layout: vertical }
|
|
556
|
+
fieldMapping:
|
|
557
|
+
okr-status: { slot: okr-status, renderer: { type: badge }, order: 1 }
|
|
558
|
+
okr-quarter: { slot: okr-quarter, renderer: { type: badge }, order: 2 }
|
|
559
|
+
okr-type: { slot: okr-type, renderer: { type: badge }, order: 3 }
|
|
560
|
+
okr-owner: { slot: okr-owner, renderer: { type: avatar }, order: 4 }
|
|
561
|
+
okr-confidence: { slot: okr-confidence, renderer: { type: badge }, order: 5 }
|
|
562
|
+
okr-review-date: { slot: okr-review-date, renderer: { type: date, format: relative }, order: 6 }
|
|
563
|
+
kr1-label: { slot: kr1-label, renderer: { type: text }, order: 7, label: KR1, showLabel: true }
|
|
564
|
+
kr1-current: { slot: kr1-current, renderer: { type: progress }, order: 8 }
|
|
565
|
+
kr2-label: { slot: kr2-label, renderer: { type: text }, order: 9, label: KR2, showLabel: true }
|
|
566
|
+
kr2-current: { slot: kr2-current, renderer: { type: progress }, order: 10 }
|
|
567
|
+
kr3-label: { slot: kr3-label, renderer: { type: text }, order: 11, label: KR3, showLabel: true }
|
|
568
|
+
kr3-current: { slot: kr3-current, renderer: { type: progress }, order: 12 }
|
|
569
|
+
colors:
|
|
570
|
+
accent: "#2E4EAD"
|
|
571
|
+
|
|
572
|
+
- name: Project Card
|
|
573
|
+
description: ""
|
|
574
|
+
entityType: project
|
|
575
|
+
targetType: entity
|
|
576
|
+
isDefault: true
|
|
577
|
+
config:
|
|
578
|
+
layout:
|
|
579
|
+
structure:
|
|
580
|
+
header: { enabled: true, slots: [project-status, project-priority, project-health], layout: horizontal }
|
|
581
|
+
sidebar: { enabled: true, slots: [project-linked-okr, project-owner, project-deadline, project-effort], position: right, width: 260px, layout: vertical }
|
|
582
|
+
content: { enabled: true, slots: [project-milestone, project-outcome, project-tags], layout: vertical }
|
|
583
|
+
fieldMapping:
|
|
584
|
+
project-status: { slot: project-status, renderer: { type: badge }, order: 1 }
|
|
585
|
+
project-priority: { slot: project-priority, renderer: { type: badge }, order: 2 }
|
|
586
|
+
project-health: { slot: project-health, renderer: { type: badge }, order: 3 }
|
|
587
|
+
project-linked-okr: { slot: project-linked-okr, renderer: { type: link }, order: 4 }
|
|
588
|
+
project-owner: { slot: project-owner, renderer: { type: avatar }, order: 5 }
|
|
589
|
+
project-deadline: { slot: project-deadline, renderer: { type: date, format: relative }, order: 6 }
|
|
590
|
+
project-effort: { slot: project-effort, renderer: { type: number }, order: 7 }
|
|
591
|
+
project-milestone: { slot: project-milestone, renderer: { type: text }, order: 8, label: Milestone, showLabel: true }
|
|
592
|
+
project-outcome: { slot: project-outcome, renderer: { type: text }, order: 9, label: Expected Outcome, showLabel: true }
|
|
593
|
+
project-tags: { slot: project-tags, renderer: { type: badge }, order: 10 }
|
|
594
|
+
colors:
|
|
595
|
+
accent: "#7C3AED"
|
|
596
|
+
|
|
597
|
+
- name: Task Card
|
|
598
|
+
description: ""
|
|
599
|
+
entityType: task
|
|
600
|
+
targetType: entity
|
|
601
|
+
isDefault: true
|
|
602
|
+
config:
|
|
603
|
+
layout:
|
|
604
|
+
structure:
|
|
605
|
+
header: { enabled: true, slots: [task-status, task-priority, task-type], layout: horizontal }
|
|
606
|
+
sidebar: { enabled: true, slots: [task-project, task-sprint, task-assignee, task-due-date, task-effort], position: right, width: 260px, layout: vertical }
|
|
607
|
+
content: { enabled: true, slots: [task-blocked-by, task-tags], layout: vertical }
|
|
608
|
+
fieldMapping:
|
|
609
|
+
task-status: { slot: task-status, renderer: { type: badge }, order: 1 }
|
|
610
|
+
task-priority: { slot: task-priority, renderer: { type: badge }, order: 2 }
|
|
611
|
+
task-type: { slot: task-type, renderer: { type: badge }, order: 3 }
|
|
612
|
+
task-project: { slot: task-project, renderer: { type: link }, order: 4 }
|
|
613
|
+
task-sprint: { slot: task-sprint, renderer: { type: link }, order: 5 }
|
|
614
|
+
task-assignee: { slot: task-assignee, renderer: { type: avatar }, order: 6 }
|
|
615
|
+
task-due-date: { slot: task-due-date, renderer: { type: date, format: relative }, order: 7 }
|
|
616
|
+
task-effort: { slot: task-effort, renderer: { type: number }, order: 8 }
|
|
617
|
+
task-blocked-by: { slot: task-blocked-by, renderer: { type: text }, order: 9, label: Blocked By, showLabel: true }
|
|
618
|
+
task-tags: { slot: task-tags, renderer: { type: badge }, order: 10 }
|
|
619
|
+
colors:
|
|
620
|
+
accent: "#059669"
|
|
621
|
+
|
|
622
|
+
- name: Sprint Card
|
|
623
|
+
description: ""
|
|
624
|
+
entityType: sprint
|
|
625
|
+
targetType: entity
|
|
626
|
+
isDefault: true
|
|
627
|
+
config:
|
|
628
|
+
layout:
|
|
629
|
+
structure:
|
|
630
|
+
header: { enabled: true, slots: [sprint-status, sprint-number], layout: horizontal }
|
|
631
|
+
sidebar: { enabled: true, slots: [sprint-linked-okr, sprint-start, sprint-end, sprint-capacity], position: right, width: 260px, layout: vertical }
|
|
632
|
+
content: { enabled: true, slots: [sprint-goal, sprint-velocity, sprint-completed-count], layout: vertical }
|
|
633
|
+
fieldMapping:
|
|
634
|
+
sprint-status: { slot: sprint-status, renderer: { type: badge }, order: 1 }
|
|
635
|
+
sprint-number: { slot: sprint-number, renderer: { type: number }, order: 2 }
|
|
636
|
+
sprint-linked-okr: { slot: sprint-linked-okr, renderer: { type: link }, order: 3 }
|
|
637
|
+
sprint-start: { slot: sprint-start, renderer: { type: date }, order: 4 }
|
|
638
|
+
sprint-end: { slot: sprint-end, renderer: { type: date, format: relative }, order: 5 }
|
|
639
|
+
sprint-capacity: { slot: sprint-capacity, renderer: { type: number }, order: 6 }
|
|
640
|
+
sprint-goal: { slot: sprint-goal, renderer: { type: text }, order: 7, label: Sprint Goal, showLabel: true }
|
|
641
|
+
sprint-velocity: { slot: sprint-velocity, renderer: { type: progress }, order: 8, label: Velocity, showLabel: true }
|
|
642
|
+
sprint-completed-count: { slot: sprint-completed-count, renderer: { type: number }, order: 9, label: Tasks, showLabel: true }
|
|
643
|
+
colors:
|
|
644
|
+
accent: "#D97706"
|
|
645
|
+
|
|
646
|
+
seedEntities:
|
|
647
|
+
- profileSlug: person
|
|
648
|
+
title: Antoine
|
|
649
|
+
properties:
|
|
650
|
+
person-role: Founder
|
|
651
|
+
person-email: antoine@synap.io
|
|
652
|
+
person-focus: Synap template stack and PM OS launch
|
|
653
|
+
person-okr-owner: true
|
|
654
|
+
person-availability: 40
|
|
655
|
+
person-timezone: Europe/Paris
|
|
656
|
+
|
|
657
|
+
- profileSlug: person
|
|
658
|
+
title: Léa Moreau
|
|
659
|
+
properties:
|
|
660
|
+
person-role: Engineer
|
|
661
|
+
person-email: lea@synap.io
|
|
662
|
+
person-focus: Display template rendering and entity graph view
|
|
663
|
+
person-okr-owner: false
|
|
664
|
+
person-availability: 35
|
|
665
|
+
person-timezone: Europe/Paris
|
|
666
|
+
|
|
667
|
+
- profileSlug: okr
|
|
668
|
+
title: "Launch Synap PM OS — Q1 2026"
|
|
669
|
+
properties:
|
|
670
|
+
okr-status: Active
|
|
671
|
+
okr-quarter: "Q1 2026"
|
|
672
|
+
okr-owner: "ref:person:Antoine"
|
|
673
|
+
okr-type: Company
|
|
674
|
+
kr1-label: Template validated and live in staging
|
|
675
|
+
kr1-target: 1
|
|
676
|
+
kr1-current: 0
|
|
677
|
+
kr1-unit: milestone
|
|
678
|
+
kr2-label: Onboarding guide published (1,000 words min)
|
|
679
|
+
kr2-target: 1
|
|
680
|
+
kr2-current: 0
|
|
681
|
+
kr2-unit: doc
|
|
682
|
+
kr3-label: Demo video recorded and embedded on landing page
|
|
683
|
+
kr3-target: 1
|
|
684
|
+
kr3-current: 0
|
|
685
|
+
kr3-unit: video
|
|
686
|
+
okr-confidence: High
|
|
687
|
+
okr-review-date: "2026-03-28"
|
|
688
|
+
content: |
|
|
689
|
+
# OKR Brief: Launch Synap PM OS — Q1 2026
|
|
690
|
+
|
|
691
|
+
## Objective
|
|
692
|
+
Ship a fully functional, entity-first project management workspace template that demonstrates the core Synap thesis: goals, projects, sprints, and tasks as a connected relationship graph — not siloed tools.
|
|
693
|
+
|
|
694
|
+
## Why This Matters
|
|
695
|
+
The PM software market is $9.76B and growing at 15.4% CAGR, but every major tool treats OKRs and task execution as separate concerns. Asana Goals, Monday OKR boards, ClickUp Goals — all bolted on. None architecturally connects an Objective to the tasks that should advance it.
|
|
696
|
+
|
|
697
|
+
Synap PM OS is the proof of concept that our entity model solves this. Before we can tell founders and small teams that Synap replaces their PM stack, we need to show them what that looks like at the template layer.
|
|
698
|
+
|
|
699
|
+
## Success Definition
|
|
700
|
+
By March 31, 2026:
|
|
701
|
+
- Template JSON validated and live in staging with all 5 profiles, 15 views, 4 display templates, and 26 seed entity relations
|
|
702
|
+
- Onboarding guide published: covers OKR setup, sprint configuration, and the relationship graph demo in under 15 minutes of reading
|
|
703
|
+
- Demo video (3-5 minutes) showing the OKR → Project → Task traversal from the entity card and the relationship graph view
|
|
704
|
+
|
|
705
|
+
## Key Risks
|
|
706
|
+
- Graph view rendering performance on entity-dense workspaces needs testing before public launch
|
|
707
|
+
- OKR progress bar computation logic (KR current / KR target) must be validated against edge cases (zero targets, >100% completion)
|
|
708
|
+
|
|
709
|
+
## Dependencies
|
|
710
|
+
- Display template renderer must support progress-bar for numeric fields before template goes live
|
|
711
|
+
- Seed entity relation pipeline must resolve `ref:` values for all 5 profiles
|
|
712
|
+
|
|
713
|
+
- profileSlug: okr
|
|
714
|
+
title: "Grow Template Activations — Q1 2026"
|
|
715
|
+
properties:
|
|
716
|
+
okr-status: Active
|
|
717
|
+
okr-quarter: "Q1 2026"
|
|
718
|
+
okr-owner: "ref:person:Antoine"
|
|
719
|
+
okr-type: Company
|
|
720
|
+
kr1-label: Template activations (installs)
|
|
721
|
+
kr1-target: 500
|
|
722
|
+
kr1-current: 0
|
|
723
|
+
kr1-unit: activations
|
|
724
|
+
kr2-label: Newsletter subscribers from PM OS launch campaign
|
|
725
|
+
kr2-target: 300
|
|
726
|
+
kr2-current: 0
|
|
727
|
+
kr2-unit: subscribers
|
|
728
|
+
kr3-label: LinkedIn post impressions on PM OS launch thread
|
|
729
|
+
kr3-target: 15000
|
|
730
|
+
kr3-current: 0
|
|
731
|
+
kr3-unit: impressions
|
|
732
|
+
okr-confidence: Medium
|
|
733
|
+
okr-review-date: "2026-03-28"
|
|
734
|
+
|
|
735
|
+
- profileSlug: project
|
|
736
|
+
title: Build PM OS Template
|
|
737
|
+
properties:
|
|
738
|
+
project-status: In Progress
|
|
739
|
+
project-priority: Critical
|
|
740
|
+
project-linked-okr: "ref:okr:Launch Synap PM OS — Q1 2026"
|
|
741
|
+
project-owner: "ref:person:Antoine"
|
|
742
|
+
project-start: "2026-02-17"
|
|
743
|
+
project-deadline: "2026-03-07"
|
|
744
|
+
project-milestone: Template JSON validated in staging
|
|
745
|
+
project-health: Green
|
|
746
|
+
project-effort: 12
|
|
747
|
+
project-tags: [Product, Engineering]
|
|
748
|
+
project-outcome: "A fully functional PM OS workspace template demonstrating the OKR → Project → Task entity graph"
|
|
749
|
+
content: |
|
|
750
|
+
# Project Brief: Build PM OS Template
|
|
751
|
+
|
|
752
|
+
## Scope
|
|
753
|
+
Design, build, and validate the Synap PM OS workspace template JSON. This includes 5 entity profiles (OKR, Project, Task, Sprint, Person), 15 views, a 12-widget dashboard, 4 display templates, 19 seed entities, and 26 suggested relations.
|
|
754
|
+
|
|
755
|
+
## Deliverables
|
|
756
|
+
1. **pm-os-template.json** — Complete workspace template with all profiles, views, dashboard, display templates, seed entities, and suggestedRelations
|
|
757
|
+
2. **Validation report** — Confirms all ref: values resolve correctly, all entity_id properties point to valid targetProfileSlugs, all views reference existing profiles
|
|
758
|
+
3. **Graph demo check** — Confirms the OKR → Project → Task traversal is visible in the relationship graph view from both the OKR entity card and the Task entity card
|
|
759
|
+
|
|
760
|
+
## Architecture Decisions
|
|
761
|
+
- **5 profiles, not 6**: Milestone considered as a sixth profile but folded into Project as a property to reduce complexity for first-time users. Can be promoted to a full profile in v2.
|
|
762
|
+
- **Sprint as first-class entity**: Unlike Asana/Monday which treat sprints as a view filter or folder, Sprint is a proper entity with velocity tracking and retrospective document content.
|
|
763
|
+
- **OKR progress via three KR fields**: Rather than a dynamic KR sub-entity (complex to render), KR1/KR2/KR3 are direct properties with label + target + current + unit. Keeps the OKR card readable without a sub-table.
|
|
764
|
+
|
|
765
|
+
## Timeline
|
|
766
|
+
- Week 1 (Feb 17–21): Profile schemas and property definitions
|
|
767
|
+
- Week 2 (Feb 24–28): Views, dashboard, display templates
|
|
768
|
+
- Week 3 (Mar 2–7): Seed entities, relations, content, validation
|
|
769
|
+
|
|
770
|
+
- profileSlug: project
|
|
771
|
+
title: Publish PM OS Onboarding Guide
|
|
772
|
+
properties:
|
|
773
|
+
project-status: Backlog
|
|
774
|
+
project-priority: High
|
|
775
|
+
project-linked-okr: "ref:okr:Launch Synap PM OS — Q1 2026"
|
|
776
|
+
project-owner: "ref:person:Antoine"
|
|
777
|
+
project-start: "2026-03-03"
|
|
778
|
+
project-deadline: "2026-03-21"
|
|
779
|
+
project-milestone: Guide live at synap.io/templates/pm-os
|
|
780
|
+
project-health: Green
|
|
781
|
+
project-effort: 4
|
|
782
|
+
project-tags: [Product, Marketing]
|
|
783
|
+
project-outcome: Founders and small teams can install and configure the PM OS in under 15 minutes using the guide
|
|
784
|
+
|
|
785
|
+
- profileSlug: project
|
|
786
|
+
title: PM OS Distribution Campaign
|
|
787
|
+
properties:
|
|
788
|
+
project-status: Planning
|
|
789
|
+
project-priority: High
|
|
790
|
+
project-linked-okr: "ref:okr:Grow Template Activations — Q1 2026"
|
|
791
|
+
project-owner: "ref:person:Antoine"
|
|
792
|
+
project-start: "2026-03-10"
|
|
793
|
+
project-deadline: "2026-03-31"
|
|
794
|
+
project-milestone: Launch LinkedIn thread + Newsletter Issue 14
|
|
795
|
+
project-health: Green
|
|
796
|
+
project-effort: 5
|
|
797
|
+
project-tags: [Marketing]
|
|
798
|
+
project-outcome: 500 template activations and 300 newsletter subs from PM OS launch
|
|
799
|
+
|
|
800
|
+
- profileSlug: project
|
|
801
|
+
title: Waitlist Landing Page
|
|
802
|
+
properties:
|
|
803
|
+
project-status: Planning
|
|
804
|
+
project-priority: Medium
|
|
805
|
+
project-linked-okr: "ref:okr:Grow Template Activations — Q1 2026"
|
|
806
|
+
project-owner: "ref:person:Antoine"
|
|
807
|
+
project-start: "2026-03-01"
|
|
808
|
+
project-deadline: "2026-03-14"
|
|
809
|
+
project-milestone: Landing page live with waitlist form
|
|
810
|
+
project-health: Yellow
|
|
811
|
+
project-effort: 3
|
|
812
|
+
project-tags: [Product, Marketing]
|
|
813
|
+
project-outcome: Dedicated landing page for PM OS with activation count display and waitlist CTA
|
|
814
|
+
|
|
815
|
+
- profileSlug: sprint
|
|
816
|
+
title: "Sprint 3 — Content OS & Second Brain Final"
|
|
817
|
+
properties:
|
|
818
|
+
sprint-status: Completed
|
|
819
|
+
sprint-number: 3
|
|
820
|
+
sprint-start: "2026-02-03"
|
|
821
|
+
sprint-end: "2026-02-14"
|
|
822
|
+
sprint-goal: "Ship Content OS and Second Brain templates with full schema upgrade (entity_id, relations, displayTemplates, content)"
|
|
823
|
+
sprint-capacity: 60
|
|
824
|
+
sprint-velocity: 58
|
|
825
|
+
sprint-task-count: 14
|
|
826
|
+
sprint-completed-count: 13
|
|
827
|
+
content: |
|
|
828
|
+
# Sprint 3 Retrospective
|
|
829
|
+
|
|
830
|
+
**Sprint Goal**: Ship Content OS and Second Brain templates with full schema upgrade.
|
|
831
|
+
|
|
832
|
+
**Outcome**: 13/14 tasks completed. Velocity 58/60 hours. One carry-forward: CRM display template polish (moved to Sprint 4).
|
|
833
|
+
|
|
834
|
+
## What Went Well
|
|
835
|
+
- Schema upgrade process was smooth once ref_map pattern was established for seed entities
|
|
836
|
+
- Content entities (deal briefs, activity notes, project briefs) raised the quality bar significantly — writing content as a real user, not a demonstrator, produced noticeably better seed data
|
|
837
|
+
- suggestedRelations architecture creates a graph density pattern: CRM (22 relations) > Content OS (20) > Second Brain (15) — each template's relational profile matches its real-world use
|
|
838
|
+
|
|
839
|
+
## What Didn't
|
|
840
|
+
- KR tracking fields in the OKR profile need reconsideration — three separate label/target/current property groups is readable but doesn't scale to dynamic KR counts
|
|
841
|
+
- Missed one content entity for Second Brain (planned 4, shipped 3)
|
|
842
|
+
|
|
843
|
+
## Actions Next Sprint
|
|
844
|
+
1. Finalize CRM display template polish (carry-forward)
|
|
845
|
+
2. Begin PM OS template architecture with OKR as first-class entity
|
|
846
|
+
3. Validate relationship graph rendering with dense seed entity set (26 relations target)
|
|
847
|
+
4. Decide: static KR properties vs. sub-entity KR model for v2 OKR profile
|
|
848
|
+
|
|
849
|
+
- profileSlug: sprint
|
|
850
|
+
title: "Sprint 4 — Template Validation"
|
|
851
|
+
properties:
|
|
852
|
+
sprint-status: Active
|
|
853
|
+
sprint-number: 4
|
|
854
|
+
sprint-start: "2026-02-17"
|
|
855
|
+
sprint-end: "2026-02-28"
|
|
856
|
+
sprint-goal: "Complete PM OS template JSON, CRM display template polish, and begin onboarding guide outline"
|
|
857
|
+
sprint-capacity: 55
|
|
858
|
+
sprint-velocity: 22
|
|
859
|
+
sprint-task-count: 10
|
|
860
|
+
sprint-completed-count: 4
|
|
861
|
+
sprint-linked-okr: "ref:okr:Launch Synap PM OS — Q1 2026"
|
|
862
|
+
|
|
863
|
+
- profileSlug: sprint
|
|
864
|
+
title: "Sprint 5 — Docs & Distribution"
|
|
865
|
+
properties:
|
|
866
|
+
sprint-status: Planning
|
|
867
|
+
sprint-number: 5
|
|
868
|
+
sprint-start: "2026-03-03"
|
|
869
|
+
sprint-end: "2026-03-14"
|
|
870
|
+
sprint-goal: "Ship onboarding guide, record demo video, build landing page, draft launch content"
|
|
871
|
+
sprint-capacity: 55
|
|
872
|
+
sprint-velocity: 0
|
|
873
|
+
sprint-task-count: 8
|
|
874
|
+
sprint-completed-count: 0
|
|
875
|
+
sprint-linked-okr: "ref:okr:Grow Template Activations — Q1 2026"
|
|
876
|
+
|
|
877
|
+
- profileSlug: task
|
|
878
|
+
title: Define 5 profile schemas
|
|
879
|
+
properties:
|
|
880
|
+
task-status: Done
|
|
881
|
+
task-priority: Critical
|
|
882
|
+
task-assignee: "ref:person:Antoine"
|
|
883
|
+
task-project: "ref:project:Build PM OS Template"
|
|
884
|
+
task-sprint: "ref:sprint:Sprint 4 — Template Validation"
|
|
885
|
+
task-due-date: "2026-02-21"
|
|
886
|
+
task-effort: 4
|
|
887
|
+
task-type: Feature
|
|
888
|
+
task-tags: [deep-work]
|
|
889
|
+
|
|
890
|
+
- profileSlug: task
|
|
891
|
+
title: Configure 15 views
|
|
892
|
+
properties:
|
|
893
|
+
task-status: Done
|
|
894
|
+
task-priority: Critical
|
|
895
|
+
task-assignee: "ref:person:Antoine"
|
|
896
|
+
task-project: "ref:project:Build PM OS Template"
|
|
897
|
+
task-sprint: "ref:sprint:Sprint 4 — Template Validation"
|
|
898
|
+
task-due-date: "2026-02-24"
|
|
899
|
+
task-effort: 3
|
|
900
|
+
task-type: Feature
|
|
901
|
+
task-tags: [deep-work]
|
|
902
|
+
|
|
903
|
+
- profileSlug: task
|
|
904
|
+
title: Write seed entity content
|
|
905
|
+
properties:
|
|
906
|
+
task-status: In Progress
|
|
907
|
+
task-priority: High
|
|
908
|
+
task-assignee: "ref:person:Antoine"
|
|
909
|
+
task-project: "ref:project:Build PM OS Template"
|
|
910
|
+
task-sprint: "ref:sprint:Sprint 4 — Template Validation"
|
|
911
|
+
task-due-date: "2026-02-27"
|
|
912
|
+
task-effort: 5
|
|
913
|
+
task-type: Feature
|
|
914
|
+
task-tags: [deep-work]
|
|
915
|
+
|
|
916
|
+
- profileSlug: task
|
|
917
|
+
title: Validate relationship graph
|
|
918
|
+
properties:
|
|
919
|
+
task-status: Todo
|
|
920
|
+
task-priority: High
|
|
921
|
+
task-assignee: "ref:person:Léa Moreau"
|
|
922
|
+
task-project: "ref:project:Build PM OS Template"
|
|
923
|
+
task-sprint: "ref:sprint:Sprint 4 — Template Validation"
|
|
924
|
+
task-due-date: "2026-02-28"
|
|
925
|
+
task-effort: 3
|
|
926
|
+
task-type: Feature
|
|
927
|
+
task-blocked-by: Seed entity content must be complete first
|
|
928
|
+
task-tags: [deep-work, waiting]
|
|
929
|
+
|
|
930
|
+
- profileSlug: task
|
|
931
|
+
title: Write OKR setup walkthrough
|
|
932
|
+
properties:
|
|
933
|
+
task-status: Backlog
|
|
934
|
+
task-priority: High
|
|
935
|
+
task-assignee: "ref:person:Antoine"
|
|
936
|
+
task-project: "ref:project:Publish PM OS Onboarding Guide"
|
|
937
|
+
task-sprint: "ref:sprint:Sprint 5 — Docs & Distribution"
|
|
938
|
+
task-due-date: "2026-03-10"
|
|
939
|
+
task-effort: 3
|
|
940
|
+
task-type: Content
|
|
941
|
+
task-tags: [deep-work, async]
|
|
942
|
+
|
|
943
|
+
- profileSlug: task
|
|
944
|
+
title: Record demo video
|
|
945
|
+
properties:
|
|
946
|
+
task-status: Backlog
|
|
947
|
+
task-priority: High
|
|
948
|
+
task-assignee: "ref:person:Antoine"
|
|
949
|
+
task-project: "ref:project:Publish PM OS Onboarding Guide"
|
|
950
|
+
task-sprint: "ref:sprint:Sprint 5 — Docs & Distribution"
|
|
951
|
+
task-due-date: "2026-03-14"
|
|
952
|
+
task-effort: 4
|
|
953
|
+
task-type: Content
|
|
954
|
+
task-blocked-by: Template must be live in staging before recording
|
|
955
|
+
task-tags: [deep-work]
|
|
956
|
+
|
|
957
|
+
- profileSlug: task
|
|
958
|
+
title: Draft LinkedIn launch thread
|
|
959
|
+
properties:
|
|
960
|
+
task-status: Backlog
|
|
961
|
+
task-priority: Medium
|
|
962
|
+
task-assignee: "ref:person:Antoine"
|
|
963
|
+
task-project: "ref:project:PM OS Distribution Campaign"
|
|
964
|
+
task-sprint: "ref:sprint:Sprint 5 — Docs & Distribution"
|
|
965
|
+
task-due-date: "2026-03-12"
|
|
966
|
+
task-effort: 2
|
|
967
|
+
task-type: Content
|
|
968
|
+
task-tags: [async]
|
|
969
|
+
|
|
970
|
+
- profileSlug: task
|
|
971
|
+
title: Schedule newsletter Issue 14 teaser
|
|
972
|
+
properties:
|
|
973
|
+
task-status: Backlog
|
|
974
|
+
task-priority: Medium
|
|
975
|
+
task-assignee: "ref:person:Antoine"
|
|
976
|
+
task-project: "ref:project:PM OS Distribution Campaign"
|
|
977
|
+
task-sprint: "ref:sprint:Sprint 5 — Docs & Distribution"
|
|
978
|
+
task-due-date: "2026-03-10"
|
|
979
|
+
task-effort: 1
|
|
980
|
+
task-type: Content
|
|
981
|
+
task-tags: [async, quick-win]
|
|
982
|
+
|
|
983
|
+
- profileSlug: task
|
|
984
|
+
title: Design hero section copy
|
|
985
|
+
properties:
|
|
986
|
+
task-status: Backlog
|
|
987
|
+
task-priority: Medium
|
|
988
|
+
task-assignee: "ref:person:Antoine"
|
|
989
|
+
task-project: "ref:project:Waitlist Landing Page"
|
|
990
|
+
task-due-date: "2026-03-07"
|
|
991
|
+
task-effort: 2
|
|
992
|
+
task-type: Content
|
|
993
|
+
task-tags: [async, quick-win]
|
|
994
|
+
|
|
995
|
+
suggestedRelations:
|
|
996
|
+
- { sourceRef: "okr:Launch Synap PM OS — Q1 2026", targetRef: "project:Build PM OS Template", type: parent_of }
|
|
997
|
+
- { sourceRef: "okr:Launch Synap PM OS — Q1 2026", targetRef: "project:Publish PM OS Onboarding Guide", type: parent_of }
|
|
998
|
+
- { sourceRef: "okr:Grow Template Activations — Q1 2026", targetRef: "project:PM OS Distribution Campaign", type: parent_of }
|
|
999
|
+
- { sourceRef: "okr:Grow Template Activations — Q1 2026", targetRef: "project:Waitlist Landing Page", type: parent_of }
|
|
1000
|
+
- { sourceRef: "project:Build PM OS Template", targetRef: "task:Define 5 profile schemas", type: parent_of }
|
|
1001
|
+
- { sourceRef: "project:Build PM OS Template", targetRef: "task:Configure 15 views", type: parent_of }
|
|
1002
|
+
- { sourceRef: "project:Build PM OS Template", targetRef: "task:Write seed entity content", type: parent_of }
|
|
1003
|
+
- { sourceRef: "project:Build PM OS Template", targetRef: "task:Validate relationship graph", type: parent_of }
|
|
1004
|
+
- { sourceRef: "project:Publish PM OS Onboarding Guide", targetRef: "task:Write OKR setup walkthrough", type: parent_of }
|
|
1005
|
+
- { sourceRef: "project:Publish PM OS Onboarding Guide", targetRef: "task:Record demo video", type: parent_of }
|
|
1006
|
+
- { sourceRef: "project:PM OS Distribution Campaign", targetRef: "task:Draft LinkedIn launch thread", type: parent_of }
|
|
1007
|
+
- { sourceRef: "project:PM OS Distribution Campaign", targetRef: "task:Schedule newsletter Issue 14 teaser", type: parent_of }
|
|
1008
|
+
- { sourceRef: "project:Waitlist Landing Page", targetRef: "task:Design hero section copy", type: parent_of }
|
|
1009
|
+
- { sourceRef: "sprint:Sprint 4 — Template Validation", targetRef: "task:Define 5 profile schemas", type: relates_to }
|
|
1010
|
+
- { sourceRef: "sprint:Sprint 4 — Template Validation", targetRef: "task:Configure 15 views", type: relates_to }
|
|
1011
|
+
- { sourceRef: "sprint:Sprint 4 — Template Validation", targetRef: "task:Write seed entity content", type: relates_to }
|
|
1012
|
+
- { sourceRef: "sprint:Sprint 4 — Template Validation", targetRef: "task:Validate relationship graph", type: relates_to }
|
|
1013
|
+
- { sourceRef: "sprint:Sprint 5 — Docs & Distribution", targetRef: "task:Write OKR setup walkthrough", type: relates_to }
|
|
1014
|
+
- { sourceRef: "sprint:Sprint 5 — Docs & Distribution", targetRef: "task:Record demo video", type: relates_to }
|
|
1015
|
+
- { sourceRef: "sprint:Sprint 5 — Docs & Distribution", targetRef: "task:Draft LinkedIn launch thread", type: relates_to }
|
|
1016
|
+
- { sourceRef: "sprint:Sprint 5 — Docs & Distribution", targetRef: "task:Schedule newsletter Issue 14 teaser", type: relates_to }
|
|
1017
|
+
- { sourceRef: "task:Define 5 profile schemas", targetRef: "person:Antoine", type: assigned_to }
|
|
1018
|
+
- { sourceRef: "task:Configure 15 views", targetRef: "person:Antoine", type: assigned_to }
|
|
1019
|
+
- { sourceRef: "task:Write OKR setup walkthrough", targetRef: "person:Antoine", type: assigned_to }
|
|
1020
|
+
- { sourceRef: "task:Draft LinkedIn launch thread", targetRef: "person:Antoine", type: assigned_to }
|
|
1021
|
+
- { sourceRef: "okr:Launch Synap PM OS — Q1 2026", targetRef: "person:Antoine", type: assigned_to }
|
|
1022
|
+
- { sourceRef: "okr:Grow Template Activations — Q1 2026", targetRef: "person:Antoine", type: assigned_to }
|
|
1023
|
+
|
|
1024
|
+
# App reference — PM OS lands on its views/dashboard.
|
|
1025
|
+
app:
|
|
1026
|
+
kind: stored
|
|
1027
|
+
cellKey: entity-detail
|
|
1028
|
+
|
|
1029
|
+
# Browser sidebar + layout config.
|
|
1030
|
+
layout:
|
|
1031
|
+
defaultView: OKR Dashboard
|
|
1032
|
+
defaultApp: null
|
|
1033
|
+
pinnedApps: [dashboard, data]
|
|
1034
|
+
sidebarItems:
|
|
1035
|
+
- { kind: view, viewName: OKR Dashboard, label: OKRs, icon: target }
|
|
1036
|
+
- { kind: view, viewName: Project Board, label: Projects, icon: folder }
|
|
1037
|
+
- { kind: view, viewName: Sprint Board, label: Sprint Board, icon: zap }
|
|
1038
|
+
- { kind: view, viewName: All Sprints, label: Sprints, icon: list }
|
|
1039
|
+
- { kind: view, viewName: Task Inbox, label: Tasks, icon: check-square }
|
|
1040
|
+
- { kind: view, viewName: Weekly Focus, label: This Week, icon: calendar }
|
|
1041
|
+
- { kind: view, viewName: Backlog, label: Backlog, icon: inbox }
|
|
1042
|
+
- { kind: view, viewName: Relationship Graph, label: Graph, icon: git-branch }
|
|
1043
|
+
- { kind: view, viewName: Team Workload, label: Team, icon: users }
|
|
1044
|
+
- { kind: view, viewName: Calendar, label: Calendar, icon: calendar-days }
|
|
1045
|
+
|
|
1046
|
+
# Home dashboard — bentoLayout widgets + bentoViewBlocks merged.
|
|
1047
|
+
bento:
|
|
1048
|
+
viewName: PM OS Home
|
|
1049
|
+
blocks:
|
|
1050
|
+
- { kind: widget, widgetType: welcome-header, pos: { x: 0, y: 0, w: 12, h: 2 }, config: { title: Project Management OS, subtitle: "OKRs → Projects → Tasks — all connected." } }
|
|
1051
|
+
- { kind: widget, widgetType: entity-count, pos: { x: 0, y: 2, w: 2, h: 3 }, config: { profileSlug: okr, label: Active OKRs, icon: target } }
|
|
1052
|
+
- { kind: widget, widgetType: entity-count, pos: { x: 2, y: 2, w: 2, h: 3 }, config: { profileSlug: project, label: Active Projects, icon: folder } }
|
|
1053
|
+
- { kind: widget, widgetType: entity-count, pos: { x: 4, y: 2, w: 2, h: 3 }, config: { profileSlug: task, label: Open Tasks, icon: check-square } }
|
|
1054
|
+
- { kind: widget, widgetType: entity-count, pos: { x: 6, y: 2, w: 2, h: 3 }, config: { profileSlug: sprint, label: Active Sprints, icon: zap } }
|
|
1055
|
+
- { kind: widget, widgetType: entity-count, pos: { x: 8, y: 2, w: 2, h: 3 }, config: { profileSlug: person, label: Team Members, icon: users } }
|
|
1056
|
+
- { kind: widget, widgetType: entity-count, pos: { x: 10, y: 2, w: 2, h: 3 }, config: { profileSlug: task, label: Due This Week, icon: calendar } }
|
|
1057
|
+
- { kind: view, viewName: OKR Progress Table, pos: { x: 0, y: 5, w: 7, h: 8 } }
|
|
1058
|
+
- { kind: view, viewName: Sprint Board, pos: { x: 7, y: 5, w: 5, h: 8 } }
|
|
1059
|
+
- { kind: view, viewName: Project Timeline, pos: { x: 0, y: 13, w: 8, h: 6 } }
|
|
1060
|
+
- { kind: view, viewName: Weekly Focus, pos: { x: 8, y: 13, w: 4, h: 6 } }
|
|
1061
|
+
|
|
1062
|
+
# Per-profile entity detail bento layouts.
|
|
1063
|
+
profileEntityBentoTemplates:
|
|
1064
|
+
okr:
|
|
1065
|
+
blocks:
|
|
1066
|
+
- { id: okr-eb-header, kind: widget, widgetType: entity-header, pos: { x: 0, y: 0, w: 12, h: 2 } }
|
|
1067
|
+
- { id: okr-eb-props, kind: widget, widgetType: entity-properties, pos: { x: 0, y: 2, w: 4, h: 8 } }
|
|
1068
|
+
- { id: okr-eb-projects, kind: widget, widgetType: entity-list, pos: { x: 4, y: 2, w: 8, h: 4 }, config: { profileSlug: project, title: Projects, limit: 6, variant: compact } }
|
|
1069
|
+
- { id: okr-eb-content, kind: widget, widgetType: entity-content, pos: { x: 4, y: 6, w: 8, h: 4 } }
|
|
1070
|
+
project:
|
|
1071
|
+
blocks:
|
|
1072
|
+
- { id: proj-eb-header, kind: widget, widgetType: entity-header, pos: { x: 0, y: 0, w: 12, h: 2 } }
|
|
1073
|
+
- { id: proj-eb-props, kind: widget, widgetType: entity-properties, pos: { x: 0, y: 2, w: 4, h: 8 } }
|
|
1074
|
+
- { id: proj-eb-tasks, kind: widget, widgetType: entity-list, pos: { x: 4, y: 2, w: 8, h: 4 }, config: { profileSlug: task, title: Tasks, limit: 8, variant: compact } }
|
|
1075
|
+
- { id: proj-eb-content, kind: widget, widgetType: entity-content, pos: { x: 4, y: 6, w: 8, h: 4 } }
|
|
1076
|
+
task:
|
|
1077
|
+
blocks:
|
|
1078
|
+
- { id: task-eb-header, kind: widget, widgetType: entity-header, pos: { x: 0, y: 0, w: 12, h: 2 } }
|
|
1079
|
+
- { id: task-eb-props, kind: widget, widgetType: entity-properties, pos: { x: 0, y: 2, w: 5, h: 8 } }
|
|
1080
|
+
- { id: task-eb-content, kind: widget, widgetType: entity-content, pos: { x: 5, y: 2, w: 7, h: 8 } }
|
|
1081
|
+
sprint:
|
|
1082
|
+
blocks:
|
|
1083
|
+
- { id: sprint-eb-header, kind: widget, widgetType: entity-header, pos: { x: 0, y: 0, w: 12, h: 2 } }
|
|
1084
|
+
- { id: sprint-eb-props, kind: widget, widgetType: entity-properties, pos: { x: 0, y: 2, w: 4, h: 6 } }
|
|
1085
|
+
- { id: sprint-eb-tasks, kind: widget, widgetType: entity-list, pos: { x: 4, y: 2, w: 8, h: 6 }, config: { profileSlug: task, title: Sprint Tasks, limit: 10, variant: compact } }
|
|
1086
|
+
|
|
1087
|
+
# Playbooks — session templates seeded with the workspace.
|
|
1088
|
+
playbooks:
|
|
1089
|
+
- name: Sprint Retrospective
|
|
1090
|
+
goalTemplate: "Run a retrospective for {sprint} to review what went well, what didn't, and what to improve next sprint."
|
|
1091
|
+
params:
|
|
1092
|
+
- { name: sprint, type: entity, label: Sprint, required: true }
|
|
1093
|
+
|
|
1094
|
+
# Per-workspace onboarding context (read by the shared onboard skill).
|
|
1095
|
+
onboarding:
|
|
1096
|
+
goal: "Capture the user's goals, the projects in flight, the current sprint, and who's involved — so the workspace mirrors how their team actually plans and delivers."
|
|
1097
|
+
framing: "Act as a sharp delivery lead / chief of staff. Tease out what outcomes matter this quarter, what's actively being worked, what's in the current cycle, and who owns what. Translate that into OKRs, projects, a sprint, and people."
|
|
1098
|
+
collect:
|
|
1099
|
+
- profileSlug: okr
|
|
1100
|
+
what: The goals / OKRs that define success this quarter
|
|
1101
|
+
cardinality: few
|
|
1102
|
+
keyFields: [title, okr-quarter, okr-owner, kr1-label]
|
|
1103
|
+
- profileSlug: project
|
|
1104
|
+
what: The projects actively in flight and their priority
|
|
1105
|
+
cardinality: several
|
|
1106
|
+
keyFields: [title, project-status, project-priority, project-linked-okr]
|
|
1107
|
+
- profileSlug: sprint
|
|
1108
|
+
what: The current cycle / sprint and its goal
|
|
1109
|
+
cardinality: one
|
|
1110
|
+
keyFields: [title, sprint-goal, sprint-start, sprint-end]
|
|
1111
|
+
- profileSlug: person
|
|
1112
|
+
what: The key people on the team and their roles
|
|
1113
|
+
cardinality: several
|
|
1114
|
+
keyFields: [name, person-role, person-email]
|
|
1115
|
+
openingQuestions:
|
|
1116
|
+
- "What are the big outcomes you're trying to hit this quarter?"
|
|
1117
|
+
- "What projects are actively in flight right now, and which matter most?"
|
|
1118
|
+
- "Who's on the team, and what does each person own?"
|
|
1119
|
+
doneWhen: "This quarter's goals exist, active projects are captured with priority, a current sprint is defined, and the core team is on the board."
|