Skip to content

v3.11.0 - Custom Visual Authoring (Vibe BI for .pbiviz)

Choose a tag to compare

@MinaSaad1 MinaSaad1 released this 04 May 17:50
· 215 commits to master since this release
bc9a1ab

Highlights

Vibe-code Power BI custom visuals end-to-end with the new power-bi-custom-visuals Claude skill plus three new pbi visual commands. The skill scaffolds a TypeScript project sibling to your .pbip, iterates against the Power BI Visuals SDK with tsc --noEmit between every change, packages a .pbiviz, and embeds it into the report.

Added

Claude skill: power-bi-custom-visuals

  • Auto-installs Node and pbiviz on first run with explicit user consent. Pins powerbi-visuals-tools@^5.6.0 and powerbi-visuals-api@^5.11.0 to known-good versions; override via PBIVIZ_VERSION env var.
  • Sibling-directory scaffold -- TypeScript project lives next to your .pbip, never inside it. Clean boundary.
  • Plan-then-code on fresh scaffolds -- 5-line plan (data roles, render approach, formatting properties, deps) with explicit user OK before any code. Skipped for sustained-authoring edits to existing projects.
  • Agent-driven inner loop on tsc --noEmit with a 5-turn no-progress cap and oscillation detection. Single user round-trip at the end for visual correctness.
  • Auto-bumps pbiviz.json patch version on every package so Power BI Desktop's GUID+version cache invalidates and serves fresh code. Manual user version overrides (e.g. 1.0.0-rc.1) are respected.
  • npm allowlist baked into SKILL.md -- D3 family, Lodash, date-fns, powerbi-visuals-utils-* install without confirmation. Off-list installs require Claude to justify name + version + reason + bundle impact and get explicit user OK. Blocks the typosquat attack vector.
  • AGENTS.md template dropped into scaffolded projects: editable vs locked files + ~30 lines of SDK pattern crib (IVisual lifecycle, dataView reading, capabilities data roles, formatting model, common gotchas).

CLI commands

  • pbi visual import-custom <pbiviz-file> [--replace] [--no-sync] -- copy a locally-built .pbiviz into StaticResources/RegisteredResources/ and register it in report.json. --replace overwrites by GUID for the iteration loop.
  • pbi visual list-custom -- list embedded and public (AppSource) custom visuals with a kind distinguisher.
  • pbi visual remove-custom <guid-or-name> [--no-sync] -- deregister and physically delete the .pbiviz. GUID canonical; ambiguous names error with disambiguation guidance.

CI

  • New Custom Visual SDK Smoke workflow (nightly + on touch of skill or pinned versions) runs the full pbiviz toolchain end-to-end on windows-latest to catch SDK-version drift before users do.

Out of scope (deferred follow-ups)

pbiviz start live preview, AppSource (public) registration via GUID-only, AppSource publish helper (freeze-version), inspect-without-importing (inspect-custom), bundled example visuals.

Install / Upgrade

pipx upgrade pbi-cli-tool        # existing users
pipx install pbi-cli-tool        # new users
pbi-cli skills install            # picks up the new power-bi-custom-visuals skill

Pull requests

  • #4 -- feat: add custom visual authoring (vibe-code .pbiviz)
  • #5 -- ci: install pbiviz locally so webpack resolves ts-loader

Full changelog: v3.10.10...v3.11.0