@synap-core/workspace-templates 0.2.2 → 0.4.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/legal.yaml ADDED
@@ -0,0 +1,495 @@
1
+ # Legal workspace template
2
+ # The company's LEGAL operating system, modeled the way a startup general counsel
3
+ # actually works: the entities you incorporate, the contracts you sign, the
4
+ # compliance obligations you must not miss, the IP you own, the policies you set,
5
+ # and the matters/disputes you manage. Pod-visible provider of the `legal` domain.
6
+
7
+ meta:
8
+ slug: legal
9
+ name: Legal
10
+ description: The company's legal operating system — contracts, compliance, IP, entities, and matters.
11
+ icon: scale
12
+ color: "#4338CA"
13
+ tags: [legal, contracts, compliance, ip]
14
+ isPublic: true
15
+
16
+ workspace:
17
+ name: Legal
18
+ description: The company's legal command center — legal entities, contracts and renewals, compliance obligations, intellectual property, internal policies, and matters.
19
+ proposalId: legal-v1
20
+ subtype: legal
21
+ visibility: members
22
+ workspaceType: operational
23
+ capabilities:
24
+ - legal.contracts
25
+ - legal.compliance
26
+ - legal.ip
27
+ sourceRoles:
28
+ legal: provider
29
+
30
+ profiles:
31
+ - slug: legal-entity
32
+ displayName: Legal Entity
33
+ icon: landmark
34
+ color: indigo
35
+ description: "A company legal entity — a corporation, subsidiary, or branch in a given jurisdiction."
36
+ properties:
37
+ - slug: entityType
38
+ label: Entity Type
39
+ valueType: string
40
+ inputType: select
41
+ enumValues: [c-corp, s-corp, llc, ltd, gmbh, sas, subsidiary, branch, other]
42
+ - slug: jurisdiction
43
+ label: Jurisdiction
44
+ valueType: string
45
+ inputType: text
46
+ placeholder: e.g. Delaware, USA
47
+ - slug: registrationNumber
48
+ label: Registration Number
49
+ valueType: string
50
+ inputType: text
51
+ - slug: status
52
+ label: Status
53
+ valueType: string
54
+ inputType: select
55
+ enumValues: [in-formation, active, dormant, dissolved]
56
+ constraints: { defaultValue: active }
57
+ - slug: incorporationDate
58
+ label: Incorporation Date
59
+ valueType: date
60
+ inputType: date
61
+ - slug: registeredAgent
62
+ label: Registered Agent
63
+ valueType: string
64
+ inputType: text
65
+ - slug: notes
66
+ label: Notes
67
+ valueType: string
68
+ inputType: textarea
69
+
70
+ - slug: contract
71
+ displayName: Contract
72
+ icon: file-signature
73
+ color: violet
74
+ description: "A legal agreement with a counterparty — its status, term, and renewal."
75
+ properties:
76
+ - slug: contractType
77
+ label: Type
78
+ valueType: string
79
+ inputType: select
80
+ enumValues: [nda, msa, saas-subscription, employment, contractor, lease, partnership, financing, dpa, other]
81
+ - slug: status
82
+ label: Status
83
+ valueType: string
84
+ inputType: select
85
+ enumValues: [draft, in-review, negotiation, signed, active, expired, terminated]
86
+ constraints: { defaultValue: draft }
87
+ - slug: counterparty
88
+ label: Counterparty
89
+ valueType: string
90
+ inputType: text
91
+ - slug: effectiveDate
92
+ label: Effective Date
93
+ valueType: date
94
+ inputType: date
95
+ - slug: expirationDate
96
+ label: Expiration Date
97
+ valueType: date
98
+ inputType: date
99
+ - slug: renewalType
100
+ label: Renewal
101
+ valueType: string
102
+ inputType: select
103
+ enumValues: [none, auto-renew, manual]
104
+ constraints: { defaultValue: none }
105
+ - slug: renewalDate
106
+ label: Renewal / Notice Date
107
+ valueType: date
108
+ inputType: date
109
+ - slug: value
110
+ label: Contract Value
111
+ valueType: number
112
+ inputType: number
113
+ - slug: owner
114
+ label: Owner
115
+ valueType: string
116
+ inputType: text
117
+ - slug: notes
118
+ label: Notes
119
+ valueType: string
120
+ inputType: textarea
121
+
122
+ - slug: compliance-item
123
+ displayName: Compliance Item
124
+ icon: shield-check
125
+ color: cyan
126
+ description: "A regulatory or legal obligation with an owner and a deadline."
127
+ properties:
128
+ - slug: obligationType
129
+ label: Obligation Type
130
+ valueType: string
131
+ inputType: select
132
+ enumValues: [regulatory-filing, tax, data-privacy, license, certification, corporate-governance, employment, other]
133
+ - slug: status
134
+ label: Status
135
+ valueType: string
136
+ inputType: select
137
+ enumValues: [not-started, in-progress, submitted, complete, overdue]
138
+ constraints: { defaultValue: not-started }
139
+ - slug: jurisdiction
140
+ label: Jurisdiction
141
+ valueType: string
142
+ inputType: text
143
+ - slug: dueDate
144
+ label: Due Date
145
+ valueType: date
146
+ inputType: date
147
+ - slug: frequency
148
+ label: Frequency
149
+ valueType: string
150
+ inputType: select
151
+ enumValues: [one-time, monthly, quarterly, annual]
152
+ constraints: { defaultValue: one-time }
153
+ - slug: owner
154
+ label: Owner
155
+ valueType: string
156
+ inputType: text
157
+ - slug: notes
158
+ label: Notes
159
+ valueType: string
160
+ inputType: textarea
161
+
162
+ - slug: ip-asset
163
+ displayName: IP Asset
164
+ icon: badge-check
165
+ color: amber
166
+ description: "An intellectual property asset — trademark, patent, copyright, or trade secret."
167
+ properties:
168
+ - slug: assetType
169
+ label: Type
170
+ valueType: string
171
+ inputType: select
172
+ enumValues: [trademark, patent, copyright, trade-secret, domain, other]
173
+ - slug: status
174
+ label: Status
175
+ valueType: string
176
+ inputType: select
177
+ enumValues: [idea, filed, pending, registered, granted, abandoned, expired]
178
+ constraints: { defaultValue: idea }
179
+ - slug: jurisdiction
180
+ label: Jurisdiction
181
+ valueType: string
182
+ inputType: text
183
+ - slug: registrationNumber
184
+ label: Registration Number
185
+ valueType: string
186
+ inputType: text
187
+ - slug: filingDate
188
+ label: Filing Date
189
+ valueType: date
190
+ inputType: date
191
+ - slug: renewalDate
192
+ label: Renewal Date
193
+ valueType: date
194
+ inputType: date
195
+ - slug: owner
196
+ label: Owner
197
+ valueType: string
198
+ inputType: text
199
+ - slug: notes
200
+ label: Notes
201
+ valueType: string
202
+ inputType: textarea
203
+
204
+ - slug: policy
205
+ displayName: Policy
206
+ icon: book-lock
207
+ color: slate
208
+ description: "An internal policy — the rules the company commits to and publishes."
209
+ properties:
210
+ - slug: policyArea
211
+ label: Area
212
+ valueType: string
213
+ inputType: select
214
+ enumValues: [privacy, security, hr, code-of-conduct, data-retention, finance, acceptable-use, other]
215
+ - slug: status
216
+ label: Status
217
+ valueType: string
218
+ inputType: select
219
+ enumValues: [draft, in-review, approved, published, archived]
220
+ constraints: { defaultValue: draft }
221
+ - slug: version
222
+ label: Version
223
+ valueType: string
224
+ inputType: text
225
+ placeholder: e.g. 1.0
226
+ - slug: effectiveDate
227
+ label: Effective Date
228
+ valueType: date
229
+ inputType: date
230
+ - slug: reviewDate
231
+ label: Next Review
232
+ valueType: date
233
+ inputType: date
234
+ - slug: owner
235
+ label: Owner
236
+ valueType: string
237
+ inputType: text
238
+ - slug: summary
239
+ label: Summary
240
+ valueType: string
241
+ inputType: textarea
242
+
243
+ - slug: legal-matter
244
+ displayName: Legal Matter
245
+ icon: gavel
246
+ color: rose
247
+ description: "A dispute, investigation, or transaction the legal team is managing."
248
+ properties:
249
+ - slug: matterType
250
+ label: Type
251
+ valueType: string
252
+ inputType: select
253
+ enumValues: [litigation, dispute, investigation, employment, ip-enforcement, regulatory, m-and-a, financing, other]
254
+ - slug: status
255
+ label: Status
256
+ valueType: string
257
+ inputType: select
258
+ enumValues: [open, active, on-hold, settled, closed]
259
+ constraints: { defaultValue: open }
260
+ - slug: priority
261
+ label: Priority
262
+ valueType: string
263
+ inputType: select
264
+ enumValues: [low, medium, high, critical]
265
+ constraints: { defaultValue: medium }
266
+ - slug: counterparty
267
+ label: Counterparty
268
+ valueType: string
269
+ inputType: text
270
+ - slug: counsel
271
+ label: Outside Counsel
272
+ valueType: string
273
+ inputType: text
274
+ - slug: openedDate
275
+ label: Opened
276
+ valueType: date
277
+ inputType: date
278
+ - slug: targetResolution
279
+ label: Target Resolution
280
+ valueType: date
281
+ inputType: date
282
+ - slug: exposure
283
+ label: Exposure
284
+ valueType: number
285
+ inputType: number
286
+ - slug: notes
287
+ label: Notes
288
+ valueType: string
289
+ inputType: textarea
290
+
291
+ views:
292
+ - name: Contracts
293
+ slug: contracts
294
+ type: table
295
+ scopeProfileSlug: contract
296
+ description: Every agreement, its counterparty, status, and term.
297
+ defaultView: true
298
+ config:
299
+ columns: [title, contractType, status, counterparty, effectiveDate, expirationDate, value, owner]
300
+ - name: Renewals
301
+ slug: renewals
302
+ type: kanban
303
+ scopeProfileSlug: contract
304
+ groupBy: status
305
+ description: Contracts by lifecycle stage — catch renewals and expirations before they bite.
306
+ config:
307
+ groupBy: status
308
+ cardFields: [counterparty, renewalType, renewalDate, expirationDate, value]
309
+ - name: Compliance
310
+ slug: compliance
311
+ type: kanban
312
+ scopeProfileSlug: compliance-item
313
+ groupBy: status
314
+ description: Obligations by status — nothing goes overdue.
315
+ config:
316
+ groupBy: status
317
+ cardFields: [obligationType, jurisdiction, dueDate, frequency, owner]
318
+ - name: IP Assets
319
+ slug: ip-assets
320
+ type: table
321
+ scopeProfileSlug: ip-asset
322
+ description: Trademarks, patents, copyrights, and trade secrets the company owns.
323
+ config:
324
+ columns: [title, assetType, status, jurisdiction, registrationNumber, renewalDate, owner]
325
+ - name: Matters
326
+ slug: matters
327
+ type: table
328
+ scopeProfileSlug: legal-matter
329
+ description: Disputes, investigations, and transactions in flight.
330
+ config:
331
+ columns: [title, matterType, status, priority, counterparty, counsel, targetResolution, exposure]
332
+ - name: Legal Entities
333
+ slug: legal-entities
334
+ type: table
335
+ scopeProfileSlug: legal-entity
336
+ description: The corporate structure — entities, jurisdictions, and status.
337
+ config:
338
+ columns: [title, entityType, jurisdiction, registrationNumber, status, incorporationDate]
339
+
340
+ # Schema-level relations — give the relation picker domain-specific links from day one.
341
+ entityLinks:
342
+ - sourceProfileSlug: contract
343
+ targetProfileSlug: legal-entity
344
+ type: party_to
345
+ label: Party to
346
+ - sourceProfileSlug: ip-asset
347
+ targetProfileSlug: legal-entity
348
+ type: owned_by
349
+ label: Owned by
350
+ - sourceProfileSlug: compliance-item
351
+ targetProfileSlug: legal-entity
352
+ type: applies_to
353
+ label: Applies to
354
+ - sourceProfileSlug: compliance-item
355
+ targetProfileSlug: policy
356
+ type: governed_by
357
+ label: Governed by
358
+ - sourceProfileSlug: legal-matter
359
+ targetProfileSlug: contract
360
+ type: concerns
361
+ label: Concerns
362
+
363
+ onboarding:
364
+ goal: Capture the company's real legal footprint — its entities, live contracts, compliance obligations, and IP — so the workspace reflects the actual legal posture, not a generic checklist.
365
+ framing: >
366
+ THE GENERAL COUNSEL: Act as a pragmatic startup general counsel. Map the legal
367
+ reality first — which entities exist and where, what's actually signed and when it
368
+ renews, what filings and obligations have deadlines, and what IP is worth protecting.
369
+ Be precise about dates and counterparties; flag risk plainly; never invent legal
370
+ conclusions. Turn their answers into entities, contracts, compliance items, and IP assets.
371
+ expertise:
372
+ starters:
373
+ - >
374
+ Start by mapping the corporate skeleton, then hang contracts off it. Ask what the
375
+ top-level entity is, where it's incorporated (Delaware C-corp? a local Ltd/GmbH?),
376
+ and whether any subsidiaries or branches exist — because a contract's counterparty
377
+ and an IP asset's owner only mean something once you know which entity signed or
378
+ holds it. Seed the entities first; everything else references them.
379
+ - >
380
+ For each contract they name, capture the RENEWAL and NOTICE dates, not just the
381
+ signing date. The dangerous field is the auto-renew clause with a 30/60/90-day
382
+ notice window — that's what silently locks a company into another year. Propose
383
+ the renewal date and renewal type up front so the workspace can surface it before
384
+ the window closes.
385
+ - >
386
+ Frame the whole session as surfacing RISK, not giving advice. Capture what exists
387
+ and flag what's missing for a real lawyer to review — never state whether something
388
+ is enforceable, compliant, or "fine". Turn "is this okay?" into a captured gap:
389
+ "contract with no signed copy on file — flag for counsel", not a legal opinion.
390
+ blindSpots:
391
+ - >
392
+ The handshake-deal risk: real obligations — a vendor arrangement, a co-founder
393
+ split, a customer commitment — exist with no signed paper behind them. Ask
394
+ explicitly what agreements are operating verbally or by email only, and capture
395
+ each as a contract in "draft" with a flag; an unpapered deal is a dispute waiting
396
+ to happen, and it's invisible unless you go looking for it.
397
+ - >
398
+ Missing IP assignment is the classic startup landmine: founders, early employees,
399
+ and especially contractors who wrote code or designed the brand without a signed
400
+ IP-assignment / work-for-hire clause. The company may not legally own its own
401
+ product. Probe for it directly — "did every contributor sign IP assignment?" — and
402
+ log any gap as a high-priority matter, because it kills fundraises and acquisitions.
403
+ - >
404
+ Renewal, expiry, and filing dates that nobody owns: trademark renewals, annual
405
+ registered-agent/franchise-tax filings, insurance and license expirations, data-
406
+ privacy obligations. These lapse silently and are expensive to revive. Every date
407
+ captured needs an OWNER and a deadline — an unowned deadline is a missed one.
408
+ bar: >
409
+ A GREAT result is an accurate, date-aware risk map: the real legal entities and
410
+ where they sit, the live contracts with their renewal/notice dates and owners, the
411
+ compliance obligations with deadlines and owners, and the IP the company actually
412
+ needs to own — with every gap and unpapered deal explicitly FLAGGED for a real
413
+ lawyer, and not one invented legal conclusion anywhere in it.
414
+ collect:
415
+ - profileSlug: legal-entity
416
+ what: The company's legal entities and the jurisdictions they operate in.
417
+ cardinality: few
418
+ keyFields: [entityType, jurisdiction, status]
419
+ - profileSlug: contract
420
+ what: The key live agreements — the ones with real obligations, value, or renewal dates.
421
+ cardinality: several
422
+ keyFields: [contractType, status, counterparty, renewalDate]
423
+ - profileSlug: compliance-item
424
+ what: Compliance obligations and filings with real deadlines.
425
+ cardinality: several
426
+ keyFields: [obligationType, dueDate, owner]
427
+ - profileSlug: ip-asset
428
+ what: Intellectual property worth tracking and protecting.
429
+ cardinality: few
430
+ keyFields: [assetType, status, jurisdiction]
431
+ openingQuestions:
432
+ - "Which legal entities does the company have, and in which jurisdictions?"
433
+ - "What are your most important signed contracts right now — and do any auto-renew?"
434
+ - "What compliance obligations or filings have deadlines you can't miss?"
435
+ doneWhen: at least one legal entity, one key contract, and one compliance obligation with a deadline are captured.
436
+
437
+ app:
438
+ kind: stored
439
+ cellKey: entity-detail
440
+
441
+ layout:
442
+ defaultView: Contracts
443
+ defaultApp: null
444
+ pinnedApps: [dashboard, data, intelligence]
445
+ sidebarItems:
446
+ - kind: view
447
+ viewName: Contracts
448
+ label: Contracts
449
+ icon: file-signature
450
+ - kind: view
451
+ viewName: Renewals
452
+ label: Renewals
453
+ icon: refresh-cw
454
+ - kind: view
455
+ viewName: Compliance
456
+ label: Compliance
457
+ icon: shield-check
458
+ - kind: view
459
+ viewName: IP Assets
460
+ label: IP Assets
461
+ icon: badge-check
462
+ - kind: view
463
+ viewName: Matters
464
+ label: Matters
465
+ icon: gavel
466
+ - kind: view
467
+ viewName: Legal Entities
468
+ label: Entities
469
+ icon: landmark
470
+ - kind: app
471
+ appId: data
472
+ label: All Data
473
+ icon: database
474
+
475
+ bento:
476
+ viewName: Legal Command Center
477
+ blocks:
478
+ - kind: view
479
+ viewName: Contracts
480
+ pos: { x: 0, y: 0, w: 8, h: 4 }
481
+ - kind: view
482
+ viewName: Legal Entities
483
+ pos: { x: 8, y: 0, w: 4, h: 4 }
484
+ - kind: view
485
+ viewName: Compliance
486
+ pos: { x: 0, y: 4, w: 6, h: 4 }
487
+ - kind: view
488
+ viewName: Renewals
489
+ pos: { x: 6, y: 4, w: 6, h: 4 }
490
+ - kind: view
491
+ viewName: IP Assets
492
+ pos: { x: 0, y: 8, w: 6, h: 4 }
493
+ - kind: view
494
+ viewName: Matters
495
+ pos: { x: 6, y: 8, w: 6, h: 4 }
package/src/life-os.yaml CHANGED
@@ -1122,95 +1122,6 @@ entityLinks:
1122
1122
  type: said-by
1123
1123
  label: Said by
1124
1124
 
1125
- seedEntities:
1126
- - profileSlug: area
1127
- title: Learning & Growth
1128
- properties:
1129
- description: Continuous learning, skill building, reading.
1130
- status: active
1131
- - profileSlug: area
1132
- title: Work & Career
1133
- properties:
1134
- description: Professional projects, skills, and relationships.
1135
- status: active
1136
- - profileSlug: area
1137
- title: Health & Wellbeing
1138
- properties:
1139
- description: Physical health, mental clarity, energy.
1140
- status: active
1141
- - profileSlug: project
1142
- title: Build My Second Brain
1143
- properties:
1144
- status: active
1145
- outcome: Have a fully functional PKM system capturing and connecting my knowledge.
1146
- area: Learning & Growth
1147
- - profileSlug: concept
1148
- title: Zettelkasten
1149
- properties:
1150
- definition: A note-taking method using atomic, interconnected notes — each idea on its own card, linked to related ones.
1151
- domain: Knowledge Management
1152
- maturity: evergreen
1153
- - profileSlug: concept
1154
- title: Progressive Summarization
1155
- properties:
1156
- definition: Highlighting and condensing notes in multiple passes — first bold, then highlight, then summary — to surface the most valuable ideas.
1157
- domain: Knowledge Management
1158
- maturity: growing
1159
- - profileSlug: book
1160
- title: Building a Second Brain
1161
- properties:
1162
- author: Tiago Forte
1163
- status: reading
1164
- genre: Productivity
1165
- pages: 272
1166
- - profileSlug: book
1167
- title: How to Take Smart Notes
1168
- properties:
1169
- author: Sönke Ahrens
1170
- status: want-to-read
1171
- genre: Learning
1172
- pages: 170
1173
- - profileSlug: person
1174
- title: Tiago Forte
1175
- properties:
1176
- role: Author & Creator
1177
- relationship: author
1178
- notes: Creator of the Second Brain methodology. Author of Building a Second Brain.
1179
- - profileSlug: person
1180
- title: Sönke Ahrens
1181
- properties:
1182
- role: Author & Researcher
1183
- relationship: author
1184
- notes: Author of How to Take Smart Notes. Proponent of the Zettelkasten method.
1185
- - profileSlug: quote
1186
- title: Your mind is for having ideas
1187
- properties:
1188
- text: Your mind is for having ideas, not holding them.
1189
- author: David Allen
1190
- resonance: 5
1191
- - profileSlug: note
1192
- title: Why I'm building a Second Brain
1193
- properties:
1194
- status: inbox
1195
- content: Capture everything. Review regularly. Connect the dots. Let the system hold the complexity so your mind stays clear.
1196
-
1197
- suggestedRelations:
1198
- - sourceRef: "book:Building a Second Brain"
1199
- targetRef: "person:Tiago Forte"
1200
- type: authored-by
1201
- - sourceRef: "book:How to Take Smart Notes"
1202
- targetRef: "person:Sönke Ahrens"
1203
- type: authored-by
1204
- - sourceRef: "note:Why I'm building a Second Brain"
1205
- targetRef: "project:Build My Second Brain"
1206
- type: feeds-into
1207
- - sourceRef: "concept:Zettelkasten"
1208
- targetRef: "concept:Progressive Summarization"
1209
- type: related-to
1210
- - sourceRef: "project:Build My Second Brain"
1211
- targetRef: "area:Learning & Growth"
1212
- type: belongs-to
1213
-
1214
1125
  # Workspace home dashboard (maps from source bentoLayout + bentoViewBlocks)
