Agent skill

Refresh Semantic Model

by data-goblin in data-goblin/power-bi-agentic-development

Automatically invoke this skill whenever the user asks to refresh a semantic model or a dataset.

GPL-3.0Auto-check passed

Install Refresh Semantic Model

skills CLI
$ npx skills add data-goblin/power-bi-agentic-development --skill refresh-semantic-model -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install data-goblin/power-bi-agentic-development refresh-semantic-model --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ 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/semantic-models/skills/refresh-semantic-model .claude/skills/refresh-semantic-model && rm -rf skills-src

Use ~/.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/

Facts

Skill name
refresh-semantic-model
GitHub stars
1k
Token cost
~3.5k tokens
SKILL.md length
1,186 words
Files
4 (incl. scripts, references)
Skills in repo
33
Repo updated
First seen
Licence
GPL-3.0

At a glance

Automatically invoke this skill whenever the user asks to refresh a semantic model or a dataset.

  • Works in 6 steps: Resolve IDs → Query Baseline Data (Pre-Refresh… → Trigger the Refresh → …
  • SKILL.md covers Core Concepts, Refresh Workflow, Using the Refresh Script and Enhanced Refresh Options, plus 7 more sections
  • Runs Python scripts from its folder; calls uv

What it does

Refresh Semantic Model is an agent skill from data-goblin/power-bi-agentic-development. Automatically invoke this skill whenever the user asks to refresh a semantic model or a dataset. Can also be used to manage, optimize, troubleshoot, or configure a refresh or a refresh schedule.

Its SKILL.md is about 3.5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 5 other files, including scripts and reference files (for example `references/refresh-types.md`, `references/troubleshooting.md` and `scripts/refresh_model.py`).

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.

Example prompts

  • “/refresh-semantic-model”

Requirements

  • Python 3

Workflow steps

6 steps, taken from the step headings in SKILL.md.

  1. Resolve IDs
  2. Query Baseline Data (Pre-Refresh Validation)
  3. Trigger the Refresh
  4. Monitor Status
  5. Post-Refresh Validation
  6. Cancel (if needed)

What it can do on your machine

Read from SKILL.md and the folder at commit 41886f2. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    Ships 1 file in scripts/ (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • uv

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use uv, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Refresh Semantic Model loads about 3.5k tokens when it runs, and up to ~8.7k if it reads all its reference files. Until then it costs about 54 tokens; SKILL.md has 1,186 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~54
When it runs · the whole SKILL.md, loaded when a task matches
~3.5k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~8.7k

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.

Safety

Auto-check passed

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); the scripts in this folder are not scanned.

SKILL.md

The full file from data-goblin/power-bi-agentic-development at commit 41886f2, republished under its GPL-3.0 licence (© data-goblin). 1,186 words, ~3,519 tokens.

Download SKILL.mdSave it as .claude/skills/refresh-semantic-model/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.
name
refresh-semantic-model
description
Automatically invoke this skill whenever the user asks to refresh a semantic model or a dataset. Can also be used to manage, optimize, troubleshoot, or configure a refresh or a refresh schedule.

Refreshing Semantic Models

Trigger, monitor, validate, and troubleshoot semantic model refreshes via the Power BI Enhanced Refresh REST API and Fabric CLI.

Core Concepts

A semantic model refresh reloads data from upstream sources and/or recalculates dependent objects (calculated columns, calculated tables, measures). The scope can be the entire model, specific tables, or individual partitions.

Six refresh types are available via the REST API; a seventh (add) is TMSL-only:

TypeReloads DataRecalculatesPrimary Use CaseAPI
fullYesYesComplete reload from scratchREST
automaticConditionalConditionalSmart refresh; process only if neededREST
dataOnlyYesNo*Reload data; clear dependentsREST
calculateNoYesRecalculate without reloading dataREST
clearValuesNoNoEmpty data from objectsREST
defragmentNoNoClean up column dictionariesREST
addAppendYesAppend rows to a partitionTMSL

*dataOnly clears dependent objects (calculated columns, calculated tables) but does not recalculate them. Follow with a calculate refresh to restore them.

For detailed descriptions, behavior with incremental refresh policies, commit modes, and parallelism options, consult references/refresh-types.md.

Refresh Workflow

Step 1: Resolve IDs

Extract the workspace and model GUIDs needed for API calls:

bash
WS_ID=$(fab get "WorkspaceName.Workspace" -q "id" | tr -d '"')
MODEL_ID=$(fab get "WorkspaceName.Workspace/ModelName.SemanticModel" -q "id" | tr -d '"')
Step 2: Query Baseline Data (Pre-Refresh Validation)

Before triggering the refresh, capture a baseline snapshot to later verify that data actually changed. Execute a DAX query against the model to get current row counts or max dates:

bash
fab api -A powerbi "groups/$WS_ID/datasets/$MODEL_ID/executeQueries" \
  -X post -i '{
    "queries": [{"query": "EVALUATE ROW(\"RowCount\", COUNTROWS(FactSales), \"MaxDate\", MAX(FactSales[OrderDate]))"}],
    "serializerSettings": {"includeNulls": true}
  }'

