Power Bi AI Readiness
DKH-DK/Self-Service-Power-BI-Fabric
Score and prepare Power BI semantic models for AI (Fabric Data Agent / Copilot).
Writing and executing C scripts and macros against Power BI semantic models using Tabular Editor 2/3.
$ npx skills add data-goblin/power-bi-agentic-development --skill c-sharp-scripting -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install data-goblin/power-bi-agentic-development c-sharp-scripting --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/tabular-editor/skills/c-sharp-scripting .claude/skills/c-sharp-scripting && 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 "c-sharp-scripting" agent skill from https://github.com/data-goblin/power-bi-agentic-development/tree/main/plugins/tabular-editor/skills/c-sharp-scripting into .claude/skills/c-sharp-scripting/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "c-sharp-scripting", 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/tabular-editor/skills/c-sharp-scriptingType 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 c-sharp-scripting -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install data-goblin/power-bi-agentic-development c-sharp-scripting --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/tabular-editor/skills/c-sharp-scripting .agents/skills/c-sharp-scripting && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "c-sharp-scripting" agent skill from https://github.com/data-goblin/power-bi-agentic-development/tree/main/plugins/tabular-editor/skills/c-sharp-scripting into .agents/skills/c-sharp-scripting/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "c-sharp-scripting", 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 c-sharp-scripting -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install data-goblin/power-bi-agentic-development c-sharp-scripting --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/tabular-editor/skills/c-sharp-scripting .cursor/skills/c-sharp-scripting && 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 "c-sharp-scripting" agent skill from https://github.com/data-goblin/power-bi-agentic-development/tree/main/plugins/tabular-editor/skills/c-sharp-scripting into .cursor/skills/c-sharp-scripting/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "c-sharp-scripting", 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/tabular-editor/skills/c-sharp-scripting--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 c-sharp-scripting -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install data-goblin/power-bi-agentic-development c-sharp-scripting --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/tabular-editor/skills/c-sharp-scripting .gemini/skills/c-sharp-scripting && 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 "c-sharp-scripting" agent skill from https://github.com/data-goblin/power-bi-agentic-development/tree/main/plugins/tabular-editor/skills/c-sharp-scripting into .gemini/skills/c-sharp-scripting/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "c-sharp-scripting", 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 c-sharp-scriptingInstalls 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 c-sharp-scripting -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/tabular-editor/skills/c-sharp-scripting .github/skills/c-sharp-scripting && 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 "c-sharp-scripting" agent skill from https://github.com/data-goblin/power-bi-agentic-development/tree/main/plugins/tabular-editor/skills/c-sharp-scripting into .github/skills/c-sharp-scripting/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "c-sharp-scripting", 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 c-sharp-scripting -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 c-sharp-scripting --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/tabular-editor/skills/c-sharp-scripting .opencode/skills/c-sharp-scripting && 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 "c-sharp-scripting" agent skill from https://github.com/data-goblin/power-bi-agentic-development/tree/main/plugins/tabular-editor/skills/c-sharp-scripting into .opencode/skills/c-sharp-scripting/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "c-sharp-scripting", 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.
c-sharp-scriptingWriting and executing C scripts and macros against Power BI semantic models using Tabular Editor 2/3.
C Sharp Scripting is an agent skill from data-goblin/power-bi-agentic-development. Writing and executing C scripts and macros against Power BI semantic models using Tabular Editor 2/3. Automatically invoke when the user mentions "C script", "Tabular Editor script", "TOM scripting", "MacroActions.json", "XMLA", or asks to "automate model changes", "bulk update measures", "create calculation groups", "write a macro", "format DAX expressions", "manage model metadata".
Its SKILL.md is about 3.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 252 other files, including reference files (for example `examples/README.md`, `examples/bulk-operations/README.md` and `examples/calculation-groups/README.md`).
It sits in Data & Analytics. It works with C# and 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.
2 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.
No scripts in the folder and no shell commands in SKILL.md (its code samples are csharp and bash).
From the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
docs.tabulareditor.comgithub.comlearn.microsoft.comFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
AZURE_CLIENT_SECRETFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
C Sharp Scripting loads about 3.7k tokens when it runs, and up to ~6.1k if it reads all its reference files. Until then it costs about 102 tokens; SKILL.md has 1,056 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). 1,056 words, ~3,738 tokens.
.claude/skills/c-sharp-scripting/SKILL.md (or your agent's skills folder). This skill also uses 248 other files; get the full folder from GitHub.Expert guidance for writing and executing C# scripts to manipulate Power BI semantic model metadata using Tabular Editor 2/3 CLI or the Tabular Editor IDE.
Activate automatically when tasks involve:
; (semicolon required by C#)" for strings and escape with \ when needed/ in DisplayFolder paths (auto-converted to \)Info() statements for debugging - script stops at error point| Environment | C# Version | Notes |
|---|---|---|
| Tabular Editor 2 | Default compiler | Older C# syntax |
| Tabular Editor 3 | Roslyn | Supports up to C# 12 with VS2022 |
| TE2 with Roslyn | Configurable | Set in File > Preferences > General |
To use newer C# features in TE2, configure Roslyn compiler path in preferences.
Scripts automatically have these using statements applied:
using System;
using System.Linq;
using System.Collections.Generic;
using Newtonsoft.Json;
using TabularEditor.TOMWrapper;
using TabularEditor.TOMWrapper.Utils;
using TabularEditor.UI;These .NET assemblies are loaded by default:
System.DllSystem.Core.DllSystem.Data.DllSystem.Windows.Forms.Dll (for UI dialogs)Microsoft.Csharp.DllNewtonsoft.Json.DllTomWrapper.DllTabularEditor.ExeMicrosoft.AnalysisServices.Tabular.Dll// Assembly references must be at the very top of the file:
#r "System.IO.Compression"
#r "System.Drawing"
// Using statements come after assembly references:
using System.IO.Compression;
using System.Drawing;| Requirement | Description |
|---|---|
| Tabular Editor 2 CLI | Download from GitHub releases |
| XMLA Read/Write | Enabled on Fabric capacity or Power BI Premium |
| Azure Service Principal | For XMLA connections (see authentication.md) |
AZURE_CLIENT_ID=<app-id>
AZURE_TENANT_ID=<tenant-id>
AZURE_CLIENT_SECRET=<secret># Inline script
TabularEditor.exe "WorkspaceName/ModelName" -S "Info(Model.Database.Name);"
# Script file
TabularEditor.exe "WorkspaceName/ModelName" -S "script.csx"| Type | Format | Example |
|---|---|---|
| XMLA | workspace/model | "Sales WS/Sales Model" |
| Local BIM | path/to/model.bim | "./model.bim" |
| Local TMDL | path/to/definition/ | "./MyModel.SemanticModel/definition/" |
| PBI Desktop | localhost:PORT | "localhost:52123" |
Model ObjectAccess any object in the loaded Tabular Model:
Model // Root model object
Model.Tables // All tables
Model.Tables["Sales"] // Specific table
Model.AllMeasures // All measures across all tables
Model.AllColumns // All columns across all tables
Model.Relationships // All relationships
Model.Roles // All security roles
Model.CalculationGroups // All calculation groups
Model.Perspectives // All perspectives
Model.Cultures // All translations/cultures
Model.Expressions // All M expressions (shared queries)
Model.DataSources // All data sourcesSelected ObjectAccess objects currently selected in the TOM Explorer (IDE only):
// Plural form - collections (safe even when empty)
Selected.Tables // Selected tables
Selected.Measures // Selected measures
Selected.Columns // Selected columns
Selected.Hierarchies // Selected hierarchies
// Singular form - single object (error if not exactly one selected)
Selected.Table // The single selected table
Selected.Measure // The single selected measure
Selected.Column // The single selected column
// Set properties on multiple objects at once
Selected.Measures.DisplayFolder = "Test";
Selected.Columns.IsHidden = true;
// Bulk rename with pattern
Selected.Measures.Rename("Amount", "Value");When a Display Folder is selected, all child items are included in the selection.
LINQ is essential for filtering and transforming TOM collections. See references/linq-reference.md for the full method table, lambda syntax, and examples.
Key methods: Where(), First(), FirstOrDefault(), Any(), All(), Count(), Select(), OrderBy(), ForEach(), ToList().
// Common pattern: filter, chain, act
Model.AllMeasures
.Where(m => m.Name.Contains("Revenue"))
.Where(m => string.IsNullOrEmpty(m.FormatString))
.ForEach(m => m.FormatString = "$#,0");See references/helper-methods.md for the complete reference including Output() variations, file operations, property export/import, interactive selection dialogs, DAX formatting/execution, and macro invocation.
| Method | Purpose |
|---|---|
Info(message) | Display info popup (CLI: writes to console) |
Warning(message) | Display warning popup |
Error(message) | Display error popup and stop script |
Output(object) | Display detailed object inspector dialog |
SaveFile(path, content) / ReadFile(path) | File I/O |
ExportProperties() / ImportProperties() | TSV export/import |
SelectMeasure() / SelectTable() | Interactive selection (IDE only) |
FormatDax() / CallDaxFormatter() | DAX formatting |
EvaluateDax() / ExecuteDax() | DAX execution (connected) |
For interactive dialogs (input forms, dropdowns, multi-select), see references/winforms-dialogs.md. Key setup: #r "System.Drawing", ScriptHelper.WaitFormVisible = false;
Add a Measure:
var m = Model.Tables["Sales"].AddMeasure("Total Revenue", "SUM(Sales[Amount])");
m.FormatString = "$#,0";
m.DisplayFolder = "Key Metrics";
m.Description = "Total sales revenue";
Info("Added: " + m.Name);Iterate Tables/Columns:
foreach(var t in Model.Tables) {
foreach(var c in t.Columns.Where(c => c.Name.EndsWith("Key"))) {
c.IsHidden = true;
}
}
Info("Hidden key columns");Conditional Operations:
foreach(var m in Model.AllMeasures) {
if(m.Name.Contains("Revenue")) m.FormatString = "$#,0";
if(m.Name.Contains("Rate")) m.FormatString = "0.00%";
}Create Calculation Group:
var cg = Model.AddCalculationGroup("Time Intelligence");
cg.Precedence = 10;
var ytd = cg.AddCalculationItem("YTD", "CALCULATE(SELECTEDMEASURE(), DATESYTD('Date'[Date]))");
var prior = cg.AddCalculationItem("Prior Year");
prior.Expression = @"
CALCULATE(
SELECTEDMEASURE(),
DATEADD('Date'[Date], -1, YEAR)
)
";
Info("Created calculation group");| Object | Access | Common Properties |
|---|---|---|
| Model | Model | .Tables, .AllMeasures, .Relationships |
| Table | Model.Tables["Name"] | .Measures, .Columns, .Partitions, .IsHidden |
| Measure | Table.Measures["Name"] | .Expression, .FormatString, .DisplayFolder, .Description |
| Column | Table.Columns["Name"] | .DataType, .FormatString, .IsHidden, .SummarizeBy |
| Relationship | Model.Relationships | .FromTable, .ToTable, .IsActive, .CrossFilteringBehavior |
| Role | Model.Roles["Name"] | .Members, .TablePermissions |
| Hierarchy | Table.Hierarchies | .Levels, .DisplayFolder, .IsHidden |
| Partition | Table.Partitions | .Expression, .SourceType, .DataSource |
| Perspective | Model.Perspectives | Objects have .InPerspective["Name"] |
| Culture | Model.Cultures | Objects have .TranslatedNames["culture"] |
Detailed documentation for each object type in object-types/:
tables.md - Table CRUD, properties, partitionscolumns.md - Column types, properties, sortingmeasures.md - Measure creation, formatting, organizationrelationships.md - Relationship managementcalculation-groups.md - Calculation groups and itemsroles.md - Roles, RLS, OLS configurationhierarchies.md - Hierarchy and level managementpartitions.md - Partition types and configurationperspectives.md - Perspective membershiptranslations.md - Culture and translation managementannotations.md - Custom metadata annotations180 working .csx scripts organized by category in examples/. Before writing a script from scratch, check if a relevant example already exists -- read the example, adapt it to the task, and modify as needed.
| Category | Scripts | Description |
|---|---|---|
bulk-operations/ | 8 | Model initialization, batch updates, clean names, sync folders, validate |
calculation-groups/ | 2 | Time intelligence, currency conversion |
columns/ | 20 | Data types, hiding, sorting, encoding hints, cardinality, properties |
cultures/ | 4 | Add/delete cultures, list, modify translations |
display-folders/ | 8 | Organize by type, clear, rename, add/remove folders |
evaluate-dax/ | 5 | Execute DAX, scalar queries, table queries, column sizes, optimize |
format-dax/ | 8 | Format measures, calculated columns/tables, KPIs, detail rows |
format-strings/ | 6 | Apply by name/pattern, custom formats, dynamic format strings |
functions/ | 4 | Add/delete/list/modify shared M functions |
hierarchies/ | 4 | Add/delete/list/modify hierarchies |
kpis/ | 4 | Add/delete/list/modify KPIs |
measures/ | 18 | Full CRUD, time intelligence, bulk create, move, hide/unhide |
model/ | 10 | Properties, compatibility level, dependencies, refresh, export stats |
partitions/ | 6 | Refresh, find-replace M, incremental refresh, hybrid tables |
perspectives/ | 4 | Add/delete/list/modify perspectives |
relationships/ | 5 | Create, naming conventions, RI violations, integrity, properties |
roles/ | 7 | Add/delete roles, members, RLS, OLS configuration |
shared-expressions/ | 6 | Named expressions, range parameters, M functions |
svg-measures/ | 15 | Bar charts, bullet charts, dumbbells, lollipops, waterfall, jitter |
tables/ | 36 | All table types (import, DirectQuery, Direct Lake, calculated, field parameter, date), refresh policies, RLS/OLS, properties |
See references/common-workflows.md for complete workflow scripts: bulk format measures, create time intelligence measures, configure RLS, audit hidden objects. Also check examples/ for 180 working .csx scripts before writing from scratch.
Add Info() checkpoints to find where script fails:
Info("Step 1: Starting");
var table = Model.Tables["Sales"];
Info("Step 2: Got table");
var measure = table.AddMeasure("Test", "1");
Info("Step 3: Added measure"); // If this doesn't appear, AddMeasure failedCheck existence before accessing:
if(Model.Tables.Contains("Sales")) {
var table = Model.Tables["Sales"];
// ...
} else {
Error("Table 'Sales' not found");
}
// Or use FirstOrDefault
var table = Model.Tables.FirstOrDefault(t => t.Name == "Sales");
if(table == null) {
Error("Table not found");
}Info() after each operation)Use preprocessor directives for version-specific code:
#if TE3
// TE3-specific code (version 3.10.0+)
Info("Running in Tabular Editor 3");
#else
// TE2 fallback
Info("Running in Tabular Editor 2");
#endifCheck version at runtime:
var majorVersion = Selected.GetType().Assembly.GetName().Version.Major;
if(majorVersion >= 3) {
// TE3 code
}.Contains() or .Any() before accessingScriptHelper.WaitFormVisible = false; for UI dialogsobject-types/ - Detailed API docs per object typeexamples/ - 180 working .csx scripts across 20 categories; always check here before writing from scratchTo retrieve current TOM API reference 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.
© 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 248 other files (references) in plugins/tabular-editor/skills/c-sharp-scripting of data-goblin/power-bi-agentic-development.
Open the folder on GitHubat commit 41886f2
C Sharp Scripting 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 |
|---|---|---|---|---|---|---|
| C Sharp Scripting this skilldata-goblin/power-bi-agentic-development | 1k | — | ~3.7k | Automated safety check: Pass | GPL-3.0 | |
| Power Bi AI ReadinessDKH-DK/Self-Service-Power-BI-Fabric | 113 | — | ~2k | Automated safety check: Pass | None | |
| Dot Auditrobocode-dev/tank-royale | 269 | — | ~3.6k | Automated safety check: Notes | MIT | |
| 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 | |
| Dot Scoutrobocode-dev/tank-royale | 269 | — | ~3.9k | Automated safety check: Notes | MIT |
DKH-DK/Self-Service-Power-BI-Fabric
Score and prepare Power BI semantic models for AI (Fabric Data Agent / Copilot).
robocode-dev/tank-royale
Review a file, directory, or inline code against its activated principles.
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).
robocode-dev/tank-royale
Analyse a project to detect which principles apply and create or update .principles files encoding that analysis.
lukasreese/powerbi-claude-skills
Power BI PBIP Dependency Analyzer. An agent skill from lukasreese/powerbi-claude-skills.
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…
Categories
Writing and executing C scripts and macros against Power BI semantic models using Tabular Editor 2/3. C Sharp Scripting is an agent skill from data-goblin/power-bi-agentic-development. Writing and executing C scripts and macros against Power BI semantic models using Tabular Editor 2/3.
C Sharp Scripting fits situations like: mentions C script; tabular Editor script; macroActions.json; asks to automate model changes.
Run `npx skills add data-goblin/power-bi-agentic-development --skill c-sharp-scripting -a claude-code`. Or copy the skill folder (plugins/tabular-editor/skills/c-sharp-scripting in data-goblin/power-bi-agentic-development) into .claude/skills/c-sharp-scripting in your project. Claude Code loads it when a task matches its description.
Run `npx skills add data-goblin/power-bi-agentic-development --skill c-sharp-scripting -a codex`. Or copy the skill folder (plugins/tabular-editor/skills/c-sharp-scripting in data-goblin/power-bi-agentic-development) into .agents/skills/c-sharp-scripting 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 c-sharp-scripting -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/c-sharp-scripting, .gemini/skills/c-sharp-scripting, .github/skills/c-sharp-scripting and .opencode/skills/c-sharp-scripting in your project.
Going by SKILL.md and its folder, C Sharp Scripting needs credentials named AZURE_CLIENT_SECRET. Our summary lists: A credential in AZURE_CLIENT_SECRET.
SKILL.md names 3 domains. As links in the text: docs.tabulareditor.com, github.com and 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.
C Sharp Scripting 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 3.7k tokens (SKILL.md is roughly 15k 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.4k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with C Sharp Scripting: Power Bi AI Readiness (DKH-DK/Self-Service-Power-BI-Fabric, 113 stars), Dot Audit (robocode-dev/tank-royale, 269 stars), Pbi Report Builder (lukasreese/powerbi-claude-skills, 128 stars) and Pbi Doc (xperiun/skills-xperiun-free, 117 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.