# Vibe Layer: Operate Intent + Codify/Toggle Clarifications

## Why this note exists

The Ambient Vibe Layer gained an eighth intent — **Operate** — that delegates to `/elevasis` for running already-deployed workflows and agents. The canonical rule (`packages/sdk/docs/agent-rules/vibe.md` → published to tenants at `node_modules/@elevasis/sdk/reference/rules/vibe.md`) was updated alongside the template's hand-written intent table (`external/_template/CLAUDE.md` Ambient Vibe Layer section). Two prior drift corrections also landed in the same train: the Codify section now distinguishes asking-about (Describe) from asking-to-change (Codify) so the classifier stops over-proposing codification on plain questions, and the Toggle section clarifies that the intent is tenant-local only (it cannot toggle platform-level Systems).

A new repo gate (`scripts/monorepo/check-vibe-drift.mjs`, wired into `pnpm meta:verify`) now enforces intent-name parity and routing-token coverage between the two surfaces so this kind of drift cannot land silently again. The validator was also de-hardcoded from the seven-intent count so future expansions don't require a global rename.

## Applies to

- All tenants that consume `@elevasis/sdk` and inherit the template `CLAUDE.md` shell.
- Most directly: any project whose agents already route Capture / Query / Describe / Transition / Navigate / Codify / Toggle through vibe. They will start seeing Operate routed to `/elevasis` after this sync.
- `external/nirvana-marketing` is the canonical first downstream consumer.

## Required actions

1. After `/git-sync` runs `pnpm install` and lands the new template CLAUDE.md, confirm your project's `CLAUDE.md` "Ambient Vibe Layer" table contains an **Operate** row. If your tenant has a customized intent table, manually add the row using the form:

   ```
   | Operate | "run", "execute", "launch", "trigger", "kick off", "start" + deployed resource | Delegate to `/elevasis` -- `elevasis-sdk describe` + confirm + `elevasis-sdk exec` |
   ```

2. Verify the `elevasis` skill is present at `.claude/skills/elevasis/SKILL.md`. It ships from the template; if your project removed it intentionally, document that Operate intents will surface a missing-skill notice instead of being executed.

3. If your project carries a tenant-customized Toggle section, confirm it does not attempt platform-level System toggles. Tenant Toggle operates only on the project's own `core/config/organization-model.ts`.

## Verification

- `pnpm exec elevasis-sdk note:create "test"` — sanity-check the SDK CLI still resolves under the post-sync dependency baseline.
- In a fresh Claude session, type "run the X workflow" against any deployed resource. The agent should describe → confirm → exec via the `/elevasis` skill flow. Plain questions ("what does X do?") should stay in Describe and not propose codification.

## Not handled by /git-sync

- **`deploy` skill filename rename** (`.claude/skills/deploy/skill.md` → `SKILL.md`): the template includes the rename, but git is case-insensitive on macOS/Windows. After sync, manually verify the filename is uppercase `SKILL.md`:

  ```
  ls .claude/skills/deploy/
  ```

  If the file is still lowercase `skill.md`, run a two-step rename to force the case change (or use `git mv` if the project's git config is case-sensitive):

  ```
  mv .claude/skills/deploy/skill.md .claude/skills/deploy/SKILL.tmp.md
  mv .claude/skills/deploy/SKILL.tmp.md .claude/skills/deploy/SKILL.md
  ```

- **Tenant-customized Ambient Vibe Layer prose**: `/git-sync` cannot infer what bespoke intent table edits a project has made. The required action above is the human-review checkpoint.
