Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add HamadYMarafi/powerbi-agent-mcp --skill powerbi-dashboard-buildgit clone --depth 1 https://github.com/HamadYMarafi/powerbi-agent-mcpWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/hamadymarafi/powerbi-agent-mcp/powerbi-dashboard-build)<a href="https://agentmods.dev/skills/hamadymarafi/powerbi-agent-mcp/powerbi-dashboard-build"><img src="https://agentmods.dev/badge/skills/hamadymarafi/powerbi-agent-mcp/powerbi-dashboard-build/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/hamadymarafi/powerbi-agent-mcp/powerbi-dashboard-build"><img src="https://agentmods.dev/badge/skills/hamadymarafi/powerbi-agent-mcp/powerbi-dashboard-build.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00118 | $0.01529 |
| Opus 5 | $0.00059 | $0.00764 |
| Sonnet 5 | $0.00024 | $0.00306 |
| Haiku 4.5 | $0.00012 | $0.00153 |
Grade A, and why
powerbi-dashboard-build scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 12d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 98 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Power BI dashboard build
Build an executive-grade report page as PBIR files and deploy it through the
powerbi-agent MCP server. Nothing is "done" until every page has been
captured as a screenshot and read against a written Done-criteria table — the
see-it doctrine, docs/reference/PLAYBOOK.md 1.3.
Procedure
- Call
guardrails()(or read theguardrails://rulesresource) and hold to it all session: never touch an item you did not create, never trigger a refresh, the model is read-only, the theme is locked once approved, one render pass per deploy, one batched DAX query — not many. - Call
connection_status(). Do not proceed on a failed or ambiguous connection; report it back instead of guessing which tenant you are on. - Fill
docs/reference/SPEC_TEMPLATE.mdbefore writing any JSON: audience, the one question the page must answer, a per-page visual list with positions, and Done criteria — the expected number for every tile, per page. An agent that cannot hit a Done-criteria number reports it; it does not improvise. get_model_schema(workspace, model)to see every table, column, measure and calculation item, then one batchedrun_dax(query, ...)to build the tie-out table: latest traded day, week-to-date, last year same weekday, budget, per channel. One query, not fifteen —docs/reference/PLAYBOOK_PART3.mdStep 2.- Start from
report-template/(copy to"ORG-<name>.Report") or callget_report_definition(report, out_dir, workspace)on an existing report into a clone folder. Never edit the original item — that is what theORG-prefix and the "never touch an item you did not create" guardrail exist to stop. - Split by page: one builder per
definition/pages/<page id>/folder. The main thread alone ownsreport.json,pages.json,reportExtensions.json, the theme and the deploy — this is what stops two builders writing the same file. - Set date scope per visual with
set_date_filters(visual_json, mode, weeks)—latest-dayfor latest-day visuals on model measures,window-weeksfor trend charts,this-weekfor week-to-date matrices,nonefor cards already bound to self-pinning report measures. Never hand-write a date filter: a plain'Date'[Date]window under a time-intelligence calculation group returns the whole last-year week instead of one day (see Part 4, trap T1/T3). - Report-only measures go in
reportExtensions.json, prefixedRM, never in the model — the model is read-only. Followdocs/reference/measures/README.md: noRMmeasure references another; itsdataTypeis"Text", never"String"; test each measure alone before shipping it. - Call
validate_report(folder, baseline)after every batch. Do not continue past a nonzero error count — fix and re-validate.baselineisreport-template(or the original's folder, when you cloned one); it also checks theme byte-identity, overlaps, canvas bounds, date pins present and banned filter kinds. deploy_report(folder, bind=True)the first time (writes the model binding from config); plaindeploy_report(folder)after that. It refuses names without theORG-prefix and models not in the allowed list — that refusal is correct; do not route around it.capture_pages(target, out_dir, headless=True, settle_seconds=60), then LOOK at every PNG and read every.txtagainst the Done criteria — this is the hand-off to thepowerbi-dashboard-verifyskill. A clean validator run is not a finished page.- At most two fix rounds. After that, report which Done-criteria numbers are still not met and why, instead of a third silent attempt.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 12d ago First seen · 98 lines · 118 tokens per session scan A a33e90cf3304
powerbi-dashboard-build is a skill published in the GitHub repository HamadYMarafi/powerbi-agent-mcp (1 stars, last pushed 14d ago), licensed MIT. It adds 118 tokens to every session and 1,529 once invoked, about $0.0006 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
dashboard-design
Use this skill first when the user wants to design or plan a dashboard, especially Vizro dashboards. Enforces a 3-step workflow (requirements, layout, visualization) before implementation. Activate when the user asks to create, design, or plan a dashboard. For implementation, use the dashboard-build skill after…
wiring-vizro-actions
Use this skill when adding cross-filter, cross-highlight, drill-through, or data export interactions to a Vizro dashboard — both for choosing the right interaction pattern during design and for implementing actions in code. Activate when the user wants clicks on a chart or table to filter or highlight other charts…
writing-vizro-yaml
Use this skill when writing or debugging Vizro YAML dashboard configurations — component syntax, datamanager registration, custom function wiring, filter/parameter setup, or AG Grid tables. Activate when the user is building a Vizro app, encountering YAML or runtime errors, or asking about Vizro component patterns.
selecting-vizro-charts
Use this skill when choosing chart types, applying Plotly Express conventions, configuring colors, building KPI cards, or adding tables (AG Grid) to Vizro dashboards. Activate when the user asks which chart fits their data, needs custom chart functions, wants to set colors or palettes, is creating KPI metric cards, or…
designing-vizro-layouts
Use this skill when designing or building Vizro dashboard layouts — grid configuration, component sizing, filter/parameter placement, selector types, or container patterns. Activate when the user is creating wireframes, defining page structure, placing controls, or sizing charts.
dashboard-build
Use this skill to build, implement, and test Vizro dashboards (Phase 2). Activate when the user wants to create a working app, says "just build it", or has data ready for implementation. Requires spec files from the dashboard-design skill (Phase 1), or user confirmation to skip design.