Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Troubleshoot Power BI model performance, trace query execution, manage caches, and verify the pbi-cli environment using pbi-cli. Invoke this skill whenever the user says "pbi not working", "setup issues", "connection failed", "slow query", "performance", "profiling", "tracing", "health check", "model audit", "pbi setup", or encounters any pbi-cli error. This is the first skill to check when something goes wrong with pbi-cli.
.claude/skills/minasaad1-power-bi-diagnostics/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | -58% | 0% |
| case-02 | ✗→✓ | ▲ Improved | -17% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 28% | 0% |
| case-07 | ✗→✓ | ▲ Improved | -29% | 0% |
| case-08 | ✗→✓ | ▲ Improved | -44% | 0% |
Troubleshoot performance, trace queries, and verify the pbi-cli environment.
bashpipx install pbi-cli-tool pbi-cli skills install pbi connect
bash# Verify pythonnet and .NET DLLs are installed pbi setup # Show detailed environment info (version, DLL paths, pythonnet status) pbi setup --info pbi --json setup --info # Check CLI version pbi --version
If pbi-cli isn't working, run these checks in order:
bash# 1. Is pbi-cli installed correctly? pbi --version pbi setup --info # 2. Is Power BI Desktop running with a model open? pbi connect # 3. Is the connection still alive? pbi connections last # 4. Can you query the model? pbi dax execute "EVALUATE ROW(\"test\", 1)"
bash# Quick model overview pbi --json model get # Object counts (tables, columns, measures, relationships, partitions) pbi --json model stats # List all tables with column/measure counts pbi --json table list
Capture diagnostic events during DAX query execution:
bash# Start a trace pbi trace start # Execute the query you want to profile pbi dax execute "EVALUATE SUMMARIZECOLUMNS(Products[Category], \"Total\", SUM(Sales[Amount]))" # Stop the trace pbi trace stop # Fetch captured trace events pbi --json trace fetch # Export trace events to a file pbi trace export ./trace-output.json
bash# Clear the formula engine cache (do this before benchmarking) pbi dax clear-cache
bash# List all saved connections pbi connections list pbi --json connections list # Show the last-used connection pbi connections last # Reconnect to a specific data source pbi connect -d localhost:54321 # Disconnect pbi disconnect
bash# 1. Clear cache for a clean benchmark pbi dax clear-cache # 2. Start tracing pbi trace start # 3. Run the slow query pbi dax execute "EVALUATE SUMMARIZECOLUMNS(Products[Category], \"Total\", SUM(Sales[Amount]))" --timeout 300 # 4. Stop tracing pbi trace stop # 5. Export trace for analysis pbi trace export ./slow-query-trace.json # 6. Review trace events pbi --json trace fetch
bash# 1. Model overview pbi --json model get pbi --json model stats # 2. Check table sizes and structure pbi --json table list # 3. Review relationships pbi --json relationship list # 4. Check security roles pbi --json security-role list # 5. Export full model for offline review pbi database export-tmdl ./audit-export/
pbi dax clear-cache--timeout for long-running queries to avoid premature cancellationpbi setup --info first when troubleshooting environment issues--json output for automated monitoring scriptspbi repl for interactive debugging sessions with persistent connection| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 21,699 | 4,906 | -77% | 1 | 1 | 0% | 4,260 | 1,802 | -58% | 0 | 0 | — |
case-02 | fail→pass | 13,752 | 7,131 | -48% | 1 | 1 | 0% | 2,649 | 2,210 | -17% | 0 | 0 | — |
case-03 | fail→pass | 32,973 | 5,114 | -84% | 1 | 1 | 0% | 1,422 | 1,816 | +28% | 0 | 0 | — |
case-04 | pass→fail | 6,895 | 5,300 | -23% | 1 | 1 | 0% | 1,393 | 1,795 | +29% | 0 | 0 | — |
case-05 | pass→pass | 8,293 | 7,002 | -16% | 1 | 1 | 0% | 1,533 | 2,251 | +47% | 0 | 0 | — |
case-06 | pass→pass | 8,700 | 5,462 | -37% | 1 | 1 | 0% | 1,713 | 1,804 | +5% | 0 | 0 | — |
case-07 | fail→pass | 8,680 | 2,042 | -76% | 1 | 1 | 0% | 1,613 | 1,150 | -29% | 0 | 0 | — |
case-08 | fail→pass | 15,634 | 3,376 | -78% | 1 | 1 | 0% | 2,389 | 1,344 | -44% | 0 | 0 | — |
case-09 | fail→pass | 9,369 | 1,633 | -83% | 1 | 1 | 0% | 1,840 | 1,095 | -40% | 0 | 0 | — |
case-10 | fail→pass | 15,784 | 3,549 | -78% | 1 | 1 | 0% | 2,738 | 1,371 | -50% | 0 | 0 | — |
case-11 | fail→pass | 13,912 | 2,589 | -81% | 1 | 1 | 0% | 2,507 | 1,223 | -51% | 0 | 0 | — |
case-12 | fail→pass | 11,252 | 2,864 | -75% | 1 | 1 | 0% | 2,138 | 1,240 | -42% | 0 | 0 | — |
case-13 | fail→pass | 10,668 | 2,865 | -73% | 1 | 1 | 0% | 1,848 | 1,343 | -27% | 0 | 0 | — |
case-14 | fail→pass | 11,718 | 2,178 | -81% | 1 | 1 | 0% | 2,448 | 1,152 | -53% | 0 | 0 | — |
case-15 | fail→pass | 12,901 | 1,544 | -88% | 1 | 1 | 0% | 2,036 | 1,025 | -50% | 0 | 0 | — |
case-16 | fail→pass | 10,606 | 4,327 | -59% | 1 | 1 | 0% | 1,745 | 1,215 | -30% | 0 | 0 | — |
case-17 | fail→pass | 11,815 | 3,086 | -74% | 1 | 1 | 0% | 2,332 | 1,317 | -44% | 0 | 0 | — |
case-18 | fail→pass | 14,246 | 1,858 | -87% | 1 | 1 | 0% | 2,252 | 1,141 | -49% | 0 | 0 | — |
case-19 | fail→pass | 23,252 | 3,288 | -86% | 1 | 1 | 0% | 1,960 | 1,425 | -27% | 0 | 0 | — |
case-20 | fail→pass | 4,880 | 1,504 | -69% | 1 | 1 | 0% | 663 | 1,018 | +54% | 0 | 0 | — |
case-21 | fail→pass | 14,557 | 3,820 | -74% | 1 | 1 | 0% | 2,304 | 1,422 | -38% | 0 | 0 | — |
case-22 | fail→pass | 13,571 | 1,807 | -87% | 1 | 1 | 0% | 2,200 | 1,071 | -51% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 21 counted toward the lift figure. The other 1 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +82 percentage points is the difference between those two pass rates over the 21 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.