organize-semantic-model
Installation
SKILL.md
Organize a semantic model
[Workflow] Organizing is a set of passes over the same objects. Doing only one or two of them (folders and sorting, say) leaves the model looking finished while names, descriptions and formats are still raw, so run every pass unless the user narrows the scope, and say which passes were skipped and why.
Tooling
- Tabular Editor 3 MCP: call
get_workspace_infofirst and confirm the model title with the user if it is not the one they named. Read withget_model_overviewandget_object_details; write withexecute_csharp_script teCLI (thete-cliskill) when there is no TE3 instance, for example against PBIP/TMDL on disk- One script per pass. Each
execute_csharp_scriptcall is one undo step and returns a property-level diff, so per-pass scripts keep every change reviewable and individually revertible - Read the returned diff after every script. Confirm each property you meant to set appears, and nothing you did not mean to touch. A property missing from the diff was already at that value, except annotations: the diff does not list annotation changes (
TableGroup,context), so read those back with a second script execute_dax_queryonly exists while the TE3 MCP server has model data read permission. If it disappears mid-session, the client's tool list is stale; reconnect the server (/mcp). A calculated table that was never recalculated returns no data until it is refreshed- Ask the user to close TE3 DAX editor tabs for objects a script will change. A script that edits an object while its editor is open and parsing has crashed TE3 (
IndexOutOfRangeExceptioninScrollbarIndicatorsController) - Nothing is saved or deployed by the MCP. On a live connection, saving writes to the server, so leave saving to the user
Pass 0: inventory and lineage
Before changing anything: