InsightfulAnalytics/PBI_Agentic_Dev/tree/main/plugins/fabric-data-app
fabric-data-app
Power BI Agentic Dev マーケットプレイスのフォークにある fabric-data-app サブディレクトリです。Claude Code、Copilot CLI、Codex 向けに Power BI と Microsoft Fabric の skills、agents、hooks を提供します。
この mod について
このリポジトリは Kurt Buhler の Power BI & Microsoft Fabric skills marketplace を個人用にフォークしたもので、power-bi-agentic-dev に改名されています。semantic-models、reports、pbip、custom-visuals、tabular-editor、pbi-desktop、fabric-cli など複数の plugin が含まれ、TMDL、PBIR、DAX、BPA ルール、Fabric CLI に関する skills、subagents、hooks を提供します。claude plugin marketplace add でインストールでき、Copilot CLI と OpenAI Codex にも対応します。送信された URL は plugins/fabric-data-app サブディレクトリを指します。
インストール
まず作者の README で marketplace とプラグイン名を確認してください。コマンドはリポジトリの構成によって変わる場合があります。
claude plugin marketplace add InsightfulAnalytics/PBI_Agentic_Dev claude plugin install fabric-data-app
原文 / README
[!NOTE] This is Tim's personalized fork of
data-goblin/power-bi-agentic-development, renamed topower-bi-agentic-devso it can coexist with the original. It carries the upstream plugins plus additional personal skills, and tracks Kurt's releases selectively rather than following his weekly cadence. Full credit for the original work goes to Kurt Buhler — see Attribution.
What is agentic development?
- Agentic development is when you use AI agents to help build, manage, and optimize artifacts and software — semantic models, reports, and everything around them (workspaces, deployment pipelines, and processes).
- A marketplace hosts plugins you can install. A plugin is a bundle of resources that help coding agents perform better: skills, subagents, hooks, and MCP servers focused on a topic or task.
- This marketplace is focused on making your agent work well with Power BI and Fabric — Power BI skills, Fabric skills, subagents, and hooks for coding agents.
Installation
Add the marketplace in Claude Code — run this in the terminal:
claude plugin marketplace add InsightfulAnalytics/PBI_Agentic_Dev
This registers the marketplace under the name power-bi-agentic-dev (from the repo's .claude-plugin/marketplace.json). Note that the GitHub repo slug (PBI_Agentic_Dev) differs from the marketplace name (power-bi-agentic-dev) — the slug is used only in the marketplace add command above; the install commands below reference the marketplace name.
Claude Code
After adding the marketplace, install plugins interactively via /plugin → Marketplaces → select power-bi-agentic-dev → install the plugins you want. You can also enable auto-update per marketplace there.
Or install from the command line:
claude plugin install semantic-models@power-bi-agentic-dev
claude plugin install reports@power-bi-agentic-dev
claude plugin install pbip@power-bi-agentic-dev
claude plugin install custom-visuals@power-bi-agentic-dev
claude plugin install tabular-editor@power-bi-agentic-dev
claude plugin install pbi-desktop@power-bi-agentic-dev
claude plugin install fabric-cli@power-bi-agentic-dev
claude plugin install fabric-admin@power-bi-agentic-dev
claude plugin install paginated-reports@power-bi-agentic-dev
claude plugin install etl@power-bi-agentic-dev
Verify what's installed with claude plugin list, and inspect a plugin's contents and token cost with claude plugin details <plugin>.
Copilot CLI
The standalone Copilot CLI supports plugin installation from GitHub repos. Copilot CLI reads the same .claude-plugin/marketplace.json manifest this repo uses, so the marketplace and child-plugin layout works without modification.
TMDL files can produce repository-relative paths over 260 characters. Windows' legacy MAX_PATH blocks git clone from writing them unless long path support is enabled at both the OS and git level. Without this, copilot plugin install aborts with Filename too long.
See useful-stuff/agent-scripts/enable-windows-longpaths.ps1 for an example script you can run from an elevated PowerShell session to enable long paths (a reboot is recommended after the registry change). This is a Windows OS limitation, documented at Maximum Path Length Limitation.
Also set the git-level flag:
git config --system core.longpaths true
</details>
<details>
<summary><strong>Additional installation instructions (Copilot CLI)</strong></summary>
This repository is an Anthropic-format plugin marketplace (a set of plugins), not a single distributable plugin, so the root .claude-plugin/ contains only marketplace.json. Two documented install paths work:
1. Register the marketplace once, then install named child plugins:
copilot plugin marketplace add InsightfulAnalytics/PBI_Agentic_Dev
copilot plugin install tabular-editor@power-bi-agentic-dev
2. Or install a single plugin directly from its subdirectory, no marketplace registration needed:
copilot plugin install InsightfulAnalytics/PBI_Agentic_Dev:plugins/pbip
Both forms are documented in the Copilot CLI plugin reference and the plugins how-to. Inside an interactive Copilot session, /plugin install PLUGIN-NAME@power-bi-agentic-dev is the equivalent of (1). The bare copilot plugin install InsightfulAnalytics/PBI_Agentic_Dev (no qualifier) will not install anything useful, because the root is a marketplace catalog, not a plugin.
Inside Copilot CLI:
/env # Loaded instructions, MCP servers, skills, agents, plugins, LSPs, extensions
/plugin list # Installed plugins
/skills list # Available skills
/skills info pbip # Details for a specific skill
/agent # Browse installed agents
</details>
<details>
<summary><strong>Compatibility notes</strong></summary>
- Skills load identically; Copilot CLI reads
skills/<name>/SKILL.md. - Agents use the
*.agent.mdextension required by Copilot CLI's documented convention. Claude Code matches any*.mdfile inagents/, so the dual extension works in both tools. - MCP servers load from
.mcp.json(plugin root) or.github/mcp.json. Two plugins ship MCP declarations:fabric-cli(microsoft-learn, HTTP) andcustom-visuals(pbiviz, stdio vianpx). - Hooks ship twice. Claude Code reads
hooks/hooks.json(with per-hookifpath filters). Copilot CLI reads.github/plugin/plugin.json, which points it athooks/copilot-hooks.json: the same scripts, wired with explicitbashandpowershellcommands so a Windows host without Git Bash onPATHgets a clean no-op instead of a failed launch. Copilot has noiffilter and denies a tool call on any non-zero PreToolUse exit, so every script also re-applies its own path and command filters and exits 0 on anything unrelated. Requires Copilot CLI >= 1.0.26 (2026-04-14) forCLAUDE_PLUGIN_ROOT(changelog); older builds skip the hooks rather than fail. Native Windows bash users may also hit a separate path-format bug tracked upstream at claude-code#11984. - Scope is always user-wide in Copilot CLI: plugins install to
~/.copilot/installed-plugins/and their hooks run in every session on the machine. There is no per-project install, so the "prefer project scope" advice below applies to Claude Code only; in Copilot, install a plugin only while you need it.
/plugin rm or copilot plugin uninstall can fail with Access is denied. (os error 5). This is an open Copilot CLI bug, not a plugin problem: the installer swaps the plugin folder by renaming it, and Windows refuses the rename while another process holds a handle on it. VS Code's Copilot extension keeps directory watchers on every installed plugin's hooks/, agents/ and skills/ folders, and a second Copilot CLI session does the same. Tracked at github/copilot-cli#4095 and #4151.
- Close every VS Code window and every other Copilot CLI session, then retry the uninstall.
- If it still fails, delete the plugin by hand: remove its folder under
%USERPROFILE%\.copilot\installed-plugins\(or%COPILOT_HOME%\installed-plugins\) and restart Copilot CLI. - To stop the hooks without uninstalling, delete the plugin's
hooksfolder from that same location.
GitHub Codespaces and other Linux hosts
Most of what these skills know is about TMDL, the PBIR JSON schemas, and the Fabric and Power BI
REST APIs, none of which care about the operating system. A Codespace on this repository picks the
skills up with no setup: .devcontainer/devcontainer.json
installs Claude Code and runs the bootstrap.
For a Codespace on a Power BI project repository, which is the usual case, copy the
devcontainer.json block from .devcontainer/README.md. To set an
existing Linux or macOS machine up by hand:
git clone --depth 1 https://github.com/InsightfulAnalytics/PBI_Agentic_Dev.git ~/.pbi-agentic-dev
bash ~/.pbi-agentic-dev/scripts/bootstrap-agent-env.sh
The bootstrap registers the marketplace, installs the toolchain that exists on the platform, and prints a capability report naming what does not, so an agent learns the limits before its first turn rather than by failing:
| | Linux | Windows with Desktop |
|---|---|---|
| fab, te, az, the REST APIs | yes | yes |
| TMDL validation (bundled tmdl-validate binary) | yes | yes |
| Server-side report render (ExportTo to PDF, then pymupdf to PNG) | yes | yes |
| ADOMD or TOM over XMLA against a published model | yes | yes |
| pbir CLI | no, and there is no wheel or sdist to install | yes |
| Power BI Desktop, local msmdsrv, DAX Studio, Tabular Editor 2 and 3 | no | yes |
On Linux, author PBIR by hand from the pbip:pbir-format examples, publish with fab import, and
verify by rendering server-side. .devcontainer/README.md has the detail.
OpenAI Codex
Codex supports the same open Agent Skills standard these plugins use, so the skills work there too — installed with a small script instead of a plugin marketplace:
git clone https://github.com/InsightfulAnalytics/PBI_Agentic_Dev.git
cd PBI_Agentic_Dev
python codex/install.py --check # dry run: preview what will be installed
python codex/install.py # skills -> ~/.agents/skills, adapter -> ~/.codex/AGENTS.md
python codex/install.py --mcp # optional: also add the MCP servers to ~/.codex/config.toml
Keep the clone — it's the runtime store for bundled scripts and validators that the copies in ~/.agents/skills reference. After a git pull, re-run the installer (idempotent) to refresh. The full guide — project-scoped installs, junction mode, uninstall, and troubleshooting — is in codex/README.md.
Inside a Codex session:
/skills # list available skills (the Power BI skills should appear)
$tmdl # invoke a skill explicitly by name
/mcp # MCP servers (if installed with --mcp)
/status # loaded AGENTS.md, model, config
</details>
<details>
<summary><strong>Compatibility notes (Codex)</strong></summary>
- Skills load identically — Codex reads
~/.agents/skills/<name>/SKILL.mdand auto-activates from the description, or on$name. - Hooks don't fire on file edits in Codex, so the installer converts the TMDL/PBIR/RDL validation hooks into rules in
~/.codex/AGENTS.mdfor the agent to run after edits. - Subagents aren't spawned; the eight reviewer/validator agents become inline checklists the agent reads from
plugins/*/agents/*.agent.md. - Slash commands are ported as skills (
$audit-context,$suggest-rule,$migrating-fabric-trial-capacities) since Codex deprecated custom prompts. - MCP servers are added to
~/.codex/config.tomlwith--mcp(microsoft-learnover HTTP,pbivizover stdio). - Skills kept outside this repo (e.g. personal skills Claude loads from
~/.claude/skills) are not touched by the installer — copy any you want Codex to have into~/.agents/skillsyourself. - The
codex/layer only reads fromplugins/; Claude Code behavior is unchanged.
Overview
The repo contains skills, agents, and hooks.
- Skills teach agents domain knowledge and workflows. They activate automatically based on task context, or can be invoked manually with
/skill-name. In Claude Code, skills and commands have coalesced; commands are simply more prescriptive skill workflows. - Agents are autonomous subprocesses that handle complex, multi-step tasks independently; typically used for review and validation.
- Hooks run automatically after tool use to validate files and catch errors early. They are deterministic — they fire when a specific pattern is matched, not by LLM judgment.
Hook checks can be individually toggled via config files. Set any check to false to disable it:
plugins/pbip/hooks/config.yaml— PBIR, TMDL, and report-binding validationplugins/pbi-desktop/hooks/config.yaml— DAX references, measure metadata, referential integrity, metadata cacheplugins/paginated-reports/hooks/config.yaml— RDL validation
Available plugins
<details> <summary>📊 <strong>semantic-models</strong>   DAX, Power Query, naming, lineage, refresh, and model auditing</summary>[!WARNING] Don't install every plugin. Each skill competes for the agent's attention and context window, so install a plugin only when you need it and remove it when you don't. Prefer installing plugins scoped to a project rather than to your user, so each project carries only the skills it actually uses.
| Type | Name | Description |
|------|------|-------------|
| Skill | semantic-model | Design, build, refresh, and review semantic models through a te-first tool cascade |
| Skill | date-table | Drop a ready-made 58-column DimDate (calendar, ISO week, fiscal, to-date flags) plus the Dates Selected title measure into any PBIP model |
| Skill | dax-standard | The house style for authoring measures: table-first DAX, formatting via dynamic format strings, worked recipes |
| Skill | dax-optimisation | Debug and optimize DAX performance (server timings, anti-patterns, tuning) |
| Skill | power-query | Write M expressions, debug query folding, execute M locally or via Fabric API |
| Skill | standardize-naming-conventions | Audit and standardize naming conventions in semantic models |
| Skill | refresh-semantic-model | Trigger or troubleshoot refreshes |
| Skill | lineage-analysis | Trace downstream reports from a semantic model across workspaces |
| Agent | semantic-model-auditor | Audit semantic models for quality, memory, DAX, and design issues |
| Type | Name | Description |
|------|------|-------------|
| Skill | pbir-cli | Programmatic report manipulation via the pbir CLI, including live Power BI Desktop refresh and page screenshots |
| Skill | create-pbi-report | End-to-end workflow for building a report from scratch with the pbir CLI |
| Skill | pbi-verify-loop | Refresh → settle → screenshot loop to visually verify report edits (optional mockup diff) |
| Skill | power-bi-theme | Browse a preset-theme gallery and apply a chosen theme to a report |
| Skill | modifying-theme-json | Edit, enforce, audit, and re-theme report theme JSON |
| Skill | workout-wednesday | Turn a Workout Wednesday challenge link into a built, verified, published report — see Try it end-to-end |
| Skill | pbi-report-design (WIP) | Power BI report best practices, design, and style |
| Skill | review-report (WIP) | Review Power BI reports for usage metrics and best practices |
| Agent | deneb-reviewer | Review Deneb specs for Vega/Vega-Lite syntax and conventions |
| Agent | svg-reviewer | Review SVG DAX measures for syntax and design quality |
| Agent | r-reviewer | Review R visual scripts (ggplot2) for Power BI conventions |
| Agent | python-reviewer | Review Python visual scripts (matplotlib/seaborn) for Power BI conventions |
| Type | Name | Description |
|------|------|-------------|
| Skill | deneb-visuals | Author Deneb visuals with Vega and Vega-Lite specs |
| Skill | deneb-pbir | Round-trip tooling: extract/embed a Deneb spec in visual.json and offline-render it |
| Skill | performant-matrix | Diagnose a slow financial matrix, then choose between a bridge model fix, a native restructure, or a Deneb grid |
| Skill | python-visuals | Custom Python visuals (matplotlib/seaborn) in Power BI reports |
| Skill | r-visuals | Custom R visuals (ggplot2) in Power BI reports |
| Skill | svg-visuals | SVG visuals via DAX measures in Power BI reports |
| Skill | powerbi-custom-visuals | Develop, build, and package .pbiviz custom visuals with the pbiviz toolchain |
| Type | Name | Description |
|------|------|-------------|
| Skill | pbip | Power BI Project (PBIP) format, structure, and file types |
| Skill | tmdl | Author and edit TMDL files directly |
| Skill | pbir-format | Author and edit PBIR metadata files directly (visual.json, report.json, themes, filters, report extensions, visual calculations) |
| Agent | pbip-validator | Validate PBIP project structure, TMDL syntax, and PBIR schemas |
| Hook | PBIR validation | Validates PBIR structure, required fields, naming conventions, and schema URLs |
| Hook | Report binding validation | Validates semantic model binding (byPath directory exists; byConnection model exists via fab exists) |
| Hook | TMDL validation | Validates TMDL structural syntax |
| Type | Name | Description |
|------|------|-------------|
| Skill | bpa-rules | Create and improve Best Practice Analyzer rules for models |
| Skill | c-sharp-scripting | C# scripting and macros for TE |
| Skill | te-cli | Cross-platform Tabular Editor CLI (te, preview) for semantic models from the terminal |
| Skill | te2-cli | Tabular Editor 2 CLI usage and automation (not TE3) |
| Skill | te-docs | Tabular Editor documentation search, TE3 config files. Uses pbi-search CLI |
| Command | /suggest-rule | Generate BPA rules from descriptions |
| Agent | bpa-expression-helper | Debug and improve BPA rule expressions |
| Type | Name | Description |
|------|------|-------------|
| Skill | connect-pbid | Explore, query, and modify a model in Power BI Desktop, and reload/screenshot the report canvas via the Desktop Bridge |
| Agent | query-listener | Capture DAX queries from Power BI Desktop visuals in real time |
| Hook | DAX reference validation | Validates table, column, and measure references against the connected model; suggests corrections |
| Hook | Measure metadata enforcement | Blocks adding measures without DisplayFolder, Description, and FormatString |
| Hook | Referential integrity check | Reports unmatched many-side keys after relationship or column changes |
| Hook | Metadata cache refresh | Auto-snapshots model metadata on TOM connect or model modification |
| Hook | Compatibility level check | Reports features available by upgrading; optional auto-upgrade |
| Type | Name | Description |
|------|------|-------------|
| Skill | fabric-cli | Fabric CLI (fab) for any remote operation in Power BI or Fabric (works fully on Pro/PPU; Fabric not required) |
| Command | /audit-context | Review project context files (CLAUDE.md, agents.md, memory files) |
| Command | /migrating-fabric-trial-capacities | Migrate workspaces from trial to production capacity |
| Type | Name | Description |
|------|------|-------------|
| Skill | audit-tenant-settings | Audit Fabric and Power BI tenant settings, delegated overrides, and Entra security group membership |
| Type | Name | Description |
|------|------|-------------|
| Skill | paginated-report | Author, validate, publish, and render Power BI paginated reports (RDL) |
| Hook | RDL validation | Validates RDL structure on edit |
| Type | Name | Description |
|------|------|-------------|
| Skill | executing-spark | Run Python/PySpark on Fabric Spark compute via ephemeral Livy sessions (no notebook artifact) |
| Skill | using-duckdb | Query Fabric lakehouse/warehouse Delta data with DuckDB, locally or in a Fabric notebook |
Try it end-to-end
If you want to feel what agentic Power BI development is actually like, the best starting point is the workout-wednesday skill in the reports plugin.
Workout Wednesday publishes a weekly Power BI challenge: a requirements list, a source dataset, and a screenshot of the target visual. Paste the challenge link and the skill drives the whole pipeline in one go — parse the requirements, download the data, scaffold the PBIP project, author the TMDL model, build the visuals (usually Deneb/Vega), validate, screenshot the live canvas and diff it against the original, then publish to your Fabric workspace.
example promopt:
Build this week's Workout Wednesday: https://www.workout-wednesday.com/pbi-<challenge-link>/
Use this directory for the power bi project files (c:\-<filesdirectory>)
It's a genuinely good way to experience Claude building a whole report end-to-end in a single pass, and it exercises most of this marketplace at once — pbip, reports, custom-visuals, and fabric-cli all get pulled in along the way. The challenges are small enough to finish in one session and specific enough that you can tell immediately whether the result is right.
Useful stuff
General-purpose agent resources that don't fit into a plugin: defensive hooks, patterns, and tools. See useful-stuff/.
Use or re-use of these skills
These plugins are licensed GPL-3.0 and intended for free community use.
The one exception is examples/pl-switch-lab/, a sample Power BI
project that is original work and is licensed MIT so you can lift its patterns into your own
reports without copyleft. Its own LICENSE governs that
directory; everything else here is GPL-3.0.
This is a fork; the original work is Kurt Buhler's. If you copy these skills — manually or by using an agent to rewrite them — you must retain attribution and a link to the original project, per the license. Modifications relative to upstream are listed in FORK-CHANGES.md.
<br><p align="center"> <em>Built with assistance from <a href="https://claude.ai/claude-code">Claude Code</a>. AI-generated code has been reviewed but may contain errors. Use at your own risk.</em> </p>
Attribution
<p align="center"> A personalized fork maintained by <strong>Tim · InsightfulAnalytics</strong>.<br> Original work by <a href="https://github.com/data-goblin">Kurt Buhler</a> · <a href="https://data-goblins.com">Data Goblins</a> · part of <a href="https://tabulareditor.com">Tabular Editor</a>. </p>同名の他の作品
- fabric-data-appdata-goblin · ★ 1001