Help us improve
Share bugs, ideas, or general feedback.
From reports
Creates complete Power BI reports from scratch using pbir CLI, covering model discovery, report creation, page layout, theme setup, visual placement, field binding, filtering, formatting, validation, and publishing.
npx claudepluginhub data-goblin/power-bi-agentic-development --plugin reportsHow this skill is triggered — by the user, by Claude, or both
Slash command
/reports:create-pbi-reportThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Create and scaffold Power BI reports using `pbir` CLI. Install with `uv tool install pbir-cli` or `pip install pbir-cli`. Load the `pbir-cli` and `pbi-report-design` skills alongside this one.
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.
References Power BI Enhanced Report (PBIR) JSON schemas, patterns, visual.json properties, expressions, themes, bookmarks, and page structures for report metadata work.
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.
Create and scaffold Power BI reports using pbir CLI. Install with uv tool install pbir-cli or pip install pbir-cli. Load the pbir-cli and pbi-report-design skills alongside this one.
sales-dashboard/Sales.Report)pbir validate after every mutationpbir theme apply-template unless the user explicitly asks for a different themepbir pages rename instead. Place all visuals at y:120 or below to avoid overlapping the title textbox.Get the workspace and semantic model from the user. If the user wants to connect to Power BI Desktop or create a report with source data, explain that a published semantic model in Fabric or Power BI is required first.
Analyze the user's requirements. Consider missing information -- charts, filters, formatting, analyses. Use AskUserQuestion if something is unclear.
Consider missing semantic model objects -- not just what the user asks for, but targets (1 year prior), baselines (avg for period), or trend aggregations (14-day rolling) that enrich visuals.
Create a project folder and report (default format is PBIP):
mkdir -p /path/to/report-name
cd /path/to/report-name
pbir new report "Name.Report" -c "Workspace/Model.SemanticModel"
Rename the default page (do NOT add a new page unless the report needs multiple pages): pbir pages rename "Name.Report/Page 1.Page" "Overview"
Only if the user requests a custom theme: pbir theme apply-template "Name.Report" template-name (the sqlbi theme is already included by default)
Discover model fields: pbir model "Name.Report" -d
Query field values for filters or formatting: pbir model "Name.Report" -q "EVALUATE VALUES('Table'[Column])"
Inspect field data types: pbir model "Name.Report" -d -t Table
Add visuals (the page already has a textbox for the title): pbir add visual kpi "Name.Report/Overview.Page" --title "Revenue"
Validate: pbir validate "Name.Report"
Publish: pbir publish "Name.Report" "Workspace.Workspace/Name.Report"
Open in Fabric after publish: pbir publish "Name.Report" "Workspace.Workspace/Name.Report" -o
Or open locally in Power BI Desktop: pbir open "Name.Report"
Before creating visuals, explore the semantic model to understand the domain. Use pbir model "Report.Report" -d to inspect tables, columns, measures, and hierarchies. Consider:
Present a concrete proposal via AskUserQuestion before building anything. The proposal should include:
Iterate on the design before executing -- revising a plan is cheaper than rebuilding visuals.
Determine where to create the report and what model it connects to. Use AskUserQuestion to understand the report's purpose, audience, and what decisions it should support.
pbir model # List all known reports/models
pbir connect MyWorkspace MyReport # Set active connection
If the user provides a workspace location, create the report locally in a project folder, then publish.
Create a project folder first, then the report inside it. Default format is PBIP.
mkdir -p sales-dashboard && cd sales-dashboard
pbir new report "Sales.Report" -c "MyWorkspace/Sales.SemanticModel"
The resulting structure:
sales-dashboard/
Sales.Report/
definition/
pages/
report.json
StaticResources/
definition.pbir
Sales.pbip
The report comes with a default "Page 1" that already has a textbox for the page title. Rename it rather than creating a new page. Only add additional pages if needed.
pbir pages rename "Sales.Report/Page 1.Page" "Overview" # Rename default page
pbir add page "Sales.Report/Detail.Page" -n "Detail" # Add extra pages only if needed
pbir pages active-page "Sales.Report" "Overview"
The sqlbi theme is already included by default. Only modify the theme if the user explicitly asks for a different theme or custom colors.
# Only if user wants a different theme:
pbir theme apply-template "Sales.Report" custom-theme
# Or to customize specific colors:
pbir theme set-colors "Sales.Report" --good "#00B050" --bad "#FF0000"
pbir theme set-text-classes "Sales.Report" title --font-size 16
pbir theme set-formatting "Sales.Report" "card.*.border.radius" --value 8
Check actual page dimensions first -- do not assume 1280x720. Use pbir pages json "Report.Report/Page.Page" to verify. The object model validates that visuals fit within page bounds.
Fill the canvas with a purposeful visual hierarchy. Standard composition for a 1280x720 page:
kpi visuals showing headline metrics with targets and trend linestableEx or matrix with hierarchies and conditional formattingFor a complete layout example with exact coordinates, spacing verification, and visual commands, consult references/layout-example.md.
Key principles:
(margin, gap, page_width, page_height). For 1280x720 with margin=24, gap=16, usable width = 1232. Verify arithmetic before placing visuals.pbir visuals subtitle "path" --no-showpbir visuals bind, set sort explicitly: pbir visuals sort "path" -f "Table.Measure" -d Descendingpbir add filter Date Year -r "Sales.Report" --values 2025
pbir add filter Geography Region -r "Sales.Report"
pbir add filter Products Category -p "Sales.Report/Detail.Page"
Most formatting should come from the theme (Step 5). Apply bespoke formatting only for genuinely one-off cases.
# Bulk formatting via glob (requires -f for glob patterns)
pbir set "Sales.Report/**/*.Visual.title.show" --value true -f
pbir set "Sales.Report/**/*.Visual.border.show" --value true -f
# Individual visual formatting
pbir visuals title "Sales.Report/Overview.Page/Revenue.Visual" --fontSize 14 --bold
pbir visuals background "Sales.Report/Overview.Page/Revenue.Visual" --color "#F8F9FA"
pbir validate "Sales.Report"
pbir tree "Sales.Report" -v
pbir publish "Sales.Report" "MyWorkspace.Workspace/Sales.Report" # Publish
pbir publish "Sales.Report" "MyWorkspace.Workspace/Sales.Report" -o # Publish and open in browser
pbir open "Sales.Report" # Open in Power BI Desktop
pbir pages type "path" --type tooltipreferences/layout-example.md -- Complete layout with coordinates, spacing verification, time granularity table