Review, audit, and validate Power BI semantic models against quality, performance, and best practice standards. Automatically invoke when the user asks to "review a semantic model", "audit a semantic model", "check model quality", "optimize my model", "validate model design", "check AI readiness", "prepare model for Copilot", or mentions model validation or quality assessment.
Warning: This skill is incomplete and still in progress, but may provide value already as-is -- Kurt
Structured evaluation of Power BI semantic models against quality, performance, and best practice standards. Produces actionable findings with prioritized recommendations.
Before analyzing TMDL, collect metadata and understand the business context.
Run the model info script:
python3 scripts/get_model_info.py -w <workspace-id> -m <model-id>
This returns: storage mode, model size, connected reports, deployment pipeline, endorsement status, sensitivity label, data sources, refresh schedule, last refresh, and capacity SKU.
Ask the user:
Understanding the business context is critical. A model for 3 analysts has different requirements than one consumed by Copilot across the organization. The audit categories and their severity shift based on this context.
Inspect the model definition to evaluate its structure. The approach depends on available tooling -- use whatever is available to read the model's tables, columns, measures, relationships, and expressions. Do not prescribe a specific tool; common options include Tabular Editor, the te-cli, fab export to TMDL, or programmatic access via APIs.
Evaluate findings across categories, ordered by severity:
Critical
Memory and Size
Data Reduction
DAX Anti-Patterns (for systematic DAX query optimization, use the dax skill)
/ is fine when the denominator is guaranteed non-zero and can be faster)Measure Hygiene
Documentation
standardize-naming-conventions skill)Design
dataCategory: Time in TMDL, with a key Date column), have continuous daily dates (no gaps), span the full range of fact data, and relate to fact tables via a single-column relationship. Missing any of these causes time intelligence functions (DATEADD, SAMEPERIODLASTYEAR, TOTALYTD) to return BLANKDirect Lake (if applicable)
AI and Copilot Readiness (see references/ai-readiness.md)
For performance-specific analysis, see references/performance.md.
Produce a structured markdown report with:
Dispatch the semantic-model-auditor agent to perform the structural audit. The agent handles export, analysis, and reporting autonomously.
references/performance.mddax skillreview-report skill in the reports pluginreferences/ai-readiness.md -- Copilot/Data Agent preparation: AI instructions, descriptions, schema, verified answersreferences/performance.md -- Performance testing methodology, unused column detection, memory analysisscripts/get_model_info.py -- Quick model metadata overview (storage mode, size, reports, pipeline, endorsement, data sources)dax -- DAX performance optimizationreview-report (reports plugin) -- Companion skill for report-level reviewstandardize-naming-conventions -- Naming audit and remediationlineage-analysis -- Downstream report discoveryrefreshing-semantic-model -- Refresh monitoring and troubleshooting