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_info first and confirm the model title with the user if it is not the one they named. Read with get_model_overview and get_object_details; write with execute_csharp_script
  • te CLI (the te-cli skill) when there is no TE3 instance, for example against PBIP/TMDL on disk
  • One script per pass. Each execute_csharp_script call 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_query only 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 (IndexOutOfRangeException in ScrollbarIndicatorsController)
  • 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:

Installs
4
GitHub Stars
1.0K
First Seen
5 days ago