@elevasis/sdk 1.44.2 → 1.45.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.cjs +1001 -652
- package/dist/index.d.ts +1045 -509
- package/dist/index.js +748 -690
- package/dist/node/index.d.ts +105 -97
- package/dist/test-utils/index.d.ts +42 -28
- package/dist/test-utils/index.js +549 -732
- package/dist/worker/index.d.ts +12112 -0
- package/dist/worker/index.js +211 -186
- package/package.json +6 -9
- package/reference/_navigation.md +151 -21
- package/reference/_reference-manifest.json +186 -4
- package/reference/claude-config.md +8 -0
- package/reference/core/index.mdx +3 -3
- package/reference/examples/organization-model.ts +117 -111
- package/reference/index.mdx +4 -4
- package/reference/rules/active-change-index.md +40 -54
- package/reference/rules/agent-runtime.md +81 -0
- package/reference/rules/agent-start-here.md +71 -163
- package/reference/rules/deployment.md +33 -10
- package/reference/rules/error-handling.md +26 -0
- package/reference/rules/execution.md +13 -0
- package/reference/rules/frontend.md +10 -3
- package/reference/rules/observability.md +9 -1
- package/reference/rules/operations.md +26 -17
- package/reference/rules/organization-model.md +74 -88
- package/reference/rules/organization-os.md +71 -88
- package/reference/rules/package-taxonomy.md +11 -2
- package/reference/rules/platform.md +13 -7
- package/reference/rules/shared-types.md +15 -0
- package/reference/rules/task-tracking.md +30 -5
- package/reference/rules/ui.md +145 -3
- package/reference/rules/vibe-intents.md +271 -0
- package/reference/rules/vibe.md +17 -243
- package/reference/scaffold/core/organization-graph.mdx +111 -97
- package/reference/scaffold/core/organization-model.mdx +234 -214
- package/reference/scaffold/operations/propagation-pipeline.md +1 -1
- package/reference/scaffold/operations/scaffold-maintenance.md +19 -18
- package/reference/scaffold/operations/workflow-recipes.md +71 -19
- package/reference/scaffold/recipes/add-a-feature.md +156 -146
- package/reference/scaffold/recipes/add-a-resource.md +123 -117
- package/reference/scaffold/recipes/customize-crm-actions.md +25 -10
- package/reference/scaffold/recipes/customize-knowledge-browser.md +52 -117
- package/reference/scaffold/recipes/customize-organization-model.md +161 -149
- package/reference/scaffold/recipes/extend-a-base-entity.md +156 -140
- package/reference/scaffold/recipes/extend-crm.md +16 -11
- package/reference/scaffold/recipes/extend-lead-gen.md +25 -7
- package/reference/scaffold/recipes/gate-by-feature-or-admin.md +160 -118
- package/reference/scaffold/recipes/index.md +2 -2
- package/reference/scaffold/recipes/query-the-knowledge-graph.md +23 -23
- package/reference/scaffold/reference/contracts.md +12 -1
- package/reference/scaffold/reference/glossary.md +3 -3
- package/reference/scaffold/reference/system-interface-capabilities.md +5 -4
- package/reference/scaffold/ui/composition-extensibility.mdx +271 -232
- package/reference/scaffold/ui/feature-flags-and-gating.md +14 -6
- package/reference/scaffold/ui/feature-shell.mdx +279 -62
- package/reference/scaffold/ui/recipes.md +229 -197
- package/reference/sdk/cli-management.mdx +77 -29
- package/reference/sdk/concepts.mdx +2 -0
- package/reference/sdk/define-builders.mdx +76 -0
- package/reference/sdk/deployment/command-center.mdx +6 -2
- package/reference/sdk/deployment/execution-reference.mdx +64 -186
- package/reference/sdk/deployment/index.mdx +2 -0
- package/reference/sdk/exports.mdx +4 -4
- package/reference/sdk/framework/agent.mdx +49 -119
- package/reference/sdk/framework/index.mdx +46 -65
- package/reference/sdk/framework/project-structure.mdx +150 -205
- package/reference/sdk/framework/tutorial-system.mdx +2 -2
- package/reference/sdk/human-in-the-loop.mdx +152 -0
- package/reference/sdk/index.mdx +6 -7
- package/reference/sdk/platform-tools/index.mdx +12 -0
- package/reference/sdk/platform-tools/type-safety.mdx +4 -0
- package/reference/sdk/project-deployment-spec.mdx +131 -0
- package/reference/sdk/resources/index.mdx +23 -7
- package/reference/sdk/resources/patterns.mdx +54 -24
- package/reference/sdk/resources/types.mdx +7 -4
- package/reference/sdk/templates/data-enrichment.mdx +7 -3
- package/reference/sdk/templates/email-sender.mdx +139 -135
- package/reference/sdk/templates/lead-scorer.mdx +5 -1
- package/reference/sdk/templates/pdf-generator.mdx +155 -151
- package/reference/sdk/templates/recurring-job.mdx +195 -189
- package/reference/sdk/templates/text-classifier.mdx +4 -0
- package/reference/sdk/templates/web-scraper.mdx +139 -135
- package/reference/spine/spine-primer.md +135 -96
- package/reference/ui/index.mdx +14 -7
- package/dist/types/worker/adapters/anymailfinder.d.ts +0 -14
- package/dist/types/worker/adapters/apify.d.ts +0 -14
- package/dist/types/worker/adapters/approval.d.ts +0 -23
- package/dist/types/worker/adapters/attio.d.ts +0 -22
- package/dist/types/worker/adapters/clickup.d.ts +0 -22
- package/dist/types/worker/adapters/create-adapter.d.ts +0 -41
- package/dist/types/worker/adapters/crm.d.ts +0 -20
- package/dist/types/worker/adapters/dropbox.d.ts +0 -14
- package/dist/types/worker/adapters/email.d.ts +0 -25
- package/dist/types/worker/adapters/execution.d.ts +0 -22
- package/dist/types/worker/adapters/gmail.d.ts +0 -14
- package/dist/types/worker/adapters/google-sheets.d.ts +0 -14
- package/dist/types/worker/adapters/index.d.ts +0 -33
- package/dist/types/worker/adapters/instantly.d.ts +0 -14
- package/dist/types/worker/adapters/lead.d.ts +0 -28
- package/dist/types/worker/adapters/list.d.ts +0 -9
- package/dist/types/worker/adapters/llm.d.ts +0 -45
- package/dist/types/worker/adapters/millionverifier.d.ts +0 -14
- package/dist/types/worker/adapters/notification.d.ts +0 -28
- package/dist/types/worker/adapters/pdf.d.ts +0 -22
- package/dist/types/worker/adapters/projects.d.ts +0 -20
- package/dist/types/worker/adapters/resend.d.ts +0 -14
- package/dist/types/worker/adapters/scheduler.d.ts +0 -25
- package/dist/types/worker/adapters/signature-api.d.ts +0 -14
- package/dist/types/worker/adapters/storage.d.ts +0 -33
- package/dist/types/worker/adapters/stripe.d.ts +0 -14
- package/dist/types/worker/adapters/tomba.d.ts +0 -14
- package/dist/types/worker/index.d.ts +0 -60
- package/dist/types/worker/platform.d.ts +0 -90
- package/dist/types/worker/utils.d.ts +0 -9
- package/reference/claude-config/Overview.md +0 -230
- package/reference/claude-config/hooks/post-edit-validate.mjs +0 -98
- package/reference/claude-config/hooks/scaffold-registry-reminder.mjs +0 -187
- package/reference/claude-config/hooks/tool-failure-recovery.mjs +0 -73
- package/reference/claude-config/registries/graph-skills.json +0 -4
- package/reference/claude-config/registries/knowledge-flags.json +0 -154
- package/reference/claude-config/registries/skill-coverage.json +0 -20
- package/reference/claude-config/rules/active-change-index.md +0 -22
- package/reference/claude-config/rules/agent-start-here.md +0 -22
- package/reference/claude-config/rules/deployment.md +0 -22
- package/reference/claude-config/rules/error-handling.md +0 -22
- package/reference/claude-config/rules/execution.md +0 -22
- package/reference/claude-config/rules/frontend.md +0 -22
- package/reference/claude-config/rules/observability.md +0 -22
- package/reference/claude-config/rules/operations.md +0 -22
- package/reference/claude-config/rules/organization-model.md +0 -22
- package/reference/claude-config/rules/organization-os.md +0 -22
- package/reference/claude-config/rules/package-taxonomy.md +0 -22
- package/reference/claude-config/rules/platform.md +0 -22
- package/reference/claude-config/rules/shared-types.md +0 -22
- package/reference/claude-config/rules/task-tracking.md +0 -22
- package/reference/claude-config/rules/topbar-actions.md +0 -70
- package/reference/claude-config/rules/ui.md +0 -22
- package/reference/claude-config/rules/vibe.md +0 -22
- package/reference/claude-config/scripts/statusline-command.js +0 -18
- package/reference/claude-config/settings.json +0 -30
- package/reference/claude-config/skills/client/SKILL.md +0 -201
- package/reference/claude-config/skills/deploy/SKILL.md +0 -159
- package/reference/claude-config/skills/dsp/SKILL.md +0 -66
- package/reference/claude-config/skills/elevasis/SKILL.md +0 -251
- package/reference/claude-config/skills/explore/SKILL.md +0 -78
- package/reference/claude-config/skills/git-sync/SKILL.md +0 -166
- package/reference/claude-config/skills/om/SKILL.md +0 -475
- package/reference/claude-config/skills/om/operations/build.md +0 -237
- package/reference/claude-config/skills/om/operations/codify-level-a.md +0 -109
- package/reference/claude-config/skills/om/operations/codify-level-b.md +0 -159
- package/reference/claude-config/skills/om/operations/customers.md +0 -114
- package/reference/claude-config/skills/om/operations/features.md +0 -88
- package/reference/claude-config/skills/om/operations/goals.md +0 -123
- package/reference/claude-config/skills/om/operations/identity.md +0 -97
- package/reference/claude-config/skills/om/operations/labels.md +0 -110
- package/reference/claude-config/skills/om/operations/offerings.md +0 -114
- package/reference/claude-config/skills/om/operations/roles.md +0 -104
- package/reference/claude-config/skills/om/operations/scaffold.md +0 -163
- package/reference/claude-config/skills/om/operations/techStack.md +0 -38
- package/reference/claude-config/skills/project/SKILL.md +0 -1114
- package/reference/claude-config/skills/run-ui/SKILL.md +0 -73
- package/reference/claude-config/skills/save/SKILL.md +0 -183
- package/reference/claude-config/skills/setup/SKILL.md +0 -290
- package/reference/claude-config/skills/status/SKILL.md +0 -59
- package/reference/claude-config/skills/submit-request/SKILL.md +0 -180
- package/reference/claude-config/skills/sync/SKILL.md +0 -47
- package/reference/claude-config/skills/tutorial/SKILL.md +0 -259
- package/reference/claude-config/skills/tutorial/progress-template.md +0 -74
- package/reference/claude-config/skills/tutorial/technical.md +0 -1303
- package/reference/claude-config/skills/tutorial/vibe-coder.md +0 -890
- package/reference/claude-config/sync-notes/2026-04-22-git-sync-and-sync-notes.md +0 -27
- package/reference/claude-config/sync-notes/2026-04-22-lead-gen-deliverability-removal.md +0 -30
- package/reference/claude-config/sync-notes/2026-04-24-test-utils-and-template-tests.md +0 -73
- package/reference/claude-config/sync-notes/2026-04-24-ui-consolidation-and-sdk-cli-train.md +0 -86
- package/reference/claude-config/sync-notes/2026-04-25-auth-role-system-and-settings-roles.md +0 -55
- package/reference/claude-config/sync-notes/2026-04-27-crm-hitl-action-layer-cutover.md +0 -97
- package/reference/claude-config/sync-notes/2026-04-27-lead-gen-substrate-train.md +0 -112
- package/reference/claude-config/sync-notes/2026-04-29-crm-state-and-lead-gen-processing-status.md +0 -93
- package/reference/claude-config/sync-notes/2026-05-02-crm-ownership-next-action.md +0 -58
- package/reference/claude-config/sync-notes/2026-05-02-template-hardcode-workos-config.md +0 -56
- package/reference/claude-config/sync-notes/2026-05-04-elevasis-workspace.md +0 -71
- package/reference/claude-config/sync-notes/2026-05-04-knowledge-bundle.md +0 -83
- package/reference/claude-config/sync-notes/2026-05-04-template-skills-run-ui-and-tutorial.md +0 -59
- package/reference/claude-config/sync-notes/2026-05-05-list-builder.md +0 -42
- package/reference/claude-config/sync-notes/2026-05-06-crm-spine.md +0 -60
- package/reference/claude-config/sync-notes/2026-05-06-sdk-changes-release-train.md +0 -37
- package/reference/claude-config/sync-notes/2026-05-07-sdk-changes-release-train.md +0 -34
- package/reference/claude-config/sync-notes/2026-05-08-resource-governance-scaffold-guidance.md +0 -38
- package/reference/claude-config/sync-notes/2026-05-09-clients-domain.md +0 -32
- package/reference/claude-config/sync-notes/2026-05-09-command-system.md +0 -33
- package/reference/claude-config/sync-notes/2026-05-09-resource-governance-and-misc.md +0 -69
- package/reference/claude-config/sync-notes/2026-05-12-sdk-ready-release-train.md +0 -30
- package/reference/claude-config/sync-notes/2026-05-14-organization-model-ontology-refactor.md +0 -45
- package/reference/claude-config/sync-notes/2026-05-15-om-skill-rename-and-write-family.md +0 -52
- package/reference/claude-config/sync-notes/2026-05-17-sdk-boundary-consolidation.md +0 -33
- package/reference/claude-config/sync-notes/2026-05-20-om-define-helpers.md +0 -32
- package/reference/claude-config/sync-notes/2026-05-22-access-model-and-right-panel.md +0 -43
- package/reference/claude-config/sync-notes/2026-05-22-lead-gen-tenant-config.md +0 -40
- package/reference/claude-config/sync-notes/2026-05-22-org-model-multi-file-split.md +0 -61
- package/reference/claude-config/sync-notes/2026-05-23-branding-names-to-identity.md +0 -49
- package/reference/claude-config/sync-notes/2026-05-23-lead-gen-manage-access.md +0 -31
- package/reference/claude-config/sync-notes/2026-05-23-om-deployment-drift-detection.md +0 -42
- package/reference/claude-config/sync-notes/2026-05-23-om-full-model-deploy-contract.md +0 -33
- package/reference/claude-config/sync-notes/2026-05-23-ui-sdk-package-fixes.md +0 -37
- package/reference/claude-config/sync-notes/2026-05-24-platform-invite-router-core-baseline.md +0 -28
- package/reference/claude-config/sync-notes/2026-05-24-system-interface-readiness.md +0 -43
- package/reference/claude-config/sync-notes/2026-05-25-invitation-login-loader.md +0 -26
- package/reference/claude-config/sync-notes/2026-05-25-om-topbar-requests.md +0 -33
- package/reference/claude-config/sync-notes/2026-05-25-system-interface-profile-registry-and-substrate.md +0 -35
- package/reference/claude-config/sync-notes/2026-05-25-tenant-om-scaffold-cli.md +0 -49
- package/reference/claude-config/sync-notes/2026-05-25-vibe-operate-intent.md +0 -47
- package/reference/claude-config/sync-notes/2026-05-28-om-snapshot-sdk-workflow-config.md +0 -33
- package/reference/claude-config/sync-notes/2026-05-30-client-source-and-om-profiles.md +0 -39
- package/reference/claude-config/sync-notes/2026-06-02-knowledge-nested-group-routing.md +0 -27
- package/reference/claude-config/sync-notes/2026-06-02-nest-projects-under-platform.md +0 -45
- package/reference/claude-config/sync-notes/2026-06-03-skill-autogen-and-client-skill.md +0 -34
- package/reference/claude-config/sync-notes/2026-06-04-scaffold-registry-lane-severity.md +0 -34
- package/reference/claude-config/sync-notes/2026-06-05-appearance-app-mode-decouple.md +0 -29
- package/reference/claude-config/sync-notes/2026-06-05-ontology-endpoint-rename-and-knowledge-browser-ui.md +0 -86
- package/reference/claude-config/sync-notes/2026-06-06-om-build-systems-scaffold.md +0 -47
- package/reference/claude-config/sync-notes/2026-06-06-om-item-copy-references.md +0 -50
- package/reference/claude-config/sync-notes/2026-06-08-knowledge-base-page-not-found-fix.md +0 -76
- package/reference/claude-config/sync-notes/2026-06-09-agent-sessions-public-agent-chat-route.md +0 -75
- package/reference/claude-config/sync-notes/2026-06-09-sdk-cli-load-org-model-resolution.md +0 -42
- package/reference/claude-config/sync-notes/2026-06-12-agent-grants-visualizer-operations.md +0 -30
- package/reference/claude-config/sync-notes/2026-06-14-session-ux-and-project-cli-json.md +0 -33
- package/reference/claude-config/sync-notes/2026-06-14-shared-session-conversation-view.md +0 -26
- package/reference/claude-config/sync-notes/2026-06-15-session-chat-zero-wiring.md +0 -46
- package/reference/claude-config/sync-notes/2026-06-17-agent-session-ux-features.md +0 -34
- package/reference/claude-config/sync-notes/2026-06-25-shared-page-scroll-contract-guard.md +0 -52
- package/reference/claude-config/sync-notes/2026-06-26-leadgen-overview-om-telemetry.md +0 -47
- package/reference/claude-config/sync-notes/2026-07-21-agent-scaffold-hardening.md +0 -75
- package/reference/claude-config/sync-notes/2026-07-23-agent-session-memory.md +0 -49
- package/reference/claude-config/sync-notes/2026-07-23-workos-org-marker.md +0 -50
- package/reference/claude-config/sync-notes/2026-07-24-claude-5-models-and-session-surface-fixes.md +0 -116
- package/reference/claude-config/sync-notes/2026-07-27-agent-strict-output-and-turn-drift.md +0 -73
- package/reference/claude-config/sync-notes/2026-07-28-agent-reply-is-its-own-field.md +0 -84
- package/reference/claude-config/sync-notes/2026-07-30-login-screen-and-member-provisioning-state.md +0 -114
- package/reference/claude-config/sync-notes/2026-08-02-auth-guard-defaults-and-truncation-fix.md +0 -122
- package/reference/claude-config/sync-notes/2026-08-03-cli-gateway-errors-and-request-timeout.md +0 -120
- package/reference/claude-config/sync-notes/README.md +0 -43
- package/reference/sdk/framework/interaction-guidance.mdx +0 -182
- package/reference/sdk/framework/memory.mdx +0 -326
- package/reference/sdk/framework/resource-documentation.mdx +0 -90
- package/reference/sdk/roadmap.mdx +0 -164
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: run-ui
|
|
3
|
-
description: Start the project's Vite UI dev server on port 4300 in the background, surfacing the URL once it's ready. Detects port conflicts and asks before killing the holder.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Run UI
|
|
7
|
-
|
|
8
|
-
Start `ui/` dev server (`pnpm -C ui dev`) in the background on port 4300 and surface the URL when Vite reports ready.
|
|
9
|
-
|
|
10
|
-
**Usage:** `/run-ui`
|
|
11
|
-
|
|
12
|
-
The Vite config in `ui/vite.config.ts` pins port 4300 with `strictPort: true`, so a conflict is a hard fail — the skill resolves the conflict before launching.
|
|
13
|
-
|
|
14
|
-
## Process
|
|
15
|
-
|
|
16
|
-
### Step 1: Probe port 4300
|
|
17
|
-
|
|
18
|
-
Run via PowerShell tool (Windows-native, cleanest):
|
|
19
|
-
|
|
20
|
-
```powershell
|
|
21
|
-
$conn = Get-NetTCPConnection -LocalPort 4300 -State Listen -ErrorAction SilentlyContinue | Select-Object -First 1
|
|
22
|
-
if ($conn) {
|
|
23
|
-
$proc = Get-Process -Id $conn.OwningProcess -ErrorAction SilentlyContinue
|
|
24
|
-
$cmd = (Get-CimInstance Win32_Process -Filter "ProcessId = $($conn.OwningProcess)" -ErrorAction SilentlyContinue).CommandLine
|
|
25
|
-
"PID=$($conn.OwningProcess) NAME=$($proc.ProcessName) CMD=$cmd"
|
|
26
|
-
} else {
|
|
27
|
-
"FREE"
|
|
28
|
-
}
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
### Step 2: Branch on probe result
|
|
32
|
-
|
|
33
|
-
- **`FREE`** → go to Step 3.
|
|
34
|
-
- **Holder is our Vite** (CMD contains `vite` or `node` running from this project's `ui/`) → port is already serving the app. Skip launch and surface `http://localhost:4300/` directly. Done.
|
|
35
|
-
- **Holder is something else** → ask the user:
|
|
36
|
-
|
|
37
|
-
> "Port 4300 is held by `<NAME>` (PID `<PID>`). Kill it and start the dev server? (y/n)"
|
|
38
|
-
|
|
39
|
-
On `n`, abort with no further action. On `y`, run `Stop-Process -Id <PID> -Force` then continue to Step 3.
|
|
40
|
-
|
|
41
|
-
### Step 3: Launch dev server in background
|
|
42
|
-
|
|
43
|
-
Use Bash tool with `run_in_background: true`:
|
|
44
|
-
|
|
45
|
-
```bash
|
|
46
|
-
pnpm -C ui dev
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
Capture the returned shell ID.
|
|
50
|
-
|
|
51
|
-
### Step 4: Wait for ready signal
|
|
52
|
-
|
|
53
|
-
Poll the background shell output (read every ~2s) for Vite's ready line — typically:
|
|
54
|
-
|
|
55
|
-
```
|
|
56
|
-
➜ Local: http://localhost:4300/
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
or `ready in <N>ms`.
|
|
60
|
-
|
|
61
|
-
Stop polling on the first match. Hard cap: ~15 seconds (≈7 reads). If no ready signal arrives, surface the last 20 lines of background output so the user can debug, and leave the background process running.
|
|
62
|
-
|
|
63
|
-
### Step 5: Report
|
|
64
|
-
|
|
65
|
-
On success:
|
|
66
|
-
|
|
67
|
-
```
|
|
68
|
-
UI dev server running
|
|
69
|
-
Local: http://localhost:4300/
|
|
70
|
-
Shell: <bg-shell-id>
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
On timeout, prepend a one-line note ("Vite did not report ready within 15s — last output:") before the captured tail.
|
|
@@ -1,183 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: save
|
|
3
|
-
description: Auto-manage project documentation and persist task resume context from conversation
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Save
|
|
7
|
-
|
|
8
|
-
Auto-manage project documentation from conversation context, and fan out conversation signals to the canonical project system (`prj_tasks.resume_context`, `prj_notes`) via the `elevasis-sdk` CLI.
|
|
9
|
-
|
|
10
|
-
## Canonical Sources of Truth
|
|
11
|
-
|
|
12
|
-
- **Task resume context (DB):** `prj_tasks.resume_context` is canonical. Agents write it via `elevasis-sdk project:task:save`. Humans edit it via the inline task editor in Command Center. **Never** stash resume context into task-doc frontmatter.
|
|
13
|
-
- **Task-doc frontmatter:** ONLY `title`, `description`, `status`. No `resume_context`, no files-modified, no next-steps arrays -- those belong in the DB.
|
|
14
|
-
- **Project notes (DB):** `prj_notes` via `elevasis-sdk project:note:create`. Typed notes (`status_update` / `issue` / `blocker` / `call_note`) are the durable record of conversation signals.
|
|
15
|
-
|
|
16
|
-
## Process
|
|
17
|
-
|
|
18
|
-
### Step 1: Resolve Project + Task Context
|
|
19
|
-
|
|
20
|
-
Before doing anything else, determine the active project / task:
|
|
21
|
-
|
|
22
|
-
1. Look for an active task-doc frontmatter in the current conversation or the most recently edited file. Expected frontmatter:
|
|
23
|
-
|
|
24
|
-
```yaml
|
|
25
|
-
---
|
|
26
|
-
title: Short title
|
|
27
|
-
description: One-line summary
|
|
28
|
-
status: planned | in-progress | blocked | complete
|
|
29
|
-
---
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
2. If the task doc references a project/task UUID anywhere in its body (link, callout, or prior save output), capture those IDs.
|
|
33
|
-
3. If no task / project context is resolvable, PROMPT the user:
|
|
34
|
-
- "Which project is this work under?" (accepts slug or UUID)
|
|
35
|
-
- "Is there an existing task I should attach this to? (task UUID, or 'new')"
|
|
36
|
-
|
|
37
|
-
Do not guess. Without a task ID, skip Step 4 (DB resume-context save) but still perform Steps 2, 3, 5, 6, 7.
|
|
38
|
-
|
|
39
|
-
### Step 2: Analyze Conversation
|
|
40
|
-
|
|
41
|
-
Review the current conversation to identify:
|
|
42
|
-
|
|
43
|
-
1. **New knowledge** -- architecture decisions, feature implementations, bug fixes, discoveries
|
|
44
|
-
2. **Changed state** -- what was in-progress that is now complete, what new work started
|
|
45
|
-
3. **Stale docs** -- information in existing docs that is now outdated
|
|
46
|
-
4. **Signal events** -- blocker hit, status update worth recording, issue uncovered, call outcome
|
|
47
|
-
5. **OS contract paths touched** -- scan files read/written/edited for any of these signals:
|
|
48
|
-
- `core/config/organization-model.ts` -> Foundations layer, Organization Model
|
|
49
|
-
- `core/types/index.ts` -> Foundations layer, Workflow Contracts
|
|
50
|
-
- `ui/src/routes/__root.tsx` -> UI Shell Runtime composition
|
|
51
|
-
- `ui/src/features/**/manifest.ts` or any file defining a `SystemModule` -> Systems layer
|
|
52
|
-
- `operations/src/index.ts` or `operations/elevasis.config.ts` -> core/Deployment (DeploymentSpec)
|
|
53
|
-
- Any file inside `ui/src/features/<feature>/` combined with manifest, nav, or sidebar changes -> Features + Toolkit layers
|
|
54
|
-
|
|
55
|
-
Record which OS layers were touched: `foundations`, `systems`, `shell-runtime`, `toolkit`, `deployment`. If none matched, OS awareness stays dormant for the rest of this run.
|
|
56
|
-
|
|
57
|
-
### Step 3: Update Knowledge Docs
|
|
58
|
-
|
|
59
|
-
Scan for unindexed or stale knowledge docs and draft creates / updates / moves. This template does not have a `docs/` tree — look for any local knowledge files (`.claude/rules/`, `operations/src/README.md`, `core/`, or project-specific docs the user has created). All edits are on knowledge/architecture/feature docs -- NOT on task resume state (that flows to the DB in Step 4).
|
|
60
|
-
|
|
61
|
-
Determine what needs to happen:
|
|
62
|
-
|
|
63
|
-
- **Create** new docs for significant new knowledge (new features, architecture decisions) -- place them wherever this project actually keeps such notes (a README next to the relevant code, or a project-created notes location); this template has no `docs/` tree, so do not create or assume one
|
|
64
|
-
- **Update** existing docs with corrections, completions, or new details
|
|
65
|
-
- **Move** docs between directories (e.g., `ui/` to `operations/` when ownership shifts)
|
|
66
|
-
- **Delete** docs that are fully obsolete (rare -- prefer updating)
|
|
67
|
-
|
|
68
|
-
**Frontmatter requirement (any doc this step creates or updates):**
|
|
69
|
-
|
|
70
|
-
```markdown
|
|
71
|
-
---
|
|
72
|
-
title: Short descriptive title
|
|
73
|
-
description: One-line summary of what this doc covers
|
|
74
|
-
---
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
In-progress task docs additionally require `status`:
|
|
78
|
-
|
|
79
|
-
```markdown
|
|
80
|
-
---
|
|
81
|
-
title: Feature Name
|
|
82
|
-
description: What this task is about
|
|
83
|
-
status: planned | in-progress | blocked | complete
|
|
84
|
-
---
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
No other fields. Do NOT add `resume_context`, `files_modified`, or `next_steps` to frontmatter -- those flow to the DB via Step 4.
|
|
88
|
-
|
|
89
|
-
**Doc structure rules:**
|
|
90
|
-
|
|
91
|
-
- All docs are `.md` (not `.mdx` -- this template has no Fumadocs/MDX pipeline)
|
|
92
|
-
- Keep docs focused -- one topic per file
|
|
93
|
-
- Use markdown tables for structured data
|
|
94
|
-
- Include "Last Updated: YYYY-MM-DD" at the bottom of modified docs
|
|
95
|
-
|
|
96
|
-
**OS layer annotation:** If OS contract paths were touched (Step 2), include an `## Organization OS Impact` section in any newly created architecture doc:
|
|
97
|
-
|
|
98
|
-
```markdown
|
|
99
|
-
## Organization OS Impact
|
|
100
|
-
|
|
101
|
-
Touched contracts: [list files]
|
|
102
|
-
Affected layers: [list of layers]
|
|
103
|
-
Cross-reference: `operations/node_modules/@elevasis/sdk/reference/scaffold/reference/glossary.md`
|
|
104
|
-
Downstream: template consumer adapters may need review.
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
Dispatch a `general-purpose` subagent with the plan, conversation context, and these rules. The subagent must read each target file before editing.
|
|
108
|
-
|
|
109
|
-
### Step 4: Persist Task Resume Context to DB
|
|
110
|
-
|
|
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:
|
|
112
|
-
|
|
113
|
-
```bash
|
|
114
|
-
pnpm elevasis-sdk project:task:save <task-uuid> \
|
|
115
|
-
--current-state "<concise prose summary of where we are>" \
|
|
116
|
-
--next-steps "<concise prose of the next concrete action>" \
|
|
117
|
-
--files-modified '["path/one.ts","path/two.tsx"]' \
|
|
118
|
-
--key-docs '["operations/src/foo/index.ts","core/config/organization-model.ts"]' \
|
|
119
|
-
--tools '["project:task:save","project:note:create"]'
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
Arg rules:
|
|
123
|
-
|
|
124
|
-
- `--current-state` (required) -- terse, present-tense "what is true right now". Prefer latest state over accumulated history.
|
|
125
|
-
- `--next-steps` -- single next concrete action another agent could execute without re-deriving intent.
|
|
126
|
-
- `--files-modified` -- JSON array of uncommitted / just-changed file paths (relative to project root).
|
|
127
|
-
- `--key-docs` -- JSON array of doc paths an agent should re-read to resume.
|
|
128
|
-
- `--tools` -- JSON array of tool / CLI names used this session that are worth flagging.
|
|
129
|
-
|
|
130
|
-
The endpoint is `PATCH /api/external/tasks/<id>/resume-context` and merges (does not replace) provided fields. Omit any arg that has nothing meaningful to record.
|
|
131
|
-
|
|
132
|
-
### Step 5: Create Typed Project Notes on Signal Events
|
|
133
|
-
|
|
134
|
-
For each signal event identified in Step 2, create a typed `prj_note`. One CLI call per note:
|
|
135
|
-
|
|
136
|
-
```bash
|
|
137
|
-
pnpm elevasis-sdk project:note:create \
|
|
138
|
-
--project <project-uuid> \
|
|
139
|
-
--task <task-uuid> # optional, omit if not scoped to a task \
|
|
140
|
-
--type <note-type> \
|
|
141
|
-
--content "<what happened, why it matters, any next action>"
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
Note-type mapping (use the first type that matches, in this order):
|
|
145
|
-
|
|
146
|
-
- **`blocker`** -- work cannot proceed without external action (decision, credential, fix elsewhere, upstream change). Always create if detected. Trigger phrases: "I'm stuck", "blocked on", "can't proceed until", "waiting on <X>". When detected AND a task ID is in scope, ALSO fire a status transition -- see Step 5a below.
|
|
147
|
-
- **`issue`** -- bug, regression, unexpected failure, contract mismatch. Include reproduction context in `--content`.
|
|
148
|
-
- **`status_update`** -- milestone-level progress worth flagging to the human operator (phase complete, substantial deliverable landed, direction change). Keep it substantive -- `/save` runs shouldn't emit a status_update every turn.
|
|
149
|
-
- **`call_note`** -- only if the conversation is transcribing a live client / stakeholder call.
|
|
150
|
-
|
|
151
|
-
If no signal rises to note-worthy, skip this step entirely. Do not create filler notes.
|
|
152
|
-
|
|
153
|
-
### Step 5a: Blocker Signal -> Task Status Transition
|
|
154
|
-
|
|
155
|
-
Run this ONLY when Step 5 created a `blocker` note AND Step 1 resolved a task ID. It's the second half of the "I'm stuck" fanout: the note captures the why, this call flips the task's lifecycle state so it surfaces as blocked in portfolio views.
|
|
156
|
-
|
|
157
|
-
```bash
|
|
158
|
-
pnpm elevasis-sdk project:task:update <task-uuid> --status blocked
|
|
159
|
-
```
|
|
160
|
-
|
|
161
|
-
Rules:
|
|
162
|
-
|
|
163
|
-
- **Explicit task ID only** -- use the UUID resolved in Step 1. Do not re-derive or guess. If no task is in scope, skip this step (the blocker note still ships without it).
|
|
164
|
-
- **Best-effort** -- if the CLI returns non-2xx, surface a single warning line in Step 7 ("Warning: could not transition task <id> to blocked: <reason>") and continue. Do not retry, do not block the rest of `/save`.
|
|
165
|
-
- **Idempotent** -- if the task is already `blocked`, the update is a no-op. Fire it anyway; do not pre-check.
|
|
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.
|
|
167
|
-
|
|
168
|
-
### Step 6: Report
|
|
169
|
-
|
|
170
|
-
Summarize:
|
|
171
|
-
|
|
172
|
-
- Knowledge docs created / updated / moved / deleted
|
|
173
|
-
- Task ID written to (Step 4): `resume_context.last_saved` timestamp from the CLI response
|
|
174
|
-
- Notes created (Step 5): count, types, IDs
|
|
175
|
-
- OS classification (if applicable): layers detected, contracts touched
|
|
176
|
-
- Any files skipped due to missing frontmatter (Step 3 subagent should have added it)
|
|
177
|
-
- Any follow-ups for the human operator
|
|
178
|
-
|
|
179
|
-
## Failure Modes
|
|
180
|
-
|
|
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.
|
|
182
|
-
- **`project:task:save` returns non-2xx:** surface the error in the report, do not retry silently; Step 5 and Step 6 still run.
|
|
183
|
-
- **Knowledge doc edits fail to write:** surface the error; any edits already applied are on disk and not lost.
|
|
@@ -1,290 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: setup
|
|
3
|
-
description: First-time project setup — detect and replace template placeholders, install dependencies, verify build, then hand off to /om for org-model configuration
|
|
4
|
-
argument-hint: ""
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Setup
|
|
8
|
-
|
|
9
|
-
First-time project setup for projects cloned directly from the template. Handles placeholder replacement, dependency install, and build verification. After bootstrap, delegates org-model configuration to `/om`.
|
|
10
|
-
|
|
11
|
-
**Usage:** `/setup`
|
|
12
|
-
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
## State Detection (Run Before Anything Else)
|
|
16
|
-
|
|
17
|
-
Before collecting any information or running any steps, determine which state the project is in. Read these files:
|
|
18
|
-
|
|
19
|
-
- `package.json` — look for `__PROJECT_SLUG__` in the `name` field
|
|
20
|
-
- `CLAUDE.md` — look for `__PROJECT_NAME__` (the title) and `__PROJECT_DESCRIPTION__` (the Project section) AND check whether `{CLIENT_CONTEXT}` and `{USER_PREFERENCES}` are still literal placeholder strings
|
|
21
|
-
- `ui/package.json` — look for `__PROJECT_SLUG__`
|
|
22
|
-
- `ui/index.html` — look for `__PROJECT_NAME__`
|
|
23
|
-
|
|
24
|
-
**State A — Virgin (placeholders present):** One or more of the above placeholder strings is found. Run the full bootstrap flow (Steps 1–7 below), then hand off to `/om`.
|
|
25
|
-
|
|
26
|
-
**State B — Already bootstrapped, org-model at defaults:** No placeholders found, but `core/config/organization-model.ts` contains only the default display naming override (just `identity.organizationName`, `identity.productName`, `identity.shortName`, with legacy `branding.*` fallback values — no customers, offerings, roles, goals, or techStack overrides). Print:
|
|
27
|
-
|
|
28
|
-
```
|
|
29
|
-
This project is already set up. The organization model has not been configured yet.
|
|
30
|
-
Running /om to set up your organization profile...
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
Then execute `/om` (the full layered flow) and stop.
|
|
34
|
-
|
|
35
|
-
**State C — Fully configured:** No placeholders found AND `core/config/organization-model.ts` has at least one non-default business domain populated (customers, offerings, roles, goals, techStack, or identity fields beyond display naming/client brief). Print:
|
|
36
|
-
|
|
37
|
-
```
|
|
38
|
-
This project is already configured. To update your organization profile, run /om.
|
|
39
|
-
To re-verify the build, run the checks below.
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
Offer to run the verification checks (Steps 6b–6e) if the user wants them. Do not re-ask any questions. Do not re-run placeholder replacement. Stop after verification.
|
|
43
|
-
|
|
44
|
-
---
|
|
45
|
-
|
|
46
|
-
## Full Bootstrap Flow (State A Only)
|
|
47
|
-
|
|
48
|
-
### Step 1: Collect Project Info
|
|
49
|
-
|
|
50
|
-
Ask the user for three values:
|
|
51
|
-
|
|
52
|
-
1. **Slug** — lowercase, hyphens only (e.g., `acme-dashboard`). Default to the basename of the current working directory.
|
|
53
|
-
2. **Human-readable name** — used in titles, docs, and CLAUDE.md (e.g., `Acme Dashboard`).
|
|
54
|
-
3. **Short description** — one sentence, used in `package.json` and CLAUDE.md (e.g., `Client dashboard for Acme Corp.`).
|
|
55
|
-
|
|
56
|
-
Confirm the values before proceeding:
|
|
57
|
-
|
|
58
|
-
```
|
|
59
|
-
Configuring project with:
|
|
60
|
-
Slug: <slug>
|
|
61
|
-
Name: <name>
|
|
62
|
-
Description: <description>
|
|
63
|
-
Date: <YYYY-MM-DD>
|
|
64
|
-
|
|
65
|
-
Proceed? (yes/no)
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
### Step 2: Get to Know the User and Client
|
|
69
|
-
|
|
70
|
-
Transition naturally after confirming the project values: "Now let me learn a bit about you and the client so I can be more helpful going forward."
|
|
71
|
-
|
|
72
|
-
**About the user (ask conversationally, one at a time):**
|
|
73
|
-
|
|
74
|
-
1. **Name** -- "What's your first name?"
|
|
75
|
-
2. **Role** -- "What's your role?" (e.g., founder, developer, project lead)
|
|
76
|
-
3. **Technical level** -- "How comfortable are you with technical stuff? No wrong answer -- just helps me know how to explain things."
|
|
77
|
-
4. **Communication style** -- "When I explain things or write docs, do you prefer short and to-the-point, or more detailed with context?"
|
|
78
|
-
|
|
79
|
-
Use their name naturally from this point on.
|
|
80
|
-
|
|
81
|
-
**About the client/company this project is for:**
|
|
82
|
-
|
|
83
|
-
5. **Company name** -- "Who's this project for? What's the company name?"
|
|
84
|
-
6. **What they do** -- "What does {company} do? Just a sentence or two."
|
|
85
|
-
7. **Industry** -- "What industry or space are they in?"
|
|
86
|
-
8. **Key context** -- "Anything else that would help me understand the project context? Key stakeholders, business goals, important constraints -- whatever comes to mind. (Totally fine to skip, we can add this as we go.)"
|
|
87
|
-
|
|
88
|
-
React to what they share, ask natural follow-ups if something is interesting or unclear. Don't make it feel like a form.
|
|
89
|
-
|
|
90
|
-
After gathering, confirm:
|
|
91
|
-
|
|
92
|
-
```
|
|
93
|
-
Got it! Here's what I captured:
|
|
94
|
-
|
|
95
|
-
User: {name} ({role}, {technical level}, prefers {style})
|
|
96
|
-
|
|
97
|
-
Client: {company}
|
|
98
|
-
{what they do}
|
|
99
|
-
Industry: {industry}
|
|
100
|
-
{any additional context}
|
|
101
|
-
|
|
102
|
-
Look good?
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
### Step 3: Replace Placeholders
|
|
106
|
-
|
|
107
|
-
Search ALL files in the project matching these extensions: `.ts`, `.tsx`, `.js`, `.mjs`, `.json`, `.md`, `.mdx`, `.html`, `.yaml`, `.yml`, `.css`, `.env.example`
|
|
108
|
-
|
|
109
|
-
**HARD EXCLUSION -- `.claude/` is off-limits (read this before scanning any file list):**
|
|
110
|
-
|
|
111
|
-
Do NOT scan, read-for-replacement, or edit ANY file under `.claude/` -- this includes `.claude/skills/**` (including this very `setup/SKILL.md` file), `.claude/rules/**`, `.claude/agents/**`, `.claude/hooks/**`, `.claude/registries/**`, `.claude/sync-notes/**`, `.claude/logs/**`, `.claude/Overview.md`, and `.claude/settings.json`. These are agent scaffold, not template content -- they describe the agent's own tooling and must never have their placeholder text (e.g. `__PROJECT_NAME__`, `__DATE__`, tenant names used as worked examples) substituted. Substituting them corrupts the scaffold and breaks every future re-run of `/setup` and other skills that reference this file.
|
|
112
|
-
|
|
113
|
-
The allowlist of directories to scan is exactly: project root files (`package.json`, `CLAUDE.md`, `.env.example`), `ui/**`, `operations/**`, `core/**`. Also exclude `node_modules/`, `dist/`, `.tanstack/`, `pnpm-lock.yaml`, and `.git/` within those trees.
|
|
114
|
-
|
|
115
|
-
If you are about to open or write any file whose path starts with `.claude/`, stop -- that file is out of scope for this step, with zero exceptions.
|
|
116
|
-
|
|
117
|
-
For each matching file (from the allowlist above, outside `.claude/`), replace all occurrences of:
|
|
118
|
-
|
|
119
|
-
| Placeholder | Replace with |
|
|
120
|
-
| ------------------------------ | ----------------------- |
|
|
121
|
-
| `__PROJECT_NAME__` | human-readable name |
|
|
122
|
-
| `__PROJECT_SLUG__` | slug |
|
|
123
|
-
| `__PROJECT_DESCRIPTION__` | description |
|
|
124
|
-
| `__DATE__` | today's date YYYY-MM-DD |
|
|
125
|
-
| `TEMPLATE_PROJECT_NAME` | human-readable name |
|
|
126
|
-
| `TEMPLATE_PROJECT_DESCRIPTION` | description |
|
|
127
|
-
|
|
128
|
-
Use the Read tool to read each file, then the Edit tool (with `replace_all: true`) or Write tool to apply the replacements. Read each file before writing.
|
|
129
|
-
|
|
130
|
-
After all replacements, re-scan the four key files from State Detection to verify zero placeholders remain. If any are still present, report them by file and fix immediately.
|
|
131
|
-
|
|
132
|
-
### Step 4: Populate CLAUDE.md Knowledge Sections
|
|
133
|
-
|
|
134
|
-
**Idempotency check (MANDATORY before writing):** Read `CLAUDE.md` and check whether `{CLIENT_CONTEXT}` and `{USER_PREFERENCES}` are still literal placeholder strings. Only write if they are still placeholders. If either section is already filled in (user or a previous run already populated it), skip that section entirely — do not overwrite.
|
|
135
|
-
|
|
136
|
-
**`{CLIENT_CONTEXT}`** -- replace with a single line (only if still a placeholder):
|
|
137
|
-
|
|
138
|
-
```markdown
|
|
139
|
-
**{company name}** — {what they do, one sentence}
|
|
140
|
-
```
|
|
141
|
-
|
|
142
|
-
**`{USER_PREFERENCES}`** -- replace with a table (only if still a placeholder):
|
|
143
|
-
|
|
144
|
-
```markdown
|
|
145
|
-
| Name | Role | Technical Level | Communication |
|
|
146
|
-
| ------ | ------ | --------------- | ------------- |
|
|
147
|
-
| {name} | {role} | {level} | {preference} |
|
|
148
|
-
```
|
|
149
|
-
|
|
150
|
-
If the user skipped any knowledge questions, fill in what was provided and omit what wasn't -- don't leave placeholder text behind.
|
|
151
|
-
|
|
152
|
-
### Step 5: Write Client Brief to Org Model
|
|
153
|
-
|
|
154
|
-
**Idempotency check:** Read `core/config/organization-model.ts` and inspect `identity.clientBrief`. If the field is already a non-empty string, skip this step entirely — do not overwrite.
|
|
155
|
-
|
|
156
|
-
If the field is empty or absent, compose the client brief from the information gathered in Step 2:
|
|
157
|
-
|
|
158
|
-
```markdown
|
|
159
|
-
**Company:** {company name}
|
|
160
|
-
**Industry:** {industry}
|
|
161
|
-
**Description:** {what they do}
|
|
162
|
-
|
|
163
|
-
## Additional Context
|
|
164
|
-
|
|
165
|
-
{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."}
|
|
166
|
-
```
|
|
167
|
-
|
|
168
|
-
Propose the composed content to the user before writing (read → propose → confirm → write — the same ceremony `/om` uses):
|
|
169
|
-
|
|
170
|
-
```
|
|
171
|
-
Here's the client brief I'll write into identity.clientBrief:
|
|
172
|
-
|
|
173
|
-
---
|
|
174
|
-
{composed content}
|
|
175
|
-
---
|
|
176
|
-
|
|
177
|
-
Write this? (yes/no)
|
|
178
|
-
```
|
|
179
|
-
|
|
180
|
-
On confirmation, use the Edit tool to replace the `clientBrief: ''` value in `core/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.
|
|
181
|
-
|
|
182
|
-
After the edit, run:
|
|
183
|
-
|
|
184
|
-
```bash
|
|
185
|
-
pnpm -C core test
|
|
186
|
-
```
|
|
187
|
-
|
|
188
|
-
If type-check fails, report the error and do not proceed to Step 6 until it is resolved.
|
|
189
|
-
|
|
190
|
-
### Step 6: Install and Verify
|
|
191
|
-
|
|
192
|
-
#### Step 6a: Install Dependencies
|
|
193
|
-
|
|
194
|
-
```bash
|
|
195
|
-
pnpm install
|
|
196
|
-
```
|
|
197
|
-
|
|
198
|
-
This generates the project's own `pnpm-lock.yaml`. Report success or any errors.
|
|
199
|
-
|
|
200
|
-
#### Step 6b–6e: Verify Build
|
|
201
|
-
|
|
202
|
-
Run all checks sequentially (stop and report on first failure, but attempt all):
|
|
203
|
-
|
|
204
|
-
```bash
|
|
205
|
-
pnpm -C ui check-types
|
|
206
|
-
pnpm -C ui build
|
|
207
|
-
pnpm -C operations check
|
|
208
|
-
pnpm -C operations check-types
|
|
209
|
-
```
|
|
210
|
-
|
|
211
|
-
For each check, record PASS or FAIL. If a check fails, read the output and report the error clearly. Do not silently skip failures.
|
|
212
|
-
|
|
213
|
-
### Step 7: Bootstrap Report
|
|
214
|
-
|
|
215
|
-
```
|
|
216
|
-
You're all set, {name}!
|
|
217
|
-
========================
|
|
218
|
-
Project: <Human Name>
|
|
219
|
-
Slug: <slug>
|
|
220
|
-
Client: <company name> (<industry>)
|
|
221
|
-
|
|
222
|
-
Verification:
|
|
223
|
-
[PASS/FAIL] Type-check (ui)
|
|
224
|
-
[PASS/FAIL] Production build (ui)
|
|
225
|
-
[PASS/FAIL] Resource validation (operations)
|
|
226
|
-
[PASS/FAIL] Type-check (operations)
|
|
227
|
-
```
|
|
228
|
-
|
|
229
|
-
If any verification step failed, add an Errors section listing each failure with its output.
|
|
230
|
-
|
|
231
|
-
### Step 8: Hand Off to /om
|
|
232
|
-
|
|
233
|
-
After a successful bootstrap, transition to the org-model configuration flow. Print:
|
|
234
|
-
|
|
235
|
-
```
|
|
236
|
-
Bootstrap complete. Now let's set up your organization profile.
|
|
237
|
-
```
|
|
238
|
-
|
|
239
|
-
Then execute `/om` (the full layered flow, no argument). This is where identity, customers, offerings, roles, goals, and techStack are configured. Do not attempt to collect or write org-model data here — that ceremony belongs entirely to /om.
|
|
240
|
-
|
|
241
|
-
If the user wants to skip org-model setup for now, they can stop here and run `/om` later.
|
|
242
|
-
|
|
243
|
-
---
|
|
244
|
-
|
|
245
|
-
## Error Recovery
|
|
246
|
-
|
|
247
|
-
If placeholder replacement leaves stragglers:
|
|
248
|
-
|
|
249
|
-
```
|
|
250
|
-
Placeholder Cleanup Required
|
|
251
|
-
=============================
|
|
252
|
-
Remaining: <list files and placeholders>
|
|
253
|
-
Action: Re-applying replacements to affected files...
|
|
254
|
-
```
|
|
255
|
-
|
|
256
|
-
Fix each remaining occurrence before proceeding to Step 6a.
|
|
257
|
-
|
|
258
|
-
---
|
|
259
|
-
|
|
260
|
-
## Idempotency Guarantees
|
|
261
|
-
|
|
262
|
-
Running `/setup` more than once is safe:
|
|
263
|
-
|
|
264
|
-
- **Placeholder replacement** only runs when placeholders are detected (State A). It is skipped entirely in States B and C.
|
|
265
|
-
- **CLAUDE.md knowledge sections** (`{CLIENT_CONTEXT}`, `{USER_PREFERENCES}`) are checked before writing. If already replaced, the write is skipped.
|
|
266
|
-
- **`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.
|
|
267
|
-
- **All other org-model fields** (`core/config/organization-model.ts`) are never written by `/setup`. All other org-model edits go through `/om`, which has its own diff-preview and confirm ceremony.
|
|
268
|
-
|
|
269
|
-
---
|
|
270
|
-
|
|
271
|
-
## Relationship to /om
|
|
272
|
-
|
|
273
|
-
`/setup` is a thin bootstrap wrapper. It:
|
|
274
|
-
|
|
275
|
-
1. Replaces scaffold placeholders (project name, slug, description)
|
|
276
|
-
2. Fills lightweight CLAUDE.md knowledge sections (user and client basics, idempotent)
|
|
277
|
-
3. Writes the client brief into `identity.clientBrief` in the org model (confirm-before-write, idempotent)
|
|
278
|
-
4. Installs dependencies and verifies the build
|
|
279
|
-
5. Hands off to `/om` for full org-model configuration
|
|
280
|
-
|
|
281
|
-
`/om` owns all other structural org-model editing (identity fields beyond clientBrief, customers, offerings, roles, goals, techStack, systems, actions, labels, and legacy feature compatibility). It is idempotent, confirm-before-overwrite, and includes a runtime validation gate. Re-run `/om` any time organizational reality changes — no need to re-run `/setup`.
|
|
282
|
-
|
|
283
|
-
---
|
|
284
|
-
|
|
285
|
-
## Capability Surface
|
|
286
|
-
|
|
287
|
-
When a user asks what skills or commands are available, do NOT answer from recollection.
|
|
288
|
-
|
|
289
|
-
- **Skill inventory:** Read `.claude/Overview.md` — it is the authoritative list of skills available in this project.
|
|
290
|
-
- **Live CLI capability:** Run `pnpm elevasis-sdk cli` — it outputs every command and domain currently registered in the SDK, grouped by domain.
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: status
|
|
3
|
-
description: Quick project health check
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Status
|
|
7
|
-
|
|
8
|
-
Quick project health check.
|
|
9
|
-
|
|
10
|
-
**Usage:** `/status`
|
|
11
|
-
|
|
12
|
-
## Process
|
|
13
|
-
|
|
14
|
-
### Step 1: Gather Data
|
|
15
|
-
|
|
16
|
-
Run in parallel:
|
|
17
|
-
|
|
18
|
-
1. `git status` - working tree state
|
|
19
|
-
2. `git log --oneline -5` - recent commits
|
|
20
|
-
3. `pnpm test` - test results (root `test` script runs `ui`, `operations`, and `core` checks/tests)
|
|
21
|
-
4. `pnpm -C ui lint` - type check (root has no `lint` script; `lint` only exists in `ui/package.json`)
|
|
22
|
-
|
|
23
|
-
### Step 2: Check Active Work
|
|
24
|
-
|
|
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
|
|
26
|
-
|
|
27
|
-
### Step 3: Report
|
|
28
|
-
|
|
29
|
-
```
|
|
30
|
-
Project Status
|
|
31
|
-
==============
|
|
32
|
-
|
|
33
|
-
Git
|
|
34
|
-
---
|
|
35
|
-
Branch: <branch>
|
|
36
|
-
Clean: Yes/No (N uncommitted changes)
|
|
37
|
-
Last commit: <hash> - <message> (<date>)
|
|
38
|
-
|
|
39
|
-
Tests
|
|
40
|
-
-----
|
|
41
|
-
Result: All passing / N failures
|
|
42
|
-
Details: [if failures, list them]
|
|
43
|
-
|
|
44
|
-
Types
|
|
45
|
-
-----
|
|
46
|
-
Result: Clean / N errors
|
|
47
|
-
Details: [if errors, list them]
|
|
48
|
-
|
|
49
|
-
Docs
|
|
50
|
-
----
|
|
51
|
-
Architecture: N docs
|
|
52
|
-
Features: N docs
|
|
53
|
-
|
|
54
|
-
Active Work (DB)
|
|
55
|
-
----------------
|
|
56
|
-
Projects: N active, N blocked
|
|
57
|
-
- [client 1] (status)
|
|
58
|
-
- [client 2] (status)
|
|
59
|
-
```
|