onelake-catalog-cli
Governs and curates the Microsoft Fabric OneLake catalog through Fabric Admin, Core and Power BI REST APIs. Use for tenant or data-owner governance audits and guarded remediation of domains, workspace assignment, capacity, labels, tag definitions, workspace tags, certification, refresh and item idenβ¦
Install / Use
npx skills add microsoft/skills-for-fabric --skill onelake-catalog-cliInstalls into whichever agent you are using.
SKILL.md
Installable skill definition
Quality Score
Category
Development & EngineeringSupported Platforms
Our assessment of onelake-catalog-cli
onelake-catalog-cli scores 93/100 on our quality scale, 740th of 4,648 Development & Engineering skills we index (top 16%).
Its SKILL.md is 21 KB long, well organised into 12 sections with 6 code examples: a thorough specification that gives an agent plenty to work with.
With 1,181 GitHub stars, it is one of the more widely adopted skills in the catalogue.
Maintenance, license and trust
- The repository was last updated about 2 months ago, so onelake-catalog-cli is actively maintained.
- It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 100/100, with no cautions. These come from repository metadata, not a code audit β read the skill file before letting an agent act on it.
onelake-catalog-cli compared with similar skills
All 4 of these similar skills score higher than onelake-catalog-cli; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| onelake-catalog-cli (this skill)by microsoft | 93 | 1.2k | 52d ago | SKILL.md |
| taste-skillby Leonxlnx | 100 | 112.0k | 1d ago | CLAUDE.md |
| Agent-Reachby Panniantong | 100 | 110.3k | 1d ago | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 79.1k | today | CLAUDE.md |
| ai-job-searchby ai-job-search-dev | 100 | 70.5k | today | CLAUDE.md |
Frequently asked questions
- How do I install onelake-catalog-cli?
- Run
npx skills add microsoft/skills-for-fabric --skill onelake-catalog-cli. The install tabs above show the steps for each supported agent. - Which AI agents does onelake-catalog-cli work with?
- It is written for Universal, as a SKILL.md file. Other agents that read the same format can often use it too.
- Is onelake-catalog-cli safe to use?
- It is MIT-licensed and scores 100/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is onelake-catalog-cli still maintained?
- The repository was last updated about 2 months ago, so onelake-catalog-cli is actively maintained.
Skill content
View source on GitHubname: onelake-catalog-cli description: "Governs and curates the Microsoft Fabric OneLake catalog through Fabric Admin, Core and Power BI REST APIs. Use for tenant or data-owner governance audits and guarded remediation of domains, workspace assignment, capacity, labels, tag definitions, workspace tags, certification, refresh and item identity, and for owners curating an item's description, name, tags and table and column descriptions. Item discovery belongs to search-consumption-cli."
Telemetry β MANDATORY. Every
api.fabric.microsoft.comcall must carryx-ms-fabric-skill: onelake-catalog-cli(az rest:--headers "x-ms-fabric-skill=onelake-catalog-cli"), including every LRO poll,fabric_lroand retry. Snippets omit it β add it anyway.
CRITICAL NOTES
- To find the workspace ID from its name, one call:
az rest --method get --resource "https://api.fabric.microsoft.com" --url "https://api.fabric.microsoft.com/v1/workspaces" --query "value[?displayName=='<name>'] | [0].id" -o tsv(followcontinuationTokenonly if it isn't on the first page; details in COMMON-CLI.md Β§ Finding Workspaces and Items in Fabric).- To find an item's ID, one call: the same on
.../v1/workspaces/{ws}/items?type=<Type>with--query "value[?displayName=='<name>'] | [0].id".- Write-gated skill β never call a write API before its gate below has passed. For curation that means the owner reviewed every proposed change and explicitly confirmed β not even a "test" write to check whether a change is allowed or what is already applied.
- The item list and Get Item both return an item's
tags. An item with no tags has notagsfield β that absence means untagged.
OneLake Catalog β CLI Skill (mode dispatcher)
One skill for the OneLake catalog. Govern (catalog health, protection and trust: audits and guarded remediation, by permission tier) and curate (an owner improving specific items' discoverability metadata) are modes, each detailed in a reference loaded on demand. This file picks the mode, holds every write gate, and indexes the references.
Mode selection
| Mode | Use when | Load | Writes |
|---|---|---|---|
| curate | An owner wants specific items easier to find: a description, a clearer display name, tags, or table and column descriptions (items with a OneLake Tables folder) β one item, an explicit list, or one named workspace's weakly-described items | references/curate.md | β
after the owner approves each suggestion |
| dataowner-audit | A non-admin workspace or domain owner wants governance posture for workspaces they administer (widen to accessible on request; Core API) | references/dataowner-audit.md | β |
| dataowner-remediate | A data owner who is also a domain / workspace / capacity admin fixes a governance finding β single-workspace domain or capacity assignment, workspace tags, refresh, item identity (Core & Power BI APIs, no tenant admin), including dry runs of these | references/dataowner-remediate.md | β
self-service |
| admin-audit | A Fabric tenant admin wants tenant-wide governance posture (/v1/admin/*) | references/admin-audit.md; any tenant count starts from admin-audit-scope.md | β |
| admin-remediate | A Fabric tenant admin makes tenant-wide writes β domains, bulk assignment, domain roles, bulk labels, tenant tag definitions, tenant settings | references/admin-remediate.md | β
|
Govern is a 2Γ2 grid β tier (which API surface the caller can reach) Γ action (audit vs
remediate) β covering the health, protect and trust pillars. Choose the tier by API surface,
not job title: the admin-* modes need the Fabric tenant administrator role (Fabric admin /
Power Platform admin / M365 global admin); domain, capacity and workspace admins who are not
tenant admins live entirely in the dataowner-* modes.
Mode boundary rules
- A direct curation request goes straight to curate. Read the target item's current state β don't run a governance audit first. Curation needs neither tenant admin nor workspace Admin; each change has its own permission (see curate.md).
- Governance starts with an audit. Never remediate before establishing the current state; audit β remediate within the same tier unless the caller's rights change.
- Curate is the only writer of item metadata. Item descriptions and display names, applying or removing an item's tags, and table and column descriptions are written only in curate. Workspace tags stay in dataowner-remediate; tenant tag definitions in admin-remediate.
- Govern finds, curate fixes. Govern reports description and tag coverage β presence, with scope, denominator and freshness caveats, not proof the text is accurate; curate judges content and proposes. To fix selected gaps, hand off to curate with: a bounded target (an explicit item list with workspace ID, item ID and type, or one named workspace β never the whole tenant: ask the user to pick), the observed gap with its source and time (a candidate to recheck, not current truth), only the fields the user chose ("fix missing descriptions" = description only), and known access limits and owner contacts. A remediation is done only when curate has verified the write.
- Audit modes never write. If a write is asked for in an audit mode, switch explicitly to the matching remediate mode or to curate β don't improvise a write.
- A dry run or preflight of a fix loads that fix's remediate mode and stays read-only there β
it isn't an audit. Moving one workspace to a domain is
dataowner-remediate; bulk assignment isadmin-remediate. - Finding items when the workspace isn't known belongs to
search-consumption-cli. Looking up a workspace or domain by name, or an item by name inside a known workspace, is not discovery: use the lookups in CRITICAL NOTES and don't loadsearch-consumption-clifor it.
β οΈ Known Fabric gap. A domain or workspace admin who is not a tenant admin has no API for their scoped governance posture:
/v1/admin/*rejects them and the Core API can't list a domain's workspaces.dataowner-auditcovers only workspaces the caller can access β say so up front rather than routing into anadmin-*mode that will 401/403.
Terminal write β the step you must not skip
Reading a reference, drafting suggestions or building a dry run is NOT completing a write. Each writing mode ends with the state-changing call(s) below, issued only after the gate for that write passes. If you did not issue it, nothing changed β say so rather than reporting success.
| Mode | Terminal write |
|---|---|
| curate | PATCH /v1/workspaces/{ws}/items/{id} (description; display name in a separate call), POST .../items/{id}/applyTags or unapplyTags, and for a table POST https://onelake.table.fabric.microsoft.com/common/v1/{ws}/{item}/schemas/{schema}/tables/{table}/additionalMetadata with the complete set from a fresh read β only for suggestions the owner accepted |
| dataowner-remediate | POST /v1/workspaces/{id}/assignToDomain / unassignFromDomain (synchronous 200), assignToCapacity (202 β poll to a terminal state), POST /v1/workspaces/{id}/applyTags / unapplyTags (workspace tags), item identity, semantic model refresh |
| admin-remediate | /v1/admin/* writes β domains, bulk workspace assignment, domain roles, labels, tenant tag definitions, tenant settings |
| dataowner-audit, admin-audit | none β read-only |
Before reporting a write done, confirm an explicit success (200/201, or a terminal LRO
success for a 202) and read the result back.
Write gates β must pass first
| Write | Mode | Gate |
|---|---|---|
| Any curation write | curate | The owner saw a numbered current β proposed preview of every suggestion and explicitly approved; "apply all" covers only what was shown. Approving an audit or picking a remediation never approves text the owner hasn't seen. |
| Table and column descriptions | curate | A write replaces the table's whole additional metadata: re-read, change only the approved descriptions, send the complete set in the same command, read again. The API has no concurrency check β never claim concurrent edits were preserved. A shortcut table is written on its source β name it and get explicit confirmation. |
| Delete a domain | admin | Check subdomains (parentDomainId) and assigned-workspace counts for the domain and every subdomain; if workspaces would be orphaned, STOP and get explicit confirmation naming them. The API has no cascade-block. See domain-crud.md. |
| Delete a tag definition | admin | Report how many items carry it first β deletion detaches it everywhere with no undo. |
| Bulk-assign workspaces to a domain | admin | Check each target's current domainId and warn before silently overriding an assignment. Dry-run the target list first. |
| Remove a principal from a domain role | admin | Confirm it will not leave the domain ownerless; name the principal being removed. |
| Bulk sensitivity-label change | admin | Dry-run: show the affected items and before/after label, get confirmation. No service principal / managed identity β the call will fail. |
| Write a tenant setting | admin | Read and show the current value, then the proposed value β tenant-wide blast radius. |
| Assign / unassign one workspace to a domain | dataowner | A move is a reassignment β confirm the current domainId and name the domain it leaves. Needs domain contributor and workspace Admin; say which is missing on failure. |
| Reassign item ownership (item identity, preview) | dataowner | Assigns to the caller only; needs Write on the item and its children. Confirm the intended identity. |
| Assign a workspace to a capacity | dataowner | Needs workspace Admin plus capacity Contributor/Admin. 202 is not success β poll to a terminal state. |
| Apply / remove a workspace tag (preview) | dataowner | Needs workspace Admin. Name the workspace and the tags, and confirm. Removing an applied tag is not deleting its definition. |
Don't promise a write that has no API. Endorsement, DLP policies, an owner changing a sensitivity label, and tenant-admin item deletion have no write route β say so and name who can act (no-write-api-escalation.md). A SQL Database's display name is fixed at creation: never send a rename for it, even when the owner asks for one β say it can't be renamed and offer the description and tags instead.
Shared essentials (all modes)
- Prerequisites: auth & tokens Β·
REST, pagination, LRO, rate limits Β·
CLI auth recipes Β·
az rest(always pass--resource) Β· OneLake viacurl(Storage-audience token) Β· OneLake shortcuts. - Resolve workspace and item IDs with the one-call lookups in CRITICAL NOTES 1β2.
- Keep tool calls few. Each call re-sends the whole conversation, so extra calls are slow and costly. Combine related reads in one script, and don't re-open a doc you've already read.
- Read an item's definition in one command that wai
Truncated for display β read the full file on GitHub.
Related Skills
taste-skill
112.0kAgent skills that give coding agents taste: art direction, reference images and a browser check instead of generic AI pages
Agent-Reach
110.3kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu β one CLI, zero API fees.
headroom
79.1kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
ai-job-search
70.5kThe job search that runs on your machine. AI job application framework built on Claude Code: evaluate postings, tailor CVs, write cover letters, prep interviews. Fork it and own it.
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit β see the Safety scan above for what the skill file itself contains.
