Atlas / Skills / data-goblin / Pbir Cli

Pbir CliSAFE

skills/data-goblin/pbir-cli

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, and AI dashboards. Includes Microsoft Fabric skills and Fabric agents. Weekly updates.

Verdict
SAFE
Grade
B
Trust score
89 /100
Version
—
Hosts
3 documented
License
GPL-3.0
Stars
1,039
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

A last resort, not an alternative. Install pbir with uv tool install pbir-cli or pip install pbir-cli in every ordinary case, including when the command is missing.

Use this folder only when pbir is not installed and cannot be: no network access to PyPI, no Python, or a machine that forbids installs. A portable build does not update with uv tool upgrade, so choosing it when a normal install would have worked strands you on a stale CLI. If pbir --version already works, ignore this folder entirely.

The binaries are not committed. The Windows build alone is ~180 MB, past GitHub's 100 MB per-file limit, and nobody installing an unrelated plugin from this marketplace should pay for a quarter-gigabyte clone. Fetch them on demand instead:

./fetch.sh            # newest release
./fetch.sh v0.9.32    # a specific one

That downloads the build matching your platform into this folder:

pbir-portable-macos-arm64.tar.gz    macOS, Apple silicon      ~66 MB
pbir-portable-windows-x64.exe       Windows x64              ~180 MB

Linux has no portable build. Install it with uv tool install pbir-cli or pip install pbir-cli, which is the recommended route on macOS and Windows too.

Running them

macOS: tar -xzf pbir-portable-macos-arm64.tar.gz, then run the extracted pbir. The archive is notarized, so Gatekeeper will not block it.

Windows: run pbir-portable-windows-x64.exe directly. It is Authenticode signed.

Deleting them

Anything `fetch.sh` downloads here can be deleted whenever space is tight. These are a convenience copy, not a dependency: no instruction in SKILL.md reads from this folder, and removing them leaves the skill fully working for anyone who installed pbir through pip or uv. Re-run fetch.sh if you want them back.

Read from source at commit b8d9b0f3c97aOBSERVED · 2026-10-13
02

Install

Commands as the repository documents them. They are shown, not run.

uv tool upgrade
pip install pbir-cli
uv tool upgrade
pip install pbir-cli
03

Host compatibility

What the documentation claims. We have not run a compatibility test.

HostStatusNotes
claude-codementioned
copilotmentioned
cursormentioned
04

What it tells the agent

The instruction file, verbatim from the audited commit — this is the text the model reads, and the surface the audit's instruction layer examines. Quoted here so you can judge it without cloning anything.

---
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](important/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.

0. **ASK user for clarifications and push back on one-shot p
05

Trust audit

SAFEgrade B · trust 89/100 Nothing in the source contradicts what it says it does. Grade A is reserved for packages that have also passed the behavioural sandbox.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codePASS
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
none-observed
Network
none-observed
Shell
none-observed
Dependencies
pinned
Secrets in source
none-found

Findings (3)

LOWInventory / provenance · inv.hidden_file · CWE-1104
examples/K201-MonthSlicer.Report/.platform
.platform
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWObfuscation / stealth · obf.base64_blob · CWE-506, CWE-94
examples/K201-MonthSlicer.Report/StaticResources/RegisteredResources/SqlbiDataGoblinTheme.json:1109
"url": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAACSEAAAUfCAYAAABA4bWQAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAE1ASURBVHhe7NqhAcAgEMDA0v3nfQuGCYi9M1kia2b2BwAAAAAAAAAA8O
INFOPrompt injection · prompt.conditional_escalation · CWE-94, CWE-1427
SKILL.md:43
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 De

Gates applied: no_behavioural_pass.

Audited 2026-10-13 · audit v0.4.1 · source sha b8d9b0f3c97afull audit observations/trust-audit/skill/data-goblin__pbir-cli.json · Report an issue / request a re-scan
06

Audit history

Every audit this skill has had.

DateSourceVerdictGradeScoreChange
2026-10-13b8d9b0f3c97aSAFEB89first audit
07

Questions

What does the Pbir Cli skill do?

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, and AI dashboards. Includes Microsoft Fabric skills and Fabric agents. Weekly updates.

Is Pbir Cli safe to install?

The audit found nothing in the source that contradicts what it says it does, and graded it B (89/100). Grade A is held back for packages that have also passed a sandboxed behavioural run, which is why a clean skill reads B.

What can Pbir Cli access on my machine?

The audit observed no filesystem, network or shell use at all in its source.

Which assistants does Pbir Cli work with?

Its documentation mentions claude-code, copilot and cursor. That is what the text claims, not a compatibility test we ran.

How current is this page?

The grade is for one exact copy of the source (b8d9b0f3c97a), read on 2026-10-13. The repository is watched, and a new audit runs when it changes — this is the first audit.

Advertisement