Record the output. This baseline is compared after refresh to confirm new data arrived.

Step 3: Trigger the Refresh

Full model refresh (simplest):

bash
fab api -A powerbi "groups/$WS_ID/datasets/$MODEL_ID/refreshes" \
  -X post -i '{"type":"full"}'

Refresh specific tables:

bash
fab api -A powerbi "groups/$WS_ID/datasets/$MODEL_ID/refreshes" \
  -X post -i '{
    "type": "full",
    "objects": [{"table": "FactSales"}, {"table": "DimProduct"}]
  }'

Refresh specific partitions:

bash
fab api -A powerbi "groups/$WS_ID/datasets/$MODEL_ID/refreshes" \
  -X post -i '{
    "type": "full",
    "objects": [
      {"table": "FactSales", "partition": "FactSales_2024"},
      {"table": "FactSales", "partition": "FactSales_2023"}
    ]
  }'

Data-only refresh (skip recalculation):

bash
fab api -A powerbi "groups/$WS_ID/datasets/$MODEL_ID/refreshes" \
  -X post -i '{"type":"dataOnly","objects":[{"table":"FactSales"}]}'

Calculate only (no data reload):

bash
fab api -A powerbi "groups/$WS_ID/datasets/$MODEL_ID/refreshes" \
  -X post -i '{"type":"calculate"}'

Clear values from a table:

bash
fab api -A powerbi "groups/$WS_ID/datasets/$MODEL_ID/refreshes" \
  -X post -i '{"type":"clearValues","objects":[{"table":"StagingTable"}]}'

For the script-based approach with CLI arguments, use scripts/refresh_model.py.

Step 4: Monitor Status
bash
fab api -A powerbi "groups/$WS_ID/datasets/$MODEL_ID/refreshes?\$top=1"

Status values: Unknown, InProgress, Completed, Failed, Disabled, Cancelled

Step 5: Post-Refresh Validation

After the refresh completes, re-run the same DAX query from Step 2 and compare:

bash
fab api -A powerbi "groups/$WS_ID/datasets/$MODEL_ID/executeQueries" \
  -X post -i '{
    "queries": [{"query": "EVALUATE ROW(\"RowCount\", COUNTROWS(FactSales), \"MaxDate\", MAX(FactSales[OrderDate]))"}],
    "serializerSettings": {"includeNulls": true}
  }'

If data has not changed after a successful refresh:

  • The upstream data source has not been updated
  • The ETL pipeline (Fabric pipeline, notebook, Data Factory, or other orchestration) needs to run first
  • Check the lakehouse/warehouse/SQL database to verify fresh data exists
  • For Fabric lakehouses: run fab run "Workspace.Workspace/Pipeline.DataPipeline" or trigger the notebook
  • The refresh only pulls what the source provides; if the source is stale, the refresh will succeed but show no new data
Step 6: Cancel (if needed)

To cancel an in-progress enhanced refresh, first retrieve the requestId from the refresh history:

bash
fab api -A powerbi "groups/$WS_ID/datasets/$MODEL_ID/refreshes?\$top=1"

The response includes a requestId field. Use it to cancel:

bash
fab api -A powerbi "groups/$WS_ID/datasets/$MODEL_ID/refreshes/<requestId>" \
  -X delete

Only works for refreshes triggered via the Enhanced API (not scheduled or portal refreshes).

Using the Refresh Script

The scripts/refresh_model.py script wraps the Enhanced Refresh API with CLI arguments:

bash
# Full refresh
uv run scripts/refresh_model.py -w $WS_ID -m $MODEL_ID

# Refresh specific tables
uv run scripts/refresh_model.py -w $WS_ID -m $MODEL_ID --tables Sales,Calendar

# Refresh specific partitions
uv run scripts/refresh_model.py -w $WS_ID -m $MODEL_ID --partitions Sales:Sales_2024

# Data-only then calculate (two-phase)
uv run scripts/refresh_model.py -w $WS_ID -m $MODEL_ID -t dataOnly --tables FactSales
uv run scripts/refresh_model.py -w $WS_ID -m $MODEL_ID -t calculate

# Partial batch with parallelism
uv run scripts/refresh_model.py -w $WS_ID -m $MODEL_ID --commit partialBatch --parallelism 4

# Skip incremental refresh policy
uv run scripts/refresh_model.py -w $WS_ID -m $MODEL_ID --no-policy

# Check status only
uv run scripts/refresh_model.py -w $WS_ID -m $MODEL_ID --status-only

# Poll until complete
uv run scripts/refresh_model.py -w $WS_ID -m $MODEL_ID --poll

Enhanced Refresh Options

The Enhanced Refresh API (Premium/Fabric capacity required) extends the standard refresh with:

ParameterDefaultPurpose
typeautomaticRefresh type (full, automatic, dataOnly, calculate, etc.)
commitModetransactionalAtomic commit or per-object partial batch
maxParallelism10Number of parallel processing threads
retryCount0Automatic retries on failure
objectsEntire modelArray of table/partition targets
applyRefreshPolicytrueApply or skip incremental refresh policy
effectiveDateCurrent dateOverride date for incremental policy window
timeout05:00:00Per-attempt timeout (max total 24h with retries)

Common Patterns

Two-Phase Refresh (Large Models)

Split data loading and recalculation for better control and failure isolation:

  1. dataOnly with partialBatch to reload all tables (each committed independently)
  2. calculate with transactional to recalculate everything atomically
Selective Partition Refresh

For tables with incremental refresh, refresh only specific time-range partitions rather than the entire table. To discover partition names, query the model's TMSL metadata via the XMLA endpoint using Tabular Editor, SSMS, or by exporting with the Fabric CLI:

bash
fab export "Workspace.Workspace/Model.SemanticModel" -o /tmp/model -f

Inspect the exported TMDL table files; each partition block lists the partition name. Target specific partitions in the objects array of the refresh request.

Refresh After ETL

When orchestrating a data pipeline:

  1. Run the upstream ETL (Fabric pipeline, notebook, ADF, or custom)
  2. Verify fresh data in the source (lakehouse, warehouse, SQL)
  3. Trigger the semantic model refresh
  4. Validate with a DAX query that row counts or max dates changed
  5. If unchanged, investigate the ETL output; the semantic model refresh succeeded but the source was stale
Show full SKILL.md (500 more words)Show less

Troubleshooting

Quick reference for the most common failures. For the full troubleshooting guide with debugging workflows and detailed error tables, read references/troubleshooting.md.

SymptomLikely CauseResolution
Failed with credential errorCredentials expired, missing, or didn't carry over after copyUpdate in dataset settings; only shared cloud connections transfer with fab cp
Type mismatch on a tableSource column types don't match model column typesCheck column data types in the model definition vs source schema; add Table.TransformColumnTypes in partition expression
Column does not existSource column renamed, removed, or differently casedCheck source schema; add Table.RenameColumns in partition expression
Timeout (2h shared / 5h Premium)Model too large for a single refresh windowImplement incremental refresh; use partition-level refresh via XMLA; reduce model size
Calculated tables emptydataOnly refresh clears but doesn't rebuildFollow with a calculate refresh via the Enhanced Refresh API to rebuild calculated tables and calc groups
Throttled on PremiumToo many concurrent refreshesStagger refresh schedules; refresh during off-peak
Debugging per-table failures

When a full refresh fails, isolate the failing table by refreshing individual tables via the Enhanced Refresh API:

bash
# Refresh dimensions first
fab api -A powerbi "groups/$WS_ID/datasets/$MODEL_ID/refreshes" \
  -X post -i '{"type":"full","objects":[{"table":"Customers"}]}'

# Then facts
fab api -A powerbi "groups/$WS_ID/datasets/$MODEL_ID/refreshes" \
  -X post -i '{"type":"full","objects":[{"table":"Invoices"}]}'

# Then recalculate
fab api -A powerbi "groups/$WS_ID/datasets/$MODEL_ID/refreshes" \
  -X post -i '{"type":"calculate"}'

Check the failing table's partition expression and compare source schema against the model's expected column names and types via fab export or fab table schema.

Large Model Strategies

Models over 1 GB or with refresh times exceeding an hour benefit from targeted approaches:

  • Partition-level refresh: Refresh individual table partitions via the enhanced REST API or XMLA endpoint instead of the full model. Requires Premium/Fabric capacity.
  • Incremental refresh: Automatically partition large tables by date; only recent data refreshes each cycle. Configure RangeStart/RangeEnd parameters in Power Query. Also supports detect-data-changes to skip unchanged partitions entirely.
  • Aggregations: Pre-aggregate large fact tables at a coarser grain into an import-mode aggregation table. Detail queries fall through to DirectQuery. Reduces both refresh time and memory.
  • Hybrid tables: Historical partitions in import mode; a real-time DirectQuery partition for recent data. Related tables must be Dual storage mode.
  • Scale-out: Isolate refresh from query workloads by enabling semantic model scale-out on Premium capacities. A read-only replica handles queries while the primary refreshes.

Capacity Limits

Capacity TypeMax Refreshes/DayDefault TimeoutEnhanced Features
Pro82 hoursNo
Premium Per User485 hoursYes
Premium / Fabric485 hoursYes

Pro capacity supports only full-model standard refreshes. Enhanced refresh features (table/partition targeting, commit modes, parallelism, cancel, timeout override) require Premium or Fabric capacity.

Requirements

  • Workspace contributor or higher permissions
  • fab CLI authenticated: fab auth login

Additional Resources

Reference Files
  • references/refresh-types.md -- Complete reference for all 7 refresh types, commit modes, parallelism, incremental policy interaction, status values, XMLA/TMSL details, and the two-phase refresh pattern
  • references/troubleshooting.md -- Comprehensive troubleshooting guide: credential errors, type/schema mismatches, timeouts, capacity limits, incremental refresh issues, debugging workflows, and large model strategies
Scripts
  • scripts/refresh_model.py -- CLI tool for triggering and monitoring refreshes with all enhanced options
  • semantic-model -- Model design, build, and quality/performance review
  • lineage-analysis -- Downstream report discovery and impact analysis
  • standardize-naming-conventions -- Naming audit and remediation
  • fabric-cli (fabric-cli plugin) -- Workspace and item management via fab CLI

© 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

Files

SKILL.md and 3 other files (scripts, references) in plugins/semantic-models/skills/refresh-semantic-model of data-goblin/power-bi-agentic-development.

  • SKILL.md
  • references/refresh-types.md
  • references/troubleshooting.md
  • scripts/refresh_model.py

Open the folder on GitHubat commit 41886f2

Compare with similar skills

Refresh Semantic Model 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.

Refresh Semantic Model compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Refresh Semantic Model this skilldata-goblin/power-bi-agentic-development1k—~3.5kAutomated safety check: PassGPL-3.0
Index Refreshpaperclipai/paperclip98k—~994Automated safety check: PassMIT
Semantic Liststhedaviddias/Front-End-Checklist74k—~504Automated safety check: PassMIT
Meta Refreshthedaviddias/Front-End-Checklist74k—~434Automated safety check: PassMIT
Semantic Versioningsickn33/agentic-awesome-skills47k1 repos~2.6kAutomated safety check: PassMIT
Semantic Kernelgithub/awesome-copilot40k2 repos~756Automated safety check: PassMIT

Similar skills

  • Index Refresh

    paperclipai/paperclip

    A skill your agent uses when an LLM Wiki operation issue requests an index refresh.

    98k GitHub stars~994 tokensUpdated today
    Knowledge ManagementAuto-check passed
  • Semantic Lists

    thedaviddias/Front-End-Checklist

    A skill your agent uses when reviewing rendered HTML, interactive components, or design-system patterns related to Use semantic list elements.

    74k GitHub stars~504 tokensUpdated yesterday
    Frontend & DesignAuto-check passed
  • Meta Refresh

    thedaviddias/Front-End-Checklist

    A skill your agent uses when reviewing rendered HTML, interactive components, or design-system patterns related to Avoid meta refresh redirects.

    74k GitHub stars~434 tokensUpdated yesterday
    Frontend & DesignAuto-check passed
  • Semantic Versioning

    sickn33/agentic-awesome-skills

    Automate versioning and changelog generation using semantic versioning principles.

    47k GitHub starsUsed in 1 repo~2.6k tokens
    DevelopmentAuto-check passed
  • Semantic Kernel

    github/awesome-copilot

    Official

    Create, update, refactor, explain, or review Semantic Kernel solutions using shared guidance plus language-specific references for .NET and Python.

    40k GitHub starsUsed in 2 repos~756 tokens
    DevelopmentAuto-check passed
  • Html5 Semantic Elements

    thedaviddias/Front-End-Checklist

    A skill your agent uses when reviewing templates, rendered HTML, or shared components related to Use semantic HTML elements.

    74k GitHub stars~449 tokensUpdated yesterday
    Auto-check passed

More from data-goblin/power-bi-agentic-development

All 33 skills in this repo
  • Paginated Report

    data-goblin/power-bi-agentic-development

    Author, validate, publish, and test Power BI paginated reports in the RDL format.

    1k GitHub stars~3.5k tokensUpdated 2 days ago
    Auto-check passed
  • Audit Tenant Settings

    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.

    1k GitHub stars~4.7k tokensUpdated 2 days ago
    Auto-check passed
  • Bpa Rules

    data-goblin/power-bi-agentic-development

    Interactive BPA rule generation for Power BI semantic models; guided discovery, model investigation, and expert rule authoring.

    1k GitHub stars~4.4k tokensUpdated 2 days ago
    Auto-check passed
  • Pbip

    data-goblin/power-bi-agentic-development

    Guidance for Power BI Project (PBIP) structure, thick and thin reports, project renames, forks, and validation.

    1k GitHub stars~3.8k tokensUpdated 2 days ago
    Auto-check passed
  • Review Report

    data-goblin/power-bi-agentic-development

    Actionable feedback on the quality, usage, and effectiveness of Power BI reports.

    1k GitHub stars~4.2k tokensUpdated 2 days ago
    Auto-check passed
  • Semantic Model

    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…

    1k GitHub stars~2.8k tokensUpdated 2 days ago
    Auto-check passed

Questions about Refresh Semantic Model

What does Refresh Semantic Model do?

Automatically invoke this skill whenever the user asks to refresh a semantic model or a dataset. Refresh Semantic Model is an agent skill from data-goblin/power-bi-agentic-development. Automatically invoke this skill whenever the user asks to refresh a semantic model or a dataset.

How do I install Refresh Semantic Model in Claude Code?

Run `npx skills add data-goblin/power-bi-agentic-development --skill refresh-semantic-model -a claude-code`. Or copy the skill folder (plugins/semantic-models/skills/refresh-semantic-model in data-goblin/power-bi-agentic-development) into .claude/skills/refresh-semantic-model in your project. Claude Code loads it when a task matches its description.

How do I install Refresh Semantic Model in Codex?

Run `npx skills add data-goblin/power-bi-agentic-development --skill refresh-semantic-model -a codex`. Or copy the skill folder (plugins/semantic-models/skills/refresh-semantic-model in data-goblin/power-bi-agentic-development) into .agents/skills/refresh-semantic-model in your project. Codex loads it when a task matches its description.

Can I use Refresh Semantic Model in Cursor, Gemini CLI or GitHub Copilot?

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 refresh-semantic-model -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/refresh-semantic-model, .gemini/skills/refresh-semantic-model, .github/skills/refresh-semantic-model and .opencode/skills/refresh-semantic-model in your project.

What does Refresh Semantic Model need to run?

Going by SKILL.md and its folder, Refresh Semantic Model needs Python for the scripts in its folder and the command-line tools its instructions call (uv). Our summary lists: Python 3.

Does Refresh Semantic Model access the network?

SKILL.md contains no URLs. Its commands use uv, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Refresh Semantic Model safe to install?

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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Refresh Semantic Model use?

Refresh Semantic Model 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.

How many tokens does Refresh Semantic Model use?

About 3.5k tokens (SKILL.md is roughly 14k 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 5.2k tokens, read only when the agent opens those files.

What are the alternatives to Refresh Semantic Model?

Skills that share tags, products or a category with Refresh Semantic Model: Index Refresh (paperclipai/paperclip, 98k stars), Semantic Lists (thedaviddias/Front-End-Checklist, 74k stars), Meta Refresh (thedaviddias/Front-End-Checklist, 74k stars) and Semantic Versioning (sickn33/agentic-awesome-skills, 47k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Refresh Semantic Model?

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.