agentsclimarketplace

Bi dash creator

Skill bcastelino/powerbi-dashboard-generator/skills/bi-dash-creator

Agent Skills toolkit that turns plain-English requests into fully-formed, branded Power BI Desktop Projects (PBIP). Ten composable skills for source-agnostic semantic modeling, visual generation, and theming.

Install
npx -y skills add bcastelino/powerbi-dashboard-generator --skill bi-dash-creator

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Composes a multi-visual Power BI dashboard from already generated reports in the generated-reports folder. This skill should be used only when the user explicitly requests a dashboard combining visuals from previously generated reports. It copies visual.json files, validates semantic model consistency, excludes card/slicer/kpi visuals, arranges up to 4 visuals per page in a 2x2 grid, and saves the output to the generated-dashboards folder with a "Dash" suffix in the project name.

SKILL.md

4.1 KB, 898 tokens by cl100k_base, as published. Nobody here has run it

Bi Dash Creator

Overview

This skill composes a multi-visual Power BI dashboard by combining visuals from previously generated reports in generated-reports/. It validates semantic model consistency, filters out non-chart visuals, arranges visuals in a 2x2 grid layout, and outputs a complete PBIP project to generated-dashboards/.

Step 1: Discover Available Visuals

Scan generated-reports/*/ for all visual.json files using the path pattern:

generated-reports/<Name>/<Name>.Report/definition/pages/<pageId>/visuals/<visualId>/visual.json

Read the visual.visualType field from each file to identify what kind of visual it is.

Step 2: Filter Excluded Visual Types

Exclude any visuals where visualType is one of:

  • cardVisual
  • slicer
  • kpi

Only chart-type visuals (e.g., clusteredColumnChart, lineChart, barChart, pieChart, etc.) should be included in the dashboard.

Step 3: Validate Semantic Model Consistency

  • Read each report's definition.pbir to get the semantic model reference path (under datasetReference.byPath.path)
  • Compare TMDL content (model.tmdl, relationships.tmdl, and all files under tables/) across all selected reports
  • All visuals in one dashboard must share the same semantic model
  • If models differ, report which reports are incompatible and stop

Step 4: Confirm Visuals with User

  • Present a table of filtered visuals showing:
    • Report name
    • Visual type
    • Title (if available from the visual's query or objects)
  • Always ask for explicit confirmation before proceeding
  • Do NOT proceed without user approval

Step 5: Assign Positions and Paginate

  • Maximum 4 visuals per page
  • Use 640x360 edge-to-edge quadrant grid on 1280x720 page:
    • Top-Left: x=0, y=0, width=640, height=360
    • Top-Right: x=640, y=0, width=640, height=360
    • Bottom-Left: x=0, y=360, width=640, height=360
    • Bottom-Right: x=640, y=360, width=640, height=360
  • If the user uploads a layout image, use vision to determine approximate positions from the image
  • If more than 4 visuals, create additional pages

Step 6: Scaffold Dashboard PBIP

  • Run compose_dashboard.py to create the dashboard project:
python skills/bi-dash-creator/scripts/compose_dashboard.py <dashboard-name> \
  --reports-dir generated-reports \
  --output generated-dashboards \
  --reports report1 report2 report3 ...
  • Output goes to generated-dashboards/<DashboardName>Dash/
  • All internal references use the Dash suffix name
  • The script handles:
    1. Visual discovery from specified reports
    2. Filtering excluded visual types
    3. Semantic model validation (relationships must be identical; additive measures across reports are allowed)
    4. Pagination (4 per page, new page for overflow)
    5. Updating each visual.json schema to 2.6.0 and overwriting positions with grid coordinates
    6. Copying the richest semantic model (most TMDL content) as the base, then merging any missing DAX measures from all other source models into the dashboard's table TMDL files (ensures every measure referenced by any visual is present)
    7. Generating all pointer files (.pbip, .pbir, report.json, version.json, pages.json, page.json per page, CY25SU11.json theme)

Resources

  • Script: scripts/compose_dashboard.py - Main composition script
  • Reference: references/dashboard-layout.md - Grid layout rules and position table
  • Asset: assets/position-grid.json - Machine-readable grid position definitions
  • Sample: generated-dashboards/MonthlyUsersDash/ - Use as structural template for output

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.