@synap-core/workspace-templates 0.2.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/src/hr.yaml ADDED
@@ -0,0 +1,433 @@
1
+ # HR workspace template
2
+ # The PEOPLE operating system for a company — the team, hiring, performance, and
3
+ # policies in one lens. Displayed as "People". Consumes the Foundation `strategy`
4
+ # domain so hiring, reviews, and onboarding stay anchored to the company's real
5
+ # values (culture), not a generic template.
6
+
7
+ meta:
8
+ slug: hr
9
+ name: HR
10
+ description: The people operating system — team, hiring, performance reviews, and policies in one place.
11
+ icon: users-round
12
+ color: "#E8663D"
13
+ tags: [hr, people, hiring, team]
14
+ isPublic: true
15
+
16
+ workspace:
17
+ name: People
18
+ description: The company's people operating system — the team, open roles and hiring pipeline, performance cycles, onboarding plans, and people policies.
19
+ proposalId: hr-v1
20
+ subtype: hr
21
+ visibility: members
22
+ workspaceType: operational
23
+ capabilities:
24
+ - hr.team
25
+ - hr.hiring
26
+ - hr.reviews
27
+ # HR provides the people domain to the rest of the pod, and CONSUMES the
28
+ # Foundation `strategy` domain — its values become the culture that anchors
29
+ # hiring bars, review rubrics, and onboarding.
30
+ sourceRoles:
31
+ hr: provider
32
+ strategy: consumer
33
+
34
+ profiles:
35
+ - slug: team-member
36
+ displayName: Team Member
37
+ icon: user-round
38
+ color: indigo
39
+ description: "A person on the team — the core people record."
40
+ properties:
41
+ - slug: role-title
42
+ label: Role
43
+ valueType: string
44
+ inputType: text
45
+ placeholder: e.g. Senior Product Designer
46
+ - slug: status
47
+ label: Status
48
+ valueType: string
49
+ inputType: select
50
+ enumValues: [active, onboarding, on-leave, offboarding, alumni]
51
+ constraints: { defaultValue: active }
52
+ - slug: department
53
+ label: Department
54
+ valueType: string
55
+ inputType: select
56
+ enumValues: [Engineering, Product, Design, Sales, Marketing, Operations, People, Finance, Other]
57
+ - slug: employment-type
58
+ label: Employment Type
59
+ valueType: string
60
+ inputType: select
61
+ enumValues: [full-time, part-time, contractor, intern]
62
+ constraints: { defaultValue: full-time }
63
+ - slug: start-date
64
+ label: Start Date
65
+ valueType: date
66
+ inputType: date
67
+ - slug: email
68
+ label: Email
69
+ valueType: string
70
+ inputType: text
71
+ placeholder: name@company.com
72
+ constraints: { format: email }
73
+ - slug: location
74
+ label: Location
75
+ valueType: string
76
+ inputType: text
77
+ placeholder: City, Country
78
+
79
+ - slug: role
80
+ displayName: Role
81
+ icon: briefcase
82
+ color: amber
83
+ description: "A position — open req or filled seat — with its job spec."
84
+ properties:
85
+ - slug: status
86
+ label: Status
87
+ valueType: string
88
+ inputType: select
89
+ enumValues: [draft, open, interviewing, offer-out, filled, on-hold, closed]
90
+ constraints: { defaultValue: open }
91
+ - slug: department
92
+ label: Department
93
+ valueType: string
94
+ inputType: select
95
+ enumValues: [Engineering, Product, Design, Sales, Marketing, Operations, People, Finance, Other]
96
+ - slug: seniority
97
+ label: Seniority
98
+ valueType: string
99
+ inputType: select
100
+ enumValues: [junior, mid, senior, staff, lead, manager, director]
101
+ - slug: employment-type
102
+ label: Employment Type
103
+ valueType: string
104
+ inputType: select
105
+ enumValues: [full-time, part-time, contractor, intern]
106
+ constraints: { defaultValue: full-time }
107
+ - slug: hiring-manager
108
+ label: Hiring Manager
109
+ valueType: string
110
+ inputType: text
111
+ - slug: target-start
112
+ label: Target Start
113
+ valueType: date
114
+ inputType: date
115
+ - slug: job-spec
116
+ label: Job Spec
117
+ valueType: string
118
+ inputType: textarea
119
+ placeholder: Mission, responsibilities, must-haves, hiring bar...
120
+
121
+ - slug: candidate
122
+ displayName: Candidate
123
+ icon: user-plus
124
+ color: cyan
125
+ description: "A person moving through the hiring pipeline for a role."
126
+ properties:
127
+ - slug: stage
128
+ label: Stage
129
+ valueType: string
130
+ inputType: select
131
+ enumValues: [applied, screening, interview, offer, hired, rejected, withdrawn]
132
+ constraints: { defaultValue: applied }
133
+ - slug: source
134
+ label: Source
135
+ valueType: string
136
+ inputType: select
137
+ enumValues: [referral, inbound, outbound, agency, event, other]
138
+ - slug: email
139
+ label: Email
140
+ valueType: string
141
+ inputType: text
142
+ placeholder: name@email.com
143
+ constraints: { format: email }
144
+ - slug: phone
145
+ label: Phone
146
+ valueType: string
147
+ inputType: text
148
+ - slug: resume-url
149
+ label: Resume
150
+ valueType: string
151
+ inputType: url
152
+ - slug: rating
153
+ label: Rating
154
+ valueType: number
155
+ inputType: number
156
+ constraints: { min: 0, max: 5 }
157
+ - slug: notes
158
+ label: Notes
159
+ valueType: string
160
+ inputType: textarea
161
+
162
+ - slug: review
163
+ displayName: Review
164
+ icon: clipboard-check
165
+ color: violet
166
+ description: "A performance review within a company review cycle."
167
+ properties:
168
+ - slug: cycle
169
+ label: Cycle
170
+ valueType: string
171
+ inputType: text
172
+ placeholder: e.g. H1 2026
173
+ - slug: status
174
+ label: Status
175
+ valueType: string
176
+ inputType: select
177
+ enumValues: [not-started, self-review, manager-review, calibration, shared, complete]
178
+ constraints: { defaultValue: not-started }
179
+ - slug: rating
180
+ label: Rating
181
+ valueType: string
182
+ inputType: select
183
+ enumValues: [exceeds, meets, developing, below]
184
+ - slug: reviewer
185
+ label: Reviewer
186
+ valueType: string
187
+ inputType: text
188
+ - slug: summary
189
+ label: Summary
190
+ valueType: string
191
+ inputType: textarea
192
+
193
+ - slug: policy
194
+ displayName: Policy
195
+ icon: scroll-text
196
+ color: slate
197
+ description: "A people policy or handbook section."
198
+ properties:
199
+ - slug: category
200
+ label: Category
201
+ valueType: string
202
+ inputType: select
203
+ enumValues: [leave, benefits, conduct, remote-work, expenses, security, compensation, other]
204
+ - slug: status
205
+ label: Status
206
+ valueType: string
207
+ inputType: select
208
+ enumValues: [draft, active, under-review, archived]
209
+ constraints: { defaultValue: active }
210
+ - slug: owner
211
+ label: Owner
212
+ valueType: string
213
+ inputType: text
214
+ - slug: effective-date
215
+ label: Effective Date
216
+ valueType: date
217
+ inputType: date
218
+ - slug: summary
219
+ label: Summary
220
+ valueType: string
221
+ inputType: textarea
222
+
223
+ - slug: onboarding-plan
224
+ displayName: Onboarding Plan
225
+ icon: rocket
226
+ color: green
227
+ description: "A new hire's first-weeks plan, buddy, and checklist."
228
+ properties:
229
+ - slug: status
230
+ label: Status
231
+ valueType: string
232
+ inputType: select
233
+ enumValues: [not-started, in-progress, complete]
234
+ constraints: { defaultValue: not-started }
235
+ - slug: start-date
236
+ label: Start Date
237
+ valueType: date
238
+ inputType: date
239
+ - slug: buddy
240
+ label: Buddy
241
+ valueType: string
242
+ inputType: text
243
+ - slug: checklist
244
+ label: Checklist
245
+ valueType: string
246
+ inputType: textarea
247
+ placeholder: Accounts, intro meetings, first task, 30/60/90 goals...
248
+
249
+ views:
250
+ - name: Team
251
+ slug: team
252
+ type: table
253
+ scopeProfileSlug: team-member
254
+ defaultView: true
255
+ description: Everyone on the team, by role and status.
256
+ config:
257
+ columns: [title, role-title, department, status, employment-type, start-date, location]
258
+ - name: Hiring Pipeline
259
+ slug: hiring-pipeline
260
+ type: kanban
261
+ scopeProfileSlug: candidate
262
+ groupBy: stage
263
+ description: Candidates moving through the pipeline, by stage.
264
+ config:
265
+ groupBy: stage
266
+ cardFields: [source, rating, email]
267
+ - name: Open Roles
268
+ slug: open-roles
269
+ type: table
270
+ scopeProfileSlug: role
271
+ description: Positions and their hiring status.
272
+ config:
273
+ columns: [title, status, department, seniority, hiring-manager, target-start]
274
+ - name: Reviews
275
+ slug: reviews
276
+ type: kanban
277
+ scopeProfileSlug: review
278
+ groupBy: status
279
+ description: Performance reviews across the cycle, by status.
280
+ config:
281
+ groupBy: status
282
+ cardFields: [cycle, rating, reviewer]
283
+ - name: Policies
284
+ slug: policies
285
+ type: table
286
+ scopeProfileSlug: policy
287
+ description: People policies and handbook sections.
288
+ config:
289
+ columns: [title, category, status, owner, effective-date]
290
+ - name: Onboarding
291
+ slug: onboarding
292
+ type: table
293
+ scopeProfileSlug: onboarding-plan
294
+ description: New hire onboarding plans and progress.
295
+ config:
296
+ columns: [title, status, start-date, buddy]
297
+
298
+ # Schema-level relations — give the relation picker domain links from day one.
299
+ entityLinks:
300
+ - sourceProfileSlug: candidate
301
+ targetProfileSlug: role
302
+ type: applying_for
303
+ label: Applying for
304
+ - sourceProfileSlug: review
305
+ targetProfileSlug: team-member
306
+ type: reviews
307
+ label: Reviews
308
+ - sourceProfileSlug: onboarding-plan
309
+ targetProfileSlug: team-member
310
+ type: for
311
+ label: For
312
+ - sourceProfileSlug: team-member
313
+ targetProfileSlug: role
314
+ type: fills
315
+ label: Fills
316
+ - sourceProfileSlug: team-member
317
+ targetProfileSlug: team-member
318
+ type: reports_to
319
+ label: Reports to
320
+
321
+ onboarding:
322
+ goal: Capture the real shape of the company's people — who's on the team, what roles are open, who's in the pipeline, and how performance is reviewed — so the People workspace reflects the actual org, not a template.
323
+ framing: >
324
+ THE HEAD OF PEOPLE: Act as a sharp, warm head of people/talent. You care about
325
+ two things at once — the humans and the operating system around them. Draw out
326
+ the real org: who does what, what you're hiring for and why, how candidates move,
327
+ and how you run performance. Anchor everything to the company's culture — pull the
328
+ Foundation values and reflect them back as the hiring bar and review rubric.
329
+ Be direct about gaps (no owner on a policy, a role open with no hiring manager),
330
+ but never clinical — these are people.
331
+ collect:
332
+ - profileSlug: team-member
333
+ what: The people currently on the team, with their role, department, and status.
334
+ cardinality: several
335
+ keyFields: [role-title, department, status]
336
+ - profileSlug: role
337
+ what: The positions you're hiring for right now — open reqs with their hiring bar.
338
+ cardinality: few
339
+ keyFields: [status, department, seniority]
340
+ - profileSlug: candidate
341
+ what: Active candidates worth tracking now, and where they are in the pipeline.
342
+ cardinality: few
343
+ keyFields: [stage, source]
344
+ - profileSlug: review
345
+ what: The current review cycle and how you run performance (cadence + rubric).
346
+ cardinality: one
347
+ keyFields: [cycle, status]
348
+ openingQuestions:
349
+ - "Who's on the team today — walk me through the people and what they own."
350
+ - "What are you hiring for right now, and what does 'a great hire' look like here?"
351
+ - "How do you run performance — what's your review cadence, and what does it reward?"
352
+ doneWhen: The core team exists with roles and status, at least one open role with its hiring bar is captured, and a review cycle is defined — ideally with its rubric tied to the Foundation values.
353
+
354
+ app:
355
+ kind: stored
356
+ cellKey: entity-detail
357
+
358
+ layout:
359
+ defaultView: Team
360
+ defaultApp: null
361
+ pinnedApps: [dashboard, data, intelligence]
362
+ sidebarItems:
363
+ - kind: view
364
+ viewName: Team
365
+ label: Team
366
+ icon: users-round
367
+ - kind: view
368
+ viewName: Hiring Pipeline
369
+ label: Hiring Pipeline
370
+ icon: user-plus
371
+ - kind: view
372
+ viewName: Open Roles
373
+ label: Open Roles
374
+ icon: briefcase
375
+ - kind: view
376
+ viewName: Reviews
377
+ label: Reviews
378
+ icon: clipboard-check
379
+ - kind: view
380
+ viewName: Onboarding
381
+ label: Onboarding
382
+ icon: rocket
383
+ - kind: view
384
+ viewName: Policies
385
+ label: Policies
386
+ icon: scroll-text
387
+ - kind: app
388
+ appId: data
389
+ label: All Data
390
+ icon: database
391
+
392
+ bento:
393
+ viewName: People Command Center
394
+ blocks:
395
+ - kind: widget
396
+ widgetType: welcome-header
397
+ pos: { x: 0, y: 0, w: 12, h: 2 }
398
+ - kind: widget
399
+ widgetType: entity-count
400
+ pos: { x: 0, y: 2, w: 3, h: 2 }
401
+ config:
402
+ profileSlug: team-member
403
+ label: Team
404
+ - kind: widget
405
+ widgetType: entity-count
406
+ pos: { x: 3, y: 2, w: 3, h: 2 }
407
+ config:
408
+ profileSlug: role
409
+ label: Open Roles
410
+ - kind: widget
411
+ widgetType: entity-count
412
+ pos: { x: 6, y: 2, w: 3, h: 2 }
413
+ config:
414
+ profileSlug: candidate
415
+ label: In Pipeline
416
+ - kind: widget
417
+ widgetType: entity-count
418
+ pos: { x: 9, y: 2, w: 3, h: 2 }
419
+ config:
420
+ profileSlug: review
421
+ label: Reviews
422
+ - kind: view
423
+ viewName: Hiring Pipeline
424
+ pos: { x: 0, y: 4, w: 8, h: 5 }
425
+ - kind: view
426
+ viewName: Open Roles
427
+ pos: { x: 8, y: 4, w: 4, h: 5 }
428
+ - kind: view
429
+ viewName: Team
430
+ pos: { x: 0, y: 9, w: 6, h: 4 }
431
+ - kind: view
432
+ viewName: Reviews
433
+ pos: { x: 6, y: 9, w: 6, h: 4 }