This skill should be used whenever the user mentions "pbir", "pbir-cli", "Power BI reports", or "PBI reports", works with .pbir, .pbip, or .pbix files, or wants to refresh, screenshot, or visually…

GPL-3.0Auto-check passedData & Analytics

Install Pbir CLI

skills CLI
$ npx skills add data-goblin/power-bi-agentic-development --skill pbir-cli -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install data-goblin/power-bi-agentic-development pbir-cli --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/data-goblin/power-bi-agentic-development.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/reports/skills/pbir-cli .claude/skills/pbir-cli && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
pbir-cli
GitHub stars
1k
Token cost
~8.8k tokens
SKILL.md length
3,059 words
Files
146 (incl. references)
Skills in repo
33
Repo updated
First seen
Licence
GPL-3.0

At a glance

This skill should be used whenever the user mentions "pbir", "pbir-cli", "Power BI reports", or "PBI reports", works with .pbir, .pbip, or .pbix files, or wants to refresh, screenshot, or visually…

  • Works in 8 steps: Explore the report. The report must be… → Identify the model. Reports generally… → Clarify intent. For vague or open-ended… → …
  • Data & Analytics work in your project
  • SKILL.md covers When pbir is missing, Keeping the Fabric CLI current, Learning from Mistakes and How to use pbir, plus 7 more sections
  • Runs Shell scripts from its folder; calls uv, pip and az

What it does

Pbir CLI is an agent skill from data-goblin/power-bi-agentic-development. This skill should be used whenever the user mentions "pbir", "pbir-cli", "Power BI reports", or "PBI reports", works with .pbir, .pbip, or .pbix files, or wants to refresh, screenshot, or visually verify a report that is open in Power BI Desktop. Covers creating, exploring, formatting, validating, and publishing Power BI reports through the pbir CLI and object model, plus driving Power BI Desktop (canvas reload, page screenshots) and querying connected or local semantic models.

Its SKILL.md is about 8.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 154 other files, including reference files (for example `bin/README.md`, `bin/fetch.sh` and `examples/K201-MonthSlicer.Report/StaticResources/RegisteredResources/SqlbiDataGoblinTheme.json`).

It sits in Data & Analytics. It works with Power BI. The repository describes itself as: Power BI AI skills and Power BI agents for Claude Code and GitHub Copilot: a plugin marketplace of Power BI skills, subagents, and hooks for semantic models, DAX, TMDL, reports… The licence is GPL-3.0.

When your agent uses it

  • Data & Analytics work in your project

Example prompts

  • “pbir-cli”
  • “Power BI reports”
  • “PBI reports”
  • “/pbir-cli”

Requirements

  • Python 3
  • A Bash shell

Workflow steps

8 steps, taken from the first numbered list in SKILL.md.

  1. Explore the report. The report must be in PBIR format: pbip, pbir-only, or pbix-with-PBIR-metadata. Prefer pbir or pbip. Whenever the user…
  2. Identify the model. Reports generally should be thin reports connected to a remote model in Power BI or Fabric.
  3. Clarify intent. For vague or open-ended instructions, consult references/vague-prompts.md and use AskUserQuestion to understand…
  4. Plan changes. For new reports, pages, or visuals, draft a wireframe or mock-up for the user to approve before building.
  5. Make changes. Reach for relevant files in references/, examples/, and related skills like pbi-report-design.
  6. Validate. Mutating commands validate their own writes. Run explicit pbir validate after a coherent batch of changes and before completion…
  7. Iterate. Expect multiple rounds. Push back on one-shot expectations from vague prompts.
  8. Record learnings. Add concise, generalizable entries to the memory file noted above.

What it can do on your machine

Read from SKILL.md and the folder at commit 41886f2. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships script files (Shell, from the files we listed), which the agent can run.

    Shell commands in SKILL.md call:

    • uv
    • pip
    • az

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use uv, pip and az, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Pbir CLI loads about 8.8k tokens when it runs, and up to ~77k if it reads all its reference files. Until then it costs about 123 tokens; SKILL.md has 3,059 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~123
When it runs · the whole SKILL.md, loaded when a task matches
~8.8k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~77k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from data-goblin/power-bi-agentic-development at commit 41886f2, republished under its GPL-3.0 licence (© data-goblin). 3,059 words, ~8,844 tokens.

