| name | pbip-project |
| description | Creates and manages Power BI Desktop Project (PBIP) structure. Use when starting new Power BI projects, setting up folder structure, or configuring project files. |
PBIP Project Skill
This skill helps create and manage Power BI Desktop Project (PBIP) structure for source control-friendly Power BI development.
When to Use This Skill
- Starting a new Power BI project from scratch
- Converting an existing concept into a PBIP structure
- Setting up the folder structure for semantic models and reports
- Creating pointer files (
.pbip, .pbism, .pbir)
- Configuring project-level settings
PBIP Project Structure
A complete PBIP project has this structure:
<ProjectName>.pbip # Project pointer file
โโโ <ProjectName>.SemanticModel/ # Semantic model folder
โ โโโ definition.pbism # Semantic model pointer
โ โโโ model.bim # Model metadata (auto-generated)
โ โโโ definition/ # TMDL files
โ โโโ database.tmdl
โ โโโ model.tmdl
โ โโโ relationships.tmdl
โ โโโ tables/
โ โ โโโ <TableName>.tmdl
โ โโโ expressions.tmdl
โโโ <ProjectName>.Report/ # Report folder
โ โโโ definition.pbir # Report pointer
โ โโโ report.json # Report configuration
โ โโโ definition/ # Report definition files
โ โโโ pages/
โ โ โโโ <PageId>/
โ โ โโโ page.json
โ โโโ ...
โโโ .pbi/ # Local settings (gitignored)
โโโ localSettings.json
Creating a New PBIP Project
Step 1: Create the Project Pointer File
Create <ProjectName>.pbip:
{
"version": "1.0",
"artifacts": [
{
"report": {
"path": "<ProjectName>.Report"
}
}
],
"settings": {
"enableAutoRecovery": true
}
}
Step 2: Create the Semantic Model Folder
Create <ProjectName>.SemanticModel/definition.pbism:
{
"version": "1.0",
"datasetReference": {
"byPath": null,
"byConnection": null
}
}
Step 3: Create Core TMDL Files
Create <ProjectName>.SemanticModel/definition/database.tmdl:
database '<ProjectName>'
compatibilityLevel: 1567
Create <ProjectName>.SemanticModel/definition/model.tmdl:
model Model
culture: en-US
defaultPowerBIDataSourceVersion: powerBI_V3
discourageImplicitMeasures: true
sourceQueryCulture: en-US
Step 4: Create the Report Folder
Create <ProjectName>.Report/definition.pbir:
{
"version": "1.0",
"datasetReference": {
"byPath": {
"path": "../<ProjectName>.SemanticModel"
},
"byConnection": null
}
}
Create <ProjectName>.Report/report.json:
{
"$schema": "https://developer.microsoft.com/json-schemas/fabric/item/report/definition/report/1.0.0/schema.json",
"themeCollection": {
"baseTheme": {
"name": "CY24SU06",
"reportVersionAtImport": "5.55",
"type": "SharedResources"
}
},
"config": {
"version": 5,
"defaultDrillFilterOtherVisuals": true
},
"objects": {}
}
File Format Requirements
Encoding
- All text files MUST be UTF-8 without BOM
- JSON files use 2-space indentation
- TMDL files use tab indentation
Line Endings
- Use LF (Unix-style) line endings for cross-platform compatibility
- Configure
.gitattributes for consistent line endings:
*.tmdl text eol=lf
*.json text eol=lf
*.pbip text eol=lf
*.pbism text eol=lf
*.pbir text eol=lf
Git Configuration
Recommended .gitignore
# Local Power BI settings (contains user-specific paths)
.pbi/
**/localSettings.json
# Cache files
*.abf
**/cache.abf
# Temporary files
*.tmp
~$*
Recommended .gitattributes
# Ensure consistent line endings
*.tmdl text eol=lf
*.json text eol=lf
*.pbip text eol=lf
*.pbism text eol=lf
*.pbir text eol=lf
# Treat binary files appropriately
*.abf binary
*.pbix binary
Naming Conventions
| Item | Convention | Example |
|---|
| Project name | PascalCase | SalesAnalytics |
| Folder names | Match project name | SalesAnalytics.SemanticModel |
| TMDL files | lowercase with hyphens | date-table.tmdl |
| Page folders | GUID format | ReportSection1a2b3c4d |
Boundaries and Constraints
DO
- Always create files with UTF-8 encoding (no BOM)
- Always include
compatibilityLevel in database.tmdl
- Always set
discourageImplicitMeasures: true in model.tmdl
- Create
.gitignore to exclude local settings
- Use relative paths in pointer files
DO NOT
- Never modify
.pbi/localSettings.json - this is user-specific
- Never commit
cache.abf files
- Never hardcode absolute file paths
- Never include credentials in source files
Workflow Integration
After creating the project structure:
- Add tables - Use the
semantic-model skill to add tables and relationships
- Add measures - Use the
dax skill to create measures
- Create visuals - Use the
report-visuals skill to build reports
- Validate - Use the
best-practices skill to check quality
Opening in Power BI Desktop
- Open Power BI Desktop
- File > Open report
- Select the
.pbip file
- Power BI will load the project from source files
Common Issues
"Cannot find semantic model"
- Verify the path in
definition.pbir points to the correct semantic model folder
- Ensure
definition.pbism exists in the semantic model folder
"Invalid TMDL syntax"
- Check for proper indentation (tabs for TMDL)
- Verify quotes match the expected style (single quotes for identifiers)
- Ensure compatibility level is supported
"Report won't load"
- Check that
report.json has valid JSON syntax
- Verify the schema reference is correct
- Ensure page folders contain valid
page.json files