agentleFS
bcastelinobcastelino/powerbi-dashboard-generator/skills/bi-dash-creator/SKILL.md

bi-dash-creator

Skill1 starsChanged 6 months agoMITView on GitHub

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.

The file

We split this skill into the rules it gives an agent

11 rules. About 0 are common, 6 are distinctive, and 5 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈6

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 5

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

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

    line 20
  2. Very specific:

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

    line 30
  3. Very specific:

    Read each report's definition.pbir to get the semantic model reference path (under datasetReference.byPath.path)

    line 34
  4. Distinctive:

    All visuals in one dashboard must share the same semantic model

    line 36
  5. Distinctive:

    If models differ, report which reports are incompatible and stop

    line 37
  6. Distinctive:

    Do NOT proceed without user approval

    line 46
  7. Distinctive:

    Use 640x360 edge-to-edge quadrant grid on 1280x720 page:

    line 51
  8. Distinctive:

    If the user uploads a layout image, use vision to determine approximate positions from the image

    line 56
  9. Distinctive:

    If more than 4 visuals, create additional pages

    line 57
  10. Very specific:

    Run compose_dashboard.py to create the dashboard project:

    line 61
  11. Very specific:

    All internal references use the Dash suffix name

    line 71

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

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

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.