@elevasis/sdk 1.7.0 → 1.8.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 (39) hide show
  1. package/dist/cli.cjs +523 -4560
  2. package/dist/index.d.ts +72 -16
  3. package/package.json +2 -2
  4. package/reference/claude-config/hooks/post-edit-validate.mjs +0 -11
  5. package/reference/claude-config/hooks/scaffold-registry-reminder.mjs +188 -0
  6. package/reference/claude-config/logs/pre-edit-vibe-gate.log +17 -0
  7. package/reference/claude-config/logs/scaffold-registry-reminder.log +17 -0
  8. package/reference/claude-config/rules/active-change-index.md +80 -0
  9. package/reference/claude-config/rules/agent-start-here.md +254 -0
  10. package/reference/claude-config/rules/deployment.md +0 -1
  11. package/reference/claude-config/rules/observability.md +2 -2
  12. package/reference/claude-config/rules/operations.md +64 -0
  13. package/reference/claude-config/rules/organization-model.md +44 -0
  14. package/reference/claude-config/rules/organization-os.md +2 -4
  15. package/reference/claude-config/rules/task-tracking.md +4 -4
  16. package/reference/claude-config/rules/ui.md +202 -0
  17. package/reference/claude-config/rules/vibe.md +0 -8
  18. package/reference/claude-config/settings.json +4 -11
  19. package/reference/claude-config/skills/configure/SKILL.md +0 -2
  20. package/reference/claude-config/skills/configure/operations/features.md +1 -3
  21. package/reference/claude-config/skills/deploy/SKILL.md +3 -13
  22. package/reference/claude-config/skills/dsp/SKILL.md +2 -2
  23. package/reference/claude-config/skills/elevasis/SKILL.md +0 -4
  24. package/reference/claude-config/skills/explore/SKILL.md +5 -5
  25. package/reference/claude-config/skills/project/SKILL.md +1 -1
  26. package/reference/claude-config/skills/save/SKILL.md +5 -19
  27. package/reference/claude-config/skills/setup/SKILL.md +32 -16
  28. package/reference/claude-config/skills/status/SKILL.md +2 -3
  29. package/reference/claude-config/skills/submit-request/SKILL.md +1 -1
  30. package/reference/deployment/command-center.mdx +0 -17
  31. package/reference/framework/project-structure.mdx +1 -5
  32. package/reference/packages/ui/src/hooks/README.md +1 -2
  33. package/reference/scaffold/operations/propagation-pipeline.md +10 -11
  34. package/reference/scaffold/operations/scaffold-maintenance.md +1 -4
  35. package/reference/scaffold/recipes/add-a-resource.md +3 -12
  36. package/reference/scaffold/reference/contracts.md +1 -1
  37. package/reference/claude-config/hooks/__tests__/pre-edit-vibe-gate.test.mjs +0 -169
  38. package/reference/claude-config/hooks/pre-edit-vibe-gate.mjs +0 -128
  39. package/reference/claude-config/rules/docs.md +0 -26
@@ -4,17 +4,6 @@
4
4
  "command": "node .claude/scripts/statusline-command.js"
5
5
  },
6
6
  "hooks": {
7
- "PreToolUse": [
8
- {
9
- "matcher": "Write|Edit|MultiEdit",
10
- "hooks": [
11
- {
12
- "type": "command",
13
- "command": "node .claude/hooks/pre-edit-vibe-gate.mjs"
14
- }
15
- ]
16
- }
17
- ],
18
7
  "PostToolUse": [
19
8
  {
20
9
  "matcher": "Write|Edit|MultiEdit",
@@ -22,6 +11,10 @@
22
11
  {
23
12
  "type": "command",
24
13
  "command": "node .claude/hooks/post-edit-validate.mjs"
14
+ },
15
+ {
16
+ "type": "command",
17
+ "command": "node .claude/hooks/scaffold-registry-reminder.mjs"
25
18
  }
26
19
  ]
27
20
  }
@@ -22,8 +22,6 @@ Recurring, safe-to-re-run org model editor for external projects. Reads the orga
22
22
  - `/configure features` -- Enable, disable, or add features; Level A (defaults) or Level B (new extension TS files)
23
23
  - `/configure labels` -- Edit inline display labels on enum entries (statuses, stages, categories)
24
24
 
25
- **Distinction from `/org-os manage`:** `/configure` edits structural organizational reality (who the org is, who it serves, what it offers). `/org-os manage` controls feature gating (what platform capabilities are enabled). Use `/configure` for org-model content; use `/org-os manage` for feature flags.
26
-
27
25
  **Distinction from `/setup`:** `/setup` is for first-time bootstrap (placeholder replacement, dependency install, build verification). `/configure` is for recurring org-model updates. After first run, `/setup` delegates here.
28
26
 
29
27
  ---
@@ -7,9 +7,7 @@ items and routes visible; disabling hides them without removing the feature from
7
7
  a new feature may require only a config edit (Level A) or a new extension TypeScript file
8
8
  (Level B), depending on whether the feature already exists in the platform defaults.
9
9
 
10
- This operation handles both toggling existing features and introducing custom features. For
11
- surface-level toggles (hiding one sub-section within an already-enabled feature), use
12
- `/org-os manage` instead.
10
+ This operation handles both toggling existing features and introducing custom features.
13
11
 
14
12
  ## Background: Level A vs Level B
15
13
 
@@ -38,17 +38,6 @@ Read the current version from `package.json`, then bump it:
38
38
 
39
39
  Use the Edit tool to update the `"version"` field in `package.json` directly. Do not use `npm version` or any CLI command.
40
40
 
41
- ### Step 1c: Regenerate Documentation
42
-
43
- Run both doc generators in sequence (resources first so the nav index picks up `resources.md`):
44
-
45
- ```bash
46
- pnpm exec elevasis-sdk generate-resources
47
- pnpm exec elevasis-sdk generate-docs
48
- ```
49
-
50
- This ensures autogenerated files (`docs/resources.md`, `docs/index.md`) reflect the current resource state before they are committed. These must run after the version bump so any version references in generated output are correct.
51
-
52
41
  ### Step 2: Run Tests
53
42
 
54
43
  ```bash
@@ -133,8 +122,9 @@ After a successful push, mark any linked project task as `submitted`. This is a
133
122
  - The most recent in-progress task on the most-recently-touched project, via:
134
123
 
135
124
  ```bash
136
- pnpm -C operations exec elevasis-sdk project:list --status active,blocked --format brief
137
- pnpm -C operations exec elevasis-sdk project:task:list --project <project-id> --status in_progress
125
+ pnpm elevasis-sdk project:list --status active --pretty
126
+ pnpm elevasis-sdk project:list --status blocked --pretty
127
+ pnpm elevasis-sdk project:task:list --project <project-id> --status in_progress --pretty
138
128
  ```
139
129
 
140
130
  - If the session produced an ambiguous or empty result, PROMPT the user once: "Mark a project task as submitted? (task UUID, or 'skip')". Default is skip.
@@ -13,13 +13,13 @@ Parallel agent dispatch for implementation tasks. Orchestrate, then delegate to
13
13
 
14
14
  1. **Always dispatch, never self-execute** -- the purpose is to offload work to subagents
15
15
  2. **Parallel within waves** -- all agents in a wave dispatched in a SINGLE message
16
- 3. **Read docs first** -- always read `docs/index.md` before planning to understand project structure
16
+ 3. **Orient first** -- read `.claude/rules/agent-start-here.md` before planning to understand project structure and task routing
17
17
 
18
18
  ## Process
19
19
 
20
20
  ### Step 1: Understand Context
21
21
 
22
- 1. Read `docs/index.md` for project structure and navigation
22
+ 1. Read `.claude/rules/agent-start-here.md` for project structure, task-class routing, and boundary resolution
23
23
  2. Read relevant architecture/feature docs based on the task domain
24
24
  3. If the task touches code, explore the relevant `src/` directories
25
25
 
@@ -49,11 +49,7 @@ Reports: resource count, validation errors, schema serialization warnings. Exit
49
49
 
50
50
  Bundle and deploy resources to the Elevasis platform.
51
51
 
52
- Before calling the SDK deploy, run both doc generators in sequence so the uploaded docs reflect the current resource state (resources first, then nav so `docs/index.md` picks up `resources.md`):
53
-
54
52
  ```bash
55
- pnpm exec elevasis-sdk generate-resources
56
- pnpm exec elevasis-sdk generate-docs
57
53
  pnpm -C operations exec elevasis-sdk deploy [--prod]
58
54
  ```
59
55
 
@@ -26,11 +26,11 @@ Before orienting, scan the user's query for Organization OS terminology. If any
26
26
 
27
27
  **If OS-relevant:**
28
28
 
29
- 1. Read `docs/reference/active-change-index.md` immediately. If the target area is flagged as under active refactor, surface the watch-area warning to the user before proceeding — include the "Load:" doc paths listed in that entry so investigation does not rely on stale scaffold prose.
29
+ 1. Read `.claude/rules/active-change-index.md` immediately. If the target area is flagged as under active refactor, surface the watch-area warning to the user before proceeding — include the "Load:" doc paths listed in that entry so investigation does not rely on stale scaffold prose.
30
30
  2. Build the OS context bundle to pass into Step 3:
31
- - Always: `node_modules/@elevasis/sdk/reference/scaffold/reference/glossary.md`, `docs/reference/active-change-index.md`, `docs/agent-start-here.md`
31
+ - Always: `node_modules/@elevasis/sdk/reference/scaffold/reference/glossary.md`, `.claude/rules/active-change-index.md`, `.claude/rules/agent-start-here.md`
32
32
  - Features / Shell / Gating queries: add `node_modules/@elevasis/sdk/reference/scaffold/ui/feature-flags-and-gating.md` + `node_modules/@elevasis/sdk/reference/scaffold/reference/contracts.md`
33
- - Workflow / Operations queries: add `docs/operations/index.md` + `docs/resources.md`
33
+ - Workflow / Operations queries: add `.claude/rules/operations.md` + glob `operations/resources/**`
34
34
  - Organization-model queries: add `node_modules/@elevasis/sdk/reference/scaffold/reference/contracts.md` + `foundations/config/README.md`
35
35
 
36
36
  **OS layer → query intent map** (guides which reference docs the investigator loads first):
@@ -40,12 +40,12 @@ Before orienting, scan the user's query for Organization OS terminology. If any
40
40
  | "Why doesn't my feature show up?" | Features + UI Shell Runtime | `glossary.md` (accessFeatureKey, FEATURE_KEY_ALIASES), `feature-flags-and-gating.md` |
41
41
  | "How do I add a nav item?" | Features + Toolkit | `feature-flags-and-gating.md`, `contracts.md` |
42
42
  | "How does admin gating work?" | Features + UI Shell Runtime | `glossary.md` (AdminGuard, requiresAdmin, ProtectedRoute), `feature-flags-and-gating.md` |
43
- | "What runs when this workflow triggers?" | Platform Public API + Operations | `operations/index.md`, `resources.md` |
43
+ | "What runs when this workflow triggers?" | Platform Public API + Operations | `.claude/rules/operations.md`, `resources.md` |
44
44
  | "Why does the foundations adapter fail?" | Foundations | `glossary.md` (domain vs surface, settings asymmetry), `foundations/config/README.md` |
45
45
 
46
46
  ### Step 1: Orient
47
47
 
48
- 1. Read `docs/index.md` for the full project structure
48
+ 1. Read `.claude/rules/agent-start-here.md` for project structure, task-class routing, and boundary resolution
49
49
  2. Determine which domain the user's question falls into
50
50
 
51
51
  ### Step 2: Load Domain Context
@@ -317,7 +317,7 @@ For progress detail (milestones/tasks), follow up with `project:milestone:list`
317
317
  Wraps `project:work` for fuzzy-matched resume. Used by intent-detection "resume" classification.
318
318
 
319
319
  ```bash
320
- pnpm elevasis-sdk project:work <query> --pretty
320
+ pnpm elevasis-sdk project:work <query>
321
321
  ```
322
322
 
323
323
  Prints the matched project/task brief with current `resume_context`. If multiple matches, show top 3 and ask which.
@@ -88,10 +88,6 @@ No other fields. Do NOT add `resume_context`, `files_modified`, or `next_steps`
88
88
 
89
89
  **Doc structure rules:**
90
90
 
91
- - `docs/ui/` -- frontend features, auth, components, hooks, charts, pages
92
- - `docs/operations/` -- platform workflows, agents, deployment, resource registry
93
- - `docs/knowledge/` -- project knowledge, research, reference material, domain context
94
- - New sections auto-detected -- any subdirectory of `docs/` becomes a section
95
91
  - All docs are `.md` (not .mdx)
96
92
  - Keep docs focused -- one topic per file
97
93
  - Use markdown tables for structured data
@@ -115,11 +111,11 @@ Dispatch a `general-purpose` subagent with the plan, conversation context, and t
115
111
  If Step 1 resolved a task ID, save the current state to `prj_tasks.resume_context` via the SDK CLI. This is the canonical persistence step and must run every `/save` invocation that has a task in scope:
116
112
 
117
113
  ```bash
118
- pnpm exec elevasis-sdk project:task:save <task-uuid> \
114
+ pnpm elevasis-sdk project:task:save <task-uuid> \
119
115
  --current-state "<concise prose summary of where we are>" \
120
116
  --next-steps "<concise prose of the next concrete action>" \
121
117
  --files-modified '["path/one.ts","path/two.tsx"]' \
122
- --key-docs '["docs/knowledge/foo.md"]' \
118
+ --key-docs '["operations/resources/foo/index.ts"]' \
123
119
  --tools '["project:task:save","project:note:create"]'
124
120
  ```
125
121
 
@@ -138,7 +134,7 @@ The endpoint is `PATCH /api/external/tasks/<id>/resume-context` and merges (does
138
134
  For each signal event identified in Step 2, create a typed `prj_note`. One CLI call per note:
139
135
 
140
136
  ```bash
141
- pnpm exec elevasis-sdk project:note:create \
137
+ pnpm elevasis-sdk project:note:create \
142
138
  --project <project-uuid> \
143
139
  --task <task-uuid> # optional, omit if not scoped to a task \
144
140
  --type <note-type> \
@@ -169,17 +165,7 @@ Rules:
169
165
  - **Idempotent** -- if the task is already `blocked`, the update is a no-op. Fire it anyway; do not pre-check.
170
166
  - **Order** -- the `blocker` note (Step 5) creates first; this transition follows. Keeps the note attached to the task even if the status update later fails.
171
167
 
172
- ### Step 6: Regenerate Docs Index
173
-
174
- After the Step 3 subagent completes all doc file changes, regenerate `docs/index.md`:
175
-
176
- ```bash
177
- pnpm exec elevasis-sdk generate-docs
178
- ```
179
-
180
- This deterministically scans `docs/`, reads frontmatter, and rebuilds the navigation hub. Never edit `docs/index.md` manually.
181
-
182
- ### Step 7: Report
168
+ ### Step 6: Report
183
169
 
184
170
  Summarize:
185
171
 
@@ -194,4 +180,4 @@ Summarize:
194
180
 
195
181
  - **No task in scope + user declines to provide one:** proceed with Steps 2, 3, 6, 7; skip Step 4; still allow Step 5 if a `--project` UUID is available.
196
182
  - **`project:task:save` returns non-2xx:** surface the error in the report, do not retry silently; Step 5 and Step 6 still run.
197
- - **`generate-docs` fails:** surface the error; doc edits from Step 3 are already on disk, so they are not lost -- the operator can re-run the index regeneration manually.
183
+ - **Knowledge doc edits fail to write:** surface the error; any edits already applied are on disk and not lost.
@@ -143,29 +143,44 @@ After all replacements, re-scan the four key files from State Detection to verif
143
143
 
144
144
  If the user skipped any knowledge questions, fill in what was provided and omit what wasn't -- don't leave placeholder text behind.
145
145
 
146
- ### Step 5: Create Client Knowledge Doc
146
+ ### Step 5: Write Client Brief to Org Model
147
147
 
148
- **Idempotency check:** Check whether `docs/knowledge/client.md` already exists. If it exists and is non-empty, skip this step entirely -- do not overwrite.
148
+ **Idempotency check:** Read `foundations/config/organization-model.ts` and inspect `identity.clientBrief`. If the field is already a non-empty string, skip this step entirely do not overwrite.
149
149
 
150
- If it does not exist, create `docs/knowledge/client.md`:
150
+ If the field is empty or absent, compose the client brief from the information gathered in Step 2:
151
151
 
152
152
  ```markdown
153
- ---
154
- title: Client Context
155
- description: Company background, industry, stakeholders, and business goals
156
- ---
157
-
158
- # Client Context
159
-
160
153
  **Company:** {company name}
161
154
  **Industry:** {industry}
162
155
  **Description:** {what they do}
163
156
 
164
157
  ## Additional Context
165
158
 
166
- {any additional context shared -- key stakeholders, business goals, constraints, etc. If nothing was shared, write "No additional context provided yet. Update this as the project evolves."}
159
+ {any additional context shared key stakeholders, business goals, constraints, etc. If nothing was shared, write "No additional context provided yet. Update this as the project evolves."}
160
+ ```
161
+
162
+ Propose the composed content to the user before writing (read → propose → confirm → write — the same ceremony `/configure` uses):
163
+
164
+ ```
165
+ Here's the client brief I'll write into identity.clientBrief:
166
+
167
+ ---
168
+ {composed content}
169
+ ---
170
+
171
+ Write this? (yes/no)
167
172
  ```
168
173
 
174
+ On confirmation, use the Edit tool to replace the `clientBrief: ''` value in `foundations/config/organization-model.ts` with a template literal containing the composed markdown. Use a regular string (backtick or single-quoted multi-line) — ensure the closing quote and trailing comma are correct TypeScript.
175
+
176
+ After the edit, run:
177
+
178
+ ```bash
179
+ pnpm -C foundations check-types
180
+ ```
181
+
182
+ If type-check fails, report the error and do not proceed to Step 6 until it is resolved.
183
+
169
184
  ### Step 6: Install and Verify
170
185
 
171
186
  #### Step 6a: Install Dependencies
@@ -242,8 +257,8 @@ Running `/setup` more than once is safe:
242
257
 
243
258
  - **Placeholder replacement** only runs when placeholders are detected (State A). It is skipped entirely in States B and C.
244
259
  - **CLAUDE.md knowledge sections** (`{CLIENT_CONTEXT}`, `{USER_PREFERENCES}`) are checked before writing. If already replaced, the write is skipped.
245
- - **`docs/knowledge/client.md`** is only created if it does not exist. An existing file is never overwritten by `/setup`.
246
- - **Org-model fields** (`foundations/config/organization-model.ts`) are never written by `/setup`. All org-model edits go through `/configure`, which has its own diff-preview and confirm ceremony.
260
+ - **`identity.clientBrief`** is only written when the field is empty. A non-empty field is never overwritten by `/setup`. The write uses a read → propose → confirm ceremony before touching the file.
261
+ - **All other org-model fields** (`foundations/config/organization-model.ts`) are never written by `/setup`. All other org-model edits go through `/configure`, which has its own diff-preview and confirm ceremony.
247
262
 
248
263
  ---
249
264
 
@@ -253,7 +268,8 @@ Running `/setup` more than once is safe:
253
268
 
254
269
  1. Replaces scaffold placeholders (project name, slug, description)
255
270
  2. Fills lightweight CLAUDE.md knowledge sections (user and client basics, idempotent)
256
- 3. Installs dependencies and verifies the build
257
- 4. Hands off to `/configure` for org-model configuration
271
+ 3. Writes the client brief into `identity.clientBrief` in the org model (confirm-before-write, idempotent)
272
+ 4. Installs dependencies and verifies the build
273
+ 5. Hands off to `/configure` for full org-model configuration
258
274
 
259
- `/configure` owns all structural org-model editing (identity, customers, offerings, roles, goals, techStack, features, labels). It is idempotent, confirm-before-overwrite, and includes a runtime validation gate. Re-run `/configure` any time organizational reality changes — no need to re-run `/setup`.
275
+ `/configure` owns all other structural org-model editing (identity fields beyond clientBrief, customers, offerings, roles, goals, techStack, features, labels). It is idempotent, confirm-before-overwrite, and includes a runtime validation gate. Re-run `/configure` any time organizational reality changes — no need to re-run `/setup`.
@@ -20,10 +20,9 @@ Run in parallel:
20
20
  3. `pnpm test` - test results
21
21
  4. `pnpm lint` - type check
22
22
 
23
- ### Step 2: Check Docs + Active Work
23
+ ### Step 2: Check Active Work
24
24
 
25
- 1. Read `docs/index.md` - verify doc structure is current
26
- 2. Query active project work via `pnpm -C operations exec elevasis-sdk project:list --status active,blocked --format brief` - active project/task count lives in the DB, not in `docs/in-progress/`
25
+ 1. Query active project work via `pnpm elevasis-sdk project:list --status active --pretty` and `pnpm elevasis-sdk project:list --status blocked --pretty` - active project/task count lives in the DB
27
26
 
28
27
  ### Step 3: Report
29
28
 
@@ -154,7 +154,7 @@ Once confirmed (or `--auto`), write the assembled JSON body to a temp file then
154
154
  # Write the report body to a temp file
155
155
  # (Use the Write tool to create request-report.json at the project root)
156
156
 
157
- pnpm exec elevasis-sdk request:submit --input-file ./request-report.json --pretty
157
+ pnpm elevasis-sdk request:submit --input-file ./request-report.json --pretty
158
158
  ```
159
159
 
160
160
  Delete the temp file after submission succeeds or fails.
@@ -14,7 +14,6 @@ The Command Center is the browser UI for interacting with deployed resources. Af
14
14
  | -------------------------------------------------- | -------------- | ----------------------- |
15
15
  | Browse deployed resources, view the resource graph | Command View | `/command-view` |
16
16
  | Approve or reject pending HITL requests | Command Queue | `/queue` |
17
- | Browse deployed documentation | Knowledge Base | `/knowledge-base` |
18
17
  | Search execution history across all resources | Execution Logs | `/logs` |
19
18
  | Create API key and OAuth credentials | Credentials | `/settings/credentials` |
20
19
  | View deployment history and active version | Deployments | `/settings/deployments` |
@@ -147,22 +146,6 @@ const task = await approval.create({
147
146
 
148
147
  ---
149
148
 
150
- ## Knowledge Base
151
-
152
- The Knowledge Base renders the `docs/` directory of your deployed workspace as browsable documentation.
153
-
154
- **What you can do here:**
155
-
156
- - Browse pages you created in `docs/*.mdx`
157
- - Search across all documentation
158
- - Share links to specific pages with team members
159
-
160
- **How it connects to your code:** Every `.mdx` file in your workspace's `docs/` directory is bundled at deploy time and rendered here.
161
-
162
- > **SDK takeaway:** Write `docs/*.mdx` pages for your team -- business process docs, schema references, usage guides. They appear here automatically after each deploy.
163
-
164
- ---
165
-
166
149
  ## Execution Logs
167
150
 
168
151
  The Execution Logs page shows the history of all executions across every deployed resource.
@@ -45,7 +45,7 @@ Cross-runtime types, schemas, constants, and organization-model configuration sh
45
45
 
46
46
  ### `operations/elevasis.config.ts`
47
47
 
48
- Project-level configuration. The scaffolded file includes commented-out options (`defaultStatus`, `dev.port`) and sets `docsDir` to point at the workspace-level `docs/` directory:
48
+ Project-level configuration. The scaffolded file includes commented-out options (`defaultStatus`, `dev.port`):
49
49
 
50
50
  ```ts
51
51
  import type { ElevasConfig } from '@elevasis/sdk'
@@ -53,13 +53,9 @@ import type { ElevasConfig } from '@elevasis/sdk'
53
53
  export default {
54
54
  // defaultStatus: 'dev', // Default status for new resources ('dev' | 'prod')
55
55
  // dev: { port: 5170 }, // Local API port (internal development only)
56
-
57
- docsDir: '../docs' // Scan the template's top-level docs/ directory
58
56
  } satisfies ElevasConfig
59
57
  ```
60
58
 
61
- The `docsDir` option (relative to CWD) overrides where the CLI scans for documentation files. Use `false` to disable documentation scanning entirely.
62
-
63
59
  ---
64
60
 
65
61
  ## Documentation
@@ -8,7 +8,7 @@ The hooks barrel is the published headless hook surface for the UI package.
8
8
  - Scheduling hooks
9
9
  - Monitoring, observability, and notification hooks
10
10
  - Session and SSE hooks
11
- - Operations hooks, including command-view and knowledge-base helpers
11
+ - Operations hooks, including command-view helpers
12
12
  - Feature access, table state, and service helpers
13
13
  - Acquisition and delivery hooks
14
14
 
@@ -21,4 +21,3 @@ The hooks barrel is the published headless hook surface for the UI package.
21
21
  ## Notes
22
22
 
23
23
  - This barrel is intentionally headless. It should not pull in the visual component layer.
24
-
@@ -30,11 +30,11 @@ Layer 3: Sync Verification (pnpm sync:verify)
30
30
 
31
31
  `pnpm scaffold:sync` is the meta-script that regenerates all derived documentation and validates the output. It chains three sub-scripts:
32
32
 
33
- | Script | Input | Output |
34
- | --------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- |
35
- | `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` |
36
- | `generate-scaffold-feature-registry.js` | `packages/ui/src/features/*/manifest.ts`, `packages/core/src/organization-model/domains/features.ts` | `packages/ui/src/scaffold/_generated/feature-registry.md` |
37
- | `generate-reference-artifacts.js` | SDK manifest, navigation sources | `packages/sdk/reference/_reference-manifest.json`, `_navigation.md`, `external/_template/docs/platform-navigation-map.md` |
33
+ | Script | Input | Output |
34
+ | --------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------- |
35
+ | `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` |
36
+ | `generate-scaffold-feature-registry.js` | `packages/ui/src/features/*/manifest.ts`, `packages/core/src/organization-model/domains/features.ts` | `packages/ui/src/scaffold/_generated/feature-registry.md` |
37
+ | `generate-reference-artifacts.js` | SDK manifest, navigation sources | `packages/sdk/reference/_reference-manifest.json`, `_navigation.md` |
38
38
 
39
39
  After generation, `validate-reference-artifacts.js` checks that the outputs are consistent. Exit 1 if drifted.
40
40
 
@@ -55,11 +55,11 @@ Drift is healed at the moment it would otherwise leak downstream. This is cheape
55
55
 
56
56
  `/external sync` propagates the `external/_template` to downstream projects. It uses a three-tier model:
57
57
 
58
- | Tier | Policy | Examples |
59
- | ------------------------------ | ----------------------------------------- | ------------------------------------------------------------------- |
58
+ | Tier | Policy | Examples |
59
+ | ------------------------------ | ----------------------------------------- | --------------------------------------------------------------------- |
60
60
  | **Tier 1 (Infrastructure)** | Always replaced from template | Configs, shared runtime surfaces, `lib/`, `test-utils/`, entry points |
61
- | **Tier 2 (Standard Features)** | Synced unless project has customized them | Standard UI features, common patterns |
62
- | **Tier 3 (Project-Specific)** | Never touched | `nav-items.ts`, `operations/src/`, `docs/`, `CLAUDE.md` |
61
+ | **Tier 2 (Standard Features)** | Synced unless project has customized them | Standard UI features, common patterns |
62
+ | **Tier 3 (Project-Specific)** | Never touched | `nav-items.ts`, `operations/src/`, `docs/`, `CLAUDE.md` |
63
63
 
64
64
  The sync skill doc (`.claude/skills/external/SKILL.md`) defines the full tier model and phase sequence.
65
65
 
@@ -78,8 +78,7 @@ The sync skill doc (`.claude/skills/external/SKILL.md`) defines the full tier mo
78
78
  | `org-os` | Organization model exists, exports canonical symbols, imports from `@elevasis/core/organization-model`, calls `defineOrganizationModel` + `resolveOrganizationModel`, app-config references org model, `__root.tsx` uses `ElevasisFeaturesProvider` + `canonicalOrganizationModel`, `main.tsx` uses `ElevasisUIProvider`, all 3 CSS subpath imports present |
79
79
  | `placeholders` | No unresolved `__PROJECT_SLUG__`, `__PROJECT_NAME__`, `__PROJECT_DESCRIPTION__` in key config files |
80
80
  | `scripts` | `ui` and `operations` `package.json` have required npm scripts |
81
- | `generated-docs` | `docs/index.md` and `docs/resources.md` are current with `pnpm exec elevasis-sdk generate-docs` and `pnpm exec elevasis-sdk generate-resources`; `pnpm exec elevasis-sdk validate-docs` passes |
82
- | `lib` | `ui/src/lib/`, `lib/`, `test-utils/` exist with minimum file counts |
81
+ | `lib` | `ui/src/lib/`, `lib/`, `test-utils/` exist with minimum file counts |
83
82
  | `tier3` | `nav-items.ts` has project-specific customization (not overwritten by template) |
84
83
  | `conflicts` | No merge conflict markers in source files |
85
84
  | `git` | Working tree is clean |
@@ -71,7 +71,6 @@ Generated by `scripts/monorepo/generate-reference-artifacts.js`:
71
71
 
72
72
  - `packages/sdk/reference/_reference-manifest.json` -- machine-readable catalog of all reference entries
73
73
  - `packages/sdk/reference/_navigation.md` -- navigation table
74
- - `external/_template/docs/platform-navigation-map.md` -- cross-package reference map for external projects
75
74
 
76
75
  ### Running Generators
77
76
 
@@ -120,6 +119,4 @@ The output lands in `packages/sdk/reference/` which is included in the npm packa
120
119
 
121
120
  ## Freshness Validation
122
121
 
123
- External projects validate generated docs with `pnpm check:autogenerated-docs`, which now calls `pnpm exec elevasis-sdk validate-docs`. The legacy `scripts/validate-autogenerated-docs.mjs` file may still exist as a temporary compatibility shim in the template, but the SDK CLI is the canonical path.
124
-
125
- At the monorepo level, `pnpm scaffold:sync` followed by `pnpm sync:verify` confirms that all artifacts are current and all downstream projects are consistent.
122
+ At the monorepo level, `pnpm scaffold:sync` followed by `pnpm sync:verify` confirms that all artifacts are current and all downstream projects are consistent. The SDK no longer ships doc validation because external projects no longer carry a `docs/` tree.
@@ -109,7 +109,7 @@ const org: DeploymentSpec = {
109
109
  }
110
110
  ```
111
111
 
112
- Full relationship and checkpoint types are defined in `@elevasis/sdk` (`DeploymentSpec`). The generated `docs/resources.md` topology map will reflect these in the Topology Relationships, Triggers, and Human Checkpoints sections after regeneration.
112
+ Full relationship and checkpoint types are defined in `@elevasis/sdk` (`DeploymentSpec`). Resources are discovered live via `pnpm elevasis-sdk project:list` or by globbing `operations/resources/**` directly.
113
113
 
114
114
  ---
115
115
 
@@ -133,18 +133,9 @@ See `OrganizationModelResourceMapping` in [contracts.md](../reference/contracts.
133
133
 
134
134
  ---
135
135
 
136
- ## 5. Regenerate the topology map
136
+ ## 5. Verify resource inventory
137
137
 
138
- ```bash
139
- pnpm exec elevasis-sdk generate-resources
140
- ```
141
-
142
- Open `docs/resources.md` and confirm:
143
-
144
- - Section 1 (Workflows table) lists the new resource with correct `resourceId`, `version`, and `status`.
145
- - Section 2 (Topology Relationships) shows any declared `relationships` edges.
146
- - Sections 3-6 (Triggers, Integrations, Human Checkpoints, External Resources) show any relevant declarations.
147
- - Section 7 (Schema Signatures) includes the new resource's input/output field list.
138
+ Resources are discovered live via `pnpm elevasis-sdk project:list` or by globbing `operations/resources/**` directly. Confirm the new resource appears with the correct `resourceId`, `version`, and `status`.
148
139
 
149
140
  ---
150
141
 
@@ -1,4 +1,4 @@
1
- <!-- Auto-generated on 2026-04-20T23:27:16.482Z by scripts/monorepo/generate-scaffold-contracts.js -->
1
+ <!-- Auto-generated on 2026-04-21T05:52:18.229Z by scripts/monorepo/generate-scaffold-contracts.js -->
2
2
  ---
3
3
  title: Reference Contracts
4
4
  description: Auto-generated TypeScript contracts for SDK consumers. Do not edit manually.