@elevasis/sdk 1.8.2 → 1.8.3
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/cli.cjs +1 -1
- package/dist/index.d.ts +88 -39
- package/dist/types/worker/adapters/lead.d.ts +1 -1
- package/dist/worker/index.js +2 -0
- package/package.json +2 -2
- package/reference/_navigation.md +7 -1
- package/reference/_reference-manifest.json +14 -0
- package/reference/claude-config/logs/scaffold-registry-reminder.log +3 -0
- package/reference/claude-config/rules/agent-start-here.md +254 -254
- package/reference/claude-config/rules/frontend.md +43 -43
- package/reference/claude-config/rules/operations.md +64 -64
- package/reference/claude-config/rules/organization-model.md +42 -43
- package/reference/claude-config/rules/organization-os.md +107 -107
- package/reference/claude-config/rules/shared-types.md +2 -2
- package/reference/claude-config/rules/task-tracking.md +1 -1
- package/reference/claude-config/rules/ui.md +202 -202
- package/reference/claude-config/rules/vibe.md +202 -202
- package/reference/claude-config/skills/configure/SKILL.md +98 -98
- package/reference/claude-config/skills/configure/operations/codify-level-a.md +100 -100
- package/reference/claude-config/skills/configure/operations/codify-level-b.md +158 -158
- package/reference/claude-config/skills/configure/operations/customers.md +150 -150
- package/reference/claude-config/skills/configure/operations/features.md +162 -162
- package/reference/claude-config/skills/configure/operations/goals.md +147 -147
- package/reference/claude-config/skills/configure/operations/identity.md +133 -133
- package/reference/claude-config/skills/configure/operations/labels.md +128 -128
- package/reference/claude-config/skills/configure/operations/offerings.md +159 -159
- package/reference/claude-config/skills/configure/operations/roles.md +153 -153
- package/reference/claude-config/skills/configure/operations/techStack.md +139 -139
- package/reference/claude-config/skills/explore/SKILL.md +78 -78
- package/reference/claude-config/skills/git-sync/SKILL.md +126 -0
- package/reference/claude-config/skills/save/SKILL.md +183 -183
- package/reference/claude-config/skills/setup/SKILL.md +275 -275
- package/reference/claude-config/skills/sync/SKILL.md +10 -44
- package/reference/claude-config/sync-notes/2026-04-22-git-sync-and-sync-notes.md +27 -0
- package/reference/claude-config/sync-notes/2026-04-22-lead-gen-deliverability-removal.md +30 -0
- package/reference/claude-config/sync-notes/README.md +43 -0
- package/reference/packages/core/src/README.md +39 -36
- package/reference/packages/core/src/business/README.md +52 -52
- package/reference/packages/core/src/organization-model/README.md +97 -97
- package/reference/packages/core/src/test-utils/README.md +42 -0
- package/reference/scaffold/core/organization-graph.mdx +272 -272
- package/reference/scaffold/core/organization-model.mdx +320 -320
- package/reference/scaffold/index.mdx +64 -64
- package/reference/scaffold/operations/propagation-pipeline.md +125 -104
- package/reference/scaffold/operations/scaffold-maintenance.md +122 -122
- package/reference/scaffold/operations/workflow-recipes.md +436 -436
- package/reference/scaffold/recipes/add-a-feature.md +158 -158
- package/reference/scaffold/recipes/add-a-resource.md +158 -158
- package/reference/scaffold/recipes/customize-organization-model.md +400 -400
- package/reference/scaffold/recipes/extend-a-base-entity.md +140 -140
- package/reference/scaffold/recipes/gate-by-feature-or-admin.md +158 -158
- package/reference/scaffold/recipes/index.md +32 -32
- package/reference/scaffold/reference/contracts.md +608 -607
- package/reference/scaffold/reference/feature-registry.md +2 -0
- package/reference/scaffold/reference/glossary.md +105 -105
- package/reference/scaffold/ui/composition-extensibility.mdx +1 -1
- package/reference/scaffold/ui/feature-flags-and-gating.md +1 -1
|
@@ -1,147 +1,147 @@
|
|
|
1
|
-
# Configure: goals
|
|
2
|
-
|
|
3
|
-
Guides the user through reviewing and updating the `goals` domain of the organization model.
|
|
4
|
-
|
|
5
|
-
The `goals` domain captures what the organization is working toward — time-bounded goals with
|
|
6
|
-
measurable outcomes. The schema shape is OKR-inspired (objectives + key results) but all
|
|
7
|
-
user-facing language must say "goals" and "measurable outcomes". Never say "OKR", "objective",
|
|
8
|
-
or "key result" to the user.
|
|
9
|
-
|
|
10
|
-
Agents use this domain for quarterly planning, priority routing, and understanding which outcomes
|
|
11
|
-
matter most right now.
|
|
12
|
-
|
|
13
|
-
## Schema reference
|
|
14
|
-
|
|
15
|
-
Source: `packages/core/src/organization-model/domains/goals.ts`
|
|
16
|
-
|
|
17
|
-
```typescript
|
|
18
|
-
GoalsDomainSchema = z.object({
|
|
19
|
-
objectives: z.array(ObjectiveSchema).default([])
|
|
20
|
-
})
|
|
21
|
-
|
|
22
|
-
ObjectiveSchema = z.object({
|
|
23
|
-
id: z.string().trim().min(1).max(100), // stable ID, e.g. "goal-grow-arr-q1-2026"
|
|
24
|
-
description: z.string().trim().min(1).max(1000), // plain-language goal statement
|
|
25
|
-
periodStart: z.string().regex(ISO_DATE), // YYYY-MM-DD — must be before periodEnd
|
|
26
|
-
periodEnd: z.string().regex(ISO_DATE), // YYYY-MM-DD — enforced in superRefine
|
|
27
|
-
keyResults: z.array(KeyResultSchema).default([]) // measurable outcomes under this goal
|
|
28
|
-
})
|
|
29
|
-
|
|
30
|
-
KeyResultSchema = z.object({
|
|
31
|
-
id: z.string().trim().min(1).max(100), // e.g. "kr-revenue-q1"
|
|
32
|
-
description: z.string().trim().min(1).max(500), // e.g. "Increase trial-to-paid conversion"
|
|
33
|
-
targetMetric: z.string().trim().min(1).max(200), // what is being measured, e.g. "monthly revenue"
|
|
34
|
-
currentValue: z.number().default(0), // current tracked value
|
|
35
|
-
targetValue: z.number().optional() // target to hit (omit if directional)
|
|
36
|
-
})
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
Cross-reference constraint: `periodEnd` must be strictly after `periodStart`. Enforced at parse
|
|
40
|
-
time by `OrganizationModelSchema.superRefine()`.
|
|
41
|
-
|
|
42
|
-
The field name in the schema is `objectives` (not `goals`) and the measurable-outcome array is
|
|
43
|
-
`keyResults` (not `outcomes`) — these are internal field names, not user-facing vocabulary.
|
|
44
|
-
|
|
45
|
-
Where this lands in the adapter: `foundations/config/organization-model.ts` under the `goals`
|
|
46
|
-
key of `defineOrganizationModel({...})`.
|
|
47
|
-
|
|
48
|
-
---
|
|
49
|
-
|
|
50
|
-
## Process
|
|
51
|
-
|
|
52
|
-
### Step 1: Read current state
|
|
53
|
-
|
|
54
|
-
Read `foundations/config/organization-model.ts` and extract the current `goals.objectives` array.
|
|
55
|
-
Present as a plain-language summary:
|
|
56
|
-
|
|
57
|
-
```
|
|
58
|
-
Current goals (N):
|
|
59
|
-
1. "{description truncated to 80 chars}" ({id})
|
|
60
|
-
Period: {periodStart} → {periodEnd}
|
|
61
|
-
Measurable outcomes: {count}
|
|
62
|
-
(no goals defined yet)
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
### Step 2: Establish intent
|
|
66
|
-
|
|
67
|
-
Ask whether the user wants to:
|
|
68
|
-
|
|
69
|
-
- **Add** a new goal
|
|
70
|
-
- **Edit** an existing goal (by description or number)
|
|
71
|
-
- **Remove** a goal
|
|
72
|
-
- **Update progress** on a measurable outcome (update `currentValue`)
|
|
73
|
-
|
|
74
|
-
### Step 3: Gather goal details
|
|
75
|
-
|
|
76
|
-
For each goal being added or edited:
|
|
77
|
-
|
|
78
|
-
**Core goal:**
|
|
79
|
-
|
|
80
|
-
- "What is the organization working toward? Describe the goal in plain language — one or two sentences."
|
|
81
|
-
- "Give it a stable ID — lowercase with hyphens, e.g. `goal-grow-arr-q1-2026`."
|
|
82
|
-
- "What period does this goal cover? (Start date and end date — e.g. 2026-01-01 to 2026-03-31)"
|
|
83
|
-
|
|
84
|
-
Validate that the end date is strictly after the start date before proceeding.
|
|
85
|
-
|
|
86
|
-
**Measurable outcomes (optional but recommended):**
|
|
87
|
-
|
|
88
|
-
- "Do you want to add any measurable outcomes under this goal? These help track whether you're
|
|
89
|
-
on track."
|
|
90
|
-
- For each outcome: "What are you measuring? (e.g. monthly revenue, NPS score, trial-to-paid
|
|
91
|
-
conversion rate)"
|
|
92
|
-
- "What's the target value? (Optional — leave blank if the outcome is directional.)"
|
|
93
|
-
- "What's the current value?"
|
|
94
|
-
- "Give this outcome an ID — e.g. `kr-revenue-q1`."
|
|
95
|
-
|
|
96
|
-
Capture as many outcomes as the user wants. One at a time is fine.
|
|
97
|
-
|
|
98
|
-
### Step 4: Confirm before writing
|
|
99
|
-
|
|
100
|
-
Present a diff:
|
|
101
|
-
|
|
102
|
-
```
|
|
103
|
-
Proposed goals change:
|
|
104
|
-
|
|
105
|
-
ADD goal "Reach $50K MRR by end of Q1 2026" (goal-arr-q1-2026):
|
|
106
|
-
period: 2026-01-01 → 2026-03-31
|
|
107
|
-
outcomes:
|
|
108
|
-
kr-mrr-q1: "Grow monthly recurring revenue"
|
|
109
|
-
metric: "monthly recurring revenue (MRR)"
|
|
110
|
-
current: 32000
|
|
111
|
-
target: 50000
|
|
112
|
-
kr-churn-q1: "Reduce churn rate"
|
|
113
|
-
metric: "monthly churn rate (%)"
|
|
114
|
-
current: 4.2
|
|
115
|
-
target: 2.5
|
|
116
|
-
|
|
117
|
-
Apply? (yes/no)
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
### Step 5: Codify
|
|
121
|
-
|
|
122
|
-
Execute `.claude/skills/configure/operations/codify-level-a.md` with the proposed `goals` block.
|
|
123
|
-
Only the `objectives` array is written — no other keys in the adapter are touched.
|
|
124
|
-
|
|
125
|
-
When updating progress only (updating `currentValue` on an existing outcome), make a targeted
|
|
126
|
-
edit rather than rewriting the entire goals block.
|
|
127
|
-
|
|
128
|
-
### Step 6: Report
|
|
129
|
-
|
|
130
|
-
After successful validation:
|
|
131
|
-
|
|
132
|
-
```
|
|
133
|
-
Goals updated.
|
|
134
|
-
Goals: {total count} ({N added / N edited / N removed})
|
|
135
|
-
foundations/config/organization-model.ts — goals.objectives updated
|
|
136
|
-
Type-check: PASS
|
|
137
|
-
Schema validation: PASS
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
If validation failed and rollback occurred:
|
|
141
|
-
|
|
142
|
-
```
|
|
143
|
-
Goals update rolled back.
|
|
144
|
-
Reason: {error message}
|
|
145
|
-
foundations/config/organization-model.ts — restored to previous state
|
|
146
|
-
No changes persisted.
|
|
147
|
-
```
|
|
1
|
+
# Configure: goals
|
|
2
|
+
|
|
3
|
+
Guides the user through reviewing and updating the `goals` domain of the organization model.
|
|
4
|
+
|
|
5
|
+
The `goals` domain captures what the organization is working toward — time-bounded goals with
|
|
6
|
+
measurable outcomes. The schema shape is OKR-inspired (objectives + key results) but all
|
|
7
|
+
user-facing language must say "goals" and "measurable outcomes". Never say "OKR", "objective",
|
|
8
|
+
or "key result" to the user.
|
|
9
|
+
|
|
10
|
+
Agents use this domain for quarterly planning, priority routing, and understanding which outcomes
|
|
11
|
+
matter most right now.
|
|
12
|
+
|
|
13
|
+
## Schema reference
|
|
14
|
+
|
|
15
|
+
Source: `packages/core/src/organization-model/domains/goals.ts`
|
|
16
|
+
|
|
17
|
+
```typescript
|
|
18
|
+
GoalsDomainSchema = z.object({
|
|
19
|
+
objectives: z.array(ObjectiveSchema).default([])
|
|
20
|
+
})
|
|
21
|
+
|
|
22
|
+
ObjectiveSchema = z.object({
|
|
23
|
+
id: z.string().trim().min(1).max(100), // stable ID, e.g. "goal-grow-arr-q1-2026"
|
|
24
|
+
description: z.string().trim().min(1).max(1000), // plain-language goal statement
|
|
25
|
+
periodStart: z.string().regex(ISO_DATE), // YYYY-MM-DD — must be before periodEnd
|
|
26
|
+
periodEnd: z.string().regex(ISO_DATE), // YYYY-MM-DD — enforced in superRefine
|
|
27
|
+
keyResults: z.array(KeyResultSchema).default([]) // measurable outcomes under this goal
|
|
28
|
+
})
|
|
29
|
+
|
|
30
|
+
KeyResultSchema = z.object({
|
|
31
|
+
id: z.string().trim().min(1).max(100), // e.g. "kr-revenue-q1"
|
|
32
|
+
description: z.string().trim().min(1).max(500), // e.g. "Increase trial-to-paid conversion"
|
|
33
|
+
targetMetric: z.string().trim().min(1).max(200), // what is being measured, e.g. "monthly revenue"
|
|
34
|
+
currentValue: z.number().default(0), // current tracked value
|
|
35
|
+
targetValue: z.number().optional() // target to hit (omit if directional)
|
|
36
|
+
})
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Cross-reference constraint: `periodEnd` must be strictly after `periodStart`. Enforced at parse
|
|
40
|
+
time by `OrganizationModelSchema.superRefine()`.
|
|
41
|
+
|
|
42
|
+
The field name in the schema is `objectives` (not `goals`) and the measurable-outcome array is
|
|
43
|
+
`keyResults` (not `outcomes`) — these are internal field names, not user-facing vocabulary.
|
|
44
|
+
|
|
45
|
+
Where this lands in the adapter: `foundations/config/organization-model.ts` under the `goals`
|
|
46
|
+
key of `defineOrganizationModel({...})`.
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## Process
|
|
51
|
+
|
|
52
|
+
### Step 1: Read current state
|
|
53
|
+
|
|
54
|
+
Read `foundations/config/organization-model.ts` and extract the current `goals.objectives` array.
|
|
55
|
+
Present as a plain-language summary:
|
|
56
|
+
|
|
57
|
+
```
|
|
58
|
+
Current goals (N):
|
|
59
|
+
1. "{description truncated to 80 chars}" ({id})
|
|
60
|
+
Period: {periodStart} → {periodEnd}
|
|
61
|
+
Measurable outcomes: {count}
|
|
62
|
+
(no goals defined yet)
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### Step 2: Establish intent
|
|
66
|
+
|
|
67
|
+
Ask whether the user wants to:
|
|
68
|
+
|
|
69
|
+
- **Add** a new goal
|
|
70
|
+
- **Edit** an existing goal (by description or number)
|
|
71
|
+
- **Remove** a goal
|
|
72
|
+
- **Update progress** on a measurable outcome (update `currentValue`)
|
|
73
|
+
|
|
74
|
+
### Step 3: Gather goal details
|
|
75
|
+
|
|
76
|
+
For each goal being added or edited:
|
|
77
|
+
|
|
78
|
+
**Core goal:**
|
|
79
|
+
|
|
80
|
+
- "What is the organization working toward? Describe the goal in plain language — one or two sentences."
|
|
81
|
+
- "Give it a stable ID — lowercase with hyphens, e.g. `goal-grow-arr-q1-2026`."
|
|
82
|
+
- "What period does this goal cover? (Start date and end date — e.g. 2026-01-01 to 2026-03-31)"
|
|
83
|
+
|
|
84
|
+
Validate that the end date is strictly after the start date before proceeding.
|
|
85
|
+
|
|
86
|
+
**Measurable outcomes (optional but recommended):**
|
|
87
|
+
|
|
88
|
+
- "Do you want to add any measurable outcomes under this goal? These help track whether you're
|
|
89
|
+
on track."
|
|
90
|
+
- For each outcome: "What are you measuring? (e.g. monthly revenue, NPS score, trial-to-paid
|
|
91
|
+
conversion rate)"
|
|
92
|
+
- "What's the target value? (Optional — leave blank if the outcome is directional.)"
|
|
93
|
+
- "What's the current value?"
|
|
94
|
+
- "Give this outcome an ID — e.g. `kr-revenue-q1`."
|
|
95
|
+
|
|
96
|
+
Capture as many outcomes as the user wants. One at a time is fine.
|
|
97
|
+
|
|
98
|
+
### Step 4: Confirm before writing
|
|
99
|
+
|
|
100
|
+
Present a diff:
|
|
101
|
+
|
|
102
|
+
```
|
|
103
|
+
Proposed goals change:
|
|
104
|
+
|
|
105
|
+
ADD goal "Reach $50K MRR by end of Q1 2026" (goal-arr-q1-2026):
|
|
106
|
+
period: 2026-01-01 → 2026-03-31
|
|
107
|
+
outcomes:
|
|
108
|
+
kr-mrr-q1: "Grow monthly recurring revenue"
|
|
109
|
+
metric: "monthly recurring revenue (MRR)"
|
|
110
|
+
current: 32000
|
|
111
|
+
target: 50000
|
|
112
|
+
kr-churn-q1: "Reduce churn rate"
|
|
113
|
+
metric: "monthly churn rate (%)"
|
|
114
|
+
current: 4.2
|
|
115
|
+
target: 2.5
|
|
116
|
+
|
|
117
|
+
Apply? (yes/no)
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
### Step 5: Codify
|
|
121
|
+
|
|
122
|
+
Execute `.claude/skills/configure/operations/codify-level-a.md` with the proposed `goals` block.
|
|
123
|
+
Only the `objectives` array is written — no other keys in the adapter are touched.
|
|
124
|
+
|
|
125
|
+
When updating progress only (updating `currentValue` on an existing outcome), make a targeted
|
|
126
|
+
edit rather than rewriting the entire goals block.
|
|
127
|
+
|
|
128
|
+
### Step 6: Report
|
|
129
|
+
|
|
130
|
+
After successful validation:
|
|
131
|
+
|
|
132
|
+
```
|
|
133
|
+
Goals updated.
|
|
134
|
+
Goals: {total count} ({N added / N edited / N removed})
|
|
135
|
+
foundations/config/organization-model.ts — goals.objectives updated
|
|
136
|
+
Type-check: PASS
|
|
137
|
+
Schema validation: PASS
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
If validation failed and rollback occurred:
|
|
141
|
+
|
|
142
|
+
```
|
|
143
|
+
Goals update rolled back.
|
|
144
|
+
Reason: {error message}
|
|
145
|
+
foundations/config/organization-model.ts — restored to previous state
|
|
146
|
+
No changes persisted.
|
|
147
|
+
```
|
|
@@ -1,133 +1,133 @@
|
|
|
1
|
-
# Configure: identity
|
|
2
|
-
|
|
3
|
-
Guides the user through reviewing and updating the `identity` domain of the organization model.
|
|
4
|
-
|
|
5
|
-
The `identity` domain captures legal identity, purpose, and operational anchors — distinct from
|
|
6
|
-
`branding` (display identity: logos, product names). Editing identity fields here does not touch
|
|
7
|
-
any visual or branding configuration.
|
|
8
|
-
|
|
9
|
-
## Schema reference
|
|
10
|
-
|
|
11
|
-
Source: `packages/core/src/organization-model/domains/identity.ts`
|
|
12
|
-
|
|
13
|
-
```typescript
|
|
14
|
-
IdentityDomainSchema = z.object({
|
|
15
|
-
mission: z.string().trim().max(1000).default(''),
|
|
16
|
-
vision: z.string().trim().max(1000).default(''),
|
|
17
|
-
legalName: z.string().trim().max(200).default(''),
|
|
18
|
-
entityType: z.string().trim().max(100).default(''), // e.g. "LLC", "Corporation"
|
|
19
|
-
jurisdiction: z.string().trim().max(200).default(''), // e.g. "United States – Delaware"
|
|
20
|
-
industryCategory: z.string().trim().max(200).default(''), // e.g. "Marketing Agency"
|
|
21
|
-
geographicFocus: z.string().trim().max(200).default(''), // e.g. "North America"
|
|
22
|
-
timeZone: z.string().trim().max(100).default('UTC'), // IANA identifier
|
|
23
|
-
businessHours: BusinessHoursSchema // per-day { open, close } in HH:MM
|
|
24
|
-
})
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
`BusinessHoursSchema` is an object with optional keys `monday` through `sunday`, each holding
|
|
28
|
-
`{ open: "HH:MM", close: "HH:MM" }`. An empty object `{}` means not configured.
|
|
29
|
-
|
|
30
|
-
Where this lands in the adapter: `foundations/config/organization-model.ts` under the `identity`
|
|
31
|
-
key of `defineOrganizationModel({...})`.
|
|
32
|
-
|
|
33
|
-
---
|
|
34
|
-
|
|
35
|
-
## Process
|
|
36
|
-
|
|
37
|
-
### Step 1: Read current state
|
|
38
|
-
|
|
39
|
-
Read `foundations/config/organization-model.ts` and extract the current `identity` block. Present
|
|
40
|
-
it to the user as a plain-language summary, not a raw code dump:
|
|
41
|
-
|
|
42
|
-
```
|
|
43
|
-
Current identity:
|
|
44
|
-
Mission: {value or "(not set)"}
|
|
45
|
-
Vision: {value or "(not set)"}
|
|
46
|
-
Legal name: {value or "(not set)"}
|
|
47
|
-
Entity type: {value or "(not set)"}
|
|
48
|
-
Jurisdiction: {value or "(not set)"}
|
|
49
|
-
Industry: {value or "(not set)"}
|
|
50
|
-
Geographic focus: {value or "(not set)"}
|
|
51
|
-
Time zone: {value}
|
|
52
|
-
Business hours: {configured days or "not configured"}
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
### Step 2: Ask conversationally
|
|
56
|
-
|
|
57
|
-
Work through the fields in natural conversation. You do not need to ask every field in a single
|
|
58
|
-
message — group related ones together and react to what the user shares.
|
|
59
|
-
|
|
60
|
-
**Group A — Purpose:**
|
|
61
|
-
|
|
62
|
-
- "What's the organization's mission? (Why does it exist — one or two sentences.)"
|
|
63
|
-
- "What's the vision? (Where is the organization headed long-term?)"
|
|
64
|
-
|
|
65
|
-
**Group B — Legal identity:**
|
|
66
|
-
|
|
67
|
-
- "What's the legal registered name of the organization?"
|
|
68
|
-
- "What type of legal entity is it? (e.g. LLC, Corporation, Sole Proprietor, Non-profit)"
|
|
69
|
-
- "What jurisdiction is it registered in? (e.g. United States – Delaware, Canada – Ontario)"
|
|
70
|
-
|
|
71
|
-
**Group C — Industry and geography:**
|
|
72
|
-
|
|
73
|
-
- "What industry or category best describes the organization? (e.g. Marketing Agency, SaaS, Professional Services)"
|
|
74
|
-
- "Where does it primarily operate or serve? (e.g. North America, Global, Southeast Asia)"
|
|
75
|
-
|
|
76
|
-
**Group D — Temporal anchors:**
|
|
77
|
-
|
|
78
|
-
- "What time zone does the team primarily operate in? I'll use an IANA identifier like
|
|
79
|
-
America/Los_Angeles or Europe/London."
|
|
80
|
-
- "Do you want to capture standard business hours? (e.g. Mon–Fri 09:00–17:00)"
|
|
81
|
-
|
|
82
|
-
If a field already has a non-empty value, show the current value and ask whether to keep or change it.
|
|
83
|
-
Never silently overwrite existing values without confirmation.
|
|
84
|
-
|
|
85
|
-
### Step 3: Confirm before writing
|
|
86
|
-
|
|
87
|
-
Present a diff-style summary of all proposed changes:
|
|
88
|
-
|
|
89
|
-
```
|
|
90
|
-
Proposed identity changes:
|
|
91
|
-
mission: "" → "We help SMBs automate complex operations using AI."
|
|
92
|
-
vision: (unchanged) "(not set)"
|
|
93
|
-
legalName: "" → "Acme Operations LLC"
|
|
94
|
-
entityType: "" → "LLC"
|
|
95
|
-
jurisdiction: "" → "United States – Delaware"
|
|
96
|
-
industryCategory: "" → "AI Automation / Professional Services"
|
|
97
|
-
geographicFocus: "" → "North America"
|
|
98
|
-
timeZone: "UTC" → "America/Chicago"
|
|
99
|
-
businessHours: {} → { monday–friday: 09:00–17:00 }
|
|
100
|
-
|
|
101
|
-
Apply these changes? (yes/no)
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
If the user says no, abort without writing anything.
|
|
105
|
-
|
|
106
|
-
### Step 4: Codify
|
|
107
|
-
|
|
108
|
-
Execute `.claude/skills/configure/operations/codify-level-a.md` with these changes targeting the
|
|
109
|
-
`identity` key inside the `defineOrganizationModel({...})` call in
|
|
110
|
-
`foundations/config/organization-model.ts`.
|
|
111
|
-
|
|
112
|
-
Only write the fields the user confirmed. Do not add or remove other top-level keys in the adapter.
|
|
113
|
-
|
|
114
|
-
### Step 5: Report
|
|
115
|
-
|
|
116
|
-
After successful validation:
|
|
117
|
-
|
|
118
|
-
```
|
|
119
|
-
Identity updated.
|
|
120
|
-
Fields changed: {list}
|
|
121
|
-
foundations/config/organization-model.ts — identity block updated
|
|
122
|
-
Type-check: PASS
|
|
123
|
-
Schema validation: PASS
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
If validation failed and rollback occurred, report:
|
|
127
|
-
|
|
128
|
-
```
|
|
129
|
-
Identity update rolled back.
|
|
130
|
-
Reason: {error message}
|
|
131
|
-
foundations/config/organization-model.ts — restored to previous state
|
|
132
|
-
No changes persisted.
|
|
133
|
-
```
|
|
1
|
+
# Configure: identity
|
|
2
|
+
|
|
3
|
+
Guides the user through reviewing and updating the `identity` domain of the organization model.
|
|
4
|
+
|
|
5
|
+
The `identity` domain captures legal identity, purpose, and operational anchors — distinct from
|
|
6
|
+
`branding` (display identity: logos, product names). Editing identity fields here does not touch
|
|
7
|
+
any visual or branding configuration.
|
|
8
|
+
|
|
9
|
+
## Schema reference
|
|
10
|
+
|
|
11
|
+
Source: `packages/core/src/organization-model/domains/identity.ts`
|
|
12
|
+
|
|
13
|
+
```typescript
|
|
14
|
+
IdentityDomainSchema = z.object({
|
|
15
|
+
mission: z.string().trim().max(1000).default(''),
|
|
16
|
+
vision: z.string().trim().max(1000).default(''),
|
|
17
|
+
legalName: z.string().trim().max(200).default(''),
|
|
18
|
+
entityType: z.string().trim().max(100).default(''), // e.g. "LLC", "Corporation"
|
|
19
|
+
jurisdiction: z.string().trim().max(200).default(''), // e.g. "United States – Delaware"
|
|
20
|
+
industryCategory: z.string().trim().max(200).default(''), // e.g. "Marketing Agency"
|
|
21
|
+
geographicFocus: z.string().trim().max(200).default(''), // e.g. "North America"
|
|
22
|
+
timeZone: z.string().trim().max(100).default('UTC'), // IANA identifier
|
|
23
|
+
businessHours: BusinessHoursSchema // per-day { open, close } in HH:MM
|
|
24
|
+
})
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
`BusinessHoursSchema` is an object with optional keys `monday` through `sunday`, each holding
|
|
28
|
+
`{ open: "HH:MM", close: "HH:MM" }`. An empty object `{}` means not configured.
|
|
29
|
+
|
|
30
|
+
Where this lands in the adapter: `foundations/config/organization-model.ts` under the `identity`
|
|
31
|
+
key of `defineOrganizationModel({...})`.
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Process
|
|
36
|
+
|
|
37
|
+
### Step 1: Read current state
|
|
38
|
+
|
|
39
|
+
Read `foundations/config/organization-model.ts` and extract the current `identity` block. Present
|
|
40
|
+
it to the user as a plain-language summary, not a raw code dump:
|
|
41
|
+
|
|
42
|
+
```
|
|
43
|
+
Current identity:
|
|
44
|
+
Mission: {value or "(not set)"}
|
|
45
|
+
Vision: {value or "(not set)"}
|
|
46
|
+
Legal name: {value or "(not set)"}
|
|
47
|
+
Entity type: {value or "(not set)"}
|
|
48
|
+
Jurisdiction: {value or "(not set)"}
|
|
49
|
+
Industry: {value or "(not set)"}
|
|
50
|
+
Geographic focus: {value or "(not set)"}
|
|
51
|
+
Time zone: {value}
|
|
52
|
+
Business hours: {configured days or "not configured"}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### Step 2: Ask conversationally
|
|
56
|
+
|
|
57
|
+
Work through the fields in natural conversation. You do not need to ask every field in a single
|
|
58
|
+
message — group related ones together and react to what the user shares.
|
|
59
|
+
|
|
60
|
+
**Group A — Purpose:**
|
|
61
|
+
|
|
62
|
+
- "What's the organization's mission? (Why does it exist — one or two sentences.)"
|
|
63
|
+
- "What's the vision? (Where is the organization headed long-term?)"
|
|
64
|
+
|
|
65
|
+
**Group B — Legal identity:**
|
|
66
|
+
|
|
67
|
+
- "What's the legal registered name of the organization?"
|
|
68
|
+
- "What type of legal entity is it? (e.g. LLC, Corporation, Sole Proprietor, Non-profit)"
|
|
69
|
+
- "What jurisdiction is it registered in? (e.g. United States – Delaware, Canada – Ontario)"
|
|
70
|
+
|
|
71
|
+
**Group C — Industry and geography:**
|
|
72
|
+
|
|
73
|
+
- "What industry or category best describes the organization? (e.g. Marketing Agency, SaaS, Professional Services)"
|
|
74
|
+
- "Where does it primarily operate or serve? (e.g. North America, Global, Southeast Asia)"
|
|
75
|
+
|
|
76
|
+
**Group D — Temporal anchors:**
|
|
77
|
+
|
|
78
|
+
- "What time zone does the team primarily operate in? I'll use an IANA identifier like
|
|
79
|
+
America/Los_Angeles or Europe/London."
|
|
80
|
+
- "Do you want to capture standard business hours? (e.g. Mon–Fri 09:00–17:00)"
|
|
81
|
+
|
|
82
|
+
If a field already has a non-empty value, show the current value and ask whether to keep or change it.
|
|
83
|
+
Never silently overwrite existing values without confirmation.
|
|
84
|
+
|
|
85
|
+
### Step 3: Confirm before writing
|
|
86
|
+
|
|
87
|
+
Present a diff-style summary of all proposed changes:
|
|
88
|
+
|
|
89
|
+
```
|
|
90
|
+
Proposed identity changes:
|
|
91
|
+
mission: "" → "We help SMBs automate complex operations using AI."
|
|
92
|
+
vision: (unchanged) "(not set)"
|
|
93
|
+
legalName: "" → "Acme Operations LLC"
|
|
94
|
+
entityType: "" → "LLC"
|
|
95
|
+
jurisdiction: "" → "United States – Delaware"
|
|
96
|
+
industryCategory: "" → "AI Automation / Professional Services"
|
|
97
|
+
geographicFocus: "" → "North America"
|
|
98
|
+
timeZone: "UTC" → "America/Chicago"
|
|
99
|
+
businessHours: {} → { monday–friday: 09:00–17:00 }
|
|
100
|
+
|
|
101
|
+
Apply these changes? (yes/no)
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
If the user says no, abort without writing anything.
|
|
105
|
+
|
|
106
|
+
### Step 4: Codify
|
|
107
|
+
|
|
108
|
+
Execute `.claude/skills/configure/operations/codify-level-a.md` with these changes targeting the
|
|
109
|
+
`identity` key inside the `defineOrganizationModel({...})` call in
|
|
110
|
+
`foundations/config/organization-model.ts`.
|
|
111
|
+
|
|
112
|
+
Only write the fields the user confirmed. Do not add or remove other top-level keys in the adapter.
|
|
113
|
+
|
|
114
|
+
### Step 5: Report
|
|
115
|
+
|
|
116
|
+
After successful validation:
|
|
117
|
+
|
|
118
|
+
```
|
|
119
|
+
Identity updated.
|
|
120
|
+
Fields changed: {list}
|
|
121
|
+
foundations/config/organization-model.ts — identity block updated
|
|
122
|
+
Type-check: PASS
|
|
123
|
+
Schema validation: PASS
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
If validation failed and rollback occurred, report:
|
|
127
|
+
|
|
128
|
+
```
|
|
129
|
+
Identity update rolled back.
|
|
130
|
+
Reason: {error message}
|
|
131
|
+
foundations/config/organization-model.ts — restored to previous state
|
|
132
|
+
No changes persisted.
|
|
133
|
+
```
|