1215
1126
  bento:
1216
1127
  blocks:
@@ -1419,6 +1330,44 @@ profileEntityBentoTemplates:
1419
1330
  onboarding:
1420
1331
  goal: Capture the shape of the user's life — their areas of focus, current goals, active projects, key people, and what they're reading or learning — so the second brain starts grounded in who they actually are.
1421
1332
  framing: Act as a thoughtful personal-knowledge coach. Gently tease out the domains they care about, what they're working toward, what's in motion, who matters to them, and what they're consuming. Translate that into areas, goals, projects, people, and books.
1333
+ expertise:
1334
+ starters:
1335
+ - >
1336
+ Lead with their AREAS, not a note dump. Ask them to name the handful of life
1337
+ domains they're permanently responsible for — Health, Finances, Career,
1338
+ Relationships, a side project — and seed one Area each. Areas are the PARA-style
1339
+ shelves everything else hangs off; without them the second brain is a flat pile.
1340
+ Skip the GTD jargon ("contexts", "tickler files") — nobody thinks in those.
1341
+ - >
1342
+ For every goal they mention, propose it WITH a linked project or a concrete next
1343
+ action attached. "Get fit" alone is a wish; "Get fit → project: 3x gym/week
1344
+ through March" is trackable. If they can't name the first move, capture it as an
1345
+ Area standard to maintain rather than a Goal to hit.
1346
+ - >
1347
+ When they name something in motion, decide OUT LOUD whether it's an Area (ongoing,
1348
+ no finish line — "stay healthy") or a Project (finite, has a done state — "run a
1349
+ half-marathon in May"), and file it accordingly. Getting this split right on day
1350
+ one is what keeps the system from rotting into an undifferentiated to-do heap.
1351
+ blindSpots:
1352
+ - >
1353
+ The "capture everything, revisit nothing" trap: people hoard highlights, articles,
1354
+ and notes into an inbox they never process. Capture is worthless without a review
1355
+ loop — surface it early. Propose an inbox-zero-style status flow (inbox →
1356
+ processing → evergreen) and a weekly review habit, not just more collection.
1357
+ - >
1358
+ Goals with no next action are wishes, not goals. People list aspirations
1359
+ ("learn Spanish", "write more") with no project or first step behind them, then
1360
+ wonder why nothing moves. Flag any goal that isn't wired to a project or an action.
1361
+ - >
1362
+ People conflate Areas with Projects and drown finite work inside never-ending
1363
+ buckets — or worse, treat a lifelong responsibility as a project they can "finish"
1364
+ and abandon. If "Health" shows up as a Project or "launch the app" as an Area,
1365
+ catch it: the confusion is the single most common reason PARA-style systems fail.
1366
+ bar: >
1367
+ A GREAT result is a small, LIVING skeleton, not an exhaustive archive: 3-5 real
1368
+ Areas covering their actual life, each with 1-2 current Goals or Projects hanging
1369
+ off it, a few key people, and what they're reading right now — every goal wired to
1370
+ a next action, and a review habit named so the system gets revisited, not just fed.
1422
1371
  collect:
1423
1372
  - profileSlug: area
1424
1373
  what: The ongoing areas of life / responsibility they want to keep standards in
@@ -1428,6 +1377,10 @@ onboarding:
1428
1377
  what: The goals they're currently working toward
1429
1378
  cardinality: few
1430
1379
  keyFields: [title, target-date, area, progress]
1380
+ - profileSlug: project
1381
+ what: The active projects in motion (the concrete efforts that advance their goals)
1382
+ cardinality: few
1383
+ keyFields: [title, status]
1431
1384
  - profileSlug: person
1432
1385
  what: The key people in their world
1433
1386
  cardinality: several