Power Bi AI Readiness
DKH-DK/Self-Service-Power-BI-Fabric
Score and prepare Power BI semantic models for AI (Fabric Data Agent / Copilot).
R visual creation and ggplot2 patterns for PBIR reports. An agent skill from data-goblin/power-bi-agentic-development.
$ npx skills add data-goblin/power-bi-agentic-development --skill r-visuals -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install data-goblin/power-bi-agentic-development r-visuals --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/data-goblin/power-bi-agentic-development.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/custom-visuals/skills/r-visuals .claude/skills/r-visuals && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "r-visuals" agent skill from https://github.com/data-goblin/power-bi-agentic-development/tree/main/plugins/custom-visuals/skills/r-visuals into .claude/skills/r-visuals/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "r-visuals", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/data-goblin/power-bi-agentic-development/tree/main/plugins/custom-visuals/skills/r-visualsType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add data-goblin/power-bi-agentic-development --skill r-visuals -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install data-goblin/power-bi-agentic-development r-visuals --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/data-goblin/power-bi-agentic-development.git skills-src && mkdir -p .agents/skills && cp -r skills-src/plugins/custom-visuals/skills/r-visuals .agents/skills/r-visuals && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "r-visuals" agent skill from https://github.com/data-goblin/power-bi-agentic-development/tree/main/plugins/custom-visuals/skills/r-visuals into .agents/skills/r-visuals/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "r-visuals", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add data-goblin/power-bi-agentic-development --skill r-visuals -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install data-goblin/power-bi-agentic-development r-visuals --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/data-goblin/power-bi-agentic-development.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/plugins/custom-visuals/skills/r-visuals .cursor/skills/r-visuals && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "r-visuals" agent skill from https://github.com/data-goblin/power-bi-agentic-development/tree/main/plugins/custom-visuals/skills/r-visuals into .cursor/skills/r-visuals/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "r-visuals", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/data-goblin/power-bi-agentic-development.git --path plugins/custom-visuals/skills/r-visuals--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add data-goblin/power-bi-agentic-development --skill r-visuals -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install data-goblin/power-bi-agentic-development r-visuals --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/data-goblin/power-bi-agentic-development.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/plugins/custom-visuals/skills/r-visuals .gemini/skills/r-visuals && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "r-visuals" agent skill from https://github.com/data-goblin/power-bi-agentic-development/tree/main/plugins/custom-visuals/skills/r-visuals into .gemini/skills/r-visuals/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "r-visuals", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install data-goblin/power-bi-agentic-development r-visualsInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add data-goblin/power-bi-agentic-development --skill r-visuals -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/data-goblin/power-bi-agentic-development.git skills-src && mkdir -p .github/skills && cp -r skills-src/plugins/custom-visuals/skills/r-visuals .github/skills/r-visuals && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "r-visuals" agent skill from https://github.com/data-goblin/power-bi-agentic-development/tree/main/plugins/custom-visuals/skills/r-visuals into .github/skills/r-visuals/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "r-visuals", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add data-goblin/power-bi-agentic-development --skill r-visuals -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install data-goblin/power-bi-agentic-development r-visuals --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/data-goblin/power-bi-agentic-development.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/plugins/custom-visuals/skills/r-visuals .opencode/skills/r-visuals && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "r-visuals" agent skill from https://github.com/data-goblin/power-bi-agentic-development/tree/main/plugins/custom-visuals/skills/r-visuals into .opencode/skills/r-visuals/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "r-visuals", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
r-visualsR visual creation and ggplot2 patterns for PBIR reports. An agent skill from data-goblin/power-bi-agentic-development.
R Visuals is an agent skill from data-goblin/power-bi-agentic-development. R visual creation and ggplot2 patterns for PBIR reports. Automatically invoke when the user mentions "R visual", "ggplot2", "ggplot in Power BI", or asks to "create an R visual", "add an R chart", "write an R visual script", "inject an R script into Power BI".
Its SKILL.md is about 2.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 13 other files, including reference files (for example `examples/visual/bar-chart.json`, `examples/visual/bullet-chart.json` and `examples/visual/trend-line.json`).
It sits in Data & Analytics. It works with Power BI. The repository describes itself as: Power BI AI skills and Power BI agents for Claude Code and GitHub Copilot: a plugin marketplace of Power BI skills, subagents, and hooks for semantic models, DAX, TMDL, reports… The licence is GPL-3.0.
4 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 41886f2. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships script files (R), which the agent can run.
From the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
learn.microsoft.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
R Visuals loads about 2.3k tokens when it runs, and up to ~5.1k if it reads all its reference files. Until then it costs about 68 tokens; SKILL.md has 939 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from data-goblin/power-bi-agentic-development at commit 41886f2, republished under its GPL-3.0 licence (© data-goblin). 939 words, ~2,310 tokens.
.claude/skills/r-visuals/SKILL.md (or your agent's skills folder). This skill also uses 9 other files; get the full folder from GitHub.Use
pbirfor every report mutation. Read PBIR metadata only for diagnosis. Ifpbiris unavailable or lacks an operation, stop and report the gap; never edit report JSON directly.
R visuals execute R scripts (primarily ggplot2) to render static PNG images on the Power BI canvas. ggplot2 is the preferred library -- its grammar of graphics approach produces clean, publication-quality statistical visualizations with less code. R is particularly strong for statistical visualizations.
scriptVisualValues (columns and measures, multiple allowed)dataset (data.frame, auto-injected)pbir add visual scriptVisual "Report.Report/Page.Page" --name RevenueByDateR \
--data "Values:Sales.Date" --data "Values:Sales.Revenue"library(ggplot2)
p <- ggplot(dataset, aes(x=Date, y=Sales)) +
geom_col(fill="#5B8DBE") +
theme_minimal(base_size=12) +
theme(panel.grid.major.x=element_blank())
print(p) # MANDATORY for ggplot2Critical rules:
print(p) is mandatory for ggplot2 objects -- they do not auto-display in Power BIdataset is auto-injected as a data.frame; do not create itdataset[,1]) to avoid name escaping issuesdataset$`Order Lines`Before presenting the script to the user, dispatch the r-reviewer agent to validate correctness and provide design feedback.
pbir visuals r "Report.Report/Page.Page/RevenueByDateR.Visual" --script-file chart.rThe CLI handles PBIR string escaping.
pbir visuals bind "Report.Report/Page.Page/RevenueByDateR.Visual" --show
pbir validate "Report.Report" --allFor read-only diagnosis, scripts are stored in visual.objects.script[0].properties:
{
"source": {"expr": {"Literal": {"Value": "'library(ggplot2)\\n...\\nprint(p)'"}}},
"provider": {"expr": {"Literal": {"Value": "'R'"}}}
}Identical structure to Python visuals except visualType is scriptVisual and provider is 'R'.
| Package | Version | Purpose |
|---|---|---|
| ggplot2 | 3.5.1 | Grammar of graphics |
| dplyr | 1.1.4 | Data manipulation |
| tidyr | 1.3.1 | Data tidying |
| ggrepel | 0.9.5 | Non-overlapping labels |
| patchwork | 1.2.0 | Compose multiple plots |
| cowplot | 1.1.3 | Publication-quality plots |
| corrplot | 0.94 | Correlation matrices |
| viridis | 0.6.5 | Color scales |
| RColorBrewer | 1.1-3 | Color palettes |
| forecast | 8.23.0 | Time series forecasting |
| pheatmap | 1.0.12 | Heatmaps |
| treemap | 2.4-4 | Treemaps |
| lattice | 0.22-6 | Trellis graphics |
~1000 CRAN packages available. Not supported: packages requiring networking (RgoogleMaps, mailR).
Full package list: https://learn.microsoft.com/power-bi/connect-data/service-r-packages-support
Any locally installed R package works without restriction. R must be installed separately.
print(p) -- ggplot2 objects require explicit printingif (nrow(dataset) == 0) { plot.new(); text(0.5, 0.5, "No data") }dataset[,1] avoids name escaping issuestheme_minimal() -- clean aesthetic that works well with Power BIfactor()plot.margin=margin(t, r, b, l) to prevent clipping| Constraint | Desktop | Service |
|---|---|---|
| Output | Static PNG, 72 DPI | Static PNG, 72 DPI |
| Timeout | 5 minutes | 1 minute |
| Row limit | 150,000 | 150,000 |
| Output size | 2 MB | 30 MB |
| Networking | Unrestricted | Blocked |
| Gateway | Personal only | Personal only |
| Cross-filter FROM | Not supported | Not supported |
| Receive cross-filter | Yes | Yes |
| Publish to web | Not supported | Not supported |
| Embed (app-owns-data) | Not supported | Not supported |
library(ggplot2)
# 1. Guard against empty data
if (nrow(dataset) == 0) {
plot.new()
text(0.5, 0.5, "No data available", cex=1.5)
} else {
# 2. Data preparation (index-based access)
df <- data.frame(
category = dataset[,1],
value = dataset[,2]
)
# 3. Create visualization
p <- ggplot(df, aes(x=reorder(category, -value), y=value)) +
geom_col(fill="#5B8DBE", width=0.7) +
theme_minimal(base_size=12) +
theme(
panel.grid.major.x = element_blank(),
axis.title = element_blank()
)
# 4. Render
print(p)
}For the language-choice decision, see the "When to Use a Script Visual" section above. This table covers only mechanical syntax differences for scripts already committed to R:
| Aspect | R (scriptVisual) | Python (pythonVisual) |
|---|---|---|
| Render call | print(p) | plt.show() |
| Column access | dataset[,1] or dataset$col | dataset.iloc[:,0] or dataset["col"] |
| Empty guard | if (nrow(dataset) == 0) | if len(dataset) == 0: |
| Factor/category order | factor(x, levels=...) | pd.Categorical(x, categories=...) |
| Runtime (Service) | R 4.3.3 | Python 3.11 |
Reach for an R visual only when all of the following hold:
If interactivity or cross-filtering matters, use Deneb (a static PNG cannot be a selection source). If the need is a small inline mark (sparkline, bar, status pill), use an SVG measure (no row cap, no timeout, no licensing/region gate, renders under publish-to-web). The script visual's niche is narrow: compute-at-render statistical plots for internal or org consumption.
R vs Python once a script visual is the right call: use R for publication-quality statistical defaults and packages with no Python peer (forecast, corrplot, pheatmap, ridgeline/violin). Use Python when the computation leans on scikit-learn, statsmodels, or scipy, or when surrounding report logic is already Python. Where equal, default to whichever language the report's other scripts use; mixing doubles the publish-time package surface to validate.
Do not default to a script visual because a chart type "looks statistical." A box plot, lollipop, or dumbbell is an SVG-measure or Deneb job; reserve scripts for charts that genuinely compute.
references/data-model.md -- dataset grouping mechanic, row/byte caps, forcing per-row input, and R-specific traps (Time type, text rendering flags, CJK fonts)references/community-examples.md -- R Graph Gallery examples organized by chart type (distribution, correlation, ranking, evolution, flow)references/ggplot2-patterns.md -- Common ggplot2 chart patterns (bar, donut, line, heatmap, bullet)examples/script/ -- Standalone R scripts (bar-chart, trend-line) -- ready to inject into visual.json after escapingexamples/visual/bullet-chart.json -- PBIR visual.json: bullet chart with conditional coloring, error handling, and extensive escapingexamples/visual/bar-chart.json -- PBIR visual.json: horizontal bar with PY comparison lines and colored account labelsexamples/visual/trend-line.json -- PBIR visual.json: area chart with ribbon plot and month factor handlingTo retrieve current R visual / package support docs, use microsoft_docs_search + microsoft_docs_fetch (MCP) if available, otherwise mslearn search + mslearn fetch (CLI). Search based on the user's request and run multiple searches as needed to ensure sufficient context before proceeding.
pbi-report-design -- Layout and design best practicespython-visuals -- Python Script visuals (same concept, different language)deneb-visuals -- Vega/Vega-Lite visuals (interactive, vector-based alternative)svg-visuals -- SVG via DAX measures (lightweight inline graphics)pbir-format (pbip plugin) -- PBIR JSON format reference© data-goblin, GPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 9 other files (references) in plugins/custom-visuals/skills/r-visuals of data-goblin/power-bi-agentic-development.
Open the folder on GitHubat commit 41886f2
R Visuals next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| R Visuals this skilldata-goblin/power-bi-agentic-development | 1k | — | ~2.3k | Automated safety check: Pass | GPL-3.0 | |
| Power Bi AI ReadinessDKH-DK/Self-Service-Power-BI-Fabric | 113 | — | ~2k | Automated safety check: Pass | None | |
| Pbi Report Builderlukasreese/powerbi-claude-skills | 128 | — | ~7.5k | Automated safety check: Pass | None | |
| Pbi Docxperiun/skills-xperiun-free | 117 | — | ~3k | Automated safety check: Pass | MIT | |
| Pbip Dependency Analyzerlukasreese/powerbi-claude-skills | 128 | — | ~3.2k | Automated safety check: Pass | None | |
| Pbi Modelo Reviewxperiun/skills-xperiun-free | 117 | — | ~2.9k | Automated safety check: Pass | MIT |
DKH-DK/Self-Service-Power-BI-Fabric
Score and prepare Power BI semantic models for AI (Fabric Data Agent / Copilot).
lukasreese/powerbi-claude-skills
[power-bi] Power BI PBIR Report Builder with IBCS Visuals. An agent skill from lukasreese/powerbi-claude-skills.
xperiun/skills-xperiun-free
Documenta projeto Power BI (PBIP) inteiro em markdown estruturado + HTML navegável (mini-site de doc).
lukasreese/powerbi-claude-skills
Power BI PBIP Dependency Analyzer. An agent skill from lukasreese/powerbi-claude-skills.
xperiun/skills-xperiun-free
Audita modelo Power BI (PBIP) e gera relatório priorizado com anti-patterns, score 0-100 e recomendações acionáveis.
xperiun/skills-xperiun-free
Cria medida DAX a partir de descrição em PT, respeitando o modelo Power BI existente (colunas reais, naming convention, padrões DAX).
data-goblin/power-bi-agentic-development
Author, validate, publish, and test Power BI paginated reports in the RDL format.
data-goblin/power-bi-agentic-development
Automatically invoke this skill whenever the user asks about Fabric tenant settings or Power BI tenant settings or auditing tenant settings.
data-goblin/power-bi-agentic-development
Interactive BPA rule generation for Power BI semantic models; guided discovery, model investigation, and expert rule authoring.
data-goblin/power-bi-agentic-development
Guidance for Power BI Project (PBIP) structure, thick and thin reports, project renames, forks, and validation.
data-goblin/power-bi-agentic-development
Actionable feedback on the quality, usage, and effectiveness of Power BI reports.
data-goblin/power-bi-agentic-development
This skill should be used whenever the user mentions a "semantic model", "data model", or "dataset", or asks to "build", "model", "design", "optimize", "review", or "audit" one, or to "add a…
Works with
Categories
R visual creation and ggplot2 patterns for PBIR reports. An agent skill from data-goblin/power-bi-agentic-development. R Visuals is an agent skill from data-goblin/power-bi-agentic-development. R visual creation and ggplot2 patterns for PBIR reports.
R Visuals fits situations like: mentions R visual; ggplot in Power BI; asks to create an R visual; write an R visual script.
Run `npx skills add data-goblin/power-bi-agentic-development --skill r-visuals -a claude-code`. Or copy the skill folder (plugins/custom-visuals/skills/r-visuals in data-goblin/power-bi-agentic-development) into .claude/skills/r-visuals in your project. Claude Code loads it when a task matches its description.
Run `npx skills add data-goblin/power-bi-agentic-development --skill r-visuals -a codex`. Or copy the skill folder (plugins/custom-visuals/skills/r-visuals in data-goblin/power-bi-agentic-development) into .agents/skills/r-visuals in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add data-goblin/power-bi-agentic-development --skill r-visuals -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/r-visuals, .gemini/skills/r-visuals, .github/skills/r-visuals and .opencode/skills/r-visuals in your project.
Going by SKILL.md and its folder, R Visuals needs R for the scripts in its folder. Our summary lists: Python 3.
SKILL.md names 1 domain. As links in the text: learn.microsoft.com. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
R Visuals is published under the GPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.3k tokens (SKILL.md is roughly 9.2k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 2.8k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with R Visuals: Power Bi AI Readiness (DKH-DK/Self-Service-Power-BI-Fabric, 113 stars), Pbi Report Builder (lukasreese/powerbi-claude-skills, 128 stars), Pbi Doc (xperiun/skills-xperiun-free, 117 stars) and Pbip Dependency Analyzer (lukasreese/powerbi-claude-skills, 128 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
data-goblin (a GitHub user) maintains it in data-goblin/power-bi-agentic-development, which has 1,026 GitHub stars. The repository holds 33 skills in this directory. The repository was last updated on October 5, 2026.
Source: data-goblin/power-bi-agentic-development on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.