@elevasis/sdk 1.44.3 → 1.46.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.
Files changed (259) hide show
  1. package/dist/cli.cjs +35026 -30226
  2. package/dist/index.d.ts +1786 -808
  3. package/dist/index.js +789 -739
  4. package/dist/node/index.d.ts +105 -181
  5. package/dist/node/index.js +2 -2
  6. package/dist/test-utils/index.d.ts +901 -359
  7. package/dist/test-utils/index.js +587 -824
  8. package/dist/worker/index.d.ts +12685 -0
  9. package/dist/worker/index.js +188 -216
  10. package/package.json +4 -7
  11. package/reference/_navigation.md +161 -22
  12. package/reference/_reference-manifest.json +228 -4
  13. package/reference/claude-config.md +8 -0
  14. package/reference/core/exports.mdx +2 -0
  15. package/reference/core/index.mdx +3 -3
  16. package/reference/examples/organization-model.ts +117 -111
  17. package/reference/index.mdx +4 -4
  18. package/reference/packages/core/src/business/README.md +4 -1
  19. package/reference/packages/core/src/content/README.md +19 -0
  20. package/reference/packages/core/src/organization-model/README.md +148 -149
  21. package/reference/packages/core/src/organization-model/readiness/README.md +42 -0
  22. package/reference/packages/ui/src/features/README.md +28 -28
  23. package/reference/rules/active-change-index.md +40 -54
  24. package/reference/rules/agent-runtime.md +81 -0
  25. package/reference/rules/agent-start-here.md +71 -163
  26. package/reference/rules/deployment.md +33 -10
  27. package/reference/rules/error-handling.md +26 -0
  28. package/reference/rules/execution.md +13 -0
  29. package/reference/rules/frontend.md +10 -3
  30. package/reference/rules/observability.md +9 -1
  31. package/reference/rules/operations.md +26 -17
  32. package/reference/rules/organization-model.md +74 -88
  33. package/reference/rules/organization-os.md +71 -88
  34. package/reference/rules/package-taxonomy.md +11 -2
  35. package/reference/rules/platform.md +13 -7
  36. package/reference/rules/shared-types.md +36 -0
  37. package/reference/rules/task-tracking.md +30 -5
  38. package/reference/rules/ui.md +145 -3
  39. package/reference/rules/vibe-intents.md +271 -0
  40. package/reference/rules/vibe.md +17 -243
  41. package/reference/scaffold/core/organization-graph.mdx +112 -99
  42. package/reference/scaffold/core/organization-model.mdx +231 -215
  43. package/reference/scaffold/operations/propagation-pipeline.md +16 -17
  44. package/reference/scaffold/operations/scaffold-maintenance.md +22 -20
  45. package/reference/scaffold/operations/workflow-recipes.md +72 -20
  46. package/reference/scaffold/recipes/add-a-feature.md +156 -146
  47. package/reference/scaffold/recipes/add-a-resource.md +123 -117
  48. package/reference/scaffold/recipes/customize-crm-actions.md +28 -13
  49. package/reference/scaffold/recipes/customize-knowledge-browser.md +52 -117
  50. package/reference/scaffold/recipes/customize-organization-model.md +161 -149
  51. package/reference/scaffold/recipes/extend-a-base-entity.md +156 -140
  52. package/reference/scaffold/recipes/extend-content.md +265 -0
  53. package/reference/scaffold/recipes/extend-crm.md +16 -11
  54. package/reference/scaffold/recipes/extend-lead-gen.md +37 -21
  55. package/reference/scaffold/recipes/gate-by-feature-or-admin.md +160 -118
  56. package/reference/scaffold/recipes/index.md +6 -3
  57. package/reference/scaffold/recipes/query-the-knowledge-graph.md +23 -23
  58. package/reference/scaffold/reference/contracts.md +30 -56
  59. package/reference/scaffold/reference/feature-registry.md +3 -0
  60. package/reference/scaffold/reference/glossary.md +4 -4
  61. package/reference/scaffold/reference/system-interface-capabilities.md +5 -4
  62. package/reference/scaffold/ui/composition-extensibility.mdx +271 -232
  63. package/reference/scaffold/ui/customization.md +2 -2
  64. package/reference/scaffold/ui/feature-flags-and-gating.md +14 -6
  65. package/reference/scaffold/ui/feature-shell.mdx +277 -62
  66. package/reference/scaffold/ui/recipes.md +229 -197
  67. package/reference/sdk/cli-management.mdx +166 -33
  68. package/reference/sdk/cli.mdx +90 -13
  69. package/reference/sdk/concepts.mdx +2 -0
  70. package/reference/sdk/define-builders.mdx +76 -0
  71. package/reference/sdk/deployment/command-center.mdx +6 -2
  72. package/reference/sdk/deployment/execution-reference.mdx +64 -186
  73. package/reference/sdk/deployment/index.mdx +2 -0
  74. package/reference/sdk/exports.mdx +4 -4
  75. package/reference/sdk/framework/agent.mdx +52 -116
  76. package/reference/sdk/framework/index.mdx +46 -65
  77. package/reference/sdk/framework/project-structure.mdx +150 -205
  78. package/reference/sdk/framework/tutorial-system.mdx +2 -2
  79. package/reference/sdk/human-in-the-loop.mdx +152 -0
  80. package/reference/sdk/index.mdx +6 -7
  81. package/reference/sdk/platform-tools/adapters-platform.mdx +3 -1
  82. package/reference/sdk/platform-tools/index.mdx +12 -0
  83. package/reference/sdk/platform-tools/type-safety.mdx +4 -0
  84. package/reference/sdk/project-deployment-spec.mdx +131 -0
  85. package/reference/sdk/resources/index.mdx +21 -7
  86. package/reference/sdk/resources/patterns.mdx +54 -24
  87. package/reference/sdk/resources/types.mdx +7 -4
  88. package/reference/sdk/templates/data-enrichment.mdx +7 -3
  89. package/reference/sdk/templates/email-sender.mdx +139 -135
  90. package/reference/sdk/templates/lead-scorer.mdx +5 -1
  91. package/reference/sdk/templates/pdf-generator.mdx +155 -151
  92. package/reference/sdk/templates/recurring-job.mdx +195 -189
  93. package/reference/sdk/templates/text-classifier.mdx +4 -0
  94. package/reference/sdk/templates/web-scraper.mdx +139 -135
  95. package/reference/spine/spine-primer.md +135 -96
  96. package/reference/ui/exports.mdx +1 -0
  97. package/reference/ui/index.mdx +14 -7
  98. package/dist/types/worker/adapters/anymailfinder.d.ts +0 -14
  99. package/dist/types/worker/adapters/apify.d.ts +0 -14
  100. package/dist/types/worker/adapters/approval.d.ts +0 -23
  101. package/dist/types/worker/adapters/attio.d.ts +0 -22
  102. package/dist/types/worker/adapters/clickup.d.ts +0 -22
  103. package/dist/types/worker/adapters/create-adapter.d.ts +0 -41
  104. package/dist/types/worker/adapters/crm.d.ts +0 -20
  105. package/dist/types/worker/adapters/dropbox.d.ts +0 -14
  106. package/dist/types/worker/adapters/email.d.ts +0 -25
  107. package/dist/types/worker/adapters/execution.d.ts +0 -22
  108. package/dist/types/worker/adapters/gmail.d.ts +0 -14
  109. package/dist/types/worker/adapters/google-sheets.d.ts +0 -14
  110. package/dist/types/worker/adapters/index.d.ts +0 -33
  111. package/dist/types/worker/adapters/instantly.d.ts +0 -14
  112. package/dist/types/worker/adapters/lead.d.ts +0 -28
  113. package/dist/types/worker/adapters/list.d.ts +0 -9
  114. package/dist/types/worker/adapters/llm.d.ts +0 -45
  115. package/dist/types/worker/adapters/millionverifier.d.ts +0 -14
  116. package/dist/types/worker/adapters/notification.d.ts +0 -28
  117. package/dist/types/worker/adapters/pdf.d.ts +0 -22
  118. package/dist/types/worker/adapters/projects.d.ts +0 -20
  119. package/dist/types/worker/adapters/resend.d.ts +0 -14
  120. package/dist/types/worker/adapters/scheduler.d.ts +0 -25
  121. package/dist/types/worker/adapters/signature-api.d.ts +0 -14
  122. package/dist/types/worker/adapters/storage.d.ts +0 -33
  123. package/dist/types/worker/adapters/stripe.d.ts +0 -14
  124. package/dist/types/worker/adapters/tomba.d.ts +0 -14
  125. package/dist/types/worker/index.d.ts +0 -60
  126. package/dist/types/worker/platform.d.ts +0 -90
  127. package/dist/types/worker/utils.d.ts +0 -9
  128. package/reference/claude-config/Overview.md +0 -230
  129. package/reference/claude-config/hooks/post-edit-validate.mjs +0 -98
  130. package/reference/claude-config/hooks/scaffold-registry-reminder.mjs +0 -187
  131. package/reference/claude-config/hooks/tool-failure-recovery.mjs +0 -73
  132. package/reference/claude-config/registries/graph-skills.json +0 -4
  133. package/reference/claude-config/registries/knowledge-flags.json +0 -154
  134. package/reference/claude-config/registries/skill-coverage.json +0 -20
  135. package/reference/claude-config/rules/active-change-index.md +0 -22
  136. package/reference/claude-config/rules/agent-start-here.md +0 -22
  137. package/reference/claude-config/rules/deployment.md +0 -22
  138. package/reference/claude-config/rules/error-handling.md +0 -22
  139. package/reference/claude-config/rules/execution.md +0 -22
  140. package/reference/claude-config/rules/frontend.md +0 -22
  141. package/reference/claude-config/rules/observability.md +0 -22
  142. package/reference/claude-config/rules/operations.md +0 -22
  143. package/reference/claude-config/rules/organization-model.md +0 -22
  144. package/reference/claude-config/rules/organization-os.md +0 -22
  145. package/reference/claude-config/rules/package-taxonomy.md +0 -22
  146. package/reference/claude-config/rules/platform.md +0 -22
  147. package/reference/claude-config/rules/shared-types.md +0 -22
  148. package/reference/claude-config/rules/task-tracking.md +0 -22
  149. package/reference/claude-config/rules/topbar-actions.md +0 -70
  150. package/reference/claude-config/rules/ui.md +0 -22
  151. package/reference/claude-config/rules/vibe.md +0 -22
  152. package/reference/claude-config/scripts/statusline-command.js +0 -18
  153. package/reference/claude-config/settings.json +0 -30
  154. package/reference/claude-config/skills/client/SKILL.md +0 -201
  155. package/reference/claude-config/skills/deploy/SKILL.md +0 -159
  156. package/reference/claude-config/skills/dsp/SKILL.md +0 -66
  157. package/reference/claude-config/skills/elevasis/SKILL.md +0 -251
  158. package/reference/claude-config/skills/explore/SKILL.md +0 -78
  159. package/reference/claude-config/skills/git-sync/SKILL.md +0 -166
  160. package/reference/claude-config/skills/om/SKILL.md +0 -475
  161. package/reference/claude-config/skills/om/operations/build.md +0 -237
  162. package/reference/claude-config/skills/om/operations/codify-level-a.md +0 -109
  163. package/reference/claude-config/skills/om/operations/codify-level-b.md +0 -159
  164. package/reference/claude-config/skills/om/operations/customers.md +0 -114
  165. package/reference/claude-config/skills/om/operations/features.md +0 -88
  166. package/reference/claude-config/skills/om/operations/goals.md +0 -123
  167. package/reference/claude-config/skills/om/operations/identity.md +0 -97
  168. package/reference/claude-config/skills/om/operations/labels.md +0 -110
  169. package/reference/claude-config/skills/om/operations/offerings.md +0 -114
  170. package/reference/claude-config/skills/om/operations/roles.md +0 -104
  171. package/reference/claude-config/skills/om/operations/scaffold.md +0 -163
  172. package/reference/claude-config/skills/om/operations/techStack.md +0 -38
  173. package/reference/claude-config/skills/project/SKILL.md +0 -1114
  174. package/reference/claude-config/skills/run-ui/SKILL.md +0 -73
  175. package/reference/claude-config/skills/save/SKILL.md +0 -183
  176. package/reference/claude-config/skills/setup/SKILL.md +0 -290
  177. package/reference/claude-config/skills/status/SKILL.md +0 -59
  178. package/reference/claude-config/skills/submit-request/SKILL.md +0 -180
  179. package/reference/claude-config/skills/sync/SKILL.md +0 -47
  180. package/reference/claude-config/skills/tutorial/SKILL.md +0 -259
  181. package/reference/claude-config/skills/tutorial/progress-template.md +0 -74
  182. package/reference/claude-config/skills/tutorial/technical.md +0 -1303
  183. package/reference/claude-config/skills/tutorial/vibe-coder.md +0 -890
  184. package/reference/claude-config/sync-notes/2026-04-22-git-sync-and-sync-notes.md +0 -27
  185. package/reference/claude-config/sync-notes/2026-04-22-lead-gen-deliverability-removal.md +0 -30
  186. package/reference/claude-config/sync-notes/2026-04-24-test-utils-and-template-tests.md +0 -73
  187. package/reference/claude-config/sync-notes/2026-04-24-ui-consolidation-and-sdk-cli-train.md +0 -86
  188. package/reference/claude-config/sync-notes/2026-04-25-auth-role-system-and-settings-roles.md +0 -55
  189. package/reference/claude-config/sync-notes/2026-04-27-crm-hitl-action-layer-cutover.md +0 -97
  190. package/reference/claude-config/sync-notes/2026-04-27-lead-gen-substrate-train.md +0 -112
  191. package/reference/claude-config/sync-notes/2026-04-29-crm-state-and-lead-gen-processing-status.md +0 -93
  192. package/reference/claude-config/sync-notes/2026-05-02-crm-ownership-next-action.md +0 -58
  193. package/reference/claude-config/sync-notes/2026-05-02-template-hardcode-workos-config.md +0 -56
  194. package/reference/claude-config/sync-notes/2026-05-04-elevasis-workspace.md +0 -71
  195. package/reference/claude-config/sync-notes/2026-05-04-knowledge-bundle.md +0 -83
  196. package/reference/claude-config/sync-notes/2026-05-04-template-skills-run-ui-and-tutorial.md +0 -59
  197. package/reference/claude-config/sync-notes/2026-05-05-list-builder.md +0 -42
  198. package/reference/claude-config/sync-notes/2026-05-06-crm-spine.md +0 -60
  199. package/reference/claude-config/sync-notes/2026-05-06-sdk-changes-release-train.md +0 -37
  200. package/reference/claude-config/sync-notes/2026-05-07-sdk-changes-release-train.md +0 -34
  201. package/reference/claude-config/sync-notes/2026-05-08-resource-governance-scaffold-guidance.md +0 -38
  202. package/reference/claude-config/sync-notes/2026-05-09-clients-domain.md +0 -32
  203. package/reference/claude-config/sync-notes/2026-05-09-command-system.md +0 -33
  204. package/reference/claude-config/sync-notes/2026-05-09-resource-governance-and-misc.md +0 -69
  205. package/reference/claude-config/sync-notes/2026-05-12-sdk-ready-release-train.md +0 -30
  206. package/reference/claude-config/sync-notes/2026-05-14-organization-model-ontology-refactor.md +0 -45
  207. package/reference/claude-config/sync-notes/2026-05-15-om-skill-rename-and-write-family.md +0 -52
  208. package/reference/claude-config/sync-notes/2026-05-17-sdk-boundary-consolidation.md +0 -33
  209. package/reference/claude-config/sync-notes/2026-05-20-om-define-helpers.md +0 -32
  210. package/reference/claude-config/sync-notes/2026-05-22-access-model-and-right-panel.md +0 -43
  211. package/reference/claude-config/sync-notes/2026-05-22-lead-gen-tenant-config.md +0 -40
  212. package/reference/claude-config/sync-notes/2026-05-22-org-model-multi-file-split.md +0 -61
  213. package/reference/claude-config/sync-notes/2026-05-23-branding-names-to-identity.md +0 -49
  214. package/reference/claude-config/sync-notes/2026-05-23-lead-gen-manage-access.md +0 -31
  215. package/reference/claude-config/sync-notes/2026-05-23-om-deployment-drift-detection.md +0 -42
  216. package/reference/claude-config/sync-notes/2026-05-23-om-full-model-deploy-contract.md +0 -33
  217. package/reference/claude-config/sync-notes/2026-05-23-ui-sdk-package-fixes.md +0 -37
  218. package/reference/claude-config/sync-notes/2026-05-24-platform-invite-router-core-baseline.md +0 -28
  219. package/reference/claude-config/sync-notes/2026-05-24-system-interface-readiness.md +0 -43
  220. package/reference/claude-config/sync-notes/2026-05-25-invitation-login-loader.md +0 -26
  221. package/reference/claude-config/sync-notes/2026-05-25-om-topbar-requests.md +0 -33
  222. package/reference/claude-config/sync-notes/2026-05-25-system-interface-profile-registry-and-substrate.md +0 -35
  223. package/reference/claude-config/sync-notes/2026-05-25-tenant-om-scaffold-cli.md +0 -49
  224. package/reference/claude-config/sync-notes/2026-05-25-vibe-operate-intent.md +0 -47
  225. package/reference/claude-config/sync-notes/2026-05-28-om-snapshot-sdk-workflow-config.md +0 -33
  226. package/reference/claude-config/sync-notes/2026-05-30-client-source-and-om-profiles.md +0 -39
  227. package/reference/claude-config/sync-notes/2026-06-02-knowledge-nested-group-routing.md +0 -27
  228. package/reference/claude-config/sync-notes/2026-06-02-nest-projects-under-platform.md +0 -45
  229. package/reference/claude-config/sync-notes/2026-06-03-skill-autogen-and-client-skill.md +0 -34
  230. package/reference/claude-config/sync-notes/2026-06-04-scaffold-registry-lane-severity.md +0 -34
  231. package/reference/claude-config/sync-notes/2026-06-05-appearance-app-mode-decouple.md +0 -29
  232. package/reference/claude-config/sync-notes/2026-06-05-ontology-endpoint-rename-and-knowledge-browser-ui.md +0 -86
  233. package/reference/claude-config/sync-notes/2026-06-06-om-build-systems-scaffold.md +0 -47
  234. package/reference/claude-config/sync-notes/2026-06-06-om-item-copy-references.md +0 -50
  235. package/reference/claude-config/sync-notes/2026-06-08-knowledge-base-page-not-found-fix.md +0 -76
  236. package/reference/claude-config/sync-notes/2026-06-09-agent-sessions-public-agent-chat-route.md +0 -75
  237. package/reference/claude-config/sync-notes/2026-06-09-sdk-cli-load-org-model-resolution.md +0 -42
  238. package/reference/claude-config/sync-notes/2026-06-12-agent-grants-visualizer-operations.md +0 -30
  239. package/reference/claude-config/sync-notes/2026-06-14-session-ux-and-project-cli-json.md +0 -33
  240. package/reference/claude-config/sync-notes/2026-06-14-shared-session-conversation-view.md +0 -26
  241. package/reference/claude-config/sync-notes/2026-06-15-session-chat-zero-wiring.md +0 -46
  242. package/reference/claude-config/sync-notes/2026-06-17-agent-session-ux-features.md +0 -34
  243. package/reference/claude-config/sync-notes/2026-06-25-shared-page-scroll-contract-guard.md +0 -52
  244. package/reference/claude-config/sync-notes/2026-06-26-leadgen-overview-om-telemetry.md +0 -47
  245. package/reference/claude-config/sync-notes/2026-07-21-agent-scaffold-hardening.md +0 -75
  246. package/reference/claude-config/sync-notes/2026-07-23-agent-session-memory.md +0 -49
  247. package/reference/claude-config/sync-notes/2026-07-23-workos-org-marker.md +0 -50
  248. package/reference/claude-config/sync-notes/2026-07-24-claude-5-models-and-session-surface-fixes.md +0 -116
  249. package/reference/claude-config/sync-notes/2026-07-27-agent-strict-output-and-turn-drift.md +0 -73
  250. package/reference/claude-config/sync-notes/2026-07-28-agent-reply-is-its-own-field.md +0 -84
  251. package/reference/claude-config/sync-notes/2026-07-30-login-screen-and-member-provisioning-state.md +0 -114
  252. package/reference/claude-config/sync-notes/2026-08-02-auth-guard-defaults-and-truncation-fix.md +0 -122
  253. package/reference/claude-config/sync-notes/2026-08-03-agent-prose-escape-normalization.md +0 -88
  254. package/reference/claude-config/sync-notes/2026-08-03-cli-gateway-errors-and-request-timeout.md +0 -120
  255. package/reference/claude-config/sync-notes/README.md +0 -43
  256. package/reference/sdk/framework/interaction-guidance.mdx +0 -182
  257. package/reference/sdk/framework/memory.mdx +0 -326
  258. package/reference/sdk/framework/resource-documentation.mdx +0 -90
  259. package/reference/sdk/roadmap.mdx +0 -164
@@ -1,88 +0,0 @@
1
- # Features Compatibility Notes
2
-
3
- `features` is legacy organization-model wording. Current Organization OS vocabulary is
4
- System/Resource/Action oriented:
5
-
6
- - **Systems** describe durable capability ownership, ontology/config, accountability, governance,
7
- and knowledge mounts. They are not sidebar groups.
8
- - **Resources** describe executable artifacts such as workflows, agents, scripts, and triggers;
9
- each Resource attaches to a real System through `systemPath`.
10
- - **Actions** describe invokable operations such as workflows, agents, commands, and UI-triggered
11
- tasks.
12
-
13
- Use this file only when older prompts, browser copy text, SDK references, or scaffold recipes still
14
- say "feature". For current tenant organization-model work, route the user to Systems and Actions
15
- wording and use `/by-system/<id>` knowledge paths.
16
-
17
- Do not translate "feature" into a catch-all System. Route to Systems only when the user means a
18
- durable capability boundary; route workflow, agent, script, trigger, or implementation asks to
19
- Resources under the System that owns the actual business or platform capability.
20
-
21
- ## Compatibility Mapping
22
-
23
- | Legacy wording | Current wording |
24
- | ------------------------------------------------------------------------------------- | ----------------------------------------------- |
25
- | Feature toggle | System availability or routing toggle |
26
- | Feature ID | System ID when discussing Organization OS |
27
- | Add a custom feature | Add or extend a capability System, then define Resources and Actions it owns |
28
- | Feature governs X | System governs X |
29
- | `/om read-folder feature:x` (legacy `/knowledge read-folder feature:x` also accepted) | `/om read-folder system:x` |
30
- | `/by-feature/x` | `/by-system/x` |
31
-
32
- `by-feature` may still exist as a legacy compatibility axis in older tools. Do not introduce new
33
- guidance that depends on it; prefer `by-system` everywhere.
34
-
35
- ## What To Do With Toggle Requests
36
-
37
- For natural-language requests like "turn on lead gen", "disable SEO", or "enable CRM":
38
-
39
- 1. Treat the request as a System availability/routing change.
40
- 2. Read the Systems config file to find the matching System entry or platform default constant
41
- exposed by `@elevasis/core/organization-model`. For split projects this is
42
- `core/config/organization-model/systems.ts`; for unsplit projects use
43
- `core/config/organization-model.ts`.
44
- 3. Propose the exact availability/routing change in plain language.
45
- 4. After confirmation, run the Level A codify ceremony in `operations/codify-level-a.md`, passing
46
- `targetFile` as `core/config/organization-model/systems.ts` (split) or
47
- `core/config/organization-model.ts` (unsplit).
48
-
49
- Do not create new extension files for a simple on/off change.
50
-
51
- ## When Level B Applies
52
-
53
- Level B applies only when the user explicitly asks for a new structural concept that cannot be
54
- represented as an existing System or Action configuration. In current vocabulary this usually
55
- means adding a project-owned extension under `core/config/extensions/` and wiring it into the
56
- organization model.
57
-
58
- Older references may call this "adding a custom feature"; translate it to "add or extend a
59
- capability System and define the Resources and Actions it owns" before invoking
60
- `operations/codify-level-b.md`.
61
-
62
- ## UI Package Exception
63
-
64
- Keep the word `features` only for legacy frontend source paths that still use that directory
65
- name, such as `ui/src/features/`. Current published shell APIs are System-oriented:
66
- `SystemShell`, `SystemModule`, and `ElevasisSystemsProvider`.
67
-
68
- ## Read Examples
69
-
70
- Use current system paths:
71
-
72
- ```bash
73
- pnpm exec elevasis-sdk om:ls /by-system/<id> --ids-only
74
- pnpm exec elevasis-sdk om:cat <node-id>
75
- ```
76
-
77
- Legacy browser output (the `/knowledge` slash form is preserved as a permanent alias for `/om`):
78
-
79
- ```text
80
- /knowledge read-folder feature:<id>
81
- /om read-folder feature:<id>
82
- ```
83
-
84
- Resolve as:
85
-
86
- ```bash
87
- pnpm exec elevasis-sdk om:ls /by-system/<id> --ids-only
88
- ```
@@ -1,123 +0,0 @@
1
- # Goals domain
2
-
3
- The `goals` domain captures what the organization is working toward — time-bounded goals with
4
- measurable outcomes. The schema shape is OKR-inspired (objectives + key results) but all
5
- user-facing language must say "goals" and "measurable outcomes". Never say "OKR", "objective",
6
- or "key result" to the user.
7
-
8
- Agents use this domain for quarterly planning, priority routing, and understanding which outcomes
9
- matter most right now.
10
-
11
- ## Schema
12
-
13
- Source: `packages/core/src/organization-model/domains/goals.ts`
14
-
15
- ```typescript
16
- GoalsDomainSchema = z.object({
17
- objectives: z.array(ObjectiveSchema).default([])
18
- })
19
-
20
- ObjectiveSchema = z.object({
21
- id: z.string().trim().min(1).max(100), // stable ID, e.g. "goal-grow-arr-q1-2026"
22
- description: z.string().trim().min(1).max(1000), // plain-language goal statement
23
- periodStart: z.string().regex(ISO_DATE), // YYYY-MM-DD — must be before periodEnd
24
- periodEnd: z.string().regex(ISO_DATE), // YYYY-MM-DD — enforced in superRefine
25
- keyResults: z.array(KeyResultSchema).default([]) // measurable outcomes under this goal
26
- })
27
-
28
- KeyResultSchema = z.object({
29
- id: z.string().trim().min(1).max(100), // e.g. "kr-revenue-q1"
30
- description: z.string().trim().min(1).max(500), // e.g. "Increase trial-to-paid conversion"
31
- targetMetric: z.string().trim().min(1).max(200), // what is being measured, e.g. "monthly revenue"
32
- currentValue: z.number().default(0), // current tracked value
33
- targetValue: z.number().optional() // target to hit (omit if directional)
34
- })
35
- ```
36
-
37
- ## Field reference
38
-
39
- | Field | Type | Notes |
40
- | ------------- | ------------- | ---------------------------------------------------------- |
41
- | `id` | string (100) | Stable key; e.g. `"goal-grow-arr-q1-2026"` |
42
- | `description` | string (1000) | Plain-language goal statement; min 1 char required |
43
- | `periodStart` | string | ISO date `YYYY-MM-DD`; must be strictly before `periodEnd` |
44
- | `periodEnd` | string | ISO date `YYYY-MM-DD`; enforced by `superRefine` |
45
- | `keyResults` | array | Measurable outcomes under this goal; defaults to `[]` |
46
-
47
- Key result fields:
48
-
49
- | Field | Type | Notes |
50
- | -------------- | ------------ | --------------------------------------------------- |
51
- | `id` | string (100) | Stable key; e.g. `"kr-revenue-q1"` |
52
- | `description` | string (500) | What is being tracked; min 1 char required |
53
- | `targetMetric` | string (200) | The metric name; e.g. `"monthly recurring revenue"` |
54
- | `currentValue` | number | Current value; defaults to `0` |
55
- | `targetValue` | number | Optional target; omit if the outcome is directional |
56
-
57
- ## Validation rules
58
-
59
- - `periodEnd` must be strictly after `periodStart`; enforced at parse time by
60
- `OrganizationModelSchema.superRefine()`; setting equal dates is also invalid
61
- - Both `periodStart` and `periodEnd` must match `YYYY-MM-DD` ISO date format exactly
62
- - The internal field name for the goals array is `objectives` (not `goals`) — this is a
63
- schema-level name, not user-facing vocabulary; always say "goals" to users
64
- - The internal field name for measurable outcomes is `keyResults` (not `outcomes`) — same
65
- convention applies; say "measurable outcomes" to users
66
- - `targetValue` is optional for directional goals where there is no specific number target
67
-
68
- ## Examples
69
-
70
- ```typescript
71
- goals: {
72
- objectives: [
73
- {
74
- id: "goal-arr-q1-2026",
75
- description: "Reach $50K MRR by end of Q1 2026",
76
- periodStart: "2026-01-01",
77
- periodEnd: "2026-03-31",
78
- keyResults: [
79
- {
80
- id: "kr-mrr-q1",
81
- description: "Grow monthly recurring revenue",
82
- targetMetric: "monthly recurring revenue (MRR)",
83
- currentValue: 32000,
84
- targetValue: 50000
85
- },
86
- {
87
- id: "kr-churn-q1",
88
- description: "Reduce monthly churn rate",
89
- targetMetric: "monthly churn rate (%)",
90
- currentValue: 4.2,
91
- targetValue: 2.5
92
- }
93
- ]
94
- }
95
- ]
96
- }
97
- ```
98
-
99
- ## Where it lives in the adapter
100
-
101
- **Split projects:** `core/config/organization-model/profile.ts` under the `goals` key of
102
- `defineOrganizationModel({...})`.
103
-
104
- **Unsplit projects:** `core/config/organization-model.ts` under the same key.
105
-
106
- To read current goals: open the appropriate file and inspect the `goals.objectives` array, or
107
- use `pnpm exec elevasis-sdk om:cat goals` (external project).
108
-
109
- ## Write path
110
-
111
- To add, edit, remove, or update progress on a goal, the `/om` skill runs the codify
112
- ceremony (`operations/codify-level-a.md`): snapshot → propose → confirm → write → typecheck →
113
- Zod parse → rollback on failure. Pass `targetFile` as
114
- `core/config/organization-model/profile.ts` for split projects, or
115
- `core/config/organization-model.ts` for unsplit projects. Only the `objectives` array is written;
116
- no other keys in the target file are touched. For progress-only updates (changing `currentValue`
117
- on an existing outcome), a targeted edit is preferred over rewriting the entire goals block.
118
-
119
- ---
120
-
121
- **Read via `/om`** (legacy `/knowledge` alias also accepted) — natural-language queries like
122
- "what are our goals this quarter?" or "what's the current MRR against target?" route to this
123
- domain via the skill's intent classifier.
@@ -1,97 +0,0 @@
1
- # Identity domain
2
-
3
- The `identity` domain captures the organization's legal identity, purpose, and operational anchors.
4
- It is distinct from `branding` (display identity: logos, product names) — editing identity fields
5
- here does not touch any visual or branding configuration.
6
-
7
- ## Schema
8
-
9
- Source: `packages/core/src/organization-model/domains/identity.ts`
10
-
11
- ```typescript
12
- IdentityDomainSchema = z.object({
13
- mission: z.string().trim().max(1000).default(''),
14
- vision: z.string().trim().max(1000).default(''),
15
- legalName: z.string().trim().max(200).default(''),
16
- entityType: z.string().trim().max(100).default(''), // e.g. "LLC", "Corporation"
17
- jurisdiction: z.string().trim().max(200).default(''), // e.g. "United States – Delaware"
18
- industryCategory: z.string().trim().max(200).default(''), // e.g. "Marketing Agency"
19
- geographicFocus: z.string().trim().max(200).default(''), // e.g. "North America"
20
- timeZone: z.string().trim().max(100).default('UTC'), // IANA identifier
21
- businessHours: BusinessHoursSchema // per-day { open, close } in HH:MM
22
- })
23
- ```
24
-
25
- `BusinessHoursSchema` is an object with optional keys `monday` through `sunday`, each holding
26
- `{ open: "HH:MM", close: "HH:MM" }`. An empty object `{}` means not configured.
27
-
28
- ## Field reference
29
-
30
- | Field | Type | Max | Notes |
31
- | ------------------ | ------ | ---- | -------------------------------------------------------- |
32
- | `mission` | string | 1000 | Why the organization exists |
33
- | `vision` | string | 1000 | Where the organization is headed long-term |
34
- | `legalName` | string | 200 | Registered legal name |
35
- | `entityType` | string | 100 | e.g. "LLC", "Corporation", "Sole Proprietor" |
36
- | `jurisdiction` | string | 200 | e.g. "United States – Delaware", "Canada – Ontario" |
37
- | `industryCategory` | string | 200 | e.g. "Marketing Agency", "SaaS", "Professional Services" |
38
- | `geographicFocus` | string | 200 | e.g. "North America", "Global", "Southeast Asia" |
39
- | `timeZone` | string | 100 | IANA identifier, e.g. `America/Los_Angeles` |
40
- | `businessHours` | object | -- | Per-day `{ open: "HH:MM", close: "HH:MM" }` |
41
-
42
- ## Validation rules
43
-
44
- - All string fields default to empty string `''`; none are required to be non-empty at schema level
45
- - `timeZone` defaults to `"UTC"` when not set; agents should treat a value of `"UTC"` as
46
- potentially unconfigured and surface it for review
47
- - `businessHours` defaults to `{}` (not configured); an empty object is valid
48
- - Per-day entries must follow `"HH:MM"` 24-hour format; the schema does not enforce range bounds
49
- but convention is `00:00`–`23:59`
50
- - `jurisdiction` should use the format `"Country – Region"` (em dash, not hyphen) for
51
- consistency across agents that parse it
52
-
53
- ## Examples
54
-
55
- ```typescript
56
- identity: {
57
- mission: "We help SMBs automate complex operations using AI.",
58
- vision: "A world where every business operates at the efficiency of a Fortune 500.",
59
- legalName: "Acme Operations LLC",
60
- entityType: "LLC",
61
- jurisdiction: "United States – Delaware",
62
- industryCategory: "AI Automation / Professional Services",
63
- geographicFocus: "North America",
64
- timeZone: "America/Chicago",
65
- businessHours: {
66
- monday: { open: "09:00", close: "17:00" },
67
- tuesday: { open: "09:00", close: "17:00" },
68
- wednesday: { open: "09:00", close: "17:00" },
69
- thursday: { open: "09:00", close: "17:00" },
70
- friday: { open: "09:00", close: "17:00" }
71
- }
72
- }
73
- ```
74
-
75
- ## Where it lives in the adapter
76
-
77
- **Split projects:** `core/config/organization-model/profile.ts` under the `identity` key of
78
- `defineOrganizationModel({...})`.
79
-
80
- **Unsplit projects:** `core/config/organization-model.ts` under the same key.
81
-
82
- To read the current values: open the appropriate file and inspect the `identity` block directly,
83
- or use `pnpm exec elevasis-sdk om:cat identity` (external project).
84
-
85
- ## Write path
86
-
87
- To edit any field, the `/om` skill runs the codify ceremony
88
- (`operations/codify-level-a.md`): snapshot → propose → confirm → write → typecheck → Zod parse →
89
- rollback on failure. Pass `targetFile` as `core/config/organization-model/profile.ts` for split
90
- projects, or `core/config/organization-model.ts` for unsplit projects. Only the confirmed fields
91
- are written; no other top-level keys in the target file are touched.
92
-
93
- ---
94
-
95
- **Read via `/om`** (legacy `/knowledge` alias also accepted) — natural-language queries like
96
- "what's our identity set to?" or "what timezone are we in?" route to this domain via the skill's
97
- intent classifier.
@@ -1,110 +0,0 @@
1
- # Labels domain
2
-
3
- `label` is an inline display field carried by status entries, stage entries, System entries,
4
- knowledge nodes, registry entries, and sidebar surfaces in the OrganizationModel. Labels control what users see in the UI and what
5
- agents say when narrating state. Editing a label does not change the entry's `id` or
6
- `semanticClass` -- only the human-readable display string. This is Level A only (config-only
7
- edits to a single file under `core/config/`).
8
-
9
- ## What carries labels
10
-
11
- The following model elements have editable inline `label` fields:
12
-
13
- **Status / stage entries.** Each domain that carries an enum-like array exposes per-entry labels:
14
-
15
- - `sales.statuses` -- deal pipeline stages.
16
- - `prospecting.statuses` -- lead lifecycle stages.
17
- - `projects.statuses` -- project and task stages.
18
-
19
- Source of platform defaults: `packages/core/src/organization-model/domains/{sales,prospecting,projects}.ts`.
20
-
21
- Each status entry shape:
22
-
23
- ```typescript
24
- { id: 'new', label: 'New Lead', semanticClass: 'active', color: 'blue' }
25
- ```
26
-
27
- **Systems.** The `label` field on a System entry. Editing it changes agent narration and any
28
- System-derived shell text, but it does not change the System `id`, route path, or graph node id.
29
-
30
- **Sidebar surfaces.** Routeable leaves under `navigation.sidebar.primary` and
31
- `navigation.sidebar.bottom` carry labels. Editing changes nav item and breadcrumb display without
32
- changing the route path or target System refs.
33
-
34
- **Knowledge/domain entries.** Knowledge nodes, customers, offerings, goals, roles, resources,
35
- actions, entities, and policies may carry labels or titles depending on the domain. Edit only the
36
- display field that already exists on the entry.
37
-
38
- ## What is NOT in scope
39
-
40
- `id` and `semanticClass` of any entry must never change in a label edit -- they are structural
41
- anchors used by code, hooks, and workflow adapters. Only `label` (and optionally `color` or
42
- `icon`) are in scope. To rename an `id`, escalate to a separate Level B refactor with explicit
43
- confirmation, because every consumer that references the old `id` must be updated in the same
44
- change.
45
-
46
- ## Validation rules
47
-
48
- - `label` is non-empty, max 120 characters.
49
- - `id` and `semanticClass` are unchanged from the previous state.
50
- - Entries not being edited remain byte-identical in the output -- partial array rewrites are
51
- preferred over wholesale array replacement to minimize diff surface.
52
-
53
- ## Realistic examples
54
-
55
- Rename two sales statuses:
56
-
57
- ```
58
- Domain: sales (deal pipeline)
59
- new: "New Lead" -> "Inbound Lead"
60
- proposal: "Proposal Sent" -> "Proposal Out"
61
- negotiation: (unchanged)
62
- ```
63
-
64
- Rename a System label without changing its ID:
65
-
66
- ```
67
- systems:
68
- sales.crm: label "CRM" -> "Sales Pipeline"
69
- (id stays 'sales.crm'; graph node remains 'system:sales.crm')
70
- ```
71
-
72
- Rename a sidebar surface:
73
-
74
- ```
75
- navigation.sidebar.primary:
76
- sales.crm: label "Pipeline" -> "Deal Pipeline"
77
- ```
78
-
79
- ## Where it lives
80
-
81
- **Split projects:** the target file depends on what carries the label being edited:
82
-
83
- - Status/stage entries and System entries -- `core/config/organization-model/systems.ts`
84
- - Sidebar navigation surfaces -- `core/config/organization-model/navigation.ts`
85
- - Business-profile domain entries (customers, offerings, roles, goals) -- `core/config/organization-model/profile.ts`
86
-
87
- **Unsplit projects:** `core/config/organization-model.ts` for all label edits.
88
-
89
- Pass the appropriate path as `targetFile` when invoking `operations/codify-level-a.md`.
90
-
91
- **Note:** `labels` is not currently authored as a standalone top-level domain key in either the
92
- template or reference tenant model. Label fields are inline properties on the entries listed
93
- above. Do not invent a top-level `labels` key in `profile.ts`.
94
-
95
- ## Validation gate
96
-
97
- Every label change must pass before codify completes:
98
-
99
- 1. `pnpm -C operations check-types`.
100
- 2. `resolveOrganizationModel()` and `OrganizationModelSchema.parse()` succeed on the merged result.
101
-
102
- On failure, the codify ceremony rolls back. See `operations/codify-level-a.md` for the rollback
103
- procedure.
104
-
105
- ---
106
-
107
- > **Read via `/om`** (legacy `/knowledge` alias also accepted) -- natural-language queries like
108
- > "what's the label for the proposal stage?" or "what do we call the SEO System?" route to this
109
- > domain via the skill's intent classifier. To rename one or more labels, the `/om` skill triggers
110
- > the codify ceremony when intent classifies as Codify.
@@ -1,114 +0,0 @@
1
- # Offerings domain
2
-
3
- The `offerings` domain describes what the organization sells or delivers — a catalog of products
4
- and services modeled after the Business Model Canvas "Value Propositions". Agents use offerings
5
- for quoting, proposal generation, and scope-of-work reasoning.
6
-
7
- ## Schema
8
-
9
- Source: `packages/core/src/organization-model/domains/offerings.ts`
10
-
11
- ```typescript
12
- OfferingsDomainSchema = z.object({
13
- products: z.array(ProductSchema).default([])
14
- })
15
-
16
- ProductSchema = z.object({
17
- id: z.string().trim().min(1).max(100), // stable ID, e.g. "product-starter-plan"
18
- name: z.string().trim().max(200).default(''), // display name
19
- description: z.string().trim().max(2000).default(''), // what it delivers
20
- pricingModel: PricingModelSchema.default('custom'), // 'one-time' | 'subscription' | 'usage-based' | 'custom'
21
- price: z.number().min(0).default(0), // base price amount (>= 0)
22
- currency: z.string().trim().max(10).default('USD'),// ISO 4217, e.g. "USD", "EUR"
23
- targetSegmentIds: z.array(z.string()).default([]), // must ref customers.segments[].id
24
- deliverySystemId: z.string().optional() // optional ref to systems[].id
25
- })
26
- ```
27
-
28
- `pricingModel` values:
29
-
30
- - `one-time` -- single purchase (setup fee, project fee)
31
- - `subscription` -- recurring (monthly/annual SaaS, retainer)
32
- - `usage-based` -- metered by consumption (API calls, seats)
33
- - `custom` -- negotiated or bespoke pricing
34
-
35
- ## Field reference
36
-
37
- | Field | Type | Max | Notes |
38
- | ------------------ | -------- | ---- | -------------------------------------------------------- |
39
- | `id` | string | 100 | Stable key, min 1 char; e.g. `"product-starter-plan"` |
40
- | `name` | string | 200 | Display name |
41
- | `description` | string | 2000 | What this product or service delivers |
42
- | `pricingModel` | enum | -- | `one-time`, `subscription`, `usage-based`, or `custom` |
43
- | `price` | number | -- | Base price amount, min 0; use 0 for fully custom pricing |
44
- | `currency` | string | 10 | ISO 4217 code; defaults to `"USD"` |
45
- | `targetSegmentIds` | string[] | -- | Each entry must reference a `customers.segments[].id` |
46
- | `deliverySystemId` | string | -- | Optional reference to a `systems[].id` |
47
-
48
- ## Validation rules
49
-
50
- - `id` is the stable key; changing it after creation is a breaking change for any downstream
51
- references
52
- - `targetSegmentIds` entries must exist in `customers.segments[].id`; the schema enforces this
53
- at parse time — missing references cause `resolveOrganizationModel()` to fail
54
- - `deliverySystemId` (when present) must exist in `systems[].id`; same parse-time enforcement
55
- - `price` must be >= 0; use 0 when pricing is fully custom or not yet set
56
- - `currency` must be a valid ISO 4217 code by convention (the schema only validates length)
57
- - Cross-reference: if a product is removed, surface any `targetSegmentIds` in other products
58
- that reference the removed ID
59
-
60
- ## Examples
61
-
62
- ```typescript
63
- offerings: {
64
- products: [
65
- {
66
- id: "product-full-service-retainer",
67
- name: "Full-Service Retainer",
68
- description: "End-to-end campaign delivery, reporting, and optimization for SMB clients.",
69
- pricingModel: "subscription",
70
- price: 2500,
71
- currency: "USD",
72
- targetSegmentIds: ["segment-smb-agencies"],
73
- deliverySystemId: undefined
74
- },
75
- {
76
- id: "product-one-time-audit",
77
- name: "One-Time Operations Audit",
78
- description: "Single-engagement review of current workflows with a remediation roadmap.",
79
- pricingModel: "one-time",
80
- price: 1500,
81
- currency: "USD",
82
- targetSegmentIds: ["segment-smb-agencies"],
83
- deliverySystemId: undefined
84
- }
85
- ]
86
- }
87
- ```
88
-
89
- ## Where it lives in the adapter
90
-
91
- **Split projects:** `core/config/organization-model/profile.ts` under the `offerings` key of
92
- `defineOrganizationModel({...})`.
93
-
94
- **Unsplit projects:** `core/config/organization-model.ts` under the same key.
95
-
96
- To read current products: open the appropriate file and inspect the `offerings.products` array,
97
- or use `pnpm exec elevasis-sdk om:cat offerings` (external project).
98
-
99
- ## Write path
100
-
101
- To add, edit, or remove a product, the `/om` skill runs the codify ceremony
102
- (`operations/codify-level-a.md`): snapshot → propose → confirm → write → typecheck → Zod parse →
103
- rollback on failure. Pass `targetFile` as `core/config/organization-model/profile.ts` for split
104
- projects, or `core/config/organization-model.ts` for unsplit projects. Only the `products` array
105
- is written; no other keys in the target file are touched. Before writing, the skill verifies all
106
- `targetSegmentIds` and `deliverySystemId` references resolve. When adding, append to the array.
107
- When editing, replace by `id`. When removing, filter out — and surface any dangling references
108
- first.
109
-
110
- ---
111
-
112
- **Read via `/om`** (legacy `/knowledge` alias also accepted) — natural-language queries like
113
- "what do we sell?" or "what's the pricing on the retainer?" route to this domain via the skill's
114
- intent classifier.
@@ -1,104 +0,0 @@
1
- # Roles domain
2
-
3
- The `roles` domain describes who does what inside the organization — a role chart inspired by the
4
- EOS Accountability Chart but using plain-language field names throughout. Agents use this domain
5
- for HITL routing, escalation logic, and approval-rights reasoning.
6
-
7
- Field names are developer-facing; when narrating to users, say "role", "responsibilities",
8
- "reports to", and "held by". Do not say "seat", "accountability", or "EOS".
9
-
10
- ## Schema
11
-
12
- Source: `packages/core/src/organization-model/domains/roles.ts`
13
-
14
- ```typescript
15
- RolesDomainSchema = z.object({
16
- roles: z.array(RoleSchema).default([])
17
- })
18
-
19
- RoleSchema = z.object({
20
- id: z.string().trim().min(1).max(100), // stable ID, e.g. "role-ceo"
21
- title: z.string().trim().min(1).max(200), // display title, e.g. "CEO"
22
- responsibilities: z.array(z.string().trim().max(500)).default([]),// what this role owns
23
- reportsToId: z.string().trim().min(1).max(100).optional(), // must ref another roles[].id
24
- heldBy: z.string().trim().max(200).optional() // name or email, free-form
25
- })
26
- ```
27
-
28
- ## Field reference
29
-
30
- | Field | Type | Max | Notes |
31
- | ------------------ | -------- | --- | --------------------------------------------------------------- |
32
- | `id` | string | 100 | Stable key, min 1 char; e.g. `"role-ceo"` |
33
- | `title` | string | 200 | Display title; min 1 char required |
34
- | `responsibilities` | string[] | 500 | Each item: one thing this role is accountable for |
35
- | `reportsToId` | string | 100 | Optional; must reference another `roles[].id` in the collection |
36
- | `heldBy` | string | 200 | Optional; name or email of the person holding this role |
37
-
38
- ## Validation rules
39
-
40
- - `reportsToId` (when present) must resolve to another `roles[].id` in the same collection;
41
- enforced at parse time by `OrganizationModelSchema.superRefine()`
42
- - Absence of `reportsToId` indicates a top-level role (no reporting line)
43
- - Cycle detection is not enforced by the schema (known limitation); agents should surface
44
- obvious cycles (e.g. role A reports to role B which reports to role A)
45
- - `heldBy` is free-form; no validation beyond max length
46
- - An empty roles array means no HITL routing or escalation rules are available
47
-
48
- ## Examples
49
-
50
- ```typescript
51
- roles: {
52
- roles: [
53
- {
54
- id: "role-ceo",
55
- title: "CEO",
56
- responsibilities: [
57
- "Set company direction",
58
- "Final approval on deals >$10K",
59
- "Manage investor relations"
60
- ],
61
- reportsToId: undefined,
62
- heldBy: "Alice Johnson"
63
- },
64
- {
65
- id: "role-head-of-client-success",
66
- title: "Head of Client Success",
67
- responsibilities: [
68
- "Own client health scores",
69
- "Lead quarterly business reviews",
70
- "Handle escalations"
71
- ],
72
- reportsToId: "role-ceo",
73
- heldBy: undefined
74
- }
75
- ]
76
- }
77
- ```
78
-
79
- ## Where it lives in the adapter
80
-
81
- **Split projects:** `core/config/organization-model/profile.ts` under the `roles` key of
82
- `defineOrganizationModel({...})`.
83
-
84
- **Unsplit projects:** `core/config/organization-model.ts` under the same key.
85
-
86
- To read the current role chart: open the appropriate file and inspect the `roles.roles` array,
87
- or use `pnpm exec elevasis-sdk om:cat roles` (external project).
88
-
89
- ## Write path
90
-
91
- To add, edit, or remove a role, the `/om` skill runs the codify ceremony
92
- (`operations/codify-level-a.md`): snapshot → propose → confirm → write → typecheck → Zod parse →
93
- rollback on failure. Pass `targetFile` as `core/config/organization-model/profile.ts` for split
94
- projects, or `core/config/organization-model.ts` for unsplit projects. Only the `roles` array is
95
- written; no other keys in the target file are touched. Before writing, the skill verifies all
96
- `reportsToId` references resolve to IDs that will exist after the write. When removing a role,
97
- the skill surfaces any other roles that `reportsToId` to it and asks whether to clear those
98
- reporting lines before proceeding.
99
-
100
- ---
101
-
102
- **Read via `/om`** (legacy `/knowledge` alias also accepted) — natural-language queries like
103
- "who is responsible for client escalations?" or "list my roles" route to this domain via the
104
- skill's intent classifier.