From powerbi
Develops Power BI reports in PBIR format: create on semantic models, edit visuals/pages/bookmarks, align layouts, rebind models, deploy/export to Fabric workspaces.
npx claudepluginhub ruiromano/powerbi-agentic-plugins --plugin powerbiThis skill uses the workspace's default tool permissions.
This skill provides guidance on how to develop Power BI reports using the PBIR (Power BI Report) JSON file format.
assets/templateReport/report-layout.pngassets/templateReport/report.dummyModel/definition.pbismassets/templateReport/report.dummyModel/definition/database.tmdlassets/templateReport/report.dummyModel/definition/model.tmdlassets/templateReport/report/StaticResources/RegisteredResources/theme.jsonassets/templateReport/report/definition.pbirassets/templateReport/report/definition/pages/mainPage/page.jsonassets/templateReport/report/definition/pages/mainPage/visuals/barChart/visual.jsonassets/templateReport/report/definition/pages/mainPage/visuals/dateSlicer/visual.jsonassets/templateReport/report/definition/pages/mainPage/visuals/logo/visual.jsonassets/templateReport/report/definition/pages/mainPage/visuals/timeSeries/visual.jsonassets/templateReport/report/definition/pages/mainPage/visuals/title/visual.jsonassets/templateReport/report/definition/pages/mainPage/visuals/topCard/visual.jsonassets/templateReport/report/definition/pages/pages.jsonassets/templateReport/report/definition/report.jsonassets/templateReport/report/definition/version.jsonassets/templateReport/template-report-kb.mdassets/templateReport/templateReport.pbipscripts/bpa-rules-report.jsonscripts/bpa.ps1References Power BI Enhanced Report (PBIR) JSON schemas, patterns, visual.json properties, expressions, themes, bookmarks, and page structures for report metadata work.
Manipulates Power BI .pbir/.pbip reports via pbir CLI: bind visuals/measures, set properties on pages/themes/DAX/conditional formatting, bulk operations, Fabric workspace integration.
Enables programmatic Power BI report and semantic model development using PBIR/PBIP formats, TOM/.NET SDK, TMSL/TMDL, pbi-tools, and ALM Toolkit for CI/CD and code-first workflows.
Share bugs, ideas, or general feedback.
This skill provides guidance on how to develop Power BI reports using the PBIR (Power BI Report) JSON file format.
$schema; call out violations and propose fixes.Before making any changes to an existing report, always gather context first:
definition/ folder with report.json, pages/, and version.json.pages/pages.json to understand the page structure and order.visual.json to understand visual types, positions, and field mappings.definition.pbir to understand which semantic model the report is connected to (byPath or byConnection).StaticResources/RegisteredResources/ for custom themes and images.Example of a report folder using PBIR format:
Report/
├── StaticResources/ # stores report resources such as images, custom themes,...
│ ├── RegisteredResources/
│ │ ├── logo.jpg
│ │ ├── CustomTheme4437032645752863.json
├── definition/ # stores the entire report definition: pages, visuals, bookmarks
│ ├── bookmarks/
│ │ ├── Bookmark7c19b7211ada7de10c30.bookmark.json
│ │ ├── bookmarks.json
│ ├── pages/
│ │ ├── 61481e08c8c340011ce0/
│ │ │ ├── visuals/
│ │ │ │ ├── 3852e5607b224b8ebd1a/
│ │ │ │ │ ├── visual.json
│ │ │ │ │ ├── mobile.json
│ │ │ │ ├── 7df3763f63115a096029/
│ │ │ │ │ ├── visual.json
│ │ │ ├── page.json
│ │ ├── pages.json
│ ├── version.json
│ ├── report.json
├── semanticModelDiagramLayout.json # Copy of the semantic model diagram layout the report is connected to.
└── definition.pbir # Overall definition of the report and core settings. Also holds the reference to the semantic model of the report, it's possible to rebind the report to a different semantic model by updating this file.
All report objects have a name property. For example see the visual.json:
{
"$schema": "https://developer.microsoft.com/json-schemas/fabric/item/report/definition/visualContainer/2.1.0/schema.json",
"name": "5868707ac858bcbe007a",
"position": {
"x": 32.118081180811807,
"y": 216.32472324723247,
"z": 4000,
"height": 492.16236162361622,
"width": 366.52398523985238,
"tabOrder": 2000
},
"visual": {
"visualType": "barChart",
"drillFilterOtherVisuals": true
}
}
By default PBIR folder uses the internal name property of pages, visuals and bookmarks in the files or folders. For example consider the following path of a visual:
Sales.Report\definition\pages\89a9619c7025093ade1c\visuals\5acb1caf298449a8acb4\visual.json
89a9619c7025093ade1c is the name of the page and 5acb1caf298449a8acb4 the name of the visual.
assets/templateReport/report/definition and assets/templateReport/report/StaticResources to the *.Report folder.definition.pbir to point to the target semantic model (use byPath for local, byConnection for workspace).Use this workflow when the user wants to add/modify/remove visuals, pages, or bookmarks in an existing report.
visuals/ directory with a visual.json file. Use the correct $schema and set appropriate position, visual.visualType, and field mappings.visual.json — update field mappings, position, or visual type.pages/, add a page.json, and update pages/pages.json with the new page entry.pages.json, bookmarks.json).definition/ folder with the report pages.position property of each visual (x, y, height, width, z, tabOrder) and take into consideration the page dimensions (default 1280x720) in page.json to understand the current layout and identify misalignments or overlaps.y (for rows) and x (for columns) values.visual.json with the corrected position properties.name property is used by default in folder and file names. You can rename folders for: pages, visuals, and bookmarks.mainPage, salesBarChart, dateFilter).name property in JSON files remains unchanged — only the folder name changes).fabric-cli skill to export the report code definition from the workspace.[Name].Report/definition/ local folder.report.json, version.json, and pages/ with at least one page.Update definition.pbir — CRITICAL: When deploying a report to a workspace, the definition.pbir must use a byConnection configuration targeting a workspace semantic model:
{
"$schema": "https://developer.microsoft.com/json-schemas/fabric/item/report/definitionProperties/2.0.0/schema.json",
"version": "4.0",
"datasetReference": {
"byConnection": {
"connectionString": "semanticmodelid=[SemanticModelId]"
}
}
}
Deploy using Fabric CLI — Use the fabric-cli skill to deploy. You can deploy with a new name if needed.
Verify deployment — Confirm the report appears in the target workspace and opens correctly.
Edit definition.pbir — Configure a byPath property using a relative reference to the semantic model folder:
{
"$schema": "https://developer.microsoft.com/json-schemas/fabric/item/report/definitionProperties/2.0.0/schema.json",
"version": "4.0",
"datasetReference": {
"byPath": {
"path": "../Sales.SemanticModel"
}
}
}
Verify field references — After rebinding, check that visual field mappings (Entity and Property references in visual.json files) are still valid against the new semantic model.
Find the semantic model ID — Use Fabric CLI or workspace API to locate the target semantic model ID.
Edit definition.pbir — Configure a byConnection property targeting the semantic model ID:
{
"$schema": "https://developer.microsoft.com/json-schemas/fabric/item/report/definitionProperties/2.0.0/schema.json",
"version": "4.0",
"datasetReference": {
"byConnection": {
"connectionString": "semanticmodelid=[SemanticModelId]"
}
}
}
Verify field references — Ensure visual field mappings are compatible with the new semantic model.
After any report modification, always verify your work:
$schema URL.Entity (table name) and Property (column/measure name) references in visual.json files match the connected semantic model.pages/pages.json lists all page folders and the order is correct.definition.pbir — Confirm the semantic model reference (byPath or byConnection) is correctly configured.Run the script scripts/bpa.ps1 against the report definition. If no specific BPA rules are mentioned, use the default set of rules in scripts/bpa-rules-report.json.
Run BPA — Execute the Best Practice Analysis script:
scripts/bpa.ps1 -reports [path to the report definition folder] -rulesFilePath [path to the BPA rules json file]
Report findings — Categorize results by severity levels (Critical, High, Medium, Info) and propose fixes.
$schema URL, validate the file structure against it, and fix any missing or extra properties.Entity and Property values to match valid semantic model objects.definition.pbir uses byConnection (not byPath) when deploying to a workspace. Check that the semantic model ID is correct.pages/ folder is missing subfolders.External references (request markdown when possible):