Download SKILL.mdSave it as .claude/skills/pbir-cli/SKILL.md (or your agent's skills folder). This skill also uses 145 other files; get the full folder from GitHub.
name
pbir-cli
description
This skill should be used whenever the user mentions "pbir", "pbir-cli", "Power BI reports", or "PBI reports", works with .pbir, .pbip, or .pbix files, or wants to refresh, screenshot, or visually verify a report that is open in Power BI Desktop. Covers creating, exploring, formatting, validating, and publishing Power BI reports through the pbir CLI and object model, plus driving Power BI Desktop (canvas reload, page screenshots) and querying connected or local semantic models.

Working with Power BI reports using pbir

CLI for exploring, building, managing, formatting Power BI reports. All commands use pbir.

IMPORTANT: ALWAYS use pbir CLI commands to inspect and modify reports. NEVER write, replace, copy, or patch report JSON files directly. If the CLI does not expose a required mutation, stop and report the missing capability; do not fall back to file editing. Reading JSON through pbir cat, pbir get, or read-only examples is allowed.

IMPORTANT: FIRST Read and adhere to the mental model in MENTAL-MODEL.md.

When pbir is missing

Install it with uv tool install pbir-cli (or pip install pbir-cli). That is the route to use in every ordinary case, including when the command is missing entirely.

bin/fetch.sh downloads a self-contained portable build instead. Reach for it only when pbir is not installed and installing it is not possible: no network access to PyPI, no Python, or a locked-down machine that forbids installs. A portable build does not update with uv tool upgrade, so preferring it when a normal install would have worked leaves the user on a stale CLI. If an install failed, fix the install rather than routing around it.

Keeping the Fabric CLI current

When publishing to Fabric (pbir publish) alongside the fabric-cli plugin, check the installed Fabric CLI (fab) if publishing reports a compatibility problem. Upgrade with uv tool upgrade ms-fabric-cli only when required or requested, and honor any user-pinned version.

Learning from Mistakes

Log learnings about the pbir CLI in the project's memory file: gotchas, unexpected behavior, user expectations, and design preferences. Use the agent-appropriate path:

  • Claude Code: .claude/rules/pbir-cli.md
  • Cursor: .cursor/rules/pbir-cli.mdc
  • GitHub Copilot: .github/instructions/pbir-cli.instructions.md

Keep entries concise and generalizable. The memory file is not a change log. Prune redundancy, link out to references and examples rather than restating them.

How to use pbir

General workflow
  1. Explore the report. The report must be in PBIR format: pbip, pbir-only, or pbix-with-PBIR-metadata. Prefer pbir or pbip. Whenever the user mentions Power BI Desktop or says the report is open in Desktop, run pbir desktop list FIRST: it maps each running instance to the file it has open (locating the report on disk) and confirms the bridge works before any edits begin. pbir desktop is Windows-only; on macOS and Linux do not use it (every invocation fails). Instead deploy with pbir publish to a sandbox workspace in Fabric and verify the rendered report in the browser via the Chrome MCP tools.
  2. Identify the model. Reports generally should be thin reports connected to a remote model in Power BI or Fabric.
  3. Clarify intent. For vague or open-ended instructions, consult references/vague-prompts.md and use AskUserQuestion to understand expectations and report context before mutating anything.
  4. Plan changes. For new reports, pages, or visuals, draft a wireframe or mock-up for the user to approve before building.
  5. Make changes. Reach for relevant files in references/, examples/, and related skills like pbi-report-design.
  6. Validate. Mutating commands validate their own writes. Run explicit pbir validate after a coherent batch of changes and before completion; use narrower checks while iterating and --all for the final confidence pass. For visual confirmation, prefer the local loop when the report is open in Power BI Desktop: pbir desktop refresh then pbir desktop screenshot and inspect the PNG (see "Desktop Integration" below). Otherwise ask permission to publish to a sandbox workspace with pbir publish and inspect rendering via Chrome MCP, devtools CLI, or Playwright.
  7. Iterate. Expect multiple rounds. Push back on one-shot expectations from vague prompts.
  8. Record learnings. Add concise, generalizable entries to the memory file noted above.

When the user has manually changed a report and asks to pull it down or learn from the differences, follow references/manual-roundtrip-review.md.

Path syntax

pbir uses a filesystem paradigm for identifying reports, pages, visuals etc. and glob syntax for bulk operations.

Format: ReportName.Report/PageName.Page/VisualName.Visual

  • Type suffixes (.Report, .Page, .Visual) are required
  • Quote paths with spaces: "My Report.Report/Dashboard.Page"
  • Use glob patterns for bulk operations: "Report.Report/**/*.Visual" (requires --force/-f for set and rm)
    • *.Visual; all visuals on current page
    • Page.Page/*.Visual; all visuals on a specific page
    • **/*.Visual; all visuals across all pages
    • **/card*.Visual; visuals whose name starts with "card"
    • **/*.Report/**/*.Visual; all visuals across all reports
  • Properties via get or set and dot notation: "Report.Report/Page.Page/Visual.Visual.title.fontSize"
  • Filters/bookmarks: "Report.Report/filter:Name", "Report.Report/bookmark:Name"
  • If multiple reports match, disambiguate with parent folder prefix
  • Absolute filesystem paths work too: "C:\Reports\Sales.Report", "C:\Reports\Flash.pbix" (globs do not combine with absolute paths)
  • Workspace destinations use .Workspace suffix: "My Workspace.Workspace/Report.Report"

Critical Rules

Follow all rules below.

  1. ASK user for clarifications and push back on one-shot prompt requests. Pursue an iterative multi-step way-of-working

  2. CHECK references before starting work. Identify relevant references and examples that can help you understand the user requirements

  3. NEVER edit report JSON files directly. Always use pbir CLI commands. Use pbir cat or pbir get to inspect JSON or properties; use pbir set for any property not covered by a dedicated command.

  4. Discover before setting. Run pbir schema describe <type> to list a visual type's objects, then pbir schema describe <type> <object> for property names, types, ranges, and enums before formatting. Do not guess property names

  5. Theme-first formatting. Check pbir visuals format before applying bespoke formatting; the theme may already set the property. Prefer pbir theme set-formatting for changes that apply to all visuals of a type. Reserve pbir visuals title/background/border for one-off overrides

  6. Validate proportionally. Mutating commands already validate their writes. Run pbir validate "Report.Report" after each coherent batch and before completion. Use --qa for overlap/overflow checks, --fields for model field verification, and --all for the final confidence pass

  7. Verify rendering through the Desktop bridge. When the report is open in Power BI Desktop, run pbir desktop refresh after every change unless the user asks not to, then pbir desktop screenshot and inspect the PNG after every meaningful change. Validation cannot catch rendering problems (overlap, truncation, wrong field, illegible formatting); the screenshot is the only proof a change rendered as intended. When a request involves many changes, ask the user up front whether to refresh after each step (so they watch progress in the canvas) or once at the end. Check availability once with pbir desktop list before starting the loop; if the bridge is unavailable, do not retry it after every change (see "When the bridge is unavailable" below)

Core Workflows

Exploration and Analysis

Understand existing reports before modifying. Always check page dimensions and existing visual positions before adding or resizing visuals setting position/size without knowing the page dimensions causes errors.

bash
pbir desktop list                                # FIRST if Desktop is mentioned: instances (PID, open file)
pbir ls                                          # Find all reports
pbir ls "Report.Report"                          # List pages/filters/theme
pbir tree "Report.Report" -v                     # Full structure with fields
pbir validate "Report.Report"                    # Health check
pbir get "Report.Report"                         # Report properties
pbir pages json "Report.Report/Page.Page"        # Check page width/height

For deeper exploration, consult references/exploration.md.

Model Discovery (Required Before Binding Fields)

Always query the connected model to discover correct table/column/measure names. Never guess field names.

bash
pbir model "Report.Report"                       # Connection info (workspace, model, thick/thin)
pbir model "Report.Report" -d                    # All tables, columns, measures
pbir model "Report.Report" -d -t Sales           # Filter to specific table
pbir model "Report.Report" -q "EVALUATE VALUES('Geography'[Region])"  # Check field values
pbir model "Report.Report" -q "EVALUATE ROW(\"Revenue\", [Total Revenue])"  # Test a measure
pbir fields list "Report.Report"                 # Fields already in use across report

Routing depends on the report's model reference: thin reports (byConnection) query the Power BI / Fabric service; thick reports (byPath) query the local Analysis Services engine of the Power BI Desktop instance that has the report open, so -q and -d work fully offline against live model state. Local queries need the .NET Framework ADOMD client (found automatically from DAX Studio or Desktop installs; override with PBIR_ADOMD_DIR).

For full model query patterns and field binding workflows, consult references/fields-and-bindings.md.

Semantic Model + Report Workflows (te + pbir)

Use te for semantic-model mutations and pbir for report mutations. A model rename can cascade inside the model while report bindings retain the old Table.Field; use te deps --downstream, then pbir fields find/replace and validate both layers. Consult references/te-cli-tandem.md for deploy order and complete workflows.

Desktop Integration (Refresh and Screenshot)

When a PBIP/PBIR report is open in Power BI Desktop on Windows, use the bridge for the shortest visual feedback loop:

bash
pbir desktop list
pbir desktop refresh "Report.Report"
pbir desktop screenshot "Report.Report/Page.Page" -o verify.png

Inspect the PNG after every meaningful batch. PBIX supports screenshots but not refresh; macOS/Linux do not support the bridge. When unavailable, validate, publish to an authorized sandbox, and inspect the service render. See references/desktop-integration.md for setup, multi-instance behavior, and troubleshooting.

Creating Reports

New reports include out of the box:

  • The sqlbi theme (professional colors, typography). Do not run pbir theme apply-template unless the user requests a different theme
  • A default Page 1 with a textbox visual for the page title at position (20,20) height 90. Do not add a new textbox; rename the existing page instead. Place subsequent visuals at y:120 or below to avoid overlapping the title textbox. Use --no-title on pbir new report to skip the default title textbox when the user wants a clean canvas

Connection: pass --connection "Workspace/Model.SemanticModel", or set an active connection first with pbir connect (optionally pbir profile / pbir connect --profile <name> to switch between saved connections). When an active connection is set, the connection flag can be omitted.

bash
pbir new report "Sales.Report" -c "Workspace/Model.SemanticModel"
pbir pages rename "Sales.Report/Page 1.Page" --to "Overview" -f   # Rename default page (new name via --to)
pbir add visual card "Sales.Report/Overview.Page" --title "Revenue" -d "Values:Sales.Revenue" --y 120
pbir add filter Date Year -r "Sales.Report"
pbir validate "Sales.Report"

Data-role names in -d "Role:Table.Field" (e.g. Values, Category, Y, Series, Indicator) come from the visual type's capability schema. Run pbir add visual --list or pbir visuals bind --list-roles to discover the roles for unfamiliar visual types. The CLI matches role names case-insensitively, so Values: and values: both work.

For step-by-step creation guidance, use the create-pbi-report skill.

Adding and Formatting Visuals

Formatting hierarchy: base theme -> custom theme -> visual-type defaults -> individual visual overrides. Always check and prefer theme-level formatting before applying bespoke visual formatting. Use pbir visuals format to see the full cascade with source labels (default/wildcard/visualType/visual).

bash
# Add a visual with data binding (role names match the visual capability list)
pbir add visual card "Report.Report/Page.Page" --title "Total Sales" -d "Values:Sales.Revenue"

# ALWAYS check theme cascade first; see what formatting already applies
pbir visuals format "Report.Report/Page.Page/Visual.Visual"

# Set formatting in the THEME (preferred; applies to all visuals of this type)
pbir theme set-formatting "Report.Report" "card.*.border.radius" --value 8

# Only format bespoke if genuinely one-off
pbir visuals title "Report.Report/Page.Page/Visual.Visual" --text "Revenue" --fontSize 14 --show

# Bind more fields
pbir visuals bind "Report.Report/Page.Page/Visual.Visual" -a "Category:Products.ProductName"

# Validate after changes
pbir validate "Report.Report"

# If the report is open in Desktop, confirm the rendering
pbir desktop refresh "Report.Report"
pbir desktop screenshot "Report.Report/Page.Page" -o verify.png   # then Read verify.png

For bulk visual creation, see references/add-new-visual.md. For formatting workflows, consult references/format-visuals.md (theme-first approach, property discovery, glob patterns).

Fast Rendered-Dashboard Loop

For renderer-sensitive iteration, publish cadence, New Card selectors, SVG table density, and latest-only line labels, follow references/rendered-dashboard-loop.md.

Visual Groups

Visual groups bind multiple visuals so they move and scale together. Use them when a set of visuals should behave as a single unit (a header strip, a KPI row, a chart-plus-annotation pair).

bash
pbir visuals group "Report.Report/Page.Page" --list                       # List groups on page
pbir visuals group "Report.Report/Page.Page" --create "KPI Group"         # Create empty group
pbir visuals group "Report.Report/Page.Page/Group.Visual" --add "Card.Visual" --add "KPI.Visual"
pbir visuals group "Report.Report/Page.Page/Group.Visual" --remove "Card.Visual"
pbir visuals group "Report.Report/Page.Page/Visual.Visual" --ungroup      # Remove this visual from its group
pbir visuals group "Report.Report/Page.Page/Group.Visual" --ungroup       # Ungroup all members and delete the group

Default mode is ScaleMode; override with --mode if a different behavior is needed.

Style Presets

Style presets apply a curated bundle of formatting in one step. Use a preset when the user wants a consistent look across many visuals without specifying every property.

bash
pbir visuals preset --list                                        # Available presets
pbir visuals preset "Report.Report/Page.Page/Visual.Visual" --name minimal
pbir visuals preset "Report.Report/**/*.Visual" --name presentation

Presets are themed; pair them with pbir theme apply-template for full visual consistency.

Property Discovery (Required Before Formatting)

Every visual type has dozens of objects with hundreds of properties. Use the schema discovery workflow to find the right object and property name before setting values. Do not guess property names.

bash
# Step 1: What objects exist for this visual type? (objects + property counts)
pbir schema describe "lineChart"

# Step 2: What properties does an object have? (includes types, ranges, enums, descriptions)
pbir schema describe "lineChart" "lineStyles"

# Step 3: What's currently set on a live visual? (shows source: default/wildcard/visualType/visual)
pbir visuals format "Report.Report/Page.Page/Visual.Visual"
pbir visuals format "Report.Report/Page.Page/Visual.Visual" -v   # Include unset (None) properties
pbir visuals format "Report.Report/Page.Page/Visual.Visual" -p lineStyles  # Filter to object

# Step 4: Fuzzy search for a property by name
pbir visuals properties -s "marker"

For built-in visuals, the authoritative list of valid type ids and per-type objects names comes from Microsoft's core visual catalog (bundled and pinned by the CLI). Use it to confirm a type or object name exists before authoring:

bash
pbir schema types                       # Built-in visual + entity type ids (--vco for universal container objects, --selectors for selector objects)
pbir schema describe "barChart"         # Valid objects + their properties for one type
pbir schema roles "barChart"            # Data roles the type accepts (required? multiple? Column/Measure)
pbir schema describe "tableEx" --json   # Full JSON for agent consumption

pbir schema describe draws from this core catalog (the authority pbir set enforces) and enriches it with the theme schema for value ranges and enums. Custom visuals are out of scope for the catalog.

Schema descriptions include practical usage notes (e.g., error bars as target lines, title.text supporting measure-driven dynamic values). Use --json output for full descriptions.

For a complete offline reference of every property for every visual type, consult references/property-catalogue.md (49 types, 15 universal containers, 12,600+ property slots).

Bulk Modification (Glob Patterns)
bash
# Set property on ALL visuals in report (glob requires -f)
pbir set "Report.Report/**/*.Visual.title.show" --value false -f

# Find all card visuals
pbir find "Report.Report/**/card*.Visual"

# Format all visuals on a page
pbir visuals title "Report.Report/Page.Page" --show --fontSize 12
Conditional Bulk Ops (--where)

--where filters which visuals a glob operation targets. Available on set and all visuals property commands.

bash
pbir set "Report.Report/**/*.Visual.title.fontSize" --value 16 --where "visual_type=card" -f
pbir visuals legend "Report.Report/**/*.Visual" --show --where "width__gt=400"
pbir visuals resize "Report.Report/**/*.Visual" --width 350 --height 250 --where "visual_type=card"

Predicate operators: =, __lt, __gt, __lte, __gte, __in=a|b|c, __contains, __icontains. Combine with commas (ANDed): --where "visual_type=card,width__gt=300". Full operator list in references/format-visuals.md.

Show full SKILL.md (1,216 more words)Show less
Conditional Formatting
bash
# Find out what a container accepts before writing to it
pbir schema describe barChart.dataPoint          # "Conditional formatting:" line at the bottom

# Create CF (structural; use pbir visuals cf)
pbir visuals cf "Visual" --measure "labels.color _Fmt.StatusColor"
pbir visuals cf "Visual" --gradient --field "Table.Field" --min-color bad --max-color good
pbir visuals cf "Visual" --data-bars --field "Table.Field"
pbir visuals cf "Visual" --image --field "_SVG.Bullet"          # measure-driven image or SVG

# Read / edit / remove CF (dot-path; use pbir set / pbir get)
pbir get "Visual.dataPoint.fill.cf"                             # summary
pbir set "Visual.dataPoint.fill.cf.gradient.min.color" --value "bad"
pbir set "Visual.dataPoint.fill.cf" --remove                    # or --clear
pbir get "Report.Report/**/*.Visual.**.cf"                       # bulk read

CF reaches well past data point colors: titles, subtitles, borders, tooltips, axis bounds, reference-line values, data-label text, and error-bar styling all accept a measure. pbir schema describe <type>.<container> is the authoritative answer for any one container, and a starred property there was confirmed against a rendered report rather than inferred from the catalog.

When the field driving the format is not the field being formatted (a grid column coloured by a helper measure, a combo chart's secondary series), name the target with --target-field, otherwise the entry scopes to the driver and Desktop renders it on the wrong column:

bash
pbir visuals cf "Grid.Visual" --rules --field "Sales.Margin %" --rule "lt 0 bad" \
  --on values.backColor --target-field "Sales.Revenue"

For gradient/rules/icons/data bars/image options, copy/remove/convert, and best practices, consult references/conditional-formatting.md.

Visual Actions, Bookmarks, Drillthrough
bash
pbir visuals action "Visual" --type PageNavigation --target "Details"  # Set action
pbir add bookmark "Report.Report" "Q1 View"                           # Create bookmark
pbir bookmarks page "Report.Report" "Q1 View" "Details"               # Set bookmark target page
pbir pages drillthrough "Report/Details.Page" --table T --field F     # Add drillthrough
pbir pages set-tooltip "Report/Tooltip.Page"                          # Configure tooltip

For bookmark management, consult references/bookmarks.md.

Filters
bash
pbir add filter Table Field -r "Report.Report"                        # Categorical
pbir add filter T F -r "R.Report" --type TopN --n 10 --by-table T2 --by-field F2  # TopN
pbir add filter T F -r "R.Report" --type Advanced --operator GreaterThan --values 1000
pbir add filter Date Date -r "R.Report" --type RelativeDate --period Last30Days

Filter creation validates the field against the connected semantic model. If validation cannot resolve (missing connection, model unreachable), the command fails closed rather than producing an unverified filter. Use --no-validate only when the user explicitly needs to bypass this.

To change filter type, remove and recreate. For full filter reference, consult references/filters.md.

Auditing Reports
bash
pbir validate "Report.Report"                       # Structure, schema, fields, QA (use --all)
pbir bpa run "Report.Report"                        # Best Practice Analyzer rule sweep
pbir bpa run "Report.Report" --fix --save           # Apply safe automatic fixes
pbir tree "Report.Report" -v                        # Structure + field bindings
pbir theme colors "Report.Report"                   # Palette and usage
pbir color list "Report.Report"                     # Every hard-coded color literal and where it is used
pbir fields list "Report.Report"                    # Fields in use
pbir dax measures list "Report.Report"              # Extension measures
pbir filters list "Report.Report"                   # Filters at every scope

BPA rules are managed with pbir bpa rules list/ignore/unignore; ignored rules are scoped per report. For the comprehensive audit checklist, consult references/audit-report.md.

Command Reference

The full command reference lives in references/cli-reference.md. Always run pbir <command> --help before using an unfamiliar command; the help text is authoritative for flag names and defaults.

Quick map of command groups:

yaml
Getting started:     config (show, init, set, paths), connect (+ --profile), profile, new
Browse and query:    ls (+ --tree), find, get, cat, model     # `tree` is an alias of `ls --tree`
Modify:              set, add, mv, cp, rm, visuals, pages
Data:                fields, filters, dax, bookmarks, annotations
Theme and style:     theme (colors, fonts, set-colors, set-fonts, set-formatting, apply-template), color (list, replace), fonts (list, replace, clear, available)
Schema discovery:    schema (= capabilities) (types, describe, roles, status, upgrade), visuals properties, visuals format
Workflow ops:        validate, backup, restore, publish, download, batch, open, bpa, usage
Desktop (Windows):   desktop (list/status, refresh/reload, screenshot)

Notes on the less-obvious groups:

  • connect / profile: pbir connect "Report.Report" sets the active context so subsequent commands can omit the report path. pbir profile saves and switches named connections (pbir connect --profile dev).
  • visuals group: visual groups let users scale and position multiple visuals together. See "Visual groups" workflow below.
  • visuals preset: named style presets (minimal, bold, clean, emphasis, presentation) apply curated formatting in one step.
  • bpa: Best Practice Analyzer. pbir bpa run "Report.Report" reports rule violations; --fix --save applies safe fixes. pbir bpa rules list/ignore/unignore manages the rule set.
  • color: pbir color list enumerates every hard-coded color literal and where it is used; pbir color replace --from <hex> --to <hex> swaps one across the report (scope with --theme/--report). Distinct from the theme group, which edits the theme JSON rather than inline literals.
  • fonts: the typography mirror of color. pbir fonts list audits families/sizes/weights across report + theme; pbir fonts replace --from --to swaps a family everywhere; pbir fonts clear drops per-visual font/format overrides so the theme default applies. To set the theme's own fonts, use pbir theme set-fonts.
  • batch: pbir batch runs a reviewed JSON spec (version: 2) of many steps against globbed targets; plan prints a plan_digest and run --plan-digest refuses to execute a drifted plan. Use it for repeatable, auditable bulk edits; see the Batch Automation section of references/cli-reference.md.
  • config paths: prints where configuration, auth state, templates, backups, and caches live on this OS. Storage is platform-native since 0.9.30; never assume ~/.pbir/.
  • usage: pbir usage "Report.Report" (or a workspace / published report) pulls views, viewers, pages, and load times from the Power BI service via your az login token. --model adds the workspace usage metrics model for richer detail (Contributor+, generates a hidden model). Relies on undocumented service telemetry.

Global Flags

Top-level flags; place before the subcommand: pbir -q new report ..., NOT pbir new report -q ...

yaml
-q / --quiet: suppress animations, tips, spinners (agent-friendly)
--output-format text|json: structured stdout for commands that support it
--error-format text|json: structured stderr where supported
--debug: enable tracebacks and timing
--rawdog: skip EVERY validation check (umbrella for --skip all)
--skip <category>: skip validation categories (repeatable, comma-separated): structure, schema, schema-version, fields, enums, qa, roles, layout, theme

pbir validates implicitly on mutations. --skip/--rawdog relax that for deliberate cases, e.g. pbir --skip fields set ... to author a visual whose field is not in the model yet. They are global, so they go before the subcommand. Prefer fixing the underlying issue over --rawdog.

Command-specific output flags such as --json or -F json, and mutation flags such as -f/--force, go after the relevant subcommand. Check pbir <command> --help; they are not global flags.

Common Mistakes

  • Role names are case-insensitive but should match the capability list. Use pbir add visual --list or pbir visuals bind --list-roles to discover role identifiers (e.g. Values, Category, Y, Series) for the target visual type.
  • pbir cat does not support filters or bookmarks. Use pbir filters list --json or pbir bookmarks json instead.
  • pbir publish uses positional args, not --workspace. Correct: pbir publish "Report.Report" "Workspace.Workspace/Report.Report" -f.
  • pbir filters list has no -v flag. Use --json for detailed output.
  • Do not convert to PBIX then publish the PBIR folder. If converting to PBIX, publish the .pbix file directly. If publishing PBIR, skip conversion entirely.
  • pbir pages rename renames folders only; it does not change page IDs or display names. Use --to for single page folder rename.
  • DMV queries fail against service-connected models. For thin reports (byConnection), pbir model -q runs EVALUATE DAX only; INFO.TABLES() and other DMVs return 400 from the service, and schema comes from TMDL. Use pbir model -d for schema introspection. Thick reports (byPath) open in Desktop query the local engine instead, where the live schema is used.
  • pbir desktop refresh does not work on PBIX files. Desktop only reloads PBIP/PBIR definitions from disk; PBIX instances support pbir desktop screenshot only.
  • Always run pbir <command> --help before using an unfamiliar command to confirm exact syntax.
  • A valid write can still be renderer-inert. Modern visuals use instance selectors. Prefer plain paths on current pbir (it routes known objects correctly); if an older build reads the value but Power BI ignores it, compare with pbir cat and use .id(default). explicitly.
  • Native table values have no vertical-alignment property. Do not invent values.verticalAlignment; use pbir visuals table-density to reduce image height/row padding, or make every affected cell an SVG only when the accessibility and maintenance trade-off is acceptable.

User Interaction

Clarify choices that change the visual story, field mapping, theme-vs-local scope, or Deneb/core trade-off. Confirm before irreversible visuals clear-formatting; agree on refresh/publish cadence for multi-batch work. Use references/vague-prompts.md when intent is genuinely underspecified.

Validation

Mutating commands validate their own writes. Run pbir validate "Report.Report" after a coherent batch of changes and before completion. This catches broken field references, invalid JSON, schema violations, and structural issues without repeating a full report scan after every small command.

yaml
(no flags): structure + schema validation
--fields: also validate fields exist in model with correct types (Column/Measure)
--qa: also run quality-assurance rules (overlap/overflow, hidden visuals, visual filters, field counts, layout and role-cardinality heuristics)
--semantic: also check visual type ids + objects/visualContainerObjects names against the core visual catalog
--all: structure + schema + fields + QA + semantic
--strict: every non-advisory warning becomes a failure (core-catalog advisories stay warnings)
--json / --tree: output format
--allow-download-schemas: download missing schemas on the fly

The same checks run implicitly on mutations. To bypass a category deliberately, use the global flags before the subcommand: --skip <category> (structure, schema, schema-version, fields, enums, qa, roles, layout, theme; repeatable, comma-separated) or --rawdog (skip all). Prefer fixing the cause over skipping.

--semantic is backed by the core visual catalog bundled and pinned by the CLI. It flags unrecognized visualType, objects, and visualContainerObjects names as advisory warnings (info for unlisted properties); --strict leaves those advisories as warnings while failing on everything else. Files containing NaN or Infinity are rejected as invalid JSON; measure-only bar and column charts are valid and no longer flagged as unrenderable. The catalog is preview and may lag the product, so unknown but plausible names and custom visuals can still be valid. Treat semantic findings as a quick authoring check, not a hard gate.

Schema version errors: Fix with pbir schema fetch --yes then pbir schema upgrade "Report.Report".

pbir validate checks structure, not rendering. When the report is open in Power BI Desktop, follow every validation with the bridge loop: pbir desktop refresh, pbir desktop screenshot, then read the PNG. Do not report a change as complete without having seen it render.

Reference Files

yaml
references/cli-reference.md: full syntax for any command with all flags
references/exploration.md: exploring an unfamiliar report systematically
references/desktop-integration.md: driving Power BI Desktop; canvas refresh, page screenshots, auto-refresh, local model queries, troubleshooting
references/manual-roundtrip-review.md: safe pull-down and semantic comparison of user edits; New Card and table-width lessons
references/rendered-dashboard-loop.md: short validate/query/render batches; publish cadence and renderer-sensitive patterns
references/create-new-report.md: building a report from scratch
references/add-new-visual.md: adding visuals, layout patterns, bulk creation
references/visual-groups.md: visual groups (create, add/remove members, ungroup)
references/visual-presets.md: style presets (minimal, bold, clean, emphasis, presentation)
references/fields-and-bindings.md: field binding, Column vs Measure types, swapping fields, rebinding
references/te-cli-tandem.md: coordinated semantic-model and report changes with te + pbir; renames, moves, additions, removals, validation order
references/format-visuals.md: formatting workflow, property discovery, glob patterns, --where predicates
references/conditional-formatting.md: CF types, measure-based CF, copy/remove/update/convert
references/reference-lines.md: reference-line entries on chart axes; pbir visuals reference-line and styling via pbir set
references/error-bars.md: error bars and bullet markers on chart visuals; pbir visuals error-bars and styling via pbir set
references/modifying-theme.md: theme inspection, colors, text classes, fonts
references/apply-theme.md: applying/copying/saving theme templates
references/converting-reports.md: format conversion, thick/thin split, merge, rebind
references/thin-report-measures.md: extension measures for CF, conditional rendering
references/visual-calculations.md: visual calculations (RUNNINGSUM, RANK, etc.)
references/filters.md: filter types (Categorical, TopN, Advanced, RelativeDate), management, pane styling
references/bookmarks.md: bookmark management, copying, button references
references/audit-report.md: report quality audit checklist
references/bpa.md: Best Practice Analyzer; running rules, applying safe fixes, managing the rule set
references/vague-prompts.md: handling underspecified prompts; targeted questions, sensible defaults
references/property-catalogue.md: offline property index (49 types, 15 containers, 12,600+ slots)
references/visualTypes/*.md: per-visual-type design rules, CLI commands, and best practices
examples/visuals/default/*.json: read-only examples of minimal visual structures with theme defaults
examples/visuals/formatted/*.json: read-only examples of formatting, CF, filters, and advanced patterns; reproduce them with CLI commands, never by copying JSON into a report
  • pbi-report-design: Use for design best practices and guidelines for reports
  • pbip-format: Use for understanding PBIP structure, not for bypassing pbir report mutations
  • create-pbi-report: Use to follow step-by-step instructions for creating new reports

© data-goblin, GPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 145 other files (references) in plugins/reports/skills/pbir-cli of data-goblin/power-bi-agentic-development.

  • SKILL.md
  • bin/README.md
  • bin/fetch.sh
  • examples/K201-MonthSlicer.Report/.platform
  • examples/K201-MonthSlicer.Report/StaticResources/RegisteredResources/SqlbiDataGoblinTheme.json
  • examples/K201-MonthSlicer.Report/StaticResources/SharedResources/BaseThemes/CY24SU10.json
  • examples/K201-MonthSlicer.Report/definition.pbir
  • examples/K201-MonthSlicer.Report/definition/bookmarks/54698b9cd0a0c57906b7.bookmark.json
  • examples/K201-MonthSlicer.Report/definition/bookmarks/71abeb475381792b035d.bookmark.json
  • examples/K201-MonthSlicer.Report/definition/bookmarks/82ce9a7f49847d03190a.bookmark.json
  • examples/K201-MonthSlicer.Report/definition/bookmarks/8f5a4883bde0d3bd075d.bookmark.json
  • examples/K201-MonthSlicer.Report/definition/bookmarks/958f29ad733c047ee0b8.bookmark.json
  • … and 134 more

Open the folder on GitHubat commit 41886f2

Compare with similar skills

Pbir CLI next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Pbir CLI compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Pbir CLI this skilldata-goblin/power-bi-agentic-development1k—~8.8kAutomated safety check: PassGPL-3.0
Power Bi AI ReadinessDKH-DK/Self-Service-Power-BI-Fabric113—~2kAutomated safety check: PassNone
Pbi Report Builderlukasreese/powerbi-claude-skills128—~7.5kAutomated safety check: PassNone
Pbi Docxperiun/skills-xperiun-free117—~3kAutomated safety check: PassMIT
Pbip Dependency Analyzerlukasreese/powerbi-claude-skills128—~3.2kAutomated safety check: PassNone
Pbi Modelo Reviewxperiun/skills-xperiun-free117—~2.9kAutomated safety check: PassMIT

Similar skills

  • Power Bi AI Readiness

    DKH-DK/Self-Service-Power-BI-Fabric

    Score and prepare Power BI semantic models for AI (Fabric Data Agent / Copilot).

    113 GitHub stars~2k tokensUpdated 3 mo ago
    Data & AnalyticsAuto-check passed
  • Pbi Report Builder

    lukasreese/powerbi-claude-skills

    [power-bi] Power BI PBIR Report Builder with IBCS Visuals. An agent skill from lukasreese/powerbi-claude-skills.

    128 GitHub stars~7.5k tokensUpdated 5 mo ago
    Data & AnalyticsAuto-check passed
  • Pbi Doc

    xperiun/skills-xperiun-free

    Documenta projeto Power BI (PBIP) inteiro em markdown estruturado + HTML navegável (mini-site de doc).

    117 GitHub stars~3k tokensUpdated 20 days ago
    Data & AnalyticsAuto-check passed
  • Pbip Dependency Analyzer

    lukasreese/powerbi-claude-skills

    Power BI PBIP Dependency Analyzer. An agent skill from lukasreese/powerbi-claude-skills.

    128 GitHub stars~3.2k tokensUpdated 5 mo ago
    Data & AnalyticsAuto-check passed
  • Pbi Modelo Review

    xperiun/skills-xperiun-free

    Audita modelo Power BI (PBIP) e gera relatório priorizado com anti-patterns, score 0-100 e recomendações acionáveis.

    117 GitHub stars~2.9k tokensUpdated 20 days ago
    Data & AnalyticsAuto-check passed
  • Pbi Dax Create

    xperiun/skills-xperiun-free

    Cria medida DAX a partir de descrição em PT, respeitando o modelo Power BI existente (colunas reais, naming convention, padrões DAX).

    117 GitHub stars~2.6k tokensUpdated 20 days ago
    Data & AnalyticsAuto-check passed

More from data-goblin/power-bi-agentic-development

All 33 skills in this repo
  • Paginated Report

    data-goblin/power-bi-agentic-development

    Author, validate, publish, and test Power BI paginated reports in the RDL format.

    1k GitHub stars~3.5k tokensUpdated 2 days ago
    Auto-check passed
  • Audit Tenant Settings

    data-goblin/power-bi-agentic-development

    Automatically invoke this skill whenever the user asks about Fabric tenant settings or Power BI tenant settings or auditing tenant settings.

    1k GitHub stars~4.7k tokensUpdated 2 days ago
    Auto-check passed
  • Bpa Rules

    data-goblin/power-bi-agentic-development

    Interactive BPA rule generation for Power BI semantic models; guided discovery, model investigation, and expert rule authoring.

    1k GitHub stars~4.4k tokensUpdated 2 days ago
    Auto-check passed
  • Pbip

    data-goblin/power-bi-agentic-development

    Guidance for Power BI Project (PBIP) structure, thick and thin reports, project renames, forks, and validation.

    1k GitHub stars~3.8k tokensUpdated 2 days ago
    Auto-check passed
  • Review Report

    data-goblin/power-bi-agentic-development

    Actionable feedback on the quality, usage, and effectiveness of Power BI reports.

    1k GitHub stars~4.2k tokensUpdated 2 days ago
    Auto-check passed
  • Semantic Model

    data-goblin/power-bi-agentic-development

    This skill should be used whenever the user mentions a "semantic model", "data model", or "dataset", or asks to "build", "model", "design", "optimize", "review", or "audit" one, or to "add a…

    1k GitHub stars~2.8k tokensUpdated 2 days ago
    Auto-check passed

Works with

Questions about Pbir CLI

What does Pbir CLI do?

This skill should be used whenever the user mentions "pbir", "pbir-cli", "Power BI reports", or "PBI reports", works with .pbir, .pbip, or .pbix files, or wants to refresh, screenshot, or visually…. Pbir CLI is an agent skill from data-goblin/power-bi-agentic-development.pbix files, or wants to refresh, screenshot, or visually verify a report that is open in Power BI Desktop.

When should I use Pbir CLI?

Pbir CLI fits situations like: data & Analytics work in your project.

How do I install Pbir CLI in Claude Code?

Run `npx skills add data-goblin/power-bi-agentic-development --skill pbir-cli -a claude-code`. Or copy the skill folder (plugins/reports/skills/pbir-cli in data-goblin/power-bi-agentic-development) into .claude/skills/pbir-cli in your project. Claude Code loads it when a task matches its description.

How do I install Pbir CLI in Codex?

Run `npx skills add data-goblin/power-bi-agentic-development --skill pbir-cli -a codex`. Or copy the skill folder (plugins/reports/skills/pbir-cli in data-goblin/power-bi-agentic-development) into .agents/skills/pbir-cli in your project. Codex loads it when a task matches its description.

Can I use Pbir CLI in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add data-goblin/power-bi-agentic-development --skill pbir-cli -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/pbir-cli, .gemini/skills/pbir-cli, .github/skills/pbir-cli and .opencode/skills/pbir-cli in your project.

What does Pbir CLI need to run?

Going by SKILL.md and its folder, Pbir CLI needs a shell for the scripts in its folder and the command-line tools its instructions call (uv, pip and az). Our summary lists: Python 3; A Bash shell.

Does Pbir CLI access the network?

SKILL.md contains no URLs. Its commands use uv and pip, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Pbir CLI safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Pbir CLI use?

Pbir CLI is published under the GPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Pbir CLI use?

About 8.8k tokens (SKILL.md is roughly 35k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 68k tokens, read only when the agent opens those files.

What are the alternatives to Pbir CLI?

Skills that share tags, products or a category with Pbir CLI: Power Bi AI Readiness (DKH-DK/Self-Service-Power-BI-Fabric, 113 stars), Pbi Report Builder (lukasreese/powerbi-claude-skills, 128 stars), Pbi Doc (xperiun/skills-xperiun-free, 117 stars) and Pbip Dependency Analyzer (lukasreese/powerbi-claude-skills, 128 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Pbir CLI?

data-goblin (a GitHub user) maintains it in data-goblin/power-bi-agentic-development, which has 1,026 GitHub stars. The repository holds 33 skills in this directory. The repository was last updated on October 5, 2026.

Source: data-goblin/power-bi-agentic-development on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.