
pakorn269/powerbi-desktop-handbook
Developer toolsVersion-aware Power BI Desktop visual catalog and generator for standalone, offline report-building handbooks. Compatible with powerbi-modeling-mcp.
Overview
Build version-aware, standalone report-construction handbooks that feel like Microsoft Power BI Desktop in the browser. The project combines a pinned Power BI visual schema, curated release evidence, manifest validation, and an offline HTML generator. Its first release profile targets , build 2.150.5353.0. - A release-aware catalog of Power BI visuals, aliases, availability states, and format objects. - Exact-build detection for the locally installed Report Server Desktop executable. - Validation for report page dimensions, visual types, placement bounds, and format-setting assertions. - A shared Power BI Desktop-style web shell with a ribbon, section rail, report workspace, and inspector panes. - An interactive 2D canvas layout preview with realistic mockups, blueprint wireframes, and live layout adjustment. - A 37-item visual gallery with a curated, two-tone SVG palette organized by visual family.
README
Power BI Desktop Handbook
Build version-aware, standalone report-construction handbooks that feel like Microsoft Power BI Desktop in the browser.
The project combines a pinned Power BI visual schema, curated release evidence, manifest validation, and an offline HTML generator. Its first release profile targets Microsoft Power BI Desktop optimized for Power BI Report Server — January 2026, build 2.150.5353.0.
What it provides
- A release-aware catalog of Power BI visuals, aliases, availability states, and format objects.
- Exact-build detection for the locally installed Report Server Desktop executable.
- Validation for report page dimensions, visual types, placement bounds, and format-setting assertions.
- A shared Power BI Desktop-style web shell with a ribbon, section rail, report workspace, and inspector panes.
- An interactive 2D canvas layout preview with realistic mockups, blueprint wireframes, and live layout adjustment.
- A 37-item visual gallery with a curated, two-tone SVG palette organized by visual family.
- Exact-build field-role evidence for 30 gallery visuals, with seven modeled entries explicitly pending when the classic gallery did not expose them directly.
- Backward-compatible legacy and structured field assignments normalized against exact-release Build-role evidence.
- Global handbook search, catalog filtering, visual navigation, persistent checklists, responsive layouts, and print-ready output.
- A single generated HTML file with no runtime packages or network dependencies.
Quick start
Install Node.js 20 or newer. No package installation is required.
npm test
npm run validate
npm run audit:public
node plugins/powerbi-desktop-handbook/skills/powerbi-desktop-handbook/scripts/handbook.mjs detect --json
node plugins/powerbi-desktop-handbook/skills/powerbi-desktop-handbook/scripts/handbook.mjs lookup --release 2.150.5353.0 --visual Matrix --json
node plugins/powerbi-desktop-handbook/skills/powerbi-desktop-handbook/scripts/handbook.mjs build --manifest examples/sample-dashboard.json --output examples/sample-dashboard-guide.html --json
Open examples/sample-dashboard-guide.html directly in a browser. The generated handbook works through file:// and does not require a local server.
Antigravity IDE integration
Install the plugin and agent skill directly into your local Antigravity IDE environment:
# Install plugin globally (~/.gemini/config/plugins/) and for this workspace (.agents/plugins/)
npm run install:antigravity
# Or uninstall when needed
npm run uninstall:antigravity
Once installed, the powerbi-desktop-handbook skill is automatically discovered and loaded by Antigravity IDE across all workspaces and conversations.
CLI
The entrypoint is:
plugins/powerbi-desktop-handbook/skills/powerbi-desktop-handbook/scripts/handbook.mjs
| Command | Purpose |
|---|---|
detect |
Compare the installed Desktop executable with a target release. |
catalog |
List the release’s schema-derived and curated visual catalog. |
lookup --visual NAME |
Resolve a gallery label, alias, or internal visual identifier. |
validate --manifest FILE |
Validate a handbook manifest without generating output. |
build --manifest FILE --output FILE |
Validate and generate a standalone HTML handbook. |
model-contract --manifest FILE |
Extract required semantic model tables, columns, and measures. |
Commands accept --json. Release-aware commands accept --release VERSION; the default is 2.150.5353.0.
Building a handbook
Start with examples/sample-dashboard.json, examples/executive-sales-dashboard.json, examples/sales-scorecard.json, examples/university-of-melbourne.json, or examples/opportunity-analysis.json. A manifest defines:
- Handbook identity, title, organization, subtitle, and target release.
- Report page dimensions, brand colors, and optional custom theme definitions (
dataColors,background,foreground,tableAccent). - Snapshot metrics displayed on the overview canvas.
- Visual types, coordinates, fields, format-pane paths, values, and notes.
- Ordered preparation steps and final acceptance checks.
Visual fields can remain concise legacy strings or use structured metadata. Both forms are normalized into the generated handbook payload:
"fields": [
"Y-axis: Team[Name]",
{
"role": "xAxis",
"field": "Measures[Open incidents]",
"kind": "measure",
"aggregation": null
}
]
Structured assignments accept column, measure, hierarchy, or unknown as kind; omitted kinds normalize to unknown. Role IDs and displayed role labels are matched against the exact-release Build visual reference. Legacy strings without a role prefix use the first verified role for that visual, while unverified or unknown roles remain valid with validation warnings.
The manifest remains unchanged in the generated payload. Each enriched visual also receives a normalized fieldAssignments array whose entries have this stable shape:
{
"role": "yAxis",
"field": "Team[Name]",
"kind": "column",
"aggregation": null
}
The payload’s top-level buildRoles property contains the complete exact-release reference, including verified and pending visuals. A normalized role is the canonical role ID, or null when an unprefixed legacy field has no verified role to inherit. Legacy fields normalize to kind: "unknown" and aggregation: null because the generator does not infer metadata that the manifest or evidence does not establish.
Malformed structured assignments fail validation. Unknown roles, duplicate assignments, known single-role capacity overflow, and known required roles left empty are warnings so incomplete manual guides remain buildable. Capacity and required-role warnings are emitted only when the curated reference explicitly establishes those constraints.
Validate before building:
node plugins/powerbi-desktop-handbook/skills/powerbi-desktop-handbook/scripts/handbook.mjs validate --manifest examples/sample-dashboard.json --json
Then generate the guide:
node plugins/powerbi-desktop-handbook/skills/powerbi-desktop-handbook/scripts/handbook.mjs build --manifest examples/sample-dashboard.json --output examples/sample-dashboard-guide.html --json
Generated guides should be rebuilt from their manifests. Avoid editing generated HTML directly when the change belongs in a manifest or the shared shell.
Desktop-style interface
The shared shell mirrors the structure of the target Desktop release without depending on screenshots or Microsoft-hosted assets:
- The title bar provides global search and release context.
- Ribbon tabs expose real navigation, filtering, printing, and checklist actions.
- The left rail tracks the active handbook section.
- The central workspace renders overview, canvas preview, workflow, visual plan, catalog, and acceptance pages.
- Filters, Visualizations, and Data panes expose evidence filters, a release-aware visual gallery with manifest field wells, page-format guidance, placement navigation, and build metadata.
- Narrow screens use a drawer-based inspector and bottom navigation.
- Print mode removes application chrome and produces a clean build document.
Manifest brand colors apply to report content; the surrounding application chrome remains neutral and consistent across generated handbooks.
Interactive canvas layout preview
Users can view and evaluate dashboard templates or samples before actually building them in Power BI Desktop. Seeing the layout beforehand ensures the design meets user requirements, avoiding wasted time and build rework:
- Realistic Mockup Mode: Renders KPI cards, bar/column charts with conditional formatting, donut charts, dual-line trend graphs with KPI growth headers and data callouts, vertical list checkbox slicers, chromeless title banners with status legends, and hierarchical matrices with SVG territory maps and negative value callouts.
- Blueprint Wireframe Mode: Shows technical bounding boxes, exact
[X, Y, W, H]coordinates, visual type badges, and clean field role mappings. - Live Layout Adjuster: Select any visual on the canvas, adjust its position or size with immediate visual feedback, and copy the updated layout JSON to your clipboard.
- Offline Image Export: One-click download of the canvas preview as a high-resolution 2× crisp PNG image (.png) or scalable vector graphic (.svg) in either Mockup or Blueprint mode for presentation decks, specification reviews, and stakeholder sign-off.
- Alignment Grid: Toggleable 40px grid overlay for precise margin and gutter alignment.
Opportunity Analysis Sample dashboard with 26 visuals across 4 quadrants in 4:3 ratio: Georgia serif quadrant banners, regional pie charts with slice callouts, deuteranopia-accessible clustered columns/bars, 100% stacked column stage breakdown, vertical list month/partner slicers, and revenue KPI cards styled under the Veterans Affairs PBI theme.
Executive Sales Scorecard with 9 visuals: chromeless title banner with status indicators, vertical list slicers, conditional bar formatting, dual CY vs. PY trend lines with KPI growth headers, and regional manager P&L matrix.
University of Melbourne Theme dashboard: chromeless title banner, 19-row brand/color sales inventory table with navy headers and sticky totals, brand/class freight treemap, 3-series unit timeline, and 8-color subcategory clustered column chart.
Executive Sales & Performance Dashboard with 7 multi-family visuals, metric cards, donut charts, and live layout adjuster controls.
Visual gallery and field-well inspector
Visual gallery palette
All 37 gallery entries have an explicit primary and accent color. Core chart families use consistent blue, violet, orange, magenta, green, amber, or slate pairs; R, Python, AI, scorecard, and paginated-report visuals retain distinct accents. The palette is applied with CSS variables in the shared shell, so the existing SVG geometry and the standalone offline format remain unchanged.
Hover, selected, focused, and used states preserve each icon’s assigned colors. Regression coverage verifies the complete gallery mapping, rejects missing or duplicate assignments, and checks primary, accent, outline, hover, and selected behavior.
The palette is Power BI-like application styling, not exact-live-UI evidence. Gallery availability and interface instructions continue to use the evidence states described below.
Evidence model
The project deliberately keeps different kinds of evidence separate:
| State | Meaning |
|---|---|
| Available | Curated evidence expects the visual in the Insert gallery for the release family. |
| Legacy hidden | Existing report JSON may contain the visual, but new reports should use its replacement. |
| Renamed | The gallery label differs from the internal schema identifier. |
| Schema present | The pinned schema defines the object; gallery presence is not proven. |
| Live UI pending | The exact target interface has not yet been inspected for the stated instruction. |
| Exact live UI | The label or field-role claim was observed in Desktop build 2.150.5353.0 using the stated locale and interaction mode. |
| Build-role pending | The modeled gallery entry was not exposed as a direct icon during the exact-build classic-gallery inspection; this is not an unsupported claim. |
Installation detection is not UI certification. A matching executable proves the build is present, but Insert-gallery labels and Format pane paths remain pending until the actual interface is checked.
The release-specific Build-role contract is stored under references/build/. It records the exact en-US classic Visualizations-pane labels and role ordering observed for 30 of the 37 modeled gallery entries. Requiredness, capacity, accepted field kinds, and default aggregation stay unknown unless directly demonstrated. Manifest validation and handbook generation load this exact-release contract; generated payloads expose it as buildRoles and use it to normalize fieldAssignments without upgrading pending evidence into verified guidance.
Important naming distinctions:
- Matrix is the user-facing name for the
pivotTableschema object. - Current Card is
cardVisual. - Legacy Card is
card. - Multi-row card is
multiRowCard.
Power BI Desktop optimized for Report Server primarily saves PBIX. This project does not claim PBIP/PBIR round-trip authoring support for that edition, and generated handbooks do not modify PBIX report canvases.
Compatibility with powerbi-modeling-mcp
This project is designed to work hand-in-hand with Microsoft’s official Power BI Modeling MCP Server (@microsoft/powerbi-modeling-mcp).
Division of responsibility
| Responsibility | Handled by powerbi-modeling-mcp |
Handled by powerbi-desktop-handbook |
|---|---|---|
| Semantic model authoring | Yes (tables, columns, measures, DAX, relationships, TMDL) | No (documents field assignments) |
| DAX query testing & validation | Yes (via local or hosted MCP tools) | No |
| Report visual canvas modifications | No (cannot edit report pages or diagram layouts) | Yes (guided manual construction & exact field wells) |
| Exact-build visual catalog & roles | No | Yes (pinned build 2.150.5353.0 gallery & Build roles) |
| Format pane property guidance | No | Yes (theme-schema-backed paths & UI assertions) |
| Standalone offline construction handbook | No | Yes (single-file HTML with interactive checklists) |
Recommended agent workflow
- Model Authoring: An AI agent connects to Power BI Desktop, Fabric, or a PBIP/TMDL folder using
powerbi-modeling-mcpto create tables, columns, DAX measures, and relationships. - Contract Extraction: Run
model-contractto extract the semantic model requirements declared by a report manifest:
This returns the distinct required tables, columns, and measures, plus the visuals and field roles that reference them.node plugins/powerbi-desktop-handbook/skills/powerbi-desktop-handbook/scripts/handbook.mjs model-contract --manifest examples/sample-dashboard.json --json - Model Alignment: The AI agent verifies against the live semantic model via
powerbi-modeling-mcp(e.g., usingGetSemanticModelSchema) to ensure all referenced objects exist before reporting is constructed. - Visual Guide Generation: Validate the manifest and generate the standalone offline handbook:
node plugins/powerbi-desktop-handbook/skills/powerbi-desktop-handbook/scripts/handbook.mjs build --manifest examples/sample-dashboard.json --output examples/sample-dashboard-guide.html --json
MCP client configuration
To enable the Power BI Modeling MCP Server in your MCP client (e.g. VS Code Copilot, Claude Desktop, Antigravity, or Cursor), add the following configuration:
{
"mcpServers": {
"powerbi-modeling": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@microsoft/powerbi-modeling-mcp@latest",
"--start"
]
}
}
}
Repository layout
.agents/plugins/marketplace.json Local Codex marketplace entry
examples/ Publishable manifests and generated examples
plugins/powerbi-desktop-handbook/ Installable plugin
skills/powerbi-desktop-handbook/
assets/handbook-shell.html Shared offline interface
references/ Release, build-role, visual, guide, and schema evidence
scripts/handbook.mjs CLI and generator
schemas/manifest.schema.json JSON Schema for manifest IDE autocomplete
test/ Node test suite and CI scripts
AGENTS.md Contributor and agent instructions
CHANGELOG.md Release history
CONTRIBUTING.md Contribution guide
Keep private customer and operational manifests outside this public-ready repository.
Verification
Before committing generator, template, catalog, or manifest changes:
npm test
npm run validate
npm run audit:public
npm run build
npm run rebuild-check
The rebuild-check script verifies the committed example HTML matches a fresh build, preventing generator/template drift. Open the generated handbook through file:// and check search, filters, navigation, checklist persistence, print output, and both desktop and mobile layouts.
The publication audit scans repository filenames and text content, including generated HTML, for credential assignments, private keys, local workspace paths, and unapproved usernames. To enforce custom organization- or customer-specific blocklists without committing sensitive names to public git history, place them in an ignored local/audit-blocklist.json or private/audit-blocklist.json file, or set the PBI_AUDIT_BLOCKLIST environment variable.
Evidence sources
- Microsoft Power BI Report Server download profile:
- Microsoft report-theme schema:
- Microsoft visual documentation:
Attribution & Trademarks
All product names, logos, brands, and registered trademarks referenced in this repository are the property of their respective owners.
- Microsoft, Power BI, and Microsoft Fabric are trademarks or registered trademarks of Microsoft Corporation.
- The University of Melbourne Theme sample is inspired by a community contribution published in the Microsoft Fabric Community Themes Gallery. It is included strictly for educational, illustrative, and technical demonstration purposes within this open-source project.
- Reference to any specific organizations, brands, or trademarks does not constitute or imply endorsement, sponsorship, or affiliation.
Author
Created and maintained by Pakorn K.. Employer and organizational affiliations are intentionally omitted from this public project.
License
MIT
Install
npx -y @microsoft/powerbi-modeling-mcp@latest --startConfiguration
{
"mcpServers": {
"powerbi-modeling": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@microsoft/powerbi-modeling-mcp@latest",
"--start"
]
}
}
}