@elevasis/sdk 1.33.0 → 1.34.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.
@@ -115,9 +115,11 @@ Agents that need to pass structured JSON to `request:submit` or `exec` should wr
115
115
  pnpm elevasis-sdk exec my-workflow -f tmp/exec-payload.json --cleanup-input
116
116
  ```
117
117
 
118
- 3. The `--cleanup-input` flag deletes the file automatically after a successful command. On failure the file is left intact for inspection.
118
+ 3. The `--cleanup-input` flag deletes request/exec input files automatically after a successful command. On failure the file is left intact for inspection.
119
119
 
120
- **Safety guard:** `--cleanup-input` only deletes files that are under `<projectRoot>/tmp/`. If the resolved path is outside `tmp/`, the CLI prints a warning to stderr and leaves the file untouched. Files passed via `--input <json>` (inline JSON, no file) are never affected.
120
+ **Safety guard:** `--cleanup-input` only deletes files that are under `<projectRoot>/tmp/`. If the resolved path is outside `tmp/`, the CLI prints a warning to stderr and leaves the file untouched. Files passed via inline JSON flags are never affected.
121
+
122
+ Checklist commands in the currently published SDK use inline `--checklist` JSON only. In Windows PowerShell 5.1, inline JSON is not reliable; use bash/PowerShell 7 for those updates, or update the checklist through the UI.
121
123
 
122
124
  ---
123
125
 
@@ -298,11 +300,11 @@ Both `prj_milestones.checklist` and `prj_tasks.checklist` store a JSONB array of
298
300
  ]
299
301
  ```
300
302
 
301
- The CLI `--checklist` flag on both `project:milestone:update` and `project:task:update` performs a **full replace** the entire array is replaced with the JSON you supply. There are no item-level add/toggle/remove flags. To mutate a single item:
303
+ The CLI `--checklist` flag on `project:task:create`, `project:task:update`, and `project:milestone:update` performs a **full replace** where the command accepts checklist data. The entire array is replaced with the JSON you supply. There are no item-level add/toggle/remove flags. In Windows PowerShell 5.1, inline JSON is not reliable; use bash/PowerShell 7 for checklist CLI updates, or update the checklist through the UI. To mutate a single item:
302
304
 
303
305
  1. Read the current checklist (via psql or `project:task:get` / `project:milestone:list`)
304
306
  2. Mutate the array in memory (append, flip `completed`, filter out)
305
- 3. Write the entire array back via `--checklist '<json>'`
307
+ 3. Write the entire array back via `--checklist '<json-array>'`
306
308
 
307
309
  To clear a checklist: `--checklist '[]'`.
308
310
 
@@ -668,7 +670,7 @@ pnpm elevasis-sdk project:milestone:update <milestone-id> --status completed
668
670
 
669
671
  # Update checklist (full replace)
670
672
  pnpm elevasis-sdk project:milestone:update <milestone-id> \
671
- --checklist '[{"id":"uuid","label":"Item label","completed":false}]'
673
+ --checklist '[{"id":"1","label":"Review scope doc","completed":false}]'
672
674
  ```
673
675
 
674
676
  If status changes to `completed`, the API auto-sets `completed_at`.
@@ -679,7 +681,7 @@ If status changes to `completed`, the API auto-sets `completed_at`.
679
681
 
680
682
  1. Read the current checklist via psql or `project:milestone:list`
681
683
  2. Mutate the array in memory
682
- 3. Write back the full array via `--checklist '<json>'`
684
+ 3. Write back the full array via `--checklist '<json-array>'`
683
685
 
684
686
  ### `checklist <client> "<milestone>"` — View Checklist
685
687
 
@@ -741,7 +743,7 @@ pnpm elevasis-sdk project:task:create \
741
743
  pnpm elevasis-sdk project:task:create \
742
744
  --project <project-id> \
743
745
  --title "<name>" \
744
- --checklist '[{"id":"1","label":"Step one","completed":false}]'
746
+ --checklist '[{"id":"1","label":"Review scope doc","completed":false}]'
745
747
  ```
746
748
 
747
749
  ### `task update <client> "<task>" [options]` — Update Task
@@ -757,7 +759,7 @@ pnpm elevasis-sdk project:task:update <task-id> --status <status>
757
759
 
758
760
  # Update checklist (full replace)
759
761
  pnpm elevasis-sdk project:task:update <task-id> \
760
- --checklist '[{"id":"uuid","label":"Step","completed":false}]'
762
+ --checklist '[{"id":"1","label":"Review scope doc","completed":false}]'
761
763
 
762
764
  # Clear checklist
763
765
  pnpm elevasis-sdk project:task:update <task-id> --checklist '[]'
@@ -773,7 +775,7 @@ If status changes to `approved`, the API auto-sets `completed_at`.
773
775
 
774
776
  1. Read the current task via `project:task:get <task-id>`
775
777
  2. Mutate the checklist array in memory
776
- 3. Write back the full array via `project:task:update <task-id> --checklist '<json>'`
778
+ 3. Write back the full array via `project:task:update <task-id> --checklist '<json-array>'`
777
779
 
778
780
  ### `note <client> "<content>" [options]` — Add Note
779
781
 
@@ -964,15 +966,15 @@ When args don't match any command pattern, infer intent from natural language:
964
966
  | "what's overdue?" | List milestones where `due_date < now() AND status != 'completed'` |
965
967
  | "block acme, waiting on client credentials" | `update acme --status blocked` |
966
968
  | "show checklist for phase 2" | Read and display checklist for milestone "phase 2" via psql or `project:milestone:list` |
967
- | "add 'deploy staging' to task X's checklist" | Read task X's checklist → append `{id: uuid, label: "deploy staging", completed: false}` → `project:task:update <id> --checklist '<json>'` |
968
- | "mark 'deploy staging' done on task X" | Read task X's checklist → flip `completed` on matching item → `project:task:update <id> --checklist '<json>'` |
969
+ | "add 'deploy staging' to task X's checklist" | Read task X's checklist → append `{id: uuid, label: "deploy staging", completed: false}` → `project:task:update <id> --checklist '<json-array>'` |
970
+ | "mark 'deploy staging' done on task X" | Read task X's checklist → flip `completed` on matching item → `project:task:update <id> --checklist '<json-array>'` |
969
971
  | "clear the checklist on task X" | `project:task:update <task-id> --checklist '[]'` |
970
- | "add checklist item to onboarding milestone: review scope doc" | Read milestone checklist → append item → `project:milestone:update <id> --checklist '<json>'` |
972
+ | "add checklist item to onboarding milestone: review scope doc" | Read milestone checklist → append item → `project:milestone:update <id> --checklist '<json-array>'` |
971
973
  | "I'm done" / "task complete" / "done with this" | Resolve active task → confirm → `project:task:update <task-id> --status completed` |
972
974
  | "save: Apify actor X rate-limits at 20rps" | Resolve active project/task → `project:note:create --project <id> --type agent_learning --task <task-id> "Apify actor X rate-limits at 20rps"` |
973
975
  | "remember: client requires ISO dates, not timestamps" | Resolve active project/task → `project:note:create --project <id> --type agent_learning --task <task-id> "client requires ISO dates, not timestamps"` |
974
976
 
975
- **Checklist note:** all checklist mutations use the read-modify-write pattern. The CLI has no item-level flags (`--add-item`, `--toggle`, `--remove-item` do not exist). Always read the current state, mutate the array, then write the full array back.
977
+ **Checklist note:** all checklist mutations use the read-modify-write pattern. The CLI has no item-level flags (`--add-item`, `--toggle`, `--remove-item` do not exist). Always read the current state, mutate the array, then write the full array back. Use bash/PowerShell 7 for generated checklist JSON; Windows PowerShell 5.1 native argument passing is not reliable for inline JSON.
976
978
 
977
979
  ---
978
980
 
