Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Auto-document Power BI semantic models by extracting metadata, generating documentation, and cataloging all model objects using pbi-cli. Invoke this skill whenever the user says "document this model", "what's in this model", "list everything", "data dictionary", "model inventory", "audit contents", "catalog", "describe the model", or wants to understand what objects exist in a semantic model.
.claude/skills/minasaad1-power-bi-documentation/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | -29% | 0% |
| case-11 | ✗→✓ | ▲ Improved | -26% | 0% |
| case-02 | ✗→✓ | ▲ Improved | -33% | 0% |
| case-03 | ✗→✓ | ▲ Improved | -46% | 0% |
| case-07 | ✗→✓ | ▲ Improved | -39% | 0% |
Generate comprehensive documentation for Power BI semantic models.
bashpipx install pbi-cli-tool pbi-cli skills install pbi connect
bashpbi --json model get # Model metadata pbi --json model stats # Table/measure/column counts
bash# Tables and their structure pbi --json table list pbi --json table get Sales pbi --json table schema Sales # All measures pbi --json measure list # Individual measure details pbi --json measure get "Total Revenue" --table Sales # Columns per table pbi --json column list --table Sales pbi --json column list --table Products # Relationships pbi --json relationship list # Security roles pbi --json security-role list # Hierarchies pbi --json hierarchy list --table Date # Calculation groups pbi --json calc-group list # Perspectives pbi --json perspective list # Named expressions (M queries) pbi --json expression list # Partitions pbi --json partition list --table Sales # Calendar/date tables pbi --json calendar list
bashpbi database export-tmdl ./model-docs/
This creates a human-readable text representation of the entire model.
Run these commands to gather all information needed for documentation:
bash# Step 1: Model overview pbi --json model get > model-meta.json pbi --json model stats > model-stats.json # Step 2: All tables pbi --json table list > tables.json # Step 3: All measures pbi --json measure list > measures.json # Step 4: All relationships pbi --json relationship list > relationships.json # Step 5: Security roles pbi --json security-role list > security-roles.json # Step 6: Column details per table (loop through tables) pbi --json column list --table Sales > columns-sales.json pbi --json column list --table Products > columns-products.json # Step 7: Full TMDL export pbi database export-tmdl ./tmdl-export/
Then assemble these JSON files into markdown or HTML documentation.
For each table, extract columns and their types:
bash# Get schema for key tables pbi --json table schema Sales pbi --json table schema Products pbi --json table schema Calendar
Create a complete measure inventory:
bash# List all measures with expressions pbi --json measure list # Export full model as TMDL (includes all measure definitions) pbi database export-tmdl ./tmdl-export/
For multi-language models:
bash# List cultures (locales) pbi --json advanced culture list # Create a culture for localization pbi advanced culture create "fr-FR" # Delete a culture pbi advanced culture delete "fr-FR"
--json flag for machine-readable outputpbi --json relationship list)| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 21,403 | 9,317 | -56% | 1 | 1 | 0% | 3,759 | 2,653 | -29% | 0 | 0 | — |
case-11 | fail→pass | 8,642 | 1,682 | -81% | 1 | 1 | 0% | 1,438 | 1,066 | -26% | 0 | 0 | — |
case-02 | fail→pass | 17,527 | 6,892 | -61% | 1 | 1 | 0% | 2,963 | 1,999 | -33% | 0 | 0 | — |
case-03 | fail→pass | 15,914 | 4,445 | -72% | 1 | 1 | 0% | 2,828 | 1,541 | -46% | 0 | 0 | — |
case-04 | fail→fail | 10,294 | 8,981 | -13% | 1 | 1 | 0% | 1,695 | 2,367 | +40% | 0 | 0 | — |
case-05 | pass→pass | 13,620 | 12,234 | -10% | 1 | 1 | 0% | 2,286 | 2,848 | +25% | 0 | 0 | — |
case-06 | pass→pass | 14,701 | 12,043 | -18% | 1 | 1 | 0% | 2,427 | 2,793 | +15% | 0 | 0 | — |
case-07 | fail→pass | 14,525 | 3,988 | -73% | 1 | 1 | 0% | 2,337 | 1,433 | -39% | 0 | 0 | — |
case-08 | fail→pass | 11,959 | 2,436 | -80% | 1 | 1 | 0% | 1,953 | 1,221 | -37% | 0 | 0 | — |
case-09 | fail→pass | 8,060 | 1,620 | -80% | 1 | 1 | 0% | 1,347 | 1,031 | -23% | 0 | 0 | — |
case-10 | fail→pass | 16,142 | 1,848 | -89% | 1 | 1 | 0% | 2,493 | 1,070 | -57% | 0 | 0 | — |
case-12 | fail→pass | 15,376 | 2,029 | -87% | 1 | 1 | 0% | 2,456 | 1,117 | -55% | 0 | 0 | — |
case-13 | fail→pass | 20,333 | 4,606 | -77% | 1 | 1 | 0% | 3,379 | 1,473 | -56% | 0 | 0 | — |
case-14 | fail→pass | 12,733 | 1,515 | -88% | 1 | 1 | 0% | 2,003 | 994 | -50% | 0 | 0 | — |
case-15 | fail→pass | 11,110 | 2,049 | -82% | 1 | 1 | 0% | 1,821 | 1,107 | -39% | 0 | 0 | — |
case-21 | fail→pass | 11,598 | 1,961 | -83% | 1 | 1 | 0% | 1,868 | 1,152 | -38% | 0 | 0 | — |
case-16 | fail→pass | 13,933 | 2,340 | -83% | 1 | 1 | 0% | 2,326 | 1,111 | -52% | 0 | 0 | — |
case-17 | fail→pass | 16,186 | 1,778 | -89% | 1 | 1 | 0% | 2,527 | 1,031 | -59% | 0 | 0 | — |
case-18 | fail→pass | 8,394 | 1,897 | -77% | 1 | 1 | 0% | 1,404 | 1,037 | -26% | 0 | 0 | — |
case-19 | fail→pass | 12,761 | 1,979 | -84% | 1 | 1 | 0% | 2,163 | 1,098 | -49% | 0 | 0 | — |
case-20 | fail→pass | 12,996 | 1,561 | -88% | 1 | 1 | 0% | 2,133 | 1,026 | -52% | 0 | 0 | — |
case-22 | fail→pass | 15,842 | 2,949 | -81% | 1 | 1 | 0% | 2,329 | 1,283 | -45% | 0 | 0 | — |
case-23 | pass→pass | 15,372 | 14,483 | -6% | 1 | 1 | 0% | 2,261 | 3,085 | +36% | 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. 23 cases were attempted. The headline lift of +83 percentage points is the difference between those two pass rates over the 23 comparable cases.
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.