[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-explore-omni-omni-model-explorer":3,"mdc--ucuq5k-key":40,"related-repo-explore-omni-omni-model-explorer":2680,"related-org-explore-omni-omni-model-explorer":2777},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":29,"repoUrl":30,"updatedAt":31,"license":32,"forks":33,"topics":34,"repo":35,"sourceUrl":38,"mdContent":39},"omni-model-explorer","discover and inspect Omni Analytics models","Discover and inspect Omni Analytics models, topics, views, fields, dimensions, measures, and relationships using the Omni CLI. Use this skill whenever someone wants to understand what data is available in Omni, explore their semantic model, find specific fields or views, check how tables join together, see what topics exist, or asks any variant of \"what can I query\", \"what fields are available\", \"show me the model\", \"what data do we have\", or \"how is this data modeled\". Also use when you need to understand the Omni model structure before building or modifying anything.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"explore-omni","Explore Omni","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fexplore-omni.png","exploreomni",[13,17,20,23,26],{"name":14,"slug":15,"type":16},"Omni","omni","tag",{"name":18,"slug":19,"type":16},"Data Analysis","data-analysis",{"name":21,"slug":22,"type":16},"CLI","cli",{"name":24,"slug":25,"type":16},"Knowledge Management","knowledge-management",{"name":27,"slug":28,"type":16},"Analytics","analytics",27,"https:\u002F\u002Fgithub.com\u002Fexploreomni\u002Fomni-agent-skills","2026-04-06T18:11:00.739003",null,3,[],{"repoUrl":30,"stars":29,"forks":33,"topics":36,"description":37},[],"A collection of skill for working with Omni. These skills help AI agents understand and execute Omni workflows more effectively.","https:\u002F\u002Fgithub.com\u002Fexploreomni\u002Fomni-agent-skills\u002Ftree\u002FHEAD\u002Fskills\u002Fomni-model-explorer","---\nname: omni-model-explorer\ndescription: Discover and inspect Omni Analytics models, topics, views, fields, dimensions, measures, and relationships using the Omni CLI. Use this skill whenever someone wants to understand what data is available in Omni, explore their semantic model, find specific fields or views, check how tables join together, see what topics exist, or asks any variant of \"what can I query\", \"what fields are available\", \"show me the model\", \"what data do we have\", or \"how is this data modeled\". Also use when you need to understand the Omni model structure before building or modifying anything.\n---\n\n# Omni Model Explorer\n\nExplore and understand an Omni semantic model through the Omni CLI. This is the starting point — understand what exists before building, querying, or modifying anything.\n\n> **Tip**: Start with the **Shared** model — it contains the curated analytics layer.\n\n## Prerequisites\n\nConfigure the Omni CLI:\n\n```bash\n# Verify the Omni CLI is installed — if not, ask the user to install it\n# See: https:\u002F\u002Fgithub.com\u002Fexploreomni\u002Fcli#readme\ncommand -v omni >\u002Fdev\u002Fnull || echo \"ERROR: Omni CLI is not installed.\"\n```\n\n```bash\n# Show available profiles and select the appropriate one\nomni config show\n# If multiple profiles exist, ask the user which to use, then switch:\nomni config use \u003Cprofile-name>\n\n# Confirm the active profile is authenticated and inspect your permissions:\nomni whoami whoami\n```\n\n> **Auth**: a profile authenticates with an **API key** or **OAuth**. If `whoami` (or any call) returns **401**, hand off — ask the user to run `! omni config login \u003Cprofile>` (OAuth 2.1 browser flow; it blocks ~2 min on the browser). Don't run `config login` yourself in a headless\u002FCI session (no browser → timeout); on a local interactive machine you *may*. See the **`omni-api-conventions`** rule for profile setup (`omni config init --auth oauth`) and discovering request-body shapes with `--schema`.\n\nAPI keys: Settings > API Keys (Organization Admin) or User Profile > Manage Account > Generate Token (Personal Access Token).\n\n## Discovering Commands\n\nWhen unsure what operations or flags are available:\n\n```bash\nomni models --help              # List all model operations\nomni models \u003Coperation> --help  # Show flags and positional args\n```\n\n> **Tip**: Use `-o json` to force structured output for programmatic parsing, or `-o human` for readable tables. The default is `auto` (human in a TTY, JSON when piped).\n\n## Core Workflow\n\nExplore top-down: **List models → Pick a model → List topics → Inspect a topic → Explore views and fields**.\n\n### Step 1: List Available Models\n\n```bash\nomni models list\n```\n\nReturns models with `id`, `name`, `connectionId`, and `modelKind` (SCHEMA or SHARED). Use the SHARED model — it contains the curated semantic layer.\n\nTo also see active branches on each model:\n\n```bash\nomni models list --include activeBranches\n```\n\nEach model in the response will include a `branches` array. Each branch has an `id` (UUID) and `name` — use the `id` as the `branchId` parameter in other API calls.\n\n### Step 2: List Topics in a Model\n\nTopics are entry points for querying. Each topic defines a base view and the set of joined views available.\n\n```bash\nomni models list-topics \u003CmodelId>\n```\n\nReturns topic names, base views, labels, and descriptions.\n\n### Step 3: Inspect a Topic\n\nGet full detail including all views, dimensions, measures, relationships, and AI context:\n\n```bash\nomni models get-topic \u003CmodelId> \u003CtopicName>\n```\n\nThe response includes:\n- `base_view_name` — the primary table\n- `views[]` — all accessible views, each with `dimensions[]` and `measures[]`\n- `relationships[]` — how views join together\n- `default_filters` — filters applied by default\n- `ai_context` — instructions for Blobby (Omni's AI)\n- `sample_queries` and AI field-selection metadata when configured\n\n### Step 4: Read the Model YAML\n\nFor the full semantic model definition:\n\n```bash\n# All YAML files\nomni models yaml-get \u003CmodelId>\n\n# Specific file\nomni models yaml-get \u003CmodelId> --filename order_items.view\n\n# Regex filter\nomni models yaml-get \u003CmodelId> --filename '.*sales.*'\n\n# From a branch (branchId is a UUID from the list models response)\nomni models yaml-get \u003CmodelId> --branchid \u003CbranchId>\n```\n\nThe `mode` parameter: `combined` (default) merges schema + shared model; `extension` shows only shared model customizations.\n\nThe `files` map is keyed by each file's **full stored path** (e.g. `MARTS\u002Forder_items.view`), and `--filename` is a regex on read. Reuse that exact key — including any folder prefix — when editing with `omni-model-builder`; a shortened name creates a duplicate instead of editing the original.\n\n## Model Architecture\n\nOmni has three layers:\n\n1. **Schema Model** — auto-generated from your database (read-only)\n2. **Shared Model** — analytics engineer customizations (dimensions, measures, labels, topics, AI context)\n3. **Workbook Model** — per-dashboard customizations (ad-hoc, not shared)\n\nWhen exploring, use the `combined` view to see everything available.\n\n## Key Concepts\n\n**Views** correspond to database tables. Each has dimensions (groupable fields) and measures (aggregations).\n\n**Topics** join views together into queryable units — curated starting points for analysis. A topic has a base view, joined views, default filters, and AI context.\n\n**Relationships** define joins: `join_from_view`, `join_to_view`, `on_sql`, `relationship_type` (one_to_one, many_to_one, one_to_many, many_to_many), and `join_type` (always_left, inner, full_outer).\n\n**Field naming**: `view_name.field_name` with bracket notation for date granularity: `orders.created_at[week]`.\n\n## Exploration Patterns\n\n**\"What data do we have about X?\"** — List topics → inspect the most relevant one → review views and fields.\n\n**\"How do these tables relate?\"** — Inspect the topic's `relationships[]` — check `join_from_view`, `join_to_view`, `on_sql`, and `relationship_type`.\n\n**\"What measures are available for Y?\"** — Inspect the topic containing view Y → review the `measures[]` array with `aggregate_type` and `sql` definitions.\n\n## Fallback: Expected View Missing from `yaml-get`\n\nUse this pattern only when normal exploration comes up short — the user names a specific view and it's absent from the `yaml-get` or `get-topic` response, or a relationship references a view that doesn't appear. If `yaml-get` returned what you expected, skip this section.\n\n**Why it happens:** `yaml-get` only returns views from currently-loaded schemas. If a schema is **offloaded or inactive**, its views won't show up. The `get-schemas` call surfaces *all* schemas the connection knows about — including offloaded and inactive ones — so it's the right next step before telling the user \"not found.\"\n\n**Two-step recovery:**\n\n```bash\n# 1. List every schema (loaded, offloaded, and inactive)\nomni models get-schemas \u003CmodelId>\n# → {\"schemas\": [\"ANALYTICS\", \"PUBLIC\", \"STAGING\", ...]}\n\n# 2. If the target schema is in the list, load just that schema\nomni models yaml-get \u003CmodelId> --includeschemas PUBLIC\n```\n\n**If the schema isn't in the list at all**, this isn't a lazy-load issue — the connection likely doesn't have access or the schema isn't synced. Check with a Connection Admin.\n\n**Rules for `--includeschemas`:**\n- Accepts exactly **one schema name** per call — commas are rejected by the API. Load schemas one at a time if you need multiple.\n- When set, the response contains only views belonging to that schema. Relationships are preserved even when they reference views in other schemas.\n- To scope to a branch, add `--branchid \u003Cid>` to `yaml-get` or `--branch-id \u003Cid>` to `get-schemas` (the flag names differ per command — this matches the API's underlying casing).\n\n## Calculation Fields\n\nCalculation fields in the model use a different format than regular dimensions\u002Fmeasures. The field key is `calc_name` and the expression property is `sql_expression` — not `name`\u002F`sql`.\n\n## AI Context Inspection\n\nWhen the user asks what Blobby knows about a topic, inspect the topic and report the actual AI configuration — do not infer it from field names:\n\n```bash\nomni models get-topic \u003CmodelId> \u003CtopicName>\nomni models yaml-get \u003CmodelId> --filename '\u003CtopicName>\\.topic'\n```\n\nRead `ai_context`, `sample_queries`, and AI field-selection values. Depending on CLI\u002FAPI shape, `get-topic` may wrap these under a top-level `topic` object; if a top-level `ai_context` is null, check `topic.ai_context` before concluding none exists. If `get-topic` does not expose the full `ai_fields` list, read the topic YAML and report the configured `ai_fields` there. Include configured sample query names\u002Fprompts and the fields they exercise when present.\n\n## Field Impact Analysis\n\nAssess the blast radius of a field migration or removal before pushing changes to dbt:\n\n1. **Create a model branch** where the field is actually absent before running validator checks:\n\n```bash\nomni models create-branch \u003CmodelId> --name \"field-impact-\u003Cfield-name>\"\n```\n\nThen use the right setup for the change being tested:\n- **Database column deletion\u002Frename**: refresh the schema on the branch after the warehouse change is present, then validate the branch.\n- **Model-only field removal\u002Frename**: write the modified YAML to the branch with `omni models yaml-create`, using the exact `fileName` key returned by `yaml-get`.\n\n`yaml-create` accepts the update as a JSON body, not separate `--filename` or `--branchid` flags:\n\n```bash\nomni models yaml-create \u003CmodelId> \\\n  --body '{\"branchId\":\"\u003CbranchId>\",\"fileName\":\"public\u002Forder_items.view\",\"yaml\":\"\u003Cfull modified YAML string>\"}'\n```\n\nUse the response and `yaml-get --branchid` readback to verify the file was written to the branch. For model-only field removal impact, remove the field's own definition from the branch YAML, but leave existing dependent field references in place unless the user's planned change also removes them. Those unresolved references are what `omni models validate` uses to reveal dependent measures, dimensions, topics, and joins that would break.\n\nDo not reuse an existing branch unless `yaml-get --branchid \u003CbranchId>` proves the target field is absent or renamed there. A branch with a matching name but unchanged YAML is not a valid blast-radius branch.\n\n2. **Validate the branch setup** before interpreting content results:\n\n```bash\nomni models yaml-get \u003CmodelId> --filename '\u003CviewName>\\.view' --branchid \u003CbranchId>\nomni models validate \u003CmodelId> --branchid \u003CbranchId>\n```\n\nVerify the field definition precisely, not with a whole-file substring search. For example, `sale_price` may still appear in `sql: ${sale_price}` after the `dimensions: sale_price: {}` definition has been removed; that is a valid impact-test branch and should be reported as a dependent reference. If the original field definition still appears in branch YAML, say the branch setup is invalid and do not claim validator results represent removal impact.\n\n3. **Run the content validator** against the verified branch:\n\n```bash\nomni models content-validator-get \u003CmodelId> --branch-id \u003CbranchId>\n```\n\nThis returns all dashboards and tiles with broken references to the removed field.\n\n4. **Search model YAML** for additional references (run in parallel with step 3):\n\n```bash\nomni models yaml-get \u003CmodelId> --filename '.*'\n```\n\nSearch the response for the field name to find references in other views, topics, and calculated fields.\n\n5. **Report**: Combine branch validation, content-validator results (broken dashboards\u002Ftiles), and YAML search results (model references) into a structured blast-radius report. Separate direct field references, cascading references through dependent fields, raw SQL column references, and saved-content breakage.\n\n> Do NOT paginate documents and check queries individually — the content validator does this for you in one call.\n\n## Docs Reference\n\n- [Models API](https:\u002F\u002Fdocs.omni.co\u002Fapi\u002Fmodels.md) · [Topics API](https:\u002F\u002Fdocs.omni.co\u002Fapi\u002Ftopics.md) · [Modeling Overview](https:\u002F\u002Fdocs.omni.co\u002Fmodeling.md) · [Views](https:\u002F\u002Fdocs.omni.co\u002Fmodeling\u002Fviews.md) · [Topics](https:\u002F\u002Fdocs.omni.co\u002Fmodeling\u002Ftopics\u002Fparameters.md) · [Dimensions](https:\u002F\u002Fdocs.omni.co\u002Fmodeling\u002Fdimensions.md) · [Measures](https:\u002F\u002Fdocs.omni.co\u002Fmodeling\u002Fmeasures.md)\n- [List model schemas](https:\u002F\u002Fdocs.omni.co\u002Fapi\u002Fmodels\u002Flist-model-schemas) · [Get model YAML](https:\u002F\u002Fdocs.omni.co\u002Fapi\u002Fmodels\u002Fget-model-yaml)\n\n## Related Skills\n\n- **omni-model-builder** — create or modify views, topics, and fields\n- **omni-query** — run queries against discovered fields\n- **omni-ai-optimizer** — inspect and improve AI context on topics\n",{"data":41,"body":42},{"name":4,"description":6},{"type":43,"children":44},"root",[45,53,59,81,88,93,182,298,391,396,402,407,475,511,517,528,535,558,594,599,632,674,680,685,726,731,737,742,798,803,888,894,899,1139,1168,1211,1217,1222,1256,1268,1274,1284,1294,1341,1366,1372,1382,1423,1455,1467,1493,1532,1540,1651,1661,1677,1730,1736,1770,1776,1781,1883,1953,1959,1964,1977,2034,2039,2084,2109,2174,2195,2208,2221,2349,2378,2391,2451,2456,2469,2524,2529,2542,2550,2556,2636,2642,2674],{"type":46,"tag":47,"props":48,"children":49},"element","h1",{"id":4},[50],{"type":51,"value":52},"text","Omni Model Explorer",{"type":46,"tag":54,"props":55,"children":56},"p",{},[57],{"type":51,"value":58},"Explore and understand an Omni semantic model through the Omni CLI. This is the starting point — understand what exists before building, querying, or modifying anything.",{"type":46,"tag":60,"props":61,"children":62},"blockquote",{},[63],{"type":46,"tag":54,"props":64,"children":65},{},[66,72,74,79],{"type":46,"tag":67,"props":68,"children":69},"strong",{},[70],{"type":51,"value":71},"Tip",{"type":51,"value":73},": Start with the ",{"type":46,"tag":67,"props":75,"children":76},{},[77],{"type":51,"value":78},"Shared",{"type":51,"value":80}," model — it contains the curated analytics layer.",{"type":46,"tag":82,"props":83,"children":85},"h2",{"id":84},"prerequisites",[86],{"type":51,"value":87},"Prerequisites",{"type":46,"tag":54,"props":89,"children":90},{},[91],{"type":51,"value":92},"Configure the Omni CLI:",{"type":46,"tag":94,"props":95,"children":100},"pre",{"className":96,"code":97,"language":98,"meta":99,"style":99},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Verify the Omni CLI is installed — if not, ask the user to install it\n# See: https:\u002F\u002Fgithub.com\u002Fexploreomni\u002Fcli#readme\ncommand -v omni >\u002Fdev\u002Fnull || echo \"ERROR: Omni CLI is not installed.\"\n","bash","",[101],{"type":46,"tag":102,"props":103,"children":104},"code",{"__ignoreMap":99},[105,117,126],{"type":46,"tag":106,"props":107,"children":110},"span",{"class":108,"line":109},"line",1,[111],{"type":46,"tag":106,"props":112,"children":114},{"style":113},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[115],{"type":51,"value":116},"# Verify the Omni CLI is installed — if not, ask the user to install it\n",{"type":46,"tag":106,"props":118,"children":120},{"class":108,"line":119},2,[121],{"type":46,"tag":106,"props":122,"children":123},{"style":113},[124],{"type":51,"value":125},"# See: https:\u002F\u002Fgithub.com\u002Fexploreomni\u002Fcli#readme\n",{"type":46,"tag":106,"props":127,"children":128},{"class":108,"line":33},[129,135,141,146,152,157,162,167,172,177],{"type":46,"tag":106,"props":130,"children":132},{"style":131},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[133],{"type":51,"value":134},"command",{"type":46,"tag":106,"props":136,"children":138},{"style":137},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[139],{"type":51,"value":140}," -v",{"type":46,"tag":106,"props":142,"children":143},{"style":137},[144],{"type":51,"value":145}," omni",{"type":46,"tag":106,"props":147,"children":149},{"style":148},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[150],{"type":51,"value":151}," >",{"type":46,"tag":106,"props":153,"children":154},{"style":137},[155],{"type":51,"value":156},"\u002Fdev\u002Fnull",{"type":46,"tag":106,"props":158,"children":159},{"style":148},[160],{"type":51,"value":161}," ||",{"type":46,"tag":106,"props":163,"children":164},{"style":131},[165],{"type":51,"value":166}," echo",{"type":46,"tag":106,"props":168,"children":169},{"style":148},[170],{"type":51,"value":171}," \"",{"type":46,"tag":106,"props":173,"children":174},{"style":137},[175],{"type":51,"value":176},"ERROR: Omni CLI is not installed.",{"type":46,"tag":106,"props":178,"children":179},{"style":148},[180],{"type":51,"value":181},"\"\n",{"type":46,"tag":94,"props":183,"children":185},{"className":96,"code":184,"language":98,"meta":99,"style":99},"# Show available profiles and select the appropriate one\nomni config show\n# If multiple profiles exist, ask the user which to use, then switch:\nomni config use \u003Cprofile-name>\n\n# Confirm the active profile is authenticated and inspect your permissions:\nomni whoami whoami\n",[186],{"type":46,"tag":102,"props":187,"children":188},{"__ignoreMap":99},[189,197,215,223,261,271,280],{"type":46,"tag":106,"props":190,"children":191},{"class":108,"line":109},[192],{"type":46,"tag":106,"props":193,"children":194},{"style":113},[195],{"type":51,"value":196},"# Show available profiles and select the appropriate one\n",{"type":46,"tag":106,"props":198,"children":199},{"class":108,"line":119},[200,205,210],{"type":46,"tag":106,"props":201,"children":203},{"style":202},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[204],{"type":51,"value":15},{"type":46,"tag":106,"props":206,"children":207},{"style":137},[208],{"type":51,"value":209}," config",{"type":46,"tag":106,"props":211,"children":212},{"style":137},[213],{"type":51,"value":214}," show\n",{"type":46,"tag":106,"props":216,"children":217},{"class":108,"line":33},[218],{"type":46,"tag":106,"props":219,"children":220},{"style":113},[221],{"type":51,"value":222},"# If multiple profiles exist, ask the user which to use, then switch:\n",{"type":46,"tag":106,"props":224,"children":226},{"class":108,"line":225},4,[227,231,235,240,245,250,256],{"type":46,"tag":106,"props":228,"children":229},{"style":202},[230],{"type":51,"value":15},{"type":46,"tag":106,"props":232,"children":233},{"style":137},[234],{"type":51,"value":209},{"type":46,"tag":106,"props":236,"children":237},{"style":137},[238],{"type":51,"value":239}," use",{"type":46,"tag":106,"props":241,"children":242},{"style":148},[243],{"type":51,"value":244}," \u003C",{"type":46,"tag":106,"props":246,"children":247},{"style":137},[248],{"type":51,"value":249},"profile-nam",{"type":46,"tag":106,"props":251,"children":253},{"style":252},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[254],{"type":51,"value":255},"e",{"type":46,"tag":106,"props":257,"children":258},{"style":148},[259],{"type":51,"value":260},">\n",{"type":46,"tag":106,"props":262,"children":264},{"class":108,"line":263},5,[265],{"type":46,"tag":106,"props":266,"children":268},{"emptyLinePlaceholder":267},true,[269],{"type":51,"value":270},"\n",{"type":46,"tag":106,"props":272,"children":274},{"class":108,"line":273},6,[275],{"type":46,"tag":106,"props":276,"children":277},{"style":113},[278],{"type":51,"value":279},"# Confirm the active profile is authenticated and inspect your permissions:\n",{"type":46,"tag":106,"props":281,"children":283},{"class":108,"line":282},7,[284,288,293],{"type":46,"tag":106,"props":285,"children":286},{"style":202},[287],{"type":51,"value":15},{"type":46,"tag":106,"props":289,"children":290},{"style":137},[291],{"type":51,"value":292}," whoami",{"type":46,"tag":106,"props":294,"children":295},{"style":137},[296],{"type":51,"value":297}," whoami\n",{"type":46,"tag":60,"props":299,"children":300},{},[301],{"type":46,"tag":54,"props":302,"children":303},{},[304,309,311,316,318,323,325,331,333,338,340,346,348,354,356,362,364,373,375,381,383,389],{"type":46,"tag":67,"props":305,"children":306},{},[307],{"type":51,"value":308},"Auth",{"type":51,"value":310},": a profile authenticates with an ",{"type":46,"tag":67,"props":312,"children":313},{},[314],{"type":51,"value":315},"API key",{"type":51,"value":317}," or ",{"type":46,"tag":67,"props":319,"children":320},{},[321],{"type":51,"value":322},"OAuth",{"type":51,"value":324},". If ",{"type":46,"tag":102,"props":326,"children":328},{"className":327},[],[329],{"type":51,"value":330},"whoami",{"type":51,"value":332}," (or any call) returns ",{"type":46,"tag":67,"props":334,"children":335},{},[336],{"type":51,"value":337},"401",{"type":51,"value":339},", hand off — ask the user to run ",{"type":46,"tag":102,"props":341,"children":343},{"className":342},[],[344],{"type":51,"value":345},"! omni config login \u003Cprofile>",{"type":51,"value":347}," (OAuth 2.1 browser flow; it blocks ~2 min on the browser). Don't run ",{"type":46,"tag":102,"props":349,"children":351},{"className":350},[],[352],{"type":51,"value":353},"config login",{"type":51,"value":355}," yourself in a headless\u002FCI session (no browser → timeout); on a local interactive machine you ",{"type":46,"tag":357,"props":358,"children":359},"em",{},[360],{"type":51,"value":361},"may",{"type":51,"value":363},". See the ",{"type":46,"tag":67,"props":365,"children":366},{},[367],{"type":46,"tag":102,"props":368,"children":370},{"className":369},[],[371],{"type":51,"value":372},"omni-api-conventions",{"type":51,"value":374}," rule for profile setup (",{"type":46,"tag":102,"props":376,"children":378},{"className":377},[],[379],{"type":51,"value":380},"omni config init --auth oauth",{"type":51,"value":382},") and discovering request-body shapes with ",{"type":46,"tag":102,"props":384,"children":386},{"className":385},[],[387],{"type":51,"value":388},"--schema",{"type":51,"value":390},".",{"type":46,"tag":54,"props":392,"children":393},{},[394],{"type":51,"value":395},"API keys: Settings > API Keys (Organization Admin) or User Profile > Manage Account > Generate Token (Personal Access Token).",{"type":46,"tag":82,"props":397,"children":399},{"id":398},"discovering-commands",[400],{"type":51,"value":401},"Discovering Commands",{"type":46,"tag":54,"props":403,"children":404},{},[405],{"type":51,"value":406},"When unsure what operations or flags are available:",{"type":46,"tag":94,"props":408,"children":410},{"className":96,"code":409,"language":98,"meta":99,"style":99},"omni models --help              # List all model operations\nomni models \u003Coperation> --help  # Show flags and positional args\n",[411],{"type":46,"tag":102,"props":412,"children":413},{"__ignoreMap":99},[414,436],{"type":46,"tag":106,"props":415,"children":416},{"class":108,"line":109},[417,421,426,431],{"type":46,"tag":106,"props":418,"children":419},{"style":202},[420],{"type":51,"value":15},{"type":46,"tag":106,"props":422,"children":423},{"style":137},[424],{"type":51,"value":425}," models",{"type":46,"tag":106,"props":427,"children":428},{"style":137},[429],{"type":51,"value":430}," --help",{"type":46,"tag":106,"props":432,"children":433},{"style":113},[434],{"type":51,"value":435},"              # List all model operations\n",{"type":46,"tag":106,"props":437,"children":438},{"class":108,"line":119},[439,443,447,451,456,461,466,470],{"type":46,"tag":106,"props":440,"children":441},{"style":202},[442],{"type":51,"value":15},{"type":46,"tag":106,"props":444,"children":445},{"style":137},[446],{"type":51,"value":425},{"type":46,"tag":106,"props":448,"children":449},{"style":148},[450],{"type":51,"value":244},{"type":46,"tag":106,"props":452,"children":453},{"style":137},[454],{"type":51,"value":455},"operatio",{"type":46,"tag":106,"props":457,"children":458},{"style":252},[459],{"type":51,"value":460},"n",{"type":46,"tag":106,"props":462,"children":463},{"style":148},[464],{"type":51,"value":465},">",{"type":46,"tag":106,"props":467,"children":468},{"style":137},[469],{"type":51,"value":430},{"type":46,"tag":106,"props":471,"children":472},{"style":113},[473],{"type":51,"value":474},"  # Show flags and positional args\n",{"type":46,"tag":60,"props":476,"children":477},{},[478],{"type":46,"tag":54,"props":479,"children":480},{},[481,485,487,493,495,501,503,509],{"type":46,"tag":67,"props":482,"children":483},{},[484],{"type":51,"value":71},{"type":51,"value":486},": Use ",{"type":46,"tag":102,"props":488,"children":490},{"className":489},[],[491],{"type":51,"value":492},"-o json",{"type":51,"value":494}," to force structured output for programmatic parsing, or ",{"type":46,"tag":102,"props":496,"children":498},{"className":497},[],[499],{"type":51,"value":500},"-o human",{"type":51,"value":502}," for readable tables. The default is ",{"type":46,"tag":102,"props":504,"children":506},{"className":505},[],[507],{"type":51,"value":508},"auto",{"type":51,"value":510}," (human in a TTY, JSON when piped).",{"type":46,"tag":82,"props":512,"children":514},{"id":513},"core-workflow",[515],{"type":51,"value":516},"Core Workflow",{"type":46,"tag":54,"props":518,"children":519},{},[520,522,527],{"type":51,"value":521},"Explore top-down: ",{"type":46,"tag":67,"props":523,"children":524},{},[525],{"type":51,"value":526},"List models → Pick a model → List topics → Inspect a topic → Explore views and fields",{"type":51,"value":390},{"type":46,"tag":529,"props":530,"children":532},"h3",{"id":531},"step-1-list-available-models",[533],{"type":51,"value":534},"Step 1: List Available Models",{"type":46,"tag":94,"props":536,"children":538},{"className":96,"code":537,"language":98,"meta":99,"style":99},"omni models list\n",[539],{"type":46,"tag":102,"props":540,"children":541},{"__ignoreMap":99},[542],{"type":46,"tag":106,"props":543,"children":544},{"class":108,"line":109},[545,549,553],{"type":46,"tag":106,"props":546,"children":547},{"style":202},[548],{"type":51,"value":15},{"type":46,"tag":106,"props":550,"children":551},{"style":137},[552],{"type":51,"value":425},{"type":46,"tag":106,"props":554,"children":555},{"style":137},[556],{"type":51,"value":557}," list\n",{"type":46,"tag":54,"props":559,"children":560},{},[561,563,569,571,577,578,584,586,592],{"type":51,"value":562},"Returns models with ",{"type":46,"tag":102,"props":564,"children":566},{"className":565},[],[567],{"type":51,"value":568},"id",{"type":51,"value":570},", ",{"type":46,"tag":102,"props":572,"children":574},{"className":573},[],[575],{"type":51,"value":576},"name",{"type":51,"value":570},{"type":46,"tag":102,"props":579,"children":581},{"className":580},[],[582],{"type":51,"value":583},"connectionId",{"type":51,"value":585},", and ",{"type":46,"tag":102,"props":587,"children":589},{"className":588},[],[590],{"type":51,"value":591},"modelKind",{"type":51,"value":593}," (SCHEMA or SHARED). Use the SHARED model — it contains the curated semantic layer.",{"type":46,"tag":54,"props":595,"children":596},{},[597],{"type":51,"value":598},"To also see active branches on each model:",{"type":46,"tag":94,"props":600,"children":602},{"className":96,"code":601,"language":98,"meta":99,"style":99},"omni models list --include activeBranches\n",[603],{"type":46,"tag":102,"props":604,"children":605},{"__ignoreMap":99},[606],{"type":46,"tag":106,"props":607,"children":608},{"class":108,"line":109},[609,613,617,622,627],{"type":46,"tag":106,"props":610,"children":611},{"style":202},[612],{"type":51,"value":15},{"type":46,"tag":106,"props":614,"children":615},{"style":137},[616],{"type":51,"value":425},{"type":46,"tag":106,"props":618,"children":619},{"style":137},[620],{"type":51,"value":621}," list",{"type":46,"tag":106,"props":623,"children":624},{"style":137},[625],{"type":51,"value":626}," --include",{"type":46,"tag":106,"props":628,"children":629},{"style":137},[630],{"type":51,"value":631}," activeBranches\n",{"type":46,"tag":54,"props":633,"children":634},{},[635,637,643,645,650,652,657,659,664,666,672],{"type":51,"value":636},"Each model in the response will include a ",{"type":46,"tag":102,"props":638,"children":640},{"className":639},[],[641],{"type":51,"value":642},"branches",{"type":51,"value":644}," array. Each branch has an ",{"type":46,"tag":102,"props":646,"children":648},{"className":647},[],[649],{"type":51,"value":568},{"type":51,"value":651}," (UUID) and ",{"type":46,"tag":102,"props":653,"children":655},{"className":654},[],[656],{"type":51,"value":576},{"type":51,"value":658}," — use the ",{"type":46,"tag":102,"props":660,"children":662},{"className":661},[],[663],{"type":51,"value":568},{"type":51,"value":665}," as the ",{"type":46,"tag":102,"props":667,"children":669},{"className":668},[],[670],{"type":51,"value":671},"branchId",{"type":51,"value":673}," parameter in other API calls.",{"type":46,"tag":529,"props":675,"children":677},{"id":676},"step-2-list-topics-in-a-model",[678],{"type":51,"value":679},"Step 2: List Topics in a Model",{"type":46,"tag":54,"props":681,"children":682},{},[683],{"type":51,"value":684},"Topics are entry points for querying. Each topic defines a base view and the set of joined views available.",{"type":46,"tag":94,"props":686,"children":688},{"className":96,"code":687,"language":98,"meta":99,"style":99},"omni models list-topics \u003CmodelId>\n",[689],{"type":46,"tag":102,"props":690,"children":691},{"__ignoreMap":99},[692],{"type":46,"tag":106,"props":693,"children":694},{"class":108,"line":109},[695,699,703,708,712,717,722],{"type":46,"tag":106,"props":696,"children":697},{"style":202},[698],{"type":51,"value":15},{"type":46,"tag":106,"props":700,"children":701},{"style":137},[702],{"type":51,"value":425},{"type":46,"tag":106,"props":704,"children":705},{"style":137},[706],{"type":51,"value":707}," list-topics",{"type":46,"tag":106,"props":709,"children":710},{"style":148},[711],{"type":51,"value":244},{"type":46,"tag":106,"props":713,"children":714},{"style":137},[715],{"type":51,"value":716},"modelI",{"type":46,"tag":106,"props":718,"children":719},{"style":252},[720],{"type":51,"value":721},"d",{"type":46,"tag":106,"props":723,"children":724},{"style":148},[725],{"type":51,"value":260},{"type":46,"tag":54,"props":727,"children":728},{},[729],{"type":51,"value":730},"Returns topic names, base views, labels, and descriptions.",{"type":46,"tag":529,"props":732,"children":734},{"id":733},"step-3-inspect-a-topic",[735],{"type":51,"value":736},"Step 3: Inspect a Topic",{"type":46,"tag":54,"props":738,"children":739},{},[740],{"type":51,"value":741},"Get full detail including all views, dimensions, measures, relationships, and AI context:",{"type":46,"tag":94,"props":743,"children":745},{"className":96,"code":744,"language":98,"meta":99,"style":99},"omni models get-topic \u003CmodelId> \u003CtopicName>\n",[746],{"type":46,"tag":102,"props":747,"children":748},{"__ignoreMap":99},[749],{"type":46,"tag":106,"props":750,"children":751},{"class":108,"line":109},[752,756,760,765,769,773,777,781,785,790,794],{"type":46,"tag":106,"props":753,"children":754},{"style":202},[755],{"type":51,"value":15},{"type":46,"tag":106,"props":757,"children":758},{"style":137},[759],{"type":51,"value":425},{"type":46,"tag":106,"props":761,"children":762},{"style":137},[763],{"type":51,"value":764}," get-topic",{"type":46,"tag":106,"props":766,"children":767},{"style":148},[768],{"type":51,"value":244},{"type":46,"tag":106,"props":770,"children":771},{"style":137},[772],{"type":51,"value":716},{"type":46,"tag":106,"props":774,"children":775},{"style":252},[776],{"type":51,"value":721},{"type":46,"tag":106,"props":778,"children":779},{"style":148},[780],{"type":51,"value":465},{"type":46,"tag":106,"props":782,"children":783},{"style":148},[784],{"type":51,"value":244},{"type":46,"tag":106,"props":786,"children":787},{"style":137},[788],{"type":51,"value":789},"topicNam",{"type":46,"tag":106,"props":791,"children":792},{"style":252},[793],{"type":51,"value":255},{"type":46,"tag":106,"props":795,"children":796},{"style":148},[797],{"type":51,"value":260},{"type":46,"tag":54,"props":799,"children":800},{},[801],{"type":51,"value":802},"The response includes:",{"type":46,"tag":804,"props":805,"children":806},"ul",{},[807,819,844,855,866,877],{"type":46,"tag":808,"props":809,"children":810},"li",{},[811,817],{"type":46,"tag":102,"props":812,"children":814},{"className":813},[],[815],{"type":51,"value":816},"base_view_name",{"type":51,"value":818}," — the primary table",{"type":46,"tag":808,"props":820,"children":821},{},[822,828,830,836,838],{"type":46,"tag":102,"props":823,"children":825},{"className":824},[],[826],{"type":51,"value":827},"views[]",{"type":51,"value":829}," — all accessible views, each with ",{"type":46,"tag":102,"props":831,"children":833},{"className":832},[],[834],{"type":51,"value":835},"dimensions[]",{"type":51,"value":837}," and ",{"type":46,"tag":102,"props":839,"children":841},{"className":840},[],[842],{"type":51,"value":843},"measures[]",{"type":46,"tag":808,"props":845,"children":846},{},[847,853],{"type":46,"tag":102,"props":848,"children":850},{"className":849},[],[851],{"type":51,"value":852},"relationships[]",{"type":51,"value":854}," — how views join together",{"type":46,"tag":808,"props":856,"children":857},{},[858,864],{"type":46,"tag":102,"props":859,"children":861},{"className":860},[],[862],{"type":51,"value":863},"default_filters",{"type":51,"value":865}," — filters applied by default",{"type":46,"tag":808,"props":867,"children":868},{},[869,875],{"type":46,"tag":102,"props":870,"children":872},{"className":871},[],[873],{"type":51,"value":874},"ai_context",{"type":51,"value":876}," — instructions for Blobby (Omni's AI)",{"type":46,"tag":808,"props":878,"children":879},{},[880,886],{"type":46,"tag":102,"props":881,"children":883},{"className":882},[],[884],{"type":51,"value":885},"sample_queries",{"type":51,"value":887}," and AI field-selection metadata when configured",{"type":46,"tag":529,"props":889,"children":891},{"id":890},"step-4-read-the-model-yaml",[892],{"type":51,"value":893},"Step 4: Read the Model YAML",{"type":46,"tag":54,"props":895,"children":896},{},[897],{"type":51,"value":898},"For the full semantic model definition:",{"type":46,"tag":94,"props":900,"children":902},{"className":96,"code":901,"language":98,"meta":99,"style":99},"# All YAML files\nomni models yaml-get \u003CmodelId>\n\n# Specific file\nomni models yaml-get \u003CmodelId> --filename order_items.view\n\n# Regex filter\nomni models yaml-get \u003CmodelId> --filename '.*sales.*'\n\n# From a branch (branchId is a UUID from the list models response)\nomni models yaml-get \u003CmodelId> --branchid \u003CbranchId>\n",[903],{"type":46,"tag":102,"props":904,"children":905},{"__ignoreMap":99},[906,914,946,953,961,1002,1009,1017,1068,1076,1085],{"type":46,"tag":106,"props":907,"children":908},{"class":108,"line":109},[909],{"type":46,"tag":106,"props":910,"children":911},{"style":113},[912],{"type":51,"value":913},"# All YAML files\n",{"type":46,"tag":106,"props":915,"children":916},{"class":108,"line":119},[917,921,925,930,934,938,942],{"type":46,"tag":106,"props":918,"children":919},{"style":202},[920],{"type":51,"value":15},{"type":46,"tag":106,"props":922,"children":923},{"style":137},[924],{"type":51,"value":425},{"type":46,"tag":106,"props":926,"children":927},{"style":137},[928],{"type":51,"value":929}," yaml-get",{"type":46,"tag":106,"props":931,"children":932},{"style":148},[933],{"type":51,"value":244},{"type":46,"tag":106,"props":935,"children":936},{"style":137},[937],{"type":51,"value":716},{"type":46,"tag":106,"props":939,"children":940},{"style":252},[941],{"type":51,"value":721},{"type":46,"tag":106,"props":943,"children":944},{"style":148},[945],{"type":51,"value":260},{"type":46,"tag":106,"props":947,"children":948},{"class":108,"line":33},[949],{"type":46,"tag":106,"props":950,"children":951},{"emptyLinePlaceholder":267},[952],{"type":51,"value":270},{"type":46,"tag":106,"props":954,"children":955},{"class":108,"line":225},[956],{"type":46,"tag":106,"props":957,"children":958},{"style":113},[959],{"type":51,"value":960},"# Specific file\n",{"type":46,"tag":106,"props":962,"children":963},{"class":108,"line":263},[964,968,972,976,980,984,988,992,997],{"type":46,"tag":106,"props":965,"children":966},{"style":202},[967],{"type":51,"value":15},{"type":46,"tag":106,"props":969,"children":970},{"style":137},[971],{"type":51,"value":425},{"type":46,"tag":106,"props":973,"children":974},{"style":137},[975],{"type":51,"value":929},{"type":46,"tag":106,"props":977,"children":978},{"style":148},[979],{"type":51,"value":244},{"type":46,"tag":106,"props":981,"children":982},{"style":137},[983],{"type":51,"value":716},{"type":46,"tag":106,"props":985,"children":986},{"style":252},[987],{"type":51,"value":721},{"type":46,"tag":106,"props":989,"children":990},{"style":148},[991],{"type":51,"value":465},{"type":46,"tag":106,"props":993,"children":994},{"style":137},[995],{"type":51,"value":996}," --filename",{"type":46,"tag":106,"props":998,"children":999},{"style":137},[1000],{"type":51,"value":1001}," order_items.view\n",{"type":46,"tag":106,"props":1003,"children":1004},{"class":108,"line":273},[1005],{"type":46,"tag":106,"props":1006,"children":1007},{"emptyLinePlaceholder":267},[1008],{"type":51,"value":270},{"type":46,"tag":106,"props":1010,"children":1011},{"class":108,"line":282},[1012],{"type":46,"tag":106,"props":1013,"children":1014},{"style":113},[1015],{"type":51,"value":1016},"# Regex filter\n",{"type":46,"tag":106,"props":1018,"children":1020},{"class":108,"line":1019},8,[1021,1025,1029,1033,1037,1041,1045,1049,1053,1058,1063],{"type":46,"tag":106,"props":1022,"children":1023},{"style":202},[1024],{"type":51,"value":15},{"type":46,"tag":106,"props":1026,"children":1027},{"style":137},[1028],{"type":51,"value":425},{"type":46,"tag":106,"props":1030,"children":1031},{"style":137},[1032],{"type":51,"value":929},{"type":46,"tag":106,"props":1034,"children":1035},{"style":148},[1036],{"type":51,"value":244},{"type":46,"tag":106,"props":1038,"children":1039},{"style":137},[1040],{"type":51,"value":716},{"type":46,"tag":106,"props":1042,"children":1043},{"style":252},[1044],{"type":51,"value":721},{"type":46,"tag":106,"props":1046,"children":1047},{"style":148},[1048],{"type":51,"value":465},{"type":46,"tag":106,"props":1050,"children":1051},{"style":137},[1052],{"type":51,"value":996},{"type":46,"tag":106,"props":1054,"children":1055},{"style":148},[1056],{"type":51,"value":1057}," '",{"type":46,"tag":106,"props":1059,"children":1060},{"style":137},[1061],{"type":51,"value":1062},".*sales.*",{"type":46,"tag":106,"props":1064,"children":1065},{"style":148},[1066],{"type":51,"value":1067},"'\n",{"type":46,"tag":106,"props":1069,"children":1071},{"class":108,"line":1070},9,[1072],{"type":46,"tag":106,"props":1073,"children":1074},{"emptyLinePlaceholder":267},[1075],{"type":51,"value":270},{"type":46,"tag":106,"props":1077,"children":1079},{"class":108,"line":1078},10,[1080],{"type":46,"tag":106,"props":1081,"children":1082},{"style":113},[1083],{"type":51,"value":1084},"# From a branch (branchId is a UUID from the list models response)\n",{"type":46,"tag":106,"props":1086,"children":1088},{"class":108,"line":1087},11,[1089,1093,1097,1101,1105,1109,1113,1117,1122,1126,1131,1135],{"type":46,"tag":106,"props":1090,"children":1091},{"style":202},[1092],{"type":51,"value":15},{"type":46,"tag":106,"props":1094,"children":1095},{"style":137},[1096],{"type":51,"value":425},{"type":46,"tag":106,"props":1098,"children":1099},{"style":137},[1100],{"type":51,"value":929},{"type":46,"tag":106,"props":1102,"children":1103},{"style":148},[1104],{"type":51,"value":244},{"type":46,"tag":106,"props":1106,"children":1107},{"style":137},[1108],{"type":51,"value":716},{"type":46,"tag":106,"props":1110,"children":1111},{"style":252},[1112],{"type":51,"value":721},{"type":46,"tag":106,"props":1114,"children":1115},{"style":148},[1116],{"type":51,"value":465},{"type":46,"tag":106,"props":1118,"children":1119},{"style":137},[1120],{"type":51,"value":1121}," --branchid",{"type":46,"tag":106,"props":1123,"children":1124},{"style":148},[1125],{"type":51,"value":244},{"type":46,"tag":106,"props":1127,"children":1128},{"style":137},[1129],{"type":51,"value":1130},"branchI",{"type":46,"tag":106,"props":1132,"children":1133},{"style":252},[1134],{"type":51,"value":721},{"type":46,"tag":106,"props":1136,"children":1137},{"style":148},[1138],{"type":51,"value":260},{"type":46,"tag":54,"props":1140,"children":1141},{},[1142,1144,1150,1152,1158,1160,1166],{"type":51,"value":1143},"The ",{"type":46,"tag":102,"props":1145,"children":1147},{"className":1146},[],[1148],{"type":51,"value":1149},"mode",{"type":51,"value":1151}," parameter: ",{"type":46,"tag":102,"props":1153,"children":1155},{"className":1154},[],[1156],{"type":51,"value":1157},"combined",{"type":51,"value":1159}," (default) merges schema + shared model; ",{"type":46,"tag":102,"props":1161,"children":1163},{"className":1162},[],[1164],{"type":51,"value":1165},"extension",{"type":51,"value":1167}," shows only shared model customizations.",{"type":46,"tag":54,"props":1169,"children":1170},{},[1171,1172,1178,1180,1185,1187,1193,1195,1201,1203,1209],{"type":51,"value":1143},{"type":46,"tag":102,"props":1173,"children":1175},{"className":1174},[],[1176],{"type":51,"value":1177},"files",{"type":51,"value":1179}," map is keyed by each file's ",{"type":46,"tag":67,"props":1181,"children":1182},{},[1183],{"type":51,"value":1184},"full stored path",{"type":51,"value":1186}," (e.g. ",{"type":46,"tag":102,"props":1188,"children":1190},{"className":1189},[],[1191],{"type":51,"value":1192},"MARTS\u002Forder_items.view",{"type":51,"value":1194},"), and ",{"type":46,"tag":102,"props":1196,"children":1198},{"className":1197},[],[1199],{"type":51,"value":1200},"--filename",{"type":51,"value":1202}," is a regex on read. Reuse that exact key — including any folder prefix — when editing with ",{"type":46,"tag":102,"props":1204,"children":1206},{"className":1205},[],[1207],{"type":51,"value":1208},"omni-model-builder",{"type":51,"value":1210},"; a shortened name creates a duplicate instead of editing the original.",{"type":46,"tag":82,"props":1212,"children":1214},{"id":1213},"model-architecture",[1215],{"type":51,"value":1216},"Model Architecture",{"type":46,"tag":54,"props":1218,"children":1219},{},[1220],{"type":51,"value":1221},"Omni has three layers:",{"type":46,"tag":1223,"props":1224,"children":1225},"ol",{},[1226,1236,1246],{"type":46,"tag":808,"props":1227,"children":1228},{},[1229,1234],{"type":46,"tag":67,"props":1230,"children":1231},{},[1232],{"type":51,"value":1233},"Schema Model",{"type":51,"value":1235}," — auto-generated from your database (read-only)",{"type":46,"tag":808,"props":1237,"children":1238},{},[1239,1244],{"type":46,"tag":67,"props":1240,"children":1241},{},[1242],{"type":51,"value":1243},"Shared Model",{"type":51,"value":1245}," — analytics engineer customizations (dimensions, measures, labels, topics, AI context)",{"type":46,"tag":808,"props":1247,"children":1248},{},[1249,1254],{"type":46,"tag":67,"props":1250,"children":1251},{},[1252],{"type":51,"value":1253},"Workbook Model",{"type":51,"value":1255}," — per-dashboard customizations (ad-hoc, not shared)",{"type":46,"tag":54,"props":1257,"children":1258},{},[1259,1261,1266],{"type":51,"value":1260},"When exploring, use the ",{"type":46,"tag":102,"props":1262,"children":1264},{"className":1263},[],[1265],{"type":51,"value":1157},{"type":51,"value":1267}," view to see everything available.",{"type":46,"tag":82,"props":1269,"children":1271},{"id":1270},"key-concepts",[1272],{"type":51,"value":1273},"Key Concepts",{"type":46,"tag":54,"props":1275,"children":1276},{},[1277,1282],{"type":46,"tag":67,"props":1278,"children":1279},{},[1280],{"type":51,"value":1281},"Views",{"type":51,"value":1283}," correspond to database tables. Each has dimensions (groupable fields) and measures (aggregations).",{"type":46,"tag":54,"props":1285,"children":1286},{},[1287,1292],{"type":46,"tag":67,"props":1288,"children":1289},{},[1290],{"type":51,"value":1291},"Topics",{"type":51,"value":1293}," join views together into queryable units — curated starting points for analysis. A topic has a base view, joined views, default filters, and AI context.",{"type":46,"tag":54,"props":1295,"children":1296},{},[1297,1302,1304,1310,1311,1317,1318,1324,1325,1331,1333,1339],{"type":46,"tag":67,"props":1298,"children":1299},{},[1300],{"type":51,"value":1301},"Relationships",{"type":51,"value":1303}," define joins: ",{"type":46,"tag":102,"props":1305,"children":1307},{"className":1306},[],[1308],{"type":51,"value":1309},"join_from_view",{"type":51,"value":570},{"type":46,"tag":102,"props":1312,"children":1314},{"className":1313},[],[1315],{"type":51,"value":1316},"join_to_view",{"type":51,"value":570},{"type":46,"tag":102,"props":1319,"children":1321},{"className":1320},[],[1322],{"type":51,"value":1323},"on_sql",{"type":51,"value":570},{"type":46,"tag":102,"props":1326,"children":1328},{"className":1327},[],[1329],{"type":51,"value":1330},"relationship_type",{"type":51,"value":1332}," (one_to_one, many_to_one, one_to_many, many_to_many), and ",{"type":46,"tag":102,"props":1334,"children":1336},{"className":1335},[],[1337],{"type":51,"value":1338},"join_type",{"type":51,"value":1340}," (always_left, inner, full_outer).",{"type":46,"tag":54,"props":1342,"children":1343},{},[1344,1349,1351,1357,1359,1365],{"type":46,"tag":67,"props":1345,"children":1346},{},[1347],{"type":51,"value":1348},"Field naming",{"type":51,"value":1350},": ",{"type":46,"tag":102,"props":1352,"children":1354},{"className":1353},[],[1355],{"type":51,"value":1356},"view_name.field_name",{"type":51,"value":1358}," with bracket notation for date granularity: ",{"type":46,"tag":102,"props":1360,"children":1362},{"className":1361},[],[1363],{"type":51,"value":1364},"orders.created_at[week]",{"type":51,"value":390},{"type":46,"tag":82,"props":1367,"children":1369},{"id":1368},"exploration-patterns",[1370],{"type":51,"value":1371},"Exploration Patterns",{"type":46,"tag":54,"props":1373,"children":1374},{},[1375,1380],{"type":46,"tag":67,"props":1376,"children":1377},{},[1378],{"type":51,"value":1379},"\"What data do we have about X?\"",{"type":51,"value":1381}," — List topics → inspect the most relevant one → review views and fields.",{"type":46,"tag":54,"props":1383,"children":1384},{},[1385,1390,1392,1397,1399,1404,1405,1410,1411,1416,1417,1422],{"type":46,"tag":67,"props":1386,"children":1387},{},[1388],{"type":51,"value":1389},"\"How do these tables relate?\"",{"type":51,"value":1391}," — Inspect the topic's ",{"type":46,"tag":102,"props":1393,"children":1395},{"className":1394},[],[1396],{"type":51,"value":852},{"type":51,"value":1398}," — check ",{"type":46,"tag":102,"props":1400,"children":1402},{"className":1401},[],[1403],{"type":51,"value":1309},{"type":51,"value":570},{"type":46,"tag":102,"props":1406,"children":1408},{"className":1407},[],[1409],{"type":51,"value":1316},{"type":51,"value":570},{"type":46,"tag":102,"props":1412,"children":1414},{"className":1413},[],[1415],{"type":51,"value":1323},{"type":51,"value":585},{"type":46,"tag":102,"props":1418,"children":1420},{"className":1419},[],[1421],{"type":51,"value":1330},{"type":51,"value":390},{"type":46,"tag":54,"props":1424,"children":1425},{},[1426,1431,1433,1438,1440,1446,1447,1453],{"type":46,"tag":67,"props":1427,"children":1428},{},[1429],{"type":51,"value":1430},"\"What measures are available for Y?\"",{"type":51,"value":1432}," — Inspect the topic containing view Y → review the ",{"type":46,"tag":102,"props":1434,"children":1436},{"className":1435},[],[1437],{"type":51,"value":843},{"type":51,"value":1439}," array with ",{"type":46,"tag":102,"props":1441,"children":1443},{"className":1442},[],[1444],{"type":51,"value":1445},"aggregate_type",{"type":51,"value":837},{"type":46,"tag":102,"props":1448,"children":1450},{"className":1449},[],[1451],{"type":51,"value":1452},"sql",{"type":51,"value":1454}," definitions.",{"type":46,"tag":82,"props":1456,"children":1458},{"id":1457},"fallback-expected-view-missing-from-yaml-get",[1459,1461],{"type":51,"value":1460},"Fallback: Expected View Missing from ",{"type":46,"tag":102,"props":1462,"children":1464},{"className":1463},[],[1465],{"type":51,"value":1466},"yaml-get",{"type":46,"tag":54,"props":1468,"children":1469},{},[1470,1472,1477,1478,1484,1486,1491],{"type":51,"value":1471},"Use this pattern only when normal exploration comes up short — the user names a specific view and it's absent from the ",{"type":46,"tag":102,"props":1473,"children":1475},{"className":1474},[],[1476],{"type":51,"value":1466},{"type":51,"value":317},{"type":46,"tag":102,"props":1479,"children":1481},{"className":1480},[],[1482],{"type":51,"value":1483},"get-topic",{"type":51,"value":1485}," response, or a relationship references a view that doesn't appear. If ",{"type":46,"tag":102,"props":1487,"children":1489},{"className":1488},[],[1490],{"type":51,"value":1466},{"type":51,"value":1492}," returned what you expected, skip this section.",{"type":46,"tag":54,"props":1494,"children":1495},{},[1496,1501,1503,1508,1510,1515,1517,1523,1525,1530],{"type":46,"tag":67,"props":1497,"children":1498},{},[1499],{"type":51,"value":1500},"Why it happens:",{"type":51,"value":1502}," ",{"type":46,"tag":102,"props":1504,"children":1506},{"className":1505},[],[1507],{"type":51,"value":1466},{"type":51,"value":1509}," only returns views from currently-loaded schemas. If a schema is ",{"type":46,"tag":67,"props":1511,"children":1512},{},[1513],{"type":51,"value":1514},"offloaded or inactive",{"type":51,"value":1516},", its views won't show up. The ",{"type":46,"tag":102,"props":1518,"children":1520},{"className":1519},[],[1521],{"type":51,"value":1522},"get-schemas",{"type":51,"value":1524}," call surfaces ",{"type":46,"tag":357,"props":1526,"children":1527},{},[1528],{"type":51,"value":1529},"all",{"type":51,"value":1531}," schemas the connection knows about — including offloaded and inactive ones — so it's the right next step before telling the user \"not found.\"",{"type":46,"tag":54,"props":1533,"children":1534},{},[1535],{"type":46,"tag":67,"props":1536,"children":1537},{},[1538],{"type":51,"value":1539},"Two-step recovery:",{"type":46,"tag":94,"props":1541,"children":1543},{"className":96,"code":1542,"language":98,"meta":99,"style":99},"# 1. List every schema (loaded, offloaded, and inactive)\nomni models get-schemas \u003CmodelId>\n# → {\"schemas\": [\"ANALYTICS\", \"PUBLIC\", \"STAGING\", ...]}\n\n# 2. If the target schema is in the list, load just that schema\nomni models yaml-get \u003CmodelId> --includeschemas PUBLIC\n",[1544],{"type":46,"tag":102,"props":1545,"children":1546},{"__ignoreMap":99},[1547,1555,1587,1595,1602,1610],{"type":46,"tag":106,"props":1548,"children":1549},{"class":108,"line":109},[1550],{"type":46,"tag":106,"props":1551,"children":1552},{"style":113},[1553],{"type":51,"value":1554},"# 1. List every schema (loaded, offloaded, and inactive)\n",{"type":46,"tag":106,"props":1556,"children":1557},{"class":108,"line":119},[1558,1562,1566,1571,1575,1579,1583],{"type":46,"tag":106,"props":1559,"children":1560},{"style":202},[1561],{"type":51,"value":15},{"type":46,"tag":106,"props":1563,"children":1564},{"style":137},[1565],{"type":51,"value":425},{"type":46,"tag":106,"props":1567,"children":1568},{"style":137},[1569],{"type":51,"value":1570}," get-schemas",{"type":46,"tag":106,"props":1572,"children":1573},{"style":148},[1574],{"type":51,"value":244},{"type":46,"tag":106,"props":1576,"children":1577},{"style":137},[1578],{"type":51,"value":716},{"type":46,"tag":106,"props":1580,"children":1581},{"style":252},[1582],{"type":51,"value":721},{"type":46,"tag":106,"props":1584,"children":1585},{"style":148},[1586],{"type":51,"value":260},{"type":46,"tag":106,"props":1588,"children":1589},{"class":108,"line":33},[1590],{"type":46,"tag":106,"props":1591,"children":1592},{"style":113},[1593],{"type":51,"value":1594},"# → {\"schemas\": [\"ANALYTICS\", \"PUBLIC\", \"STAGING\", ...]}\n",{"type":46,"tag":106,"props":1596,"children":1597},{"class":108,"line":225},[1598],{"type":46,"tag":106,"props":1599,"children":1600},{"emptyLinePlaceholder":267},[1601],{"type":51,"value":270},{"type":46,"tag":106,"props":1603,"children":1604},{"class":108,"line":263},[1605],{"type":46,"tag":106,"props":1606,"children":1607},{"style":113},[1608],{"type":51,"value":1609},"# 2. If the target schema is in the list, load just that schema\n",{"type":46,"tag":106,"props":1611,"children":1612},{"class":108,"line":273},[1613,1617,1621,1625,1629,1633,1637,1641,1646],{"type":46,"tag":106,"props":1614,"children":1615},{"style":202},[1616],{"type":51,"value":15},{"type":46,"tag":106,"props":1618,"children":1619},{"style":137},[1620],{"type":51,"value":425},{"type":46,"tag":106,"props":1622,"children":1623},{"style":137},[1624],{"type":51,"value":929},{"type":46,"tag":106,"props":1626,"children":1627},{"style":148},[1628],{"type":51,"value":244},{"type":46,"tag":106,"props":1630,"children":1631},{"style":137},[1632],{"type":51,"value":716},{"type":46,"tag":106,"props":1634,"children":1635},{"style":252},[1636],{"type":51,"value":721},{"type":46,"tag":106,"props":1638,"children":1639},{"style":148},[1640],{"type":51,"value":465},{"type":46,"tag":106,"props":1642,"children":1643},{"style":137},[1644],{"type":51,"value":1645}," --includeschemas",{"type":46,"tag":106,"props":1647,"children":1648},{"style":137},[1649],{"type":51,"value":1650}," PUBLIC\n",{"type":46,"tag":54,"props":1652,"children":1653},{},[1654,1659],{"type":46,"tag":67,"props":1655,"children":1656},{},[1657],{"type":51,"value":1658},"If the schema isn't in the list at all",{"type":51,"value":1660},", this isn't a lazy-load issue — the connection likely doesn't have access or the schema isn't synced. Check with a Connection Admin.",{"type":46,"tag":54,"props":1662,"children":1663},{},[1664],{"type":46,"tag":67,"props":1665,"children":1666},{},[1667,1669,1675],{"type":51,"value":1668},"Rules for ",{"type":46,"tag":102,"props":1670,"children":1672},{"className":1671},[],[1673],{"type":51,"value":1674},"--includeschemas",{"type":51,"value":1676},":",{"type":46,"tag":804,"props":1678,"children":1679},{},[1680,1692,1697],{"type":46,"tag":808,"props":1681,"children":1682},{},[1683,1685,1690],{"type":51,"value":1684},"Accepts exactly ",{"type":46,"tag":67,"props":1686,"children":1687},{},[1688],{"type":51,"value":1689},"one schema name",{"type":51,"value":1691}," per call — commas are rejected by the API. Load schemas one at a time if you need multiple.",{"type":46,"tag":808,"props":1693,"children":1694},{},[1695],{"type":51,"value":1696},"When set, the response contains only views belonging to that schema. Relationships are preserved even when they reference views in other schemas.",{"type":46,"tag":808,"props":1698,"children":1699},{},[1700,1702,1708,1710,1715,1716,1722,1723,1728],{"type":51,"value":1701},"To scope to a branch, add ",{"type":46,"tag":102,"props":1703,"children":1705},{"className":1704},[],[1706],{"type":51,"value":1707},"--branchid \u003Cid>",{"type":51,"value":1709}," to ",{"type":46,"tag":102,"props":1711,"children":1713},{"className":1712},[],[1714],{"type":51,"value":1466},{"type":51,"value":317},{"type":46,"tag":102,"props":1717,"children":1719},{"className":1718},[],[1720],{"type":51,"value":1721},"--branch-id \u003Cid>",{"type":51,"value":1709},{"type":46,"tag":102,"props":1724,"children":1726},{"className":1725},[],[1727],{"type":51,"value":1522},{"type":51,"value":1729}," (the flag names differ per command — this matches the API's underlying casing).",{"type":46,"tag":82,"props":1731,"children":1733},{"id":1732},"calculation-fields",[1734],{"type":51,"value":1735},"Calculation Fields",{"type":46,"tag":54,"props":1737,"children":1738},{},[1739,1741,1747,1749,1755,1757,1762,1764,1769],{"type":51,"value":1740},"Calculation fields in the model use a different format than regular dimensions\u002Fmeasures. The field key is ",{"type":46,"tag":102,"props":1742,"children":1744},{"className":1743},[],[1745],{"type":51,"value":1746},"calc_name",{"type":51,"value":1748}," and the expression property is ",{"type":46,"tag":102,"props":1750,"children":1752},{"className":1751},[],[1753],{"type":51,"value":1754},"sql_expression",{"type":51,"value":1756}," — not ",{"type":46,"tag":102,"props":1758,"children":1760},{"className":1759},[],[1761],{"type":51,"value":576},{"type":51,"value":1763},"\u002F",{"type":46,"tag":102,"props":1765,"children":1767},{"className":1766},[],[1768],{"type":51,"value":1452},{"type":51,"value":390},{"type":46,"tag":82,"props":1771,"children":1773},{"id":1772},"ai-context-inspection",[1774],{"type":51,"value":1775},"AI Context Inspection",{"type":46,"tag":54,"props":1777,"children":1778},{},[1779],{"type":51,"value":1780},"When the user asks what Blobby knows about a topic, inspect the topic and report the actual AI configuration — do not infer it from field names:",{"type":46,"tag":94,"props":1782,"children":1784},{"className":96,"code":1783,"language":98,"meta":99,"style":99},"omni models get-topic \u003CmodelId> \u003CtopicName>\nomni models yaml-get \u003CmodelId> --filename '\u003CtopicName>\\.topic'\n",[1785],{"type":46,"tag":102,"props":1786,"children":1787},{"__ignoreMap":99},[1788,1835],{"type":46,"tag":106,"props":1789,"children":1790},{"class":108,"line":109},[1791,1795,1799,1803,1807,1811,1815,1819,1823,1827,1831],{"type":46,"tag":106,"props":1792,"children":1793},{"style":202},[1794],{"type":51,"value":15},{"type":46,"tag":106,"props":1796,"children":1797},{"style":137},[1798],{"type":51,"value":425},{"type":46,"tag":106,"props":1800,"children":1801},{"style":137},[1802],{"type":51,"value":764},{"type":46,"tag":106,"props":1804,"children":1805},{"style":148},[1806],{"type":51,"value":244},{"type":46,"tag":106,"props":1808,"children":1809},{"style":137},[1810],{"type":51,"value":716},{"type":46,"tag":106,"props":1812,"children":1813},{"style":252},[1814],{"type":51,"value":721},{"type":46,"tag":106,"props":1816,"children":1817},{"style":148},[1818],{"type":51,"value":465},{"type":46,"tag":106,"props":1820,"children":1821},{"style":148},[1822],{"type":51,"value":244},{"type":46,"tag":106,"props":1824,"children":1825},{"style":137},[1826],{"type":51,"value":789},{"type":46,"tag":106,"props":1828,"children":1829},{"style":252},[1830],{"type":51,"value":255},{"type":46,"tag":106,"props":1832,"children":1833},{"style":148},[1834],{"type":51,"value":260},{"type":46,"tag":106,"props":1836,"children":1837},{"class":108,"line":119},[1838,1842,1846,1850,1854,1858,1862,1866,1870,1874,1879],{"type":46,"tag":106,"props":1839,"children":1840},{"style":202},[1841],{"type":51,"value":15},{"type":46,"tag":106,"props":1843,"children":1844},{"style":137},[1845],{"type":51,"value":425},{"type":46,"tag":106,"props":1847,"children":1848},{"style":137},[1849],{"type":51,"value":929},{"type":46,"tag":106,"props":1851,"children":1852},{"style":148},[1853],{"type":51,"value":244},{"type":46,"tag":106,"props":1855,"children":1856},{"style":137},[1857],{"type":51,"value":716},{"type":46,"tag":106,"props":1859,"children":1860},{"style":252},[1861],{"type":51,"value":721},{"type":46,"tag":106,"props":1863,"children":1864},{"style":148},[1865],{"type":51,"value":465},{"type":46,"tag":106,"props":1867,"children":1868},{"style":137},[1869],{"type":51,"value":996},{"type":46,"tag":106,"props":1871,"children":1872},{"style":148},[1873],{"type":51,"value":1057},{"type":46,"tag":106,"props":1875,"children":1876},{"style":137},[1877],{"type":51,"value":1878},"\u003CtopicName>\\.topic",{"type":46,"tag":106,"props":1880,"children":1881},{"style":148},[1882],{"type":51,"value":1067},{"type":46,"tag":54,"props":1884,"children":1885},{},[1886,1888,1893,1894,1899,1901,1906,1908,1914,1916,1921,1923,1929,1931,1936,1938,1944,1946,1951],{"type":51,"value":1887},"Read ",{"type":46,"tag":102,"props":1889,"children":1891},{"className":1890},[],[1892],{"type":51,"value":874},{"type":51,"value":570},{"type":46,"tag":102,"props":1895,"children":1897},{"className":1896},[],[1898],{"type":51,"value":885},{"type":51,"value":1900},", and AI field-selection values. Depending on CLI\u002FAPI shape, ",{"type":46,"tag":102,"props":1902,"children":1904},{"className":1903},[],[1905],{"type":51,"value":1483},{"type":51,"value":1907}," may wrap these under a top-level ",{"type":46,"tag":102,"props":1909,"children":1911},{"className":1910},[],[1912],{"type":51,"value":1913},"topic",{"type":51,"value":1915}," object; if a top-level ",{"type":46,"tag":102,"props":1917,"children":1919},{"className":1918},[],[1920],{"type":51,"value":874},{"type":51,"value":1922}," is null, check ",{"type":46,"tag":102,"props":1924,"children":1926},{"className":1925},[],[1927],{"type":51,"value":1928},"topic.ai_context",{"type":51,"value":1930}," before concluding none exists. If ",{"type":46,"tag":102,"props":1932,"children":1934},{"className":1933},[],[1935],{"type":51,"value":1483},{"type":51,"value":1937}," does not expose the full ",{"type":46,"tag":102,"props":1939,"children":1941},{"className":1940},[],[1942],{"type":51,"value":1943},"ai_fields",{"type":51,"value":1945}," list, read the topic YAML and report the configured ",{"type":46,"tag":102,"props":1947,"children":1949},{"className":1948},[],[1950],{"type":51,"value":1943},{"type":51,"value":1952}," there. Include configured sample query names\u002Fprompts and the fields they exercise when present.",{"type":46,"tag":82,"props":1954,"children":1956},{"id":1955},"field-impact-analysis",[1957],{"type":51,"value":1958},"Field Impact Analysis",{"type":46,"tag":54,"props":1960,"children":1961},{},[1962],{"type":51,"value":1963},"Assess the blast radius of a field migration or removal before pushing changes to dbt:",{"type":46,"tag":1223,"props":1965,"children":1966},{},[1967],{"type":46,"tag":808,"props":1968,"children":1969},{},[1970,1975],{"type":46,"tag":67,"props":1971,"children":1972},{},[1973],{"type":51,"value":1974},"Create a model branch",{"type":51,"value":1976}," where the field is actually absent before running validator checks:",{"type":46,"tag":94,"props":1978,"children":1980},{"className":96,"code":1979,"language":98,"meta":99,"style":99},"omni models create-branch \u003CmodelId> --name \"field-impact-\u003Cfield-name>\"\n",[1981],{"type":46,"tag":102,"props":1982,"children":1983},{"__ignoreMap":99},[1984],{"type":46,"tag":106,"props":1985,"children":1986},{"class":108,"line":109},[1987,1991,1995,2000,2004,2008,2012,2016,2021,2025,2030],{"type":46,"tag":106,"props":1988,"children":1989},{"style":202},[1990],{"type":51,"value":15},{"type":46,"tag":106,"props":1992,"children":1993},{"style":137},[1994],{"type":51,"value":425},{"type":46,"tag":106,"props":1996,"children":1997},{"style":137},[1998],{"type":51,"value":1999}," create-branch",{"type":46,"tag":106,"props":2001,"children":2002},{"style":148},[2003],{"type":51,"value":244},{"type":46,"tag":106,"props":2005,"children":2006},{"style":137},[2007],{"type":51,"value":716},{"type":46,"tag":106,"props":2009,"children":2010},{"style":252},[2011],{"type":51,"value":721},{"type":46,"tag":106,"props":2013,"children":2014},{"style":148},[2015],{"type":51,"value":465},{"type":46,"tag":106,"props":2017,"children":2018},{"style":137},[2019],{"type":51,"value":2020}," --name",{"type":46,"tag":106,"props":2022,"children":2023},{"style":148},[2024],{"type":51,"value":171},{"type":46,"tag":106,"props":2026,"children":2027},{"style":137},[2028],{"type":51,"value":2029},"field-impact-\u003Cfield-name>",{"type":46,"tag":106,"props":2031,"children":2032},{"style":148},[2033],{"type":51,"value":181},{"type":46,"tag":54,"props":2035,"children":2036},{},[2037],{"type":51,"value":2038},"Then use the right setup for the change being tested:",{"type":46,"tag":804,"props":2040,"children":2041},{},[2042,2052],{"type":46,"tag":808,"props":2043,"children":2044},{},[2045,2050],{"type":46,"tag":67,"props":2046,"children":2047},{},[2048],{"type":51,"value":2049},"Database column deletion\u002Frename",{"type":51,"value":2051},": refresh the schema on the branch after the warehouse change is present, then validate the branch.",{"type":46,"tag":808,"props":2053,"children":2054},{},[2055,2060,2062,2068,2070,2076,2078,2083],{"type":46,"tag":67,"props":2056,"children":2057},{},[2058],{"type":51,"value":2059},"Model-only field removal\u002Frename",{"type":51,"value":2061},": write the modified YAML to the branch with ",{"type":46,"tag":102,"props":2063,"children":2065},{"className":2064},[],[2066],{"type":51,"value":2067},"omni models yaml-create",{"type":51,"value":2069},", using the exact ",{"type":46,"tag":102,"props":2071,"children":2073},{"className":2072},[],[2074],{"type":51,"value":2075},"fileName",{"type":51,"value":2077}," key returned by ",{"type":46,"tag":102,"props":2079,"children":2081},{"className":2080},[],[2082],{"type":51,"value":1466},{"type":51,"value":390},{"type":46,"tag":54,"props":2085,"children":2086},{},[2087,2093,2095,2100,2101,2107],{"type":46,"tag":102,"props":2088,"children":2090},{"className":2089},[],[2091],{"type":51,"value":2092},"yaml-create",{"type":51,"value":2094}," accepts the update as a JSON body, not separate ",{"type":46,"tag":102,"props":2096,"children":2098},{"className":2097},[],[2099],{"type":51,"value":1200},{"type":51,"value":317},{"type":46,"tag":102,"props":2102,"children":2104},{"className":2103},[],[2105],{"type":51,"value":2106},"--branchid",{"type":51,"value":2108}," flags:",{"type":46,"tag":94,"props":2110,"children":2112},{"className":96,"code":2111,"language":98,"meta":99,"style":99},"omni models yaml-create \u003CmodelId> \\\n  --body '{\"branchId\":\"\u003CbranchId>\",\"fileName\":\"public\u002Forder_items.view\",\"yaml\":\"\u003Cfull modified YAML string>\"}'\n",[2113],{"type":46,"tag":102,"props":2114,"children":2115},{"__ignoreMap":99},[2116,2153],{"type":46,"tag":106,"props":2117,"children":2118},{"class":108,"line":109},[2119,2123,2127,2132,2136,2140,2144,2148],{"type":46,"tag":106,"props":2120,"children":2121},{"style":202},[2122],{"type":51,"value":15},{"type":46,"tag":106,"props":2124,"children":2125},{"style":137},[2126],{"type":51,"value":425},{"type":46,"tag":106,"props":2128,"children":2129},{"style":137},[2130],{"type":51,"value":2131}," yaml-create",{"type":46,"tag":106,"props":2133,"children":2134},{"style":148},[2135],{"type":51,"value":244},{"type":46,"tag":106,"props":2137,"children":2138},{"style":137},[2139],{"type":51,"value":716},{"type":46,"tag":106,"props":2141,"children":2142},{"style":252},[2143],{"type":51,"value":721},{"type":46,"tag":106,"props":2145,"children":2146},{"style":148},[2147],{"type":51,"value":465},{"type":46,"tag":106,"props":2149,"children":2150},{"style":252},[2151],{"type":51,"value":2152}," \\\n",{"type":46,"tag":106,"props":2154,"children":2155},{"class":108,"line":119},[2156,2161,2165,2170],{"type":46,"tag":106,"props":2157,"children":2158},{"style":137},[2159],{"type":51,"value":2160},"  --body",{"type":46,"tag":106,"props":2162,"children":2163},{"style":148},[2164],{"type":51,"value":1057},{"type":46,"tag":106,"props":2166,"children":2167},{"style":137},[2168],{"type":51,"value":2169},"{\"branchId\":\"\u003CbranchId>\",\"fileName\":\"public\u002Forder_items.view\",\"yaml\":\"\u003Cfull modified YAML string>\"}",{"type":46,"tag":106,"props":2171,"children":2172},{"style":148},[2173],{"type":51,"value":1067},{"type":46,"tag":54,"props":2175,"children":2176},{},[2177,2179,2185,2187,2193],{"type":51,"value":2178},"Use the response and ",{"type":46,"tag":102,"props":2180,"children":2182},{"className":2181},[],[2183],{"type":51,"value":2184},"yaml-get --branchid",{"type":51,"value":2186}," readback to verify the file was written to the branch. For model-only field removal impact, remove the field's own definition from the branch YAML, but leave existing dependent field references in place unless the user's planned change also removes them. Those unresolved references are what ",{"type":46,"tag":102,"props":2188,"children":2190},{"className":2189},[],[2191],{"type":51,"value":2192},"omni models validate",{"type":51,"value":2194}," uses to reveal dependent measures, dimensions, topics, and joins that would break.",{"type":46,"tag":54,"props":2196,"children":2197},{},[2198,2200,2206],{"type":51,"value":2199},"Do not reuse an existing branch unless ",{"type":46,"tag":102,"props":2201,"children":2203},{"className":2202},[],[2204],{"type":51,"value":2205},"yaml-get --branchid \u003CbranchId>",{"type":51,"value":2207}," proves the target field is absent or renamed there. A branch with a matching name but unchanged YAML is not a valid blast-radius branch.",{"type":46,"tag":1223,"props":2209,"children":2210},{"start":119},[2211],{"type":46,"tag":808,"props":2212,"children":2213},{},[2214,2219],{"type":46,"tag":67,"props":2215,"children":2216},{},[2217],{"type":51,"value":2218},"Validate the branch setup",{"type":51,"value":2220}," before interpreting content results:",{"type":46,"tag":94,"props":2222,"children":2224},{"className":96,"code":2223,"language":98,"meta":99,"style":99},"omni models yaml-get \u003CmodelId> --filename '\u003CviewName>\\.view' --branchid \u003CbranchId>\nomni models validate \u003CmodelId> --branchid \u003CbranchId>\n",[2225],{"type":46,"tag":102,"props":2226,"children":2227},{"__ignoreMap":99},[2228,2297],{"type":46,"tag":106,"props":2229,"children":2230},{"class":108,"line":109},[2231,2235,2239,2243,2247,2251,2255,2259,2263,2267,2272,2277,2281,2285,2289,2293],{"type":46,"tag":106,"props":2232,"children":2233},{"style":202},[2234],{"type":51,"value":15},{"type":46,"tag":106,"props":2236,"children":2237},{"style":137},[2238],{"type":51,"value":425},{"type":46,"tag":106,"props":2240,"children":2241},{"style":137},[2242],{"type":51,"value":929},{"type":46,"tag":106,"props":2244,"children":2245},{"style":148},[2246],{"type":51,"value":244},{"type":46,"tag":106,"props":2248,"children":2249},{"style":137},[2250],{"type":51,"value":716},{"type":46,"tag":106,"props":2252,"children":2253},{"style":252},[2254],{"type":51,"value":721},{"type":46,"tag":106,"props":2256,"children":2257},{"style":148},[2258],{"type":51,"value":465},{"type":46,"tag":106,"props":2260,"children":2261},{"style":137},[2262],{"type":51,"value":996},{"type":46,"tag":106,"props":2264,"children":2265},{"style":148},[2266],{"type":51,"value":1057},{"type":46,"tag":106,"props":2268,"children":2269},{"style":137},[2270],{"type":51,"value":2271},"\u003CviewName>\\.view",{"type":46,"tag":106,"props":2273,"children":2274},{"style":148},[2275],{"type":51,"value":2276},"'",{"type":46,"tag":106,"props":2278,"children":2279},{"style":137},[2280],{"type":51,"value":1121},{"type":46,"tag":106,"props":2282,"children":2283},{"style":148},[2284],{"type":51,"value":244},{"type":46,"tag":106,"props":2286,"children":2287},{"style":137},[2288],{"type":51,"value":1130},{"type":46,"tag":106,"props":2290,"children":2291},{"style":252},[2292],{"type":51,"value":721},{"type":46,"tag":106,"props":2294,"children":2295},{"style":148},[2296],{"type":51,"value":260},{"type":46,"tag":106,"props":2298,"children":2299},{"class":108,"line":119},[2300,2304,2308,2313,2317,2321,2325,2329,2333,2337,2341,2345],{"type":46,"tag":106,"props":2301,"children":2302},{"style":202},[2303],{"type":51,"value":15},{"type":46,"tag":106,"props":2305,"children":2306},{"style":137},[2307],{"type":51,"value":425},{"type":46,"tag":106,"props":2309,"children":2310},{"style":137},[2311],{"type":51,"value":2312}," validate",{"type":46,"tag":106,"props":2314,"children":2315},{"style":148},[2316],{"type":51,"value":244},{"type":46,"tag":106,"props":2318,"children":2319},{"style":137},[2320],{"type":51,"value":716},{"type":46,"tag":106,"props":2322,"children":2323},{"style":252},[2324],{"type":51,"value":721},{"type":46,"tag":106,"props":2326,"children":2327},{"style":148},[2328],{"type":51,"value":465},{"type":46,"tag":106,"props":2330,"children":2331},{"style":137},[2332],{"type":51,"value":1121},{"type":46,"tag":106,"props":2334,"children":2335},{"style":148},[2336],{"type":51,"value":244},{"type":46,"tag":106,"props":2338,"children":2339},{"style":137},[2340],{"type":51,"value":1130},{"type":46,"tag":106,"props":2342,"children":2343},{"style":252},[2344],{"type":51,"value":721},{"type":46,"tag":106,"props":2346,"children":2347},{"style":148},[2348],{"type":51,"value":260},{"type":46,"tag":54,"props":2350,"children":2351},{},[2352,2354,2360,2362,2368,2370,2376],{"type":51,"value":2353},"Verify the field definition precisely, not with a whole-file substring search. For example, ",{"type":46,"tag":102,"props":2355,"children":2357},{"className":2356},[],[2358],{"type":51,"value":2359},"sale_price",{"type":51,"value":2361}," may still appear in ",{"type":46,"tag":102,"props":2363,"children":2365},{"className":2364},[],[2366],{"type":51,"value":2367},"sql: ${sale_price}",{"type":51,"value":2369}," after the ",{"type":46,"tag":102,"props":2371,"children":2373},{"className":2372},[],[2374],{"type":51,"value":2375},"dimensions: sale_price: {}",{"type":51,"value":2377}," definition has been removed; that is a valid impact-test branch and should be reported as a dependent reference. If the original field definition still appears in branch YAML, say the branch setup is invalid and do not claim validator results represent removal impact.",{"type":46,"tag":1223,"props":2379,"children":2380},{"start":33},[2381],{"type":46,"tag":808,"props":2382,"children":2383},{},[2384,2389],{"type":46,"tag":67,"props":2385,"children":2386},{},[2387],{"type":51,"value":2388},"Run the content validator",{"type":51,"value":2390}," against the verified branch:",{"type":46,"tag":94,"props":2392,"children":2394},{"className":96,"code":2393,"language":98,"meta":99,"style":99},"omni models content-validator-get \u003CmodelId> --branch-id \u003CbranchId>\n",[2395],{"type":46,"tag":102,"props":2396,"children":2397},{"__ignoreMap":99},[2398],{"type":46,"tag":106,"props":2399,"children":2400},{"class":108,"line":109},[2401,2405,2409,2414,2418,2422,2426,2430,2435,2439,2443,2447],{"type":46,"tag":106,"props":2402,"children":2403},{"style":202},[2404],{"type":51,"value":15},{"type":46,"tag":106,"props":2406,"children":2407},{"style":137},[2408],{"type":51,"value":425},{"type":46,"tag":106,"props":2410,"children":2411},{"style":137},[2412],{"type":51,"value":2413}," content-validator-get",{"type":46,"tag":106,"props":2415,"children":2416},{"style":148},[2417],{"type":51,"value":244},{"type":46,"tag":106,"props":2419,"children":2420},{"style":137},[2421],{"type":51,"value":716},{"type":46,"tag":106,"props":2423,"children":2424},{"style":252},[2425],{"type":51,"value":721},{"type":46,"tag":106,"props":2427,"children":2428},{"style":148},[2429],{"type":51,"value":465},{"type":46,"tag":106,"props":2431,"children":2432},{"style":137},[2433],{"type":51,"value":2434}," --branch-id",{"type":46,"tag":106,"props":2436,"children":2437},{"style":148},[2438],{"type":51,"value":244},{"type":46,"tag":106,"props":2440,"children":2441},{"style":137},[2442],{"type":51,"value":1130},{"type":46,"tag":106,"props":2444,"children":2445},{"style":252},[2446],{"type":51,"value":721},{"type":46,"tag":106,"props":2448,"children":2449},{"style":148},[2450],{"type":51,"value":260},{"type":46,"tag":54,"props":2452,"children":2453},{},[2454],{"type":51,"value":2455},"This returns all dashboards and tiles with broken references to the removed field.",{"type":46,"tag":1223,"props":2457,"children":2458},{"start":225},[2459],{"type":46,"tag":808,"props":2460,"children":2461},{},[2462,2467],{"type":46,"tag":67,"props":2463,"children":2464},{},[2465],{"type":51,"value":2466},"Search model YAML",{"type":51,"value":2468}," for additional references (run in parallel with step 3):",{"type":46,"tag":94,"props":2470,"children":2472},{"className":96,"code":2471,"language":98,"meta":99,"style":99},"omni models yaml-get \u003CmodelId> --filename '.*'\n",[2473],{"type":46,"tag":102,"props":2474,"children":2475},{"__ignoreMap":99},[2476],{"type":46,"tag":106,"props":2477,"children":2478},{"class":108,"line":109},[2479,2483,2487,2491,2495,2499,2503,2507,2511,2515,2520],{"type":46,"tag":106,"props":2480,"children":2481},{"style":202},[2482],{"type":51,"value":15},{"type":46,"tag":106,"props":2484,"children":2485},{"style":137},[2486],{"type":51,"value":425},{"type":46,"tag":106,"props":2488,"children":2489},{"style":137},[2490],{"type":51,"value":929},{"type":46,"tag":106,"props":2492,"children":2493},{"style":148},[2494],{"type":51,"value":244},{"type":46,"tag":106,"props":2496,"children":2497},{"style":137},[2498],{"type":51,"value":716},{"type":46,"tag":106,"props":2500,"children":2501},{"style":252},[2502],{"type":51,"value":721},{"type":46,"tag":106,"props":2504,"children":2505},{"style":148},[2506],{"type":51,"value":465},{"type":46,"tag":106,"props":2508,"children":2509},{"style":137},[2510],{"type":51,"value":996},{"type":46,"tag":106,"props":2512,"children":2513},{"style":148},[2514],{"type":51,"value":1057},{"type":46,"tag":106,"props":2516,"children":2517},{"style":137},[2518],{"type":51,"value":2519},".*",{"type":46,"tag":106,"props":2521,"children":2522},{"style":148},[2523],{"type":51,"value":1067},{"type":46,"tag":54,"props":2525,"children":2526},{},[2527],{"type":51,"value":2528},"Search the response for the field name to find references in other views, topics, and calculated fields.",{"type":46,"tag":1223,"props":2530,"children":2531},{"start":263},[2532],{"type":46,"tag":808,"props":2533,"children":2534},{},[2535,2540],{"type":46,"tag":67,"props":2536,"children":2537},{},[2538],{"type":51,"value":2539},"Report",{"type":51,"value":2541},": Combine branch validation, content-validator results (broken dashboards\u002Ftiles), and YAML search results (model references) into a structured blast-radius report. Separate direct field references, cascading references through dependent fields, raw SQL column references, and saved-content breakage.",{"type":46,"tag":60,"props":2543,"children":2544},{},[2545],{"type":46,"tag":54,"props":2546,"children":2547},{},[2548],{"type":51,"value":2549},"Do NOT paginate documents and check queries individually — the content validator does this for you in one call.",{"type":46,"tag":82,"props":2551,"children":2553},{"id":2552},"docs-reference",[2554],{"type":51,"value":2555},"Docs Reference",{"type":46,"tag":804,"props":2557,"children":2558},{},[2559,2618],{"type":46,"tag":808,"props":2560,"children":2561},{},[2562,2571,2573,2580,2581,2588,2589,2595,2596,2602,2603,2610,2611],{"type":46,"tag":2563,"props":2564,"children":2568},"a",{"href":2565,"rel":2566},"https:\u002F\u002Fdocs.omni.co\u002Fapi\u002Fmodels.md",[2567],"nofollow",[2569],{"type":51,"value":2570},"Models API",{"type":51,"value":2572}," · ",{"type":46,"tag":2563,"props":2574,"children":2577},{"href":2575,"rel":2576},"https:\u002F\u002Fdocs.omni.co\u002Fapi\u002Ftopics.md",[2567],[2578],{"type":51,"value":2579},"Topics API",{"type":51,"value":2572},{"type":46,"tag":2563,"props":2582,"children":2585},{"href":2583,"rel":2584},"https:\u002F\u002Fdocs.omni.co\u002Fmodeling.md",[2567],[2586],{"type":51,"value":2587},"Modeling Overview",{"type":51,"value":2572},{"type":46,"tag":2563,"props":2590,"children":2593},{"href":2591,"rel":2592},"https:\u002F\u002Fdocs.omni.co\u002Fmodeling\u002Fviews.md",[2567],[2594],{"type":51,"value":1281},{"type":51,"value":2572},{"type":46,"tag":2563,"props":2597,"children":2600},{"href":2598,"rel":2599},"https:\u002F\u002Fdocs.omni.co\u002Fmodeling\u002Ftopics\u002Fparameters.md",[2567],[2601],{"type":51,"value":1291},{"type":51,"value":2572},{"type":46,"tag":2563,"props":2604,"children":2607},{"href":2605,"rel":2606},"https:\u002F\u002Fdocs.omni.co\u002Fmodeling\u002Fdimensions.md",[2567],[2608],{"type":51,"value":2609},"Dimensions",{"type":51,"value":2572},{"type":46,"tag":2563,"props":2612,"children":2615},{"href":2613,"rel":2614},"https:\u002F\u002Fdocs.omni.co\u002Fmodeling\u002Fmeasures.md",[2567],[2616],{"type":51,"value":2617},"Measures",{"type":46,"tag":808,"props":2619,"children":2620},{},[2621,2628,2629],{"type":46,"tag":2563,"props":2622,"children":2625},{"href":2623,"rel":2624},"https:\u002F\u002Fdocs.omni.co\u002Fapi\u002Fmodels\u002Flist-model-schemas",[2567],[2626],{"type":51,"value":2627},"List model schemas",{"type":51,"value":2572},{"type":46,"tag":2563,"props":2630,"children":2633},{"href":2631,"rel":2632},"https:\u002F\u002Fdocs.omni.co\u002Fapi\u002Fmodels\u002Fget-model-yaml",[2567],[2634],{"type":51,"value":2635},"Get model YAML",{"type":46,"tag":82,"props":2637,"children":2639},{"id":2638},"related-skills",[2640],{"type":51,"value":2641},"Related Skills",{"type":46,"tag":804,"props":2643,"children":2644},{},[2645,2654,2664],{"type":46,"tag":808,"props":2646,"children":2647},{},[2648,2652],{"type":46,"tag":67,"props":2649,"children":2650},{},[2651],{"type":51,"value":1208},{"type":51,"value":2653}," — create or modify views, topics, and fields",{"type":46,"tag":808,"props":2655,"children":2656},{},[2657,2662],{"type":46,"tag":67,"props":2658,"children":2659},{},[2660],{"type":51,"value":2661},"omni-query",{"type":51,"value":2663}," — run queries against discovered fields",{"type":46,"tag":808,"props":2665,"children":2666},{},[2667,2672],{"type":46,"tag":67,"props":2668,"children":2669},{},[2670],{"type":51,"value":2671},"omni-ai-optimizer",{"type":51,"value":2673}," — inspect and improve AI context on topics",{"type":46,"tag":2675,"props":2676,"children":2677},"style",{},[2678],{"type":51,"value":2679},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":2681,"total":1087},[2682,2692,2704,2718,2734,2748,2764],{"slug":2683,"name":2683,"fn":2684,"description":2685,"org":2686,"tags":2687,"stars":29,"repoUrl":30,"updatedAt":2691},"omni-admin","administer Omni Analytics","Administer an Omni Analytics instance — manage connections, users, groups, user attributes, permissions, schedules, and schema refreshes via the Omni CLI. Use this skill whenever someone wants to manage users or groups, set up permissions on a dashboard or folder, configure user attributes, create or modify schedules, manage database connections, refresh a schema, set up access controls, provision users, or any variant of \"add a user\", \"give access to\", \"set up permissions\", \"who has access\", \"configure connection\", \"refresh the schema\", or \"schedule a delivery\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2688,2689,2690],{"name":27,"slug":28,"type":16},{"name":21,"slug":22,"type":16},{"name":14,"slug":15,"type":16},"2026-04-06T18:10:58.235995",{"slug":2693,"name":2693,"fn":2694,"description":2695,"org":2696,"tags":2697,"stars":29,"repoUrl":30,"updatedAt":2703},"omni-ai-eval","evaluate Omni AI query accuracy","Evaluate Omni AI accuracy using Omni's built-in eval system — define a prompt set, run a judged eval against a model (or branch), and read the accuracy-judge verdicts. Use this skill whenever someone wants to evaluate Omni AI, benchmark Blobby, run regression tests, compare AI output across branches or model-context changes, measure AI quality, run A\u002FB tests on model changes, assess the impact of an ai_context or modeling change, or any variant of \"run evals\", \"test Blobby\", \"benchmark query generation\", \"compare AI results\", \"regression test\", \"how accurate is the AI\", or \"measure the impact of my changes\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2698,2699,2702],{"name":27,"slug":28,"type":16},{"name":2700,"slug":2701,"type":16},"Evals","evals",{"name":14,"slug":15,"type":16},"2026-04-06T18:10:59.485921",{"slug":2671,"name":2671,"fn":2705,"description":2706,"org":2707,"tags":2708,"stars":29,"repoUrl":30,"updatedAt":2717},"optimize Omni models for AI","Optimize your Omni Analytics model for Blobby, the Omni Agent — configure ai_context, ai_fields, synonyms, sample_queries, and AI-specific topic extensions. Use this skill whenever someone wants to improve AI accuracy in Omni, make Blobby smarter, add AI context or example questions, curate which fields the AI sees, personalize AI context by user attribute, scope context to a model tier or agent, diagnose context-window pruning or truncation, control which topics AI can reach, troubleshoot why Blobby gives wrong answers, or any variant of \"make the AI better\", \"Blobby isn't answering correctly\", \"optimize for AI\", or \"teach the AI about our data\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2709,2712,2713,2716],{"name":2710,"slug":2711,"type":16},"AI Context","ai-context",{"name":27,"slug":28,"type":16},{"name":2714,"slug":2715,"type":16},"Data Modeling","data-modeling",{"name":14,"slug":15,"type":16},"2026-07-27T06:09:42.358967",{"slug":2719,"name":2719,"fn":2720,"description":2721,"org":2722,"tags":2723,"stars":29,"repoUrl":30,"updatedAt":2733},"omni-content-builder","manage Omni Analytics documents and dashboards","Create, update, and manage Omni Analytics documents and dashboards programmatically — document lifecycle, drafts, tiles, visualizations, filters, controls, and layouts — using the Omni CLI. Use this skill whenever someone wants to build a dashboard, create a workbook, add tiles or charts, configure dashboard filters or controls, update an existing dashboard's model, set up a KPI view, create visualizations, lay out a dashboard, arrange tiles or pages, create a document, edit a dashboard as a draft, publish a draft, change dashboard settings, rename a workbook, delete a dashboard, move a document to a folder, duplicate a dashboard, or any variant of \"build a dashboard for\", \"create a report showing\", \"add a chart to\", \"make a dashboard\", \"update the dashboard layout\", \"rename this document\", \"publish this draft\", \"move to folder\", or \"delete this dashboard\". Also use when modifying dashboard-level model customizations like workbook-specific joins or fields.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2724,2725,2726,2729,2732],{"name":27,"slug":28,"type":16},{"name":21,"slug":22,"type":16},{"name":2727,"slug":2728,"type":16},"Dashboards","dashboards",{"name":2730,"slug":2731,"type":16},"Data Visualization","data-visualization",{"name":14,"slug":15,"type":16},"2026-04-06T18:11:02.007785",{"slug":2735,"name":2735,"fn":2736,"description":2737,"org":2738,"tags":2739,"stars":29,"repoUrl":30,"updatedAt":2747},"omni-content-explorer","find and organize Omni Analytics content","Find, browse, and organize content in Omni Analytics — dashboards, workbooks, folders, and labels — using the Omni CLI. Use this skill whenever someone wants to find an existing dashboard, search for content, list workbooks, browse folders, see what dashboards exist, find popular reports, download a dashboard as PDF or PNG, favorite content, manage labels on documents, or any variant of \"find the dashboard about\", \"what reports do we have\", \"show me our dashboards\", \"where is the sales report\", or \"download this dashboard\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2740,2741,2742,2743,2744],{"name":27,"slug":28,"type":16},{"name":21,"slug":22,"type":16},{"name":2727,"slug":2728,"type":16},{"name":14,"slug":15,"type":16},{"name":2745,"slug":2746,"type":16},"Search","search","2026-04-06T18:11:04.516766",{"slug":2749,"name":2749,"fn":2750,"description":2751,"org":2752,"tags":2753,"stars":29,"repoUrl":30,"updatedAt":2763},"omni-embed","embed Omni Analytics dashboards","Embed Omni Analytics dashboards in external applications — URL signing, custom themes, iframe events, entity workspaces, and permission-aware content — using the @omni-co\u002Fembed SDK and Omni CLI. Use this skill whenever someone wants to embed a dashboard, sign an embed URL, customize the embedded theme, handle embed events, listen for clicks or drills in the iframe, send filters to an embedded dashboard, set up entity workspaces, look up embed users, build a permission-aware content list, white-label an embedded dashboard, or any variant of \"embed this dashboard\", \"customize the iframe theme\", \"handle click events from the embed\", \"filter the embedded dashboard\", \"set up embedding\", or \"what dashboards can this user see\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2754,2755,2756,2759,2760],{"name":27,"slug":28,"type":16},{"name":2727,"slug":2728,"type":16},{"name":2757,"slug":2758,"type":16},"Frontend","frontend",{"name":14,"slug":15,"type":16},{"name":2761,"slug":2762,"type":16},"SDK","sdk","2026-04-06T18:10:55.739544",{"slug":1208,"name":1208,"fn":2765,"description":2766,"org":2767,"tags":2768,"stars":29,"repoUrl":30,"updatedAt":2776},"build Omni Analytics semantic models","Create and edit Omni Analytics semantic model definitions — views, topics, dimensions, measures, relationships, and query views — using YAML through the Omni CLI. Use this skill whenever someone wants to add a field, create a new dimension or measure, define a topic, set up joins between tables, modify the data model, build a new view, add a calculated field, create a relationship, edit YAML, work on a branch, promote model changes, or any variant of \"model this data\", \"add this metric\", \"create a view for\", or \"set up a join between\". Also use for migrating modeling patterns since Omni's YAML is conceptually similar to other semantic layer definitions.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2769,2770,2771,2772,2773],{"name":27,"slug":28,"type":16},{"name":21,"slug":22,"type":16},{"name":2714,"slug":2715,"type":16},{"name":14,"slug":15,"type":16},{"name":2774,"slug":2775,"type":16},"YAML","yaml","2026-04-06T18:11:05.775943",{"items":2778,"total":1087},[2779,2785,2791,2798,2806,2814,2822,2830,2838,2850,2865],{"slug":2683,"name":2683,"fn":2684,"description":2685,"org":2780,"tags":2781,"stars":29,"repoUrl":30,"updatedAt":2691},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2782,2783,2784],{"name":27,"slug":28,"type":16},{"name":21,"slug":22,"type":16},{"name":14,"slug":15,"type":16},{"slug":2693,"name":2693,"fn":2694,"description":2695,"org":2786,"tags":2787,"stars":29,"repoUrl":30,"updatedAt":2703},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2788,2789,2790],{"name":27,"slug":28,"type":16},{"name":2700,"slug":2701,"type":16},{"name":14,"slug":15,"type":16},{"slug":2671,"name":2671,"fn":2705,"description":2706,"org":2792,"tags":2793,"stars":29,"repoUrl":30,"updatedAt":2717},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2794,2795,2796,2797],{"name":2710,"slug":2711,"type":16},{"name":27,"slug":28,"type":16},{"name":2714,"slug":2715,"type":16},{"name":14,"slug":15,"type":16},{"slug":2719,"name":2719,"fn":2720,"description":2721,"org":2799,"tags":2800,"stars":29,"repoUrl":30,"updatedAt":2733},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2801,2802,2803,2804,2805],{"name":27,"slug":28,"type":16},{"name":21,"slug":22,"type":16},{"name":2727,"slug":2728,"type":16},{"name":2730,"slug":2731,"type":16},{"name":14,"slug":15,"type":16},{"slug":2735,"name":2735,"fn":2736,"description":2737,"org":2807,"tags":2808,"stars":29,"repoUrl":30,"updatedAt":2747},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2809,2810,2811,2812,2813],{"name":27,"slug":28,"type":16},{"name":21,"slug":22,"type":16},{"name":2727,"slug":2728,"type":16},{"name":14,"slug":15,"type":16},{"name":2745,"slug":2746,"type":16},{"slug":2749,"name":2749,"fn":2750,"description":2751,"org":2815,"tags":2816,"stars":29,"repoUrl":30,"updatedAt":2763},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2817,2818,2819,2820,2821],{"name":27,"slug":28,"type":16},{"name":2727,"slug":2728,"type":16},{"name":2757,"slug":2758,"type":16},{"name":14,"slug":15,"type":16},{"name":2761,"slug":2762,"type":16},{"slug":1208,"name":1208,"fn":2765,"description":2766,"org":2823,"tags":2824,"stars":29,"repoUrl":30,"updatedAt":2776},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2825,2826,2827,2828,2829],{"name":27,"slug":28,"type":16},{"name":21,"slug":22,"type":16},{"name":2714,"slug":2715,"type":16},{"name":14,"slug":15,"type":16},{"name":2774,"slug":2775,"type":16},{"slug":4,"name":4,"fn":5,"description":6,"org":2831,"tags":2832,"stars":29,"repoUrl":30,"updatedAt":31},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2833,2834,2835,2836,2837],{"name":27,"slug":28,"type":16},{"name":21,"slug":22,"type":16},{"name":18,"slug":19,"type":16},{"name":24,"slug":25,"type":16},{"name":14,"slug":15,"type":16},{"slug":2661,"name":2661,"fn":2839,"description":2840,"org":2841,"tags":2842,"stars":29,"repoUrl":30,"updatedAt":2849},"query Omni Analytics semantic layer","Run queries against Omni Analytics' semantic layer using the Omni CLI, interpret results, and chain queries for multi-step analysis. Use this skill whenever someone wants to query data through Omni, run a report, get metrics, pull numbers, analyze data, ask \"how many\" \u002F \"what's the trend\" \u002F \"show me the data\", retrieve dashboard query results, or extract data from an existing dashboard or workbook. Also use for table calculations and computed columns (running totals, percent-of-total, month-over-month \u002F period-over-period change, moving averages, rankings), open-ended multi-step analysis via agentic AI jobs, and running raw SQL through the semantic layer — even when the user doesn't say \"query\" (e.g. \"add a running total column\", \"what's our MoM growth\", \"analyze revenue trends\"). For building or editing a dashboard or chart use omni-content-builder; for adding a field or measure to the model use omni-model-builder — this skill retrieves and computes over data.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2843,2844,2845,2846,2847],{"name":27,"slug":28,"type":16},{"name":21,"slug":22,"type":16},{"name":18,"slug":19,"type":16},{"name":14,"slug":15,"type":16},{"name":2848,"slug":1452,"type":16},"SQL","2026-04-06T18:10:56.974412",{"slug":2851,"name":2851,"fn":2852,"description":2853,"org":2854,"tags":2855,"stars":29,"repoUrl":30,"updatedAt":2864},"omni-to-databricks-metric-view","convert Omni topics to Databricks Metric Views","Convert an Omni Analytics topic into a Databricks Metric View definition in Unity Catalog. Use this skill whenever someone wants to export Omni metrics to Databricks, create a Metric View from an Omni topic, harden BI metrics into Unity Catalog, or bridge Omni's semantic layer with Databricks AI\u002FBI dashboards and Genie spaces.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2856,2857,2860,2863],{"name":27,"slug":28,"type":16},{"name":2858,"slug":2859,"type":16},"Data Engineering","data-engineering",{"name":2861,"slug":2862,"type":16},"Databricks","databricks",{"name":14,"slug":15,"type":16},"2026-04-09T04:47:50.695014",{"slug":2866,"name":2866,"fn":2867,"description":2868,"org":2869,"tags":2870,"stars":29,"repoUrl":30,"updatedAt":2878},"omni-to-snowflake-semantic-view","convert Omni topics to Snowflake views","Convert an Omni Analytics topic into a Snowflake Semantic View YAML definition. Use this skill whenever someone wants to export Omni metrics to Snowflake, create a Semantic View from an Omni topic, harden BI metrics into the warehouse, or bridge Omni's semantic layer with Snowflake Cortex Analyst.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2871,2872,2873,2874,2877],{"name":27,"slug":28,"type":16},{"name":2858,"slug":2859,"type":16},{"name":14,"slug":15,"type":16},{"name":2875,"slug":2876,"type":16},"Snowflake","snowflake",{"name":2774,"slug":2775,"type":16},"2026-04-06T18:11:25.009706"]