@@ -1078,7 +1080,7 @@ The full `client:*` surface (list, get, status, resolve) is available via `eleva
1078
1080
  6. **Template project assumption** — the template is a single-organization project. All
1079
1081
  `/project` operations operate within the organization scoped by `ELEVASIS_PLATFORM_KEY`.
1080
1082
  There is no cross-org capability.
1081
- 7. **Checklist full-replace** — the `--checklist` flag replaces the entire array. Always read
1083
+ 7. **Checklist full-replace** — `--checklist` replaces the entire array. Always read
1082
1084
  the current checklist before writing to avoid losing existing items.
1083
1085
  8. **Confirm task completion** — always ask once before marking a task `completed` via "I'm done"
1084
1086
  recognition. This status is semantically significant and warrants a confirmation step.
@@ -0,0 +1,34 @@
1
+ # Scaffold registry lane severity annotations
2
+
3
+ ## Why this note exists
4
+
5
+ This train adds `sync_lane_severity` annotations to the scaffold registry schema and moves external sync lane-severity ownership from hardcoded script sets into registry metadata.
6
+
7
+ The change is intended to keep project sync behavior the same while making the registry the single edit point for paths that need critical manual-merge handling or optional-feature-selection treatment.
8
+
9
+ ## Applies to
10
+
11
+ - Template-derived projects that use `/external sync` or `pnpm sync:apply` from the Elevasis monorepo.
12
+ - Projects that receive `@elevasis/core` package-baseline updates through `core/package.json` or `operations/package.json`.
13
+ - Operators reviewing external-sync plans that mention critical manual-merge or optional-feature-selection paths.
14
+
15
+ ## Required actions
16
+
17
+ 1. Run the prepared external sync from the release train so this note reaches derived projects.
18
+ 2. After the `@elevasis/core` publish stage, install the prepared core package baseline in template-derived project package files.
19
+ 3. Review any sync plan lane labels against the registry entry metadata before widening a manifest or applying catch-up work.
20
+
21
+ No project-authored Organization Model content should be overwritten for this train.
22
+
23
+ ## Verification
24
+
25
+ ```bash
26
+ pnpm sync:verify
27
+ pnpm exec tsx scripts/external/sync-apply.ts --all --dry-run --manifest apps/docs/content/docs/in-progress/active-development/sdk-changes/ship/_external-sync-prep.json --strict-manifest
28
+ ```
29
+
30
+ The strict manifest dry-run should authorize only the prepared sync note and the core package-baseline cascades.
31
+
32
+ ## Not handled by /git-sync
33
+
34
+ `/git-sync` can deliver committed file changes, but it does not publish `@elevasis/core`, install package baselines, validate scaffold registry metadata, or enforce manifest-scoped external-sync write authorization.
@@ -0,0 +1,29 @@
1
+ # Appearance Page Decoupled From App-Mode
2
+
3
+ ## Why this note exists
4
+
5
+ The Settings → Appearance page used to be hard-coupled to `dev-centric` app-mode: scaffold removed it under `--client-centric`, every `/external sync` actively deleted it (planner `delete` special-case), and verify forbade it for `client-centric` projects. That made the page silently vanish on every sync for client-centric tenants.
6
+
7
+ This train decouples Appearance from app-mode. Appearance is now an optional standalone page available in any mode. The only remaining app-mode difference is the `OrganizationSwitcher` in the topbar.
8
+
9
+ No npm publish is involved: the page renders the already-published `@elevasis/ui@2.46.0` `AppearanceSettings` component. The substrate changes (`scripts/external/*`) and the `_template` route are monorepo-internal and propagate through `/external sync`.
10
+
11
+ ## Applies to
12
+
13
+ - All template-derived projects under `external/` that lack `ui/src/routes/settings/appearance.tsx`.
14
+ - Confirmed pending at prep time: `nirvana-marketing` (sync planner `writes=1` for the appearance route). `contemplative-records` already restored it; `ZentaraHQ` shows no pending write.
15
+
16
+ ## Required actions
17
+
18
+ 1. The new template route `ui/src/routes/settings/appearance.tsx` propagates automatically via `/external sync` (registry entry `external-sync-feature-route-baseline`, `sync-preservation`). No manual file copy needed — running the prepared sync applies it.
19
+ 2. **Per-tenant nav entry is NOT propagated.** `core/config/organization-model/navigation.ts` is project-owned (sync-preservation). For any tenant that should surface Appearance in its sidebar, manually add a `settings-appearance` entry to `navigation.sidebar.bottom.settings.children` (order `50`, after `settings-webhooks`), pointing at the appearance route.
20
+
21
+ ## Verification
22
+
23
+ - After sync: `pnpm -C external/<project>/ui check-types` passes with the new route present.
24
+ - `pnpm sync:verify` reports `writes=0` for the synced project's `sync-plan`.
25
+ - The Appearance entry renders in the Settings sidebar only after the per-tenant `navigation.ts` entry is added (step 2).
26
+
27
+ ## Not handled by /git-sync
28
+
29
+ `/git-sync` does not author the per-tenant `navigation.ts` nav entry — it is project-owned business content and must be added by hand per tenant. `/git-sync` also will not retroactively restore the route for tenants that were previously stripped by the old delete special-case; run the prepared `/external sync --all` to apply the new non-deleting baseline.
@@ -0,0 +1,86 @@
1
+ # Ontology `surface` → `endpoint` rename + Knowledge Browser UI upgrades
2
+
3
+ ## Why this note exists
4
+
5
+ This release bumps **both** `@elevasis/core` and `@elevasis/ui`. Two distinct changes ride it:
6
+
7
+ 1. **Breaking OM contract rename (`@elevasis/core`).** The ontology kind `surface` was renamed to
8
+ `endpoint` to stop colliding with **navigation surfaces** (shell sidebar routes). The published
9
+ contract changed: the `OntologyKind` enum member `'surface'` is now `'endpoint'`, the ontology ID
10
+ namespace `…:surface/…` is now `…:endpoint/…`, `ontology.surfaces` is now `ontology.endpoints`,
11
+ and the exported `OntologySurfaceType` / `OntologySurfaceTypeSchema` are now
12
+ `OntologyEndpointType` / `OntologyEndpointTypeSchema`. **There is no back-compat alias** (hard
13
+ rename — the kind was near-dormant). Any tenant OM that still declares a `:surface/` **ontology**
14
+ ID will fail validation once it installs the new `@elevasis/core`.
15
+
16
+ 2. **Knowledge Browser UI upgrades (`@elevasis/ui`).** Three additive, platform-substrate
17
+ enhancements that tenants get purely on the `@elevasis/ui` bump — no authoring change required:
18
+ full `ClientProfile` detail rendering in the Clients panel, clickable group child cards
19
+ (Profile → Identity/Branding navigate like the tree), and explanatory hover tooltips on
20
+ platform-vocabulary badges/edge labels. The ontology tree row + its tooltip now read
21
+ **"Endpoints"** instead of "Surfaces", consistent with change #1.
22
+
23
+ ## Applies to
24
+
25
+ - **Change #1 (ontology rename):** every tenant whose `core/config/organization-model/` declares any
26
+ ontology ID with a `:surface/` segment (i.e. an entry under a System's `ontology.surfaces`).
27
+ **Confirmed in this train: ZERO live tenants carry any `:surface/` ontology ID** (verified by a
28
+ repo-wide grep across all of `external/` — only `_template` carried one, migrated in this train).
29
+ The 3 live derived projects (ZentaraHQ, nirvana-marketing, contemplative-records) inherit
30
+ `endpoint/` cleanly. Run the verification below anyway before installing the new `@elevasis/core`.
31
+ - **Change #2 (UI upgrades):** every template-derived project — they render on the `@elevasis/ui`
32
+ bump with no further action.
33
+
34
+ ## Required actions
35
+
36
+ `/git-sync` / `/external sync` delivers the new `@elevasis/core` + `@elevasis/ui` dependency
37
+ baselines and this note. The dependency bumps install automatically; the ontology-ID rewrite (only if
38
+ your project authored any) is project-owned OM content and is **not** auto-applied.
39
+
40
+ 1. **Install the baselines together.** Bump `@elevasis/core` and `@elevasis/ui` in the same change
41
+ (the baseline write from sync covers `core/package.json`, `operations/package.json`, and
42
+ `ui/package.json`). Do not install the new `@elevasis/core` while your OM still has any `:surface/`
43
+ **ontology** ID.
44
+ 2. **Rename any ontology `surface/` IDs (only if present).** In `core/config/organization-model/`,
45
+ change every ontology ID `…:surface/<name>` to `…:endpoint/<name>`, and the containing
46
+ `ontology: { surfaces: { … } }` key to `ontology: { endpoints: { … } }`. Update every
47
+ cross-reference (`ownerSystemId`, `route`, links, etc.). Most tenants have nothing to change here.
48
+ 3. **Do NOT touch navigation surfaces.** This is the critical disambiguation. The rename is
49
+ ontology-only. Leave `system.surfaces`, `ui.surfaces`, sidebar `SidebarSurfaceNode`s, the
50
+ `surfaceType` route field, the graph node kind `surface`, and `SurfaceDescribeView` **unchanged** —
51
+ those legitimately own the word "surface" for shell routing and are orthogonal to the ontology kind.
52
+ 4. **Update tests.** If your `core/config/organization-model.test.ts` or contract tests assert
53
+ `compiled.ontology.surfaces` or a `:surface/` ontology ID, rename them to `.endpoints` /
54
+ `:endpoint/`. Leave any `ui.surfaces` / navigation-surface assertions alone.
55
+ 5. **Verify, then boot.** Run the verification block, then `pnpm -C core test` and
56
+ `pnpm -C ui check-types` before booting the app.
57
+
58
+ ## Verification
59
+
60
+ ```bash
61
+ # 1. Find any remaining ontology surface/ IDs (navigation surfaces are fine — see discriminator)
62
+ grep -rn ":surface/\|ontology.surfaces\|OntologySurfaceType" core/config/organization-model
63
+
64
+ # Discriminator while reading hits:
65
+ # ontology (RENAME) -> a ":surface/" ID segment, "ontology: { surfaces: ... }", OntologySurface*
66
+ # navigation (KEEP) -> bare system.surfaces / ui.surfaces, SidebarSurface*, surfaceType
67
+
68
+ # 2. Template-family coherence
69
+ pnpm -C core test
70
+ pnpm -C ui check-types
71
+ pnpm -C ui test:contracts
72
+
73
+ # 3. Boot must not throw OM validation (no unknown OntologyKind)
74
+ ```
75
+
76
+ `OntologyKindSchema` must accept `endpoint` and reject `surface`; no `:surface/` ontology ID may
77
+ remain. Navigation surfaces must still resolve and render in the sidebar.
78
+
79
+ ## Not handled by /git-sync
80
+
81
+ - `/git-sync` and `/external sync` deliver the `@elevasis/core` + `@elevasis/ui` dependency baselines
82
+ and this note, but they do **not** edit your `core/config/organization-model/` — tenant OM content
83
+ is project-owned (`sync-preservation`). The `surface/` → `endpoint/` ontology-ID rewrite in steps
84
+ 2–4 is manual per tenant (a no-op for every current live tenant, which carries none).
85
+ - The Knowledge Browser UI upgrades (change #2) require **no** action — they are entirely inside
86
+ `@elevasis/ui` and appear on the bump.
@@ -0,0 +1,50 @@
1
+ # Knowledge Browser item copy-references now resolve via `om:describe item:<domain>:<id>`
2
+
3
+ ## Why this note exists
4
+
5
+ The Knowledge Browser used to copy an unresolvable `graph:<kind>:<uuid>` shorthand for
6
+ domain items (clients, roles, policies, customers, offerings, goals). Pasting that to an
7
+ agent led to dead ends — the OM resolver had no mount for it and `om:describe` rejected the
8
+ id. This train (published `@elevasis/core`, `@elevasis/sdk`, `@elevasis/ui` + the bundled
9
+ `om` skill) standardizes domain-item copy references on `item:<domain>:<id>`, which resolves
10
+ to the rich profile plus its location and governing knowledge. The `om` skill's read-folder
11
+ table and CLI invocation guidance changed, so derived projects must pick up the new skill
12
+ text and package baselines.
13
+
14
+ ## Applies to
15
+
16
+ - All template-derived projects that ship the `om` skill (`.claude/skills/om/SKILL.md`).
17
+ - Any project whose Knowledge Browser surfaces domain items (clients, roles, policies,
18
+ customers, offerings, goals).
19
+ - Agents that consume copied Knowledge Browser references.
20
+
21
+ ## Required actions
22
+
23
+ 1. Pull template changes and bump the published package baselines to the versions shipped by
24
+ this train: `@elevasis/core`, `@elevasis/sdk`, `@elevasis/ui` (run `pnpm install` after the
25
+ baseline bump so the new SDK CLI and UI copy behavior are present).
26
+ 2. Adopt the refreshed `.claude/skills/om/SKILL.md` read-folder table. It now documents
27
+ `item:<domain>:<id>` (resolves via `om:describe item:<domain>:<id>`), the `/by-domain/<domain>`
28
+ and `/by-item/<domain>/<id>` `om:ls` mounts, `group:` / `domain:` / `folder:` as
29
+ browser-overview references, and a legacy `graph:client:<uuid>` bridge note pointing to
30
+ `om:describe item:clients:<uuid>`.
31
+ 3. Use the corrected SDK CLI invocation at a project root: `pnpm elevasis-sdk om:describe …`
32
+ (root script alias) or `pnpm -C operations exec elevasis-sdk om:describe …`. The old
33
+ `pnpm exec elevasis-sdk …` at the project root fails in a multi-package tenant — replace it.
34
+
35
+ ## Verification
36
+
37
+ - `pnpm elevasis-sdk om:describe item:clients:<id>` returns the client profile, its location
38
+ (domain + graph id + `contains` parentage), and any governing knowledge — no dead ends.
39
+ - A bare/legacy `om:describe client:<uuid>` still resolves (back-compat for already-copied
40
+ references).
41
+ - `pnpm sync:verify -- <project>` shows the `.claude/skills/om/SKILL.md` write applied and no
42
+ remaining `om`-skill drift.
43
+
44
+ ## Not handled by /git-sync
45
+
46
+ - The published-package baseline bumps (`@elevasis/core` / `@elevasis/sdk` / `@elevasis/ui`)
47
+ and the subsequent `pnpm install` are manual — `/git-sync` does not bump dependencies.
48
+ - Any project-local documentation that hand-copied the old `pnpm exec elevasis-sdk` root
49
+ invocation or the old `graph:<kind>:<uuid>` copy vocabulary must be corrected by the
50
+ maintainer; `/git-sync` stops before touching project-owned surfaces.
@@ -46,17 +46,18 @@ Edge kinds:
46
46
 
47
47
  - `contains`
48
48
  - `references`
49
- - `maps_to`
50
- - `uses`
51
- - `governs`
52
- - `governed-by`
53
- - `links`
54
- - `affects`
55
- - `emits`
49
+ - `maps_to`
50
+ - `uses`
51
+ - `governs`
52
+ - `links`
53
+ - `affects`
54
+ - `emits`
56
55
  - `originates_from`
57
56
  - `triggers`
58
57
  - `applies_to`
59
- - `effects`
58
+ - `effects`
59
+
60
+ `governed-by` is a Knowledge Graph route verb for traversing incoming `governs` edges; it is not an Organization Graph edge kind.
60
61
 
61
62
  System nodes come from the id-keyed `OrganizationModel.systems` map. Their graph IDs use `system:<id>`, such as `system:sales.crm`.
62
63
 
@@ -31,15 +31,19 @@ Layer 3: Sync Verification (pnpm sync:verify)
31
31
 
32
32
  ## Layer 1: Source Generation
33
33
 
34
- `pnpm scaffold:sync` is the meta-script that regenerates all derived documentation and validates the output. It chains three sub-scripts:
35
-
36
- | Script | Input | Output |
37
- | --------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------- |
38
- | `generate-scaffold-contracts.js` | `packages/core/src/organization-model/types.ts`, `packages/ui/src/features/registry/types.ts`, `packages/core/src/platform/registry/types.ts` | `packages/core/src/reference/_generated/contracts.md` |
39
- | `generate-scaffold-feature-registry.js` | `packages/ui/src/features/registry/manifests.ts`, `packages/ui/src/features/*/manifest.ts` | `packages/ui/src/scaffold/_generated/feature-registry.md` |
40
- | `generate-reference-artifacts.js` | SDK manifest, navigation sources | `packages/sdk/reference/_reference-manifest.json`, `_navigation.md` |
41
-
42
- After generation, `validate-reference-artifacts.js` checks that the outputs are consistent. Exit 1 if drifted.
34
+ `pnpm scaffold:sync` is the meta-script that regenerates all derived documentation and validates the output. It chains seven sub-scripts:
35
+
36
+ | Script | Input | Output |
37
+ | ---------------------- | --------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- |
38
+ | `scaffold:generate` | Scaffold contract and feature-registry sources | `packages/core/src/reference/_generated/**`, `packages/ui/src/scaffold/_generated/feature-registry.md` |
39
+ | `knowledge:generate` | Elevasis core knowledge nodes and UI knowledge body sources | Generated knowledge nodes and UI knowledge bodies |
40
+ | `gen:sdk-catalog` | SDK catalog source definitions | SDK catalog artifacts |
41
+ | `gen:sdk-adapters` | SDK adapter definitions | SDK adapter artifacts |
42
+ | `copy-docs` | SDK docs, package-owned reference docs, scaffold docs, and `_template/.claude` config | `packages/sdk/reference/**` copied docs and scaffold reference bundle |
43
+ | `sdk-ref:generate` | SDK manifest and navigation sources | `packages/sdk/reference/_reference-manifest.json`, `packages/sdk/reference/_navigation.md` |
44
+ | `sdk-ref:check` | Generated SDK reference artifacts | Freshness validation for `packages/sdk/reference/_reference-manifest.json` and `_navigation.md` |
45
+
46
+ The final `sdk-ref:check` step validates that the reference artifacts are consistent. Exit 1 if drifted.
43
47
 
44
48
  ### Trigger Points
45
49
 
@@ -99,13 +99,14 @@ Generated files should never be edited manually. If the output is wrong, fix the
99
99
 
100
100
  ## SDK Build Pipeline (Reference Copy)
101
101
 
102
- `packages/sdk/scripts/copy-reference-docs.mjs` runs during `pnpm --filter @elevasis/sdk build` and has three phases:
103
-
104
- 1. **Phase 1:** Copies SDK public docs from `apps/docs/content/docs/sdk/` with link rewriting and MDX escape stripping
105
- 2. **Phase 2:** Copies package-owned reference docs declared in reference manifests
106
- 3. **Phase 3:** Copies scaffold docs from co-located package sources using the `SCAFFOLD_COPIES` map
107
-
108
- The output lands in `packages/sdk/reference/` which is included in the npm package's `files` array. External projects access it via `node_modules/@elevasis/sdk/reference/`.
102
+ `packages/sdk/scripts/copy-reference-docs.mjs` runs during `pnpm --filter @elevasis/sdk build` and has four phases:
103
+
104
+ 1. **Phase 1:** Copies SDK public docs from `apps/docs/content/docs/sdk/` with link rewriting and MDX escape stripping
105
+ 2. **Phase 2:** Copies package-owned reference docs declared in reference manifests
106
+ 3. **Phase 3:** Copies scaffold docs from co-located package sources using the `SCAFFOLD_COPIES` map
107
+ 4. **Phase 4:** Copies `external/_template/.claude` into `packages/sdk/reference/claude-config` for tenant-facing agent configuration
108
+
109
+ The output lands in `packages/sdk/reference/` which is included in the npm package's `files` array. External projects access it via `node_modules/@elevasis/sdk/reference/`.
109
110
 
110
111
  ---
111
112
 
@@ -1,12 +1,28 @@
1
1
  ---
2
2
  title: CLI Management Commands
3
- description: elevasis-sdk management commands -- project, note, acquisition, client, agent, session, queue, schedule, om, and ui subcommand families
3
+ description: elevasis-sdk management commands -- project, note, acquisition, client, agent, session, queue, schedule, om, ui, and skill subcommand families
4
4
  ---
5
5
 
6
6
  This page covers the domain management commands for `elevasis-sdk`. For core SDK commands (check, deploy, exec, resources, executions, describe, creds, rename), see [CLI Reference](cli.mdx).
7
7
 
8
8
  ---
9
9
 
10
+ ## JSON-valued options
11
+
12
+ Any option that expects JSON can take inline JSON or a file reference:
13
+
14
+ ```bash
15
+ elevasis-sdk queue:select <id> --action-id approve --payload @json:tmp/queue-payload.json
16
+ elevasis-sdk schedule:create --name "Weekly report" --target-resource-type workflow --target-resource-id weekly-report --schedule-config @json:tmp/schedule-config.json
17
+ elevasis-sdk project:task:save <id> --current-state "Updated" --files-modified @json:tmp/files-modified.json
18
+ ```
19
+
20
+ `@json:<path>` is expanded before command parsing, so existing command handlers receive the same JSON string they would receive from an inline argument. Relative paths resolve against the Elevasis project root when the current directory is inside a project; otherwise they resolve against the current working directory. The referenced file must contain valid JSON.
21
+
22
+ Use `@json:<path>` for generated payloads, nested objects, arrays, or Windows shells. Inline JSON remains supported for small values.
23
+
24
+ ---
25
+
10
26
  ## elevasis-sdk project:\*
11
27
 
12
28
  `elevasis-sdk project:*` is the canonical project-management surface. Use it for project, milestone, task, and note operations whether the caller is a human, a scripted workflow, or a slash-command router like `/project`.
@@ -42,18 +58,23 @@ elevasis-sdk project:milestone:list --project <id>
42
58
  elevasis-sdk project:milestone:create --project <id> --name "Phase 1"
43
59
  elevasis-sdk project:milestone:update <id> --status completed
44
60
  elevasis-sdk project:milestone:update <id> --description "Updated scope description"
61
+ elevasis-sdk project:milestone:update <id> --checklist @json:tmp/milestone-checklist.json
45
62
  elevasis-sdk project:milestone:delete <id>
46
63
  ```
47
64
 
48
65
  `project:milestone:update` accepts `--description` to set or clear the milestone description. Passing an empty string clears the field, matching `project:task:update --description` semantics.
49
66
 
67
+ Checklist updates are full replacements. Use `--checklist <json>` for small inline arrays, or `--checklist @json:<path>` for generated JSON. `--checklist-file <path>` is also supported for checklist-specific file input.
68
+
50
69
  ### Tasks
51
70
 
52
71
  ```bash
53
72
  elevasis-sdk project:task:list --project <id>
54
73
  elevasis-sdk project:task:get <id>
55
74
  elevasis-sdk project:task:create --project <id> --title "Implement API"
75
+ elevasis-sdk project:task:create --project <id> --title "Implement API" --checklist @json:tmp/task-checklist.json
56
76
  elevasis-sdk project:task:update <id> --status in_progress
77
+ elevasis-sdk project:task:update <id> --checklist @json:tmp/task-checklist.json
57
78
  elevasis-sdk project:task:delete <id>
58
79
  ```
59
80
 
@@ -68,6 +89,8 @@ elevasis-sdk project:task:save <id> --current-state <text> [--files-modified <js
68
89
  - `project:task:save <id>` -- merges fields into `resume_context`; `--current-state` is required; all other flags are optional JSON arrays or plain text
69
90
  - these commands are the CLI counterpart to `/work resume` and `/work save` style flows
70
91
 
92
+ Task checklist flags are also full replacements. `project:task:create`, `project:task:update`, and `project:milestone:update` support `--checklist <json>`, `--checklist @json:<path>`, and `--checklist-file <path>`. Prefer `@json:<path>` for non-trivial JSON and Windows shells because it works across JSON-valued options, not only checklist commands.
93
+
71
94
  **`project:task:save` flags:**
72
95
 
73
96
  | Flag | Description |
@@ -373,7 +396,7 @@ JWT-gated routes at the original unprefixed paths remain for the Command Center.
373
396
 
374
397
  Full CRUD management for client records. The `client:*` family covers create, read, update, and delete operations at `/api/external/clients`.
375
398
 
376
- For complete field definitions, filter options, and relationship semantics, see the [Clients feature documentation](/technical/features/clients).
399
+ For complete field definitions, filter options, and relationship semantics, see the [Clients feature documentation](/technical/features/operations/clients).
377
400
 
378
401
  **Quick reference:**
379
402
 
@@ -650,6 +673,24 @@ Both commands install after rewriting `package.json`. The `external/_template` r
650
673
 
651
674
  ---
652
675
 
676
+ ## elevasis-sdk skill:\*
677
+
678
+ Developer-facing skill tooling keeps the template `.claude/skills/` surface aligned with the live CLI catalog.
679
+
680
+ ```bash
681
+ elevasis-sdk skill:scaffold <domain>
682
+ elevasis-sdk skill:check-coverage
683
+ ```
684
+
685
+ - `skill:scaffold <domain>` prints a `SKILL.md` stub built from `elevasis-sdk cli --format json` for that domain. Author the curated skill at `external/_template/.claude/skills/<domain>/SKILL.md`; do not edit generated SDK reference copies directly.
686
+ - `skill:check-coverage` compares live CLI domains against `.claude/registries/skill-coverage.json`. Domains must be owned by a skill or explicitly waived.
687
+
688
+ The same coverage gate runs inside `elevasis-sdk check` when the coverage registry exists in the project root.
689
+
690
+ **Implementation:** `packages/sdk/src/cli/commands/skill/`
691
+
692
+ ---
693
+
653
694
  ## Appendix: Domain Status
654
695
 
655
696
  Current status of all SDK CLI domains. Domains marked `deferred` have no CLI commands yet.
@@ -669,6 +710,7 @@ Current status of all SDK CLI domains. Domains marked `deferred` have no CLI com
669
710
  | session | `session:list`, `session:get`, `session:end` | `/api/external/sessions*` | implemented management scope |
670
711
  | queue | `queue:list`, `queue:get`, `queue:select`, `queue:expire`, `queue:status` | `/api/external/command-queue*` | implemented |
671
712
  | schedule | `schedule:list`, `schedule:get`, `schedule:create`, `schedule:update` | `/api/external/task-scheduler/schedules*` | implemented |
713
+ | skill | `skill:scaffold`, `skill:check-coverage` | local CLI catalog and `.claude/registries/skill-coverage.json` | implemented developer tooling |
672
714
  | content | none | not scoped here | deferred |
673
715
  | seo | none | not scoped here | deferred |
674
716
  | monitoring | none | not scoped here | deferred |
@@ -13,7 +13,7 @@ pnpm add @elevasis/sdk
13
13
 
14
14
  After installation, the `elevasis-sdk` binary is available in your project's `node_modules/.bin/`. Most commands require `ELEVASIS_PLATFORM_KEY` to be set in your environment or a `.env` file.
15
15
 
16
- For management commands (project:\*, note:\*, acquisition:\*, client:\*, agent:\*, session:\*, queue:\*, schedule:\*, om:\*, ui:\*), see [CLI Management](cli-management.mdx).
16
+ For management commands (project:\*, note:\*, acquisition:\*, client:\*, agent:\*, session:\*, queue:\*, schedule:\*, om:\*, ui:\*, skill:\*), see [CLI Management](cli-management.mdx).
17
17
 
18
18
  ---
19
19
 
@@ -30,6 +30,7 @@ elevasis-sdk check
30
30
  **Behavior:**
31
31
 
32
32
  - Imports your `src/index.ts` and runs it through `ResourceRegistry` validation
33
+ - Runs the skill coverage gate when `.claude/registries/skill-coverage.json` is present, ensuring every live CLI domain is covered by a template skill or explicitly waived
33
34
  - Catches the same errors that the platform catches at deploy time:
34
35
  - Duplicate `resourceId` within the organization
35
36
  - Invalid model configuration (temperature and token bounds)