Guide Power BI semantic model design and optimization for well-documented models with star schema checks, DAX measures, relationships, RLS, naming, descriptions, calculation groups, performance tuning, and model validation. Use when working with Power BI semantic models, creating measures, adding relationships, configuring cardinality or cross-filter direction, documenting models, or optimizing DAX and model performance.
Connect to the active Power BI semantic model first, inspect its structure, and then provide model-specific guidance or changes for measures, relationships, documentation, RLS, calculation groups, and performance.
When to invoke
"Create a measure in my Power BI model."
"Add or fix a relationship and cardinality."
"Design this as a star schema."
"Optimize this DAX formula or model performance."
"Configure RLS or document this semantic model."
Prerequisites and context
Power BI Modeling MCP Server, often exposed as power-bi-modeling, is required for semantic model inspection and modification. It exposes connection_operations, model_operations, table_operations, column_operations, measure_operations, relationship_operations, dax_query_operations, calculation_group_operations, and security_role_operations.
Microsoft Learn MCP Server is optional for current documentation research through microsoft_docs_search and microsoft_docs_fetch.
If no connection exists, connect to the Desktop or Fabric model before reading or changing metadata.
Evaluate model health against star schema, relationships, naming, documentation, measures, hidden fields, date table, RLS, and performance rules.
Use bundled references for deeper decisions: references/STAR-SCHEMA.md, references/RELATIONSHIPS.md, references/MEASURES-DAX.md, references/PERFORMANCE.md, and references/RLS.md.
Make targeted changes only after model state is known, then validate with metadata reads or DAX validation as appropriate.
Model quality checklist
Area
Best practice
Tables
Clear dimension versus fact classification.
Naming
Human-readable names such as Customer Name, not CUST_NM.
Descriptions
All tables, columns, and measures are documented.
Measures
Business metrics use explicit DAX measures.
Relationships
One-to-many relationships flow from dimension to fact.
Cross-filter
Use single direction unless bidirectional filtering is specifically justified.
Hidden fields
Hide technical keys and IDs from report view.
Date table
Use a dedicated marked date table.
RLS
Define security roles with testable filters and effective-permission checks.
Use microsoft_docs_search and microsoft_docs_fetch for latest DAX functions, new Power BI features, SCD Type 2 or many-to-many modeling patterns, performance optimization, and security implementation guidance.
Gotchas
Do not provide generic advice before connecting; always inspect the active model first.
Do not create bidirectional relationships by default; they can hide ambiguity and performance issues.
Do not expose technical keys; hide IDs and surrogate keys from report view.
Do not use calculated columns for business metrics when an explicit measure is appropriate.
Progressive disclosure and bundled resources
references/STAR-SCHEMA.md: dimension/fact table design and model shape rules.
references/RELATIONSHIPS.md: relationship cardinality and cross-filter guidance.
references/MEASURES-DAX.md: DAX measures, naming, and descriptions.
references/PERFORMANCE.md: optimization and model performance checks.
Existing connections or local instances were checked before guidance.
Model, tables, relationships, and measures were inspected before changes.
Star schema, naming, descriptions, measures, hidden fields, date table, RLS, and performance were considered as relevant.
Relationship changes specify cardinality and crossFilteringBehavior.
Measure changes include expression, table, format string, and description.
Microsoft Learn research was used for current or complex scenarios when available.
1---2name: powerbi-modeling3description: Guide Power BI semantic model design and optimization for well-documented models with star schema checks, DAX measures, relationships, RLS, naming, descriptions, calculation groups, performance tuning, and model validation. Use when working with Power BI semantic models, creating measures, adding relationships, configuring cardinality or cross-filter direction, documenting models, or optimizing DAX and model performance.4---56<!-- Generated from harness/github-copilot/skills/powerbi-modeling/SKILL.md by harness/claude-code/scripts/convert_from_copilot.py. Edit the source, not this file. -->78# Power BI semantic modeling910Connect to the active Power BI semantic model first, inspect its structure, and then provide model-specific guidance or changes for measures, relationships, documentation, RLS, calculation groups, and performance.1112## When to invoke1314- "Create a measure in my Power BI model."15- "Add or fix a relationship and cardinality."16- "Design this as a star schema."17- "Optimize this DAX formula or model performance."18- "Configure RLS or document this semantic model."1920## Prerequisites and context2122- Power BI Modeling MCP Server, often exposed as `power-bi-modeling`, is required for semantic model inspection and modification. It exposes `connection_operations`, `model_operations`, `table_operations`, `column_operations`, `measure_operations`, `relationship_operations`, `dax_query_operations`, `calculation_group_operations`, and `security_role_operations`.23- Microsoft Learn MCP Server is optional for current documentation research through `microsoft_docs_search` and `microsoft_docs_fetch`.2425## Procedure26271. Connect and analyze before offering guidance:2829```text30connection_operations(operation: "ListConnections")31connection_operations(operation: "ListLocalInstances")32model_operations(operation: "Get")33table_operations(operation: "List")34relationship_operations(operation: "List")35measure_operations(operation: "List")36```37382. If no connection exists, connect to the Desktop or Fabric model before reading or changing metadata.393. Evaluate model health against star schema, relationships, naming, documentation, measures, hidden fields, date table, RLS, and performance rules.404. Use bundled references for deeper decisions: `references/STAR-SCHEMA.md`, `references/RELATIONSHIPS.md`, `references/MEASURES-DAX.md`, `references/PERFORMANCE.md`, and `references/RLS.md`.415. Make targeted changes only after model state is known, then validate with metadata reads or DAX validation as appropriate.4243## Model quality checklist4445| Area | Best practice |46| --- | --- |47| Tables | Clear dimension versus fact classification. |48| Naming | Human-readable names such as `Customer Name`, not `CUST_NM`. |49| Descriptions | All tables, columns, and measures are documented. |50| Measures | Business metrics use explicit DAX measures. |51| Relationships | One-to-many relationships flow from dimension to fact. |52| Cross-filter | Use single direction unless bidirectional filtering is specifically justified. |53| Hidden fields | Hide technical keys and IDs from report view. |54| Date table | Use a dedicated marked date table. |55| RLS | Define security roles with testable filters and effective-permission checks. |5657## MCP operation reference5859| Category | Key operations |60| --- | --- |61| `connection_operations` | Connect, ListConnections, ListLocalInstances, ConnectFabric. |62| `model_operations` | Get, GetStats, ExportTMDL. |63| `table_operations` | List, Get, Create, Update, GetSchema. |64| `column_operations` | List, Get, Create, Update descriptions, hidden state, and format. |65| `measure_operations` | List, Get, Create, Update, Move. |66| `relationship_operations` | List, Get, Create, Update, Activate, Deactivate. |67| `dax_query_operations` | Execute, Validate. |68| `calculation_group_operations` | List, Create, Update. |69| `security_role_operations` | List, Create, Update, GetEffectivePermissions. |7071## Common modeling tasks7273Create a measure with description:7475```text76measure_operations(77 operation: "Create",78 definitions: [{79 name: "Total Sales",80 tableName: "Sales",81 expression: "SUM(Sales[Amount])",82 formatString: "$#,##0",83 description: "Sum of all sales amounts"84 }]85)86```8788Update a column description and hide a technical key:8990```text91column_operations(92 operation: "Update",93 definitions: [{94 tableName: "Customer",95 name: "CustomerKey",96 description: "Unique identifier for customer dimension",97 isHidden: true98 }]99)100```101102Create a relationship:103104```text105relationship_operations(106 operation: "Create",107 definitions: [{108 fromTable: "Sales",109 fromColumn: "CustomerKey",110 toTable: "Customer",111 toColumn: "CustomerKey",112 crossFilteringBehavior: "OneDirection"113 }]114)115```116117## Microsoft Learn usage118119Use `microsoft_docs_search` and `microsoft_docs_fetch` for latest DAX functions, new Power BI features, SCD Type 2 or many-to-many modeling patterns, performance optimization, and security implementation guidance.120121## Gotchas122123- **Do not provide generic advice before connecting**; always inspect the active model first.124- **Do not create bidirectional relationships by default**; they can hide ambiguity and performance issues.125- **Do not expose technical keys**; hide IDs and surrogate keys from report view.126- **Do not use calculated columns for business metrics when an explicit measure is appropriate**.127128## Progressive disclosure and bundled resources129130- `references/STAR-SCHEMA.md`: dimension/fact table design and model shape rules.131- `references/RELATIONSHIPS.md`: relationship cardinality and cross-filter guidance.132- `references/MEASURES-DAX.md`: DAX measures, naming, and descriptions.133- `references/PERFORMANCE.md`: optimization and model performance checks.134- `references/RLS.md`: row-level security implementation patterns.135136## Output template137138```markdown139## Power BI modeling result140141**Status:** complete | needs connection | blocked142**Model:** `<model name or connection>`143144### Model observations145| Area | Finding | Recommendation |146| --- | --- | --- |147| Relationships | <finding> | <fix> |148149### Changes or proposed changes150| Object | Operation | Definition |151| --- | --- | --- |152| `<measure/table/relationship>` | `<create|update|validate>` | `<details>` |153154### Validation155- Connection inspected: <pass|fail>156- DAX validation: <pass|fail|not applicable>157- Metadata re-read: <pass|fail>158```159160## Quality gate161162- [ ] Existing connections or local instances were checked before guidance.163- [ ] Model, tables, relationships, and measures were inspected before changes.164- [ ] Star schema, naming, descriptions, measures, hidden fields, date table, RLS, and performance were considered as relevant.165- [ ] Relationship changes specify cardinality and `crossFilteringBehavior`.166- [ ] Measure changes include expression, table, format string, and description.167- [ ] Microsoft Learn research was used for current or complex scenarios when available.
Run npx skillmds@latest add paulasilvatech/powerbi-modeling in your terminal (requires Node.js), paste this page's agent-chat prompt into Claude, Cursor, or any MCP-connected agent, or download the SKILL.md file and copy it into your agent's skills directory.
Guide Power BI semantic model design and optimization for well-documented models with star schema checks, DAX measures, relationships, RLS, naming, descriptions, calculation groups, performance tuning, and model validation. Use when working with Power BI semantic models, creating measures, adding relationships, configuring cardinality or cross-filter direction, documenting models, or optimizing DAX and model performance. It is listed under AI & ML on SkillMD.
This skill has not completed SkillMD's automated safety review yet. SkillMD never runs a skill's scripts for you; review the SKILL.md before installing.
This skill is tagged as working with Claude Code, Claude.ai, OpenAI Codex. SKILL.md is an open format, so most agents that read a skills directory can load it too.
Yes. Installing skills from SkillMD is free, and the skill stays under its author's original license.
paulasilvatech (@paulasilvatech) published this skill. Their other Agent Skills are listed on their SkillMD profile.