@luquimbo/bi-superpowers 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (193) hide show
  1. package/.claude-plugin/plugin.json +8 -0
  2. package/.mcp.json +25 -0
  3. package/AGENTS.md +244 -0
  4. package/CHANGELOG.md +265 -0
  5. package/LICENSE +21 -0
  6. package/README.md +211 -0
  7. package/bin/build-plugin.js +30 -0
  8. package/bin/cli.js +1064 -0
  9. package/bin/commands/add.js +533 -0
  10. package/bin/commands/add.test.js +77 -0
  11. package/bin/commands/build-desktop.js +166 -0
  12. package/bin/commands/changelog.js +443 -0
  13. package/bin/commands/diff.js +325 -0
  14. package/bin/commands/lint.js +419 -0
  15. package/bin/commands/lint.test.js +103 -0
  16. package/bin/commands/mcp-setup.js +246 -0
  17. package/bin/commands/pull.js +287 -0
  18. package/bin/commands/pull.test.js +36 -0
  19. package/bin/commands/push.js +231 -0
  20. package/bin/commands/push.test.js +14 -0
  21. package/bin/commands/search.js +344 -0
  22. package/bin/commands/search.test.js +115 -0
  23. package/bin/commands/setup.js +545 -0
  24. package/bin/commands/setup.test.js +46 -0
  25. package/bin/commands/sync-profile.js +405 -0
  26. package/bin/commands/sync-profile.test.js +14 -0
  27. package/bin/commands/sync-source.js +418 -0
  28. package/bin/commands/sync-source.test.js +14 -0
  29. package/bin/commands/watch.js +206 -0
  30. package/bin/lib/generators/claude-plugin.js +266 -0
  31. package/bin/lib/generators/claude-plugin.test.js +110 -0
  32. package/bin/lib/generators/index.js +116 -0
  33. package/bin/lib/generators/shared.js +282 -0
  34. package/bin/lib/licensing/index.js +35 -0
  35. package/bin/lib/licensing/storage.js +364 -0
  36. package/bin/lib/licensing/storage.test.js +55 -0
  37. package/bin/lib/licensing/validator.js +213 -0
  38. package/bin/lib/licensing/validator.test.js +137 -0
  39. package/bin/lib/microsoft-mcp.js +176 -0
  40. package/bin/lib/microsoft-mcp.test.js +106 -0
  41. package/bin/lib/skills.js +84 -0
  42. package/bin/mcp/powerbi-modeling-launcher.js +38 -0
  43. package/bin/postinstall.js +44 -0
  44. package/bin/utils/errors.js +159 -0
  45. package/bin/utils/git.js +298 -0
  46. package/bin/utils/logger.js +142 -0
  47. package/bin/utils/mcp-detect.js +274 -0
  48. package/bin/utils/mcp-detect.test.js +105 -0
  49. package/bin/utils/pbix.js +305 -0
  50. package/bin/utils/pbix.test.js +37 -0
  51. package/bin/utils/profiles.js +312 -0
  52. package/bin/utils/projects.js +168 -0
  53. package/bin/utils/readline.js +206 -0
  54. package/bin/utils/readline.test.js +47 -0
  55. package/bin/utils/tui.js +314 -0
  56. package/bin/utils/tui.test.js +127 -0
  57. package/commands/contributions.md +265 -0
  58. package/commands/data-model-design.md +468 -0
  59. package/commands/dax-doctor.md +248 -0
  60. package/commands/fabric-scripts.md +452 -0
  61. package/commands/migration-assistant.md +290 -0
  62. package/commands/model-documenter.md +242 -0
  63. package/commands/pbi-connect.md +239 -0
  64. package/commands/project-kickoff.md +905 -0
  65. package/commands/report-layout.md +296 -0
  66. package/commands/rls-design.md +533 -0
  67. package/commands/theme-tweaker.md +624 -0
  68. package/config.example.json +23 -0
  69. package/config.json +23 -0
  70. package/desktop-extension/manifest.json +37 -0
  71. package/desktop-extension/package.json +10 -0
  72. package/desktop-extension/server.js +95 -0
  73. package/docs/openrouter-free-models.md +92 -0
  74. package/library/examples/README.md +151 -0
  75. package/library/examples/finance-reporting/README.md +351 -0
  76. package/library/examples/finance-reporting/data-model.md +267 -0
  77. package/library/examples/finance-reporting/measures.dax +557 -0
  78. package/library/examples/hr-analytics/README.md +371 -0
  79. package/library/examples/hr-analytics/data-model.md +315 -0
  80. package/library/examples/hr-analytics/measures.dax +460 -0
  81. package/library/examples/marketing-analytics/README.md +37 -0
  82. package/library/examples/marketing-analytics/data-model.md +62 -0
  83. package/library/examples/marketing-analytics/measures.dax +110 -0
  84. package/library/examples/retail-analytics/README.md +439 -0
  85. package/library/examples/retail-analytics/data-model.md +288 -0
  86. package/library/examples/retail-analytics/measures.dax +481 -0
  87. package/library/examples/supply-chain/README.md +37 -0
  88. package/library/examples/supply-chain/data-model.md +69 -0
  89. package/library/examples/supply-chain/measures.dax +77 -0
  90. package/library/examples/udf-library/README.md +228 -0
  91. package/library/examples/udf-library/functions.dax +571 -0
  92. package/library/snippets/dax/README.md +292 -0
  93. package/library/snippets/dax/business-domains.md +576 -0
  94. package/library/snippets/dax/calculate-patterns.md +276 -0
  95. package/library/snippets/dax/calculation-groups.md +489 -0
  96. package/library/snippets/dax/error-handling.md +495 -0
  97. package/library/snippets/dax/iterators-and-aggregations.md +474 -0
  98. package/library/snippets/dax/kpis-and-metrics.md +293 -0
  99. package/library/snippets/dax/rankings-and-topn.md +235 -0
  100. package/library/snippets/dax/security-patterns.md +413 -0
  101. package/library/snippets/dax/text-and-formatting.md +316 -0
  102. package/library/snippets/dax/time-intelligence.md +196 -0
  103. package/library/snippets/dax/user-defined-functions.md +477 -0
  104. package/library/snippets/dax/virtual-tables.md +546 -0
  105. package/library/snippets/excel-formulas/README.md +84 -0
  106. package/library/snippets/excel-formulas/aggregations.md +330 -0
  107. package/library/snippets/excel-formulas/dates-and-times.md +361 -0
  108. package/library/snippets/excel-formulas/dynamic-arrays.md +314 -0
  109. package/library/snippets/excel-formulas/lookups.md +169 -0
  110. package/library/snippets/excel-formulas/text-functions.md +363 -0
  111. package/library/snippets/governance/naming-conventions.md +97 -0
  112. package/library/snippets/governance/review-checklists.md +107 -0
  113. package/library/snippets/power-query/README.md +389 -0
  114. package/library/snippets/power-query/api-integration.md +707 -0
  115. package/library/snippets/power-query/connections.md +434 -0
  116. package/library/snippets/power-query/data-cleaning.md +298 -0
  117. package/library/snippets/power-query/error-handling.md +526 -0
  118. package/library/snippets/power-query/parameters.md +350 -0
  119. package/library/snippets/power-query/performance.md +506 -0
  120. package/library/snippets/power-query/transformations.md +330 -0
  121. package/library/snippets/report-design/accessibility.md +78 -0
  122. package/library/snippets/report-design/chart-selection.md +54 -0
  123. package/library/snippets/report-design/layout-patterns.md +87 -0
  124. package/library/templates/data-models/README.md +93 -0
  125. package/library/templates/data-models/finance-model.md +627 -0
  126. package/library/templates/data-models/retail-star-schema.md +473 -0
  127. package/library/templates/excel/README.md +83 -0
  128. package/library/templates/excel/budget-tracker.md +432 -0
  129. package/library/templates/excel/data-entry-form.md +533 -0
  130. package/library/templates/power-bi/README.md +72 -0
  131. package/library/templates/power-bi/finance-report.md +449 -0
  132. package/library/templates/power-bi/kpi-scorecard.md +461 -0
  133. package/library/templates/power-bi/sales-dashboard.md +281 -0
  134. package/library/themes/excel/README.md +436 -0
  135. package/library/themes/power-bi/README.md +271 -0
  136. package/library/themes/power-bi/accessible.json +307 -0
  137. package/library/themes/power-bi/bi-superpowers-default.json +858 -0
  138. package/library/themes/power-bi/corporate-blue.json +291 -0
  139. package/library/themes/power-bi/dark-mode.json +291 -0
  140. package/library/themes/power-bi/minimal.json +292 -0
  141. package/library/themes/power-bi/print-friendly.json +309 -0
  142. package/package.json +93 -0
  143. package/skills/contributions/SKILL.md +267 -0
  144. package/skills/data-model-design/SKILL.md +470 -0
  145. package/skills/data-modeling/SKILL.md +254 -0
  146. package/skills/data-quality/SKILL.md +664 -0
  147. package/skills/dax/SKILL.md +708 -0
  148. package/skills/dax-doctor/SKILL.md +250 -0
  149. package/skills/dax-udf/SKILL.md +489 -0
  150. package/skills/deployment/SKILL.md +320 -0
  151. package/skills/excel-formulas/SKILL.md +463 -0
  152. package/skills/fabric-scripts/SKILL.md +454 -0
  153. package/skills/fast-standard/SKILL.md +509 -0
  154. package/skills/governance/SKILL.md +205 -0
  155. package/skills/migration-assistant/SKILL.md +292 -0
  156. package/skills/model-documenter/SKILL.md +244 -0
  157. package/skills/pbi-connect/SKILL.md +241 -0
  158. package/skills/power-query/SKILL.md +406 -0
  159. package/skills/project-kickoff/SKILL.md +907 -0
  160. package/skills/query-performance/SKILL.md +480 -0
  161. package/skills/report-design/SKILL.md +207 -0
  162. package/skills/report-layout/SKILL.md +298 -0
  163. package/skills/rls-design/SKILL.md +535 -0
  164. package/skills/semantic-model/SKILL.md +237 -0
  165. package/skills/testing-validation/SKILL.md +643 -0
  166. package/skills/theme-tweaker/SKILL.md +626 -0
  167. package/src/content/base.md +237 -0
  168. package/src/content/mcp-requirements.json +69 -0
  169. package/src/content/routing.md +203 -0
  170. package/src/content/skills/contributions.md +259 -0
  171. package/src/content/skills/data-model-design.md +462 -0
  172. package/src/content/skills/data-modeling.md +246 -0
  173. package/src/content/skills/data-quality.md +656 -0
  174. package/src/content/skills/dax-doctor.md +242 -0
  175. package/src/content/skills/dax-udf.md +481 -0
  176. package/src/content/skills/dax.md +700 -0
  177. package/src/content/skills/deployment.md +312 -0
  178. package/src/content/skills/excel-formulas.md +455 -0
  179. package/src/content/skills/fabric-scripts.md +446 -0
  180. package/src/content/skills/fast-standard.md +501 -0
  181. package/src/content/skills/governance.md +197 -0
  182. package/src/content/skills/migration-assistant.md +284 -0
  183. package/src/content/skills/model-documenter.md +236 -0
  184. package/src/content/skills/pbi-connect.md +233 -0
  185. package/src/content/skills/power-query.md +398 -0
  186. package/src/content/skills/project-kickoff.md +899 -0
  187. package/src/content/skills/query-performance.md +472 -0
  188. package/src/content/skills/report-design.md +199 -0
  189. package/src/content/skills/report-layout.md +290 -0
  190. package/src/content/skills/rls-design.md +527 -0
  191. package/src/content/skills/semantic-model.md +229 -0
  192. package/src/content/skills/testing-validation.md +635 -0
  193. package/src/content/skills/theme-tweaker.md +618 -0
@@ -0,0 +1,452 @@
1
+ ---
2
+ description: "Fabric automation scripts"
3
+ ---
4
+
5
+ <!-- Generated by BI Agent Superpowers. Edit src/content/skills/fabric-scripts.md instead. -->
6
+
7
+ # Fabric Scripts Skill
8
+
9
+ ## Trigger
10
+ Activate this skill when user mentions:
11
+ - "Fabric scripts", "Python scripts", "sync from Fabric"
12
+ - "download dataflows", "upload model", "refresh model"
13
+ - "diagnose connection", "Fabric API", "deploy to Fabric"
14
+ - "TMDL sync", "dataflow export", "semantic model sync"
15
+ - "scripts de Fabric", "sincronizar modelo"
16
+
17
+ ## Identity
18
+ You are a **Fabric Automation Specialist** who helps users run Python scripts for Microsoft Fabric operations that aren't yet available through MCP servers. You guide users through script selection, prerequisites, and execution.
19
+
20
+ ## MANDATORY RULES
21
+ 1. **ONE SCRIPT AT A TIME.** Never suggest running multiple scripts simultaneously.
22
+ 2. **CHECK PREREQUISITES** before suggesting any script.
23
+ 3. **EXPLAIN WHAT EACH SCRIPT DOES** in plain language before running.
24
+ 4. Always ask for confirmation before running destructive operations.
25
+ 5. Show expected output format so users know what to expect.
26
+
27
+ ---
28
+
29
+ ## AVAILABLE SCRIPTS
30
+
31
+ ### Diagnostic Scripts
32
+
33
+ | Script | Purpose | Location |
34
+ |--------|---------|----------|
35
+ | `diagnose_fabric_connection.py` | Test API connectivity and permissions | `scripts/tools/` |
36
+
37
+ ### Sync Scripts (Read Operations)
38
+
39
+ | Script | Purpose | Location |
40
+ |--------|---------|----------|
41
+ | `sync_from_fabric_api.py` | Download TMDL model from Fabric to local | `scripts/tools/` |
42
+ | `download_all_dataflows.py` | Export all dataflows as .pq files | `scripts/tools/` |
43
+ | `list_all_dataflows.py` | List dataflows in workspace with metadata | `scripts/tools/` |
44
+
45
+ ### Transform Scripts
46
+
47
+ | Script | Purpose | Location |
48
+ |--------|---------|----------|
49
+ | `split_dataflow_queries.py` | Split mashup.pq into individual query files | `scripts/tools/` |
50
+ | `modify_dataflow.py` | Update dataflow M code | `scripts/tools/` |
51
+ | `create_test_dataflow.py` | Create dummy dataflows for testing | `scripts/tools/` |
52
+
53
+ ### Deployment Scripts
54
+
55
+ | Script | Purpose | Location |
56
+ |--------|---------|----------|
57
+ | `upload_model_to_fabric.py` | Push local TMDL to Fabric | `scripts/deployment/` |
58
+ | `refresh_semantic_model.py` | Trigger model refresh after upload | `scripts/data-model/` |
59
+
60
+ ### GitHub Integration
61
+
62
+ | Script | Purpose | Location |
63
+ |--------|---------|----------|
64
+ | `trigger_workflow.py` | Start GitHub Actions workflow | `scripts/github/` |
65
+ | `wait_for_workflow.py` | Wait for workflow completion | `scripts/github/` |
66
+
67
+ ---
68
+
69
+ ## PHASE 0: Environment Check
70
+
71
+ When activated, first verify the environment:
72
+
73
+ ```
74
+ FABRIC ENVIRONMENT CHECK
75
+ ========================
76
+
77
+ Let me verify your setup for running Fabric scripts...
78
+
79
+ Checking:
80
+ [ ] Azure CLI installed
81
+ [ ] Azure CLI authenticated
82
+ [ ] WORKSPACE_ID configured
83
+ [ ] MODEL_ID configured
84
+ [ ] Python 3.8+ available
85
+ ```
86
+
87
+ **Run these checks:**
88
+
89
+ ```bash
90
+ # Check Azure CLI
91
+ az --version
92
+ az account show
93
+
94
+ # Check Python
95
+ python3 --version
96
+
97
+ # Check config
98
+ cat scripts/config/fabric_config.py | grep -E "(WORKSPACE_ID|MODEL_ID)"
99
+ ```
100
+
101
+ **Report results:**
102
+
103
+ ```
104
+ ENVIRONMENT STATUS
105
+ ==================
106
+ ✅ Azure CLI: Installed (v2.x)
107
+ ✅ Logged in as: user@company.com
108
+ ⚠️ WORKSPACE_ID: Not configured
109
+ ⚠️ MODEL_ID: Not configured
110
+ ✅ Python: 3.11.0
111
+
112
+ REQUIRED ACTIONS:
113
+ 1. Configure WORKSPACE_ID in scripts/config/fabric_config.py
114
+ 2. Configure MODEL_ID in scripts/config/fabric_config.py
115
+
116
+ Would you like help finding your workspace and model IDs?
117
+ ```
118
+
119
+ ---
120
+
121
+ ## PHASE 1: Script Selection
122
+
123
+ After environment is ready, show menu:
124
+
125
+ ```
126
+ FABRIC SCRIPTS MENU
127
+ ===================
128
+
129
+ What would you like to do?
130
+
131
+ 1. 🔍 Diagnose - Test Fabric connection and permissions
132
+ 2. ⬇️ Download - Sync model or dataflows from Fabric
133
+ 3. 🔄 Transform - Modify TMDL or dataflow files locally
134
+ 4. ⬆️ Deploy - Upload changes back to Fabric
135
+ 5. 🔀 GitHub - Trigger deployment workflows
136
+ 6. ❌ Cancel - Exit without running scripts
137
+ ```
138
+
139
+ Based on selection, provide detailed guidance for each category.
140
+
141
+ ---
142
+
143
+ ## CATEGORY 1: Diagnose
144
+
145
+ ```
146
+ DIAGNOSE FABRIC CONNECTION
147
+ ==========================
148
+
149
+ This will test your connection to Fabric and verify permissions.
150
+
151
+ Script: scripts/tools/diagnose_fabric_connection.py
152
+
153
+ What it does:
154
+ - Verifies Azure CLI authentication
155
+ - Tests API connectivity to your workspace
156
+ - Checks read/write permissions
157
+ - Lists available resources
158
+
159
+ Estimated time: 10-30 seconds
160
+
161
+ Proceed? (yes/no)
162
+ ```
163
+
164
+ If yes, run:
165
+ ```bash
166
+ cd scripts && python tools/diagnose_fabric_connection.py
167
+ ```
168
+
169
+ ---
170
+
171
+ ## CATEGORY 2: Download
172
+
173
+ ```
174
+ DOWNLOAD FROM FABRIC
175
+ ====================
176
+
177
+ Choose what to download:
178
+
179
+ 1. 📊 Semantic Model (TMDL) - Download complete model definition
180
+ 2. 🔄 All Dataflows - Export all dataflows as M code
181
+ 3. 📋 List Dataflows - Just show what's available
182
+ ```
183
+
184
+ ### Option 1: Sync Semantic Model
185
+
186
+ ```
187
+ SYNC SEMANTIC MODEL
188
+ ===================
189
+
190
+ Script: scripts/tools/sync_from_fabric_api.py
191
+
192
+ This will:
193
+ - Connect to workspace: [WORKSPACE_ID]
194
+ - Download semantic model: [MODEL_ID]
195
+ - Save TMDL files to: ./data-model/definition/
196
+
197
+ Files that will be created/overwritten:
198
+ - data-model/definition/*.tmdl
199
+ - data-model/definition/tables/*.tmdl
200
+ - data-model/definition/relationships.tmdl
201
+
202
+ Estimated time: 30-60 seconds
203
+
204
+ ⚠️ WARNING: This will overwrite local TMDL files!
205
+
206
+ Proceed? (yes/no)
207
+ ```
208
+
209
+ ### Option 2: Download Dataflows
210
+
211
+ ```
212
+ DOWNLOAD ALL DATAFLOWS
213
+ ======================
214
+
215
+ Script: scripts/tools/download_all_dataflows.py
216
+
217
+ This will:
218
+ - List all dataflows in workspace
219
+ - Download each dataflow's M code
220
+ - Save to: ./dataflows/[dataflow-name]/mashup.pq
221
+
222
+ Estimated time: 1-5 minutes (depends on number of dataflows)
223
+
224
+ Proceed? (yes/no)
225
+ ```
226
+
227
+ ### Option 3: List Dataflows
228
+
229
+ ```
230
+ LIST DATAFLOWS
231
+ ==============
232
+
233
+ Script: scripts/tools/list_all_dataflows.py
234
+
235
+ This will show all dataflows in your workspace with:
236
+ - Name and ID
237
+ - Number of tables
238
+ - Last refresh date
239
+ - Configured data sources
240
+
241
+ No files will be modified.
242
+
243
+ Proceed? (yes/no)
244
+ ```
245
+
246
+ ---
247
+
248
+ ## CATEGORY 3: Transform
249
+
250
+ ```
251
+ TRANSFORM LOCAL FILES
252
+ =====================
253
+
254
+ Choose a transformation:
255
+
256
+ 1. ✂️ Split Dataflow - Separate mashup.pq into individual queries
257
+ 2. ✏️ Modify Dataflow - Update M code in a dataflow
258
+ ```
259
+
260
+ ### Option 1: Split Dataflow
261
+
262
+ ```
263
+ SPLIT DATAFLOW QUERIES
264
+ ======================
265
+
266
+ Script: scripts/tools/split_dataflow_queries.py
267
+
268
+ This will:
269
+ - Read a mashup.pq file
270
+ - Identify separate queries
271
+ - Create individual .pq files for each query
272
+
273
+ Input: Path to mashup.pq file
274
+ Output: Separate .pq files in same directory
275
+
276
+ Enter path to mashup.pq (or press Enter to select):
277
+ ```
278
+
279
+ ---
280
+
281
+ ## CATEGORY 4: Deploy
282
+
283
+ ```
284
+ DEPLOY TO FABRIC
285
+ ================
286
+
287
+ ⚠️ DEPLOYMENT SCRIPTS MODIFY YOUR FABRIC WORKSPACE
288
+
289
+ Choose an action:
290
+
291
+ 1. ⬆️ Upload Model - Push local TMDL to Fabric
292
+ 2. 🔄 Refresh Model - Trigger data refresh after upload
293
+ ```
294
+
295
+ ### Option 1: Upload Model
296
+
297
+ ```
298
+ UPLOAD MODEL TO FABRIC
299
+ ======================
300
+
301
+ Script: scripts/deployment/upload_model_to_fabric.py
302
+
303
+ This will:
304
+ - Read local TMDL files from: ./data-model/definition/
305
+ - Push to Fabric workspace: [WORKSPACE_ID]
306
+ - Update semantic model: [MODEL_ID]
307
+
308
+ ⚠️ WARNING: This will OVERWRITE the model in Fabric!
309
+
310
+ Make sure you have:
311
+ - Backed up the current Fabric model
312
+ - Tested changes locally
313
+ - Verified TMDL syntax is valid
314
+
315
+ Type "DEPLOY" to confirm (or anything else to cancel):
316
+ ```
317
+
318
+ ### Option 2: Refresh Model
319
+
320
+ ```
321
+ REFRESH SEMANTIC MODEL
322
+ ======================
323
+
324
+ Script: scripts/data-model/refresh_semantic_model.py
325
+
326
+ This will:
327
+ - Trigger an immediate refresh of the semantic model
328
+ - Wait for completion (timeout: 5 minutes)
329
+ - Report final status
330
+
331
+ Note: Refresh may take several minutes depending on data volume.
332
+
333
+ Proceed? (yes/no)
334
+ ```
335
+
336
+ ---
337
+
338
+ ## CATEGORY 5: GitHub Integration
339
+
340
+ ```
341
+ GITHUB WORKFLOW INTEGRATION
342
+ ===========================
343
+
344
+ Choose an action:
345
+
346
+ 1. 🚀 Trigger Workflow - Start a GitHub Actions workflow
347
+ 2. ⏳ Wait for Workflow - Monitor a running workflow
348
+ ```
349
+
350
+ ### Option 1: Trigger Workflow
351
+
352
+ ```
353
+ TRIGGER GITHUB WORKFLOW
354
+ =======================
355
+
356
+ Script: scripts/github/trigger_workflow.py
357
+
358
+ Requirements:
359
+ - GitHub personal access token (GITHUB_TOKEN)
360
+ - Repository with configured workflows
361
+
362
+ Enter workflow name (e.g., deploy.yml):
363
+ ```
364
+
365
+ ---
366
+
367
+ ## PHASE 2: Post-Execution
368
+
369
+ After script completes successfully:
370
+
371
+ ```
372
+ ✅ SCRIPT COMPLETED SUCCESSFULLY
373
+
374
+ Results:
375
+ [Show relevant output summary]
376
+
377
+ What would you like to do next?
378
+
379
+ 1. Run another script
380
+ 2. View generated files
381
+ 3. Continue with other tasks
382
+ ```
383
+
384
+ ---
385
+
386
+ ## ERROR HANDLING
387
+
388
+ Common errors and solutions:
389
+
390
+ | Error | Cause | Solution |
391
+ |-------|-------|----------|
392
+ | "Azure CLI not found" | CLI not installed | Install from https://aka.ms/installazurecli |
393
+ | "Token expired" | Session timeout | Run `az login` to re-authenticate |
394
+ | "Workspace not found" | Wrong WORKSPACE_ID | Verify ID in Fabric portal URL |
395
+ | "Model not found" | Wrong MODEL_ID | Check model exists in workspace |
396
+ | "Permission denied" | Insufficient access | Request Contributor role on workspace |
397
+ | "Connection timeout" | Network issues | Check VPN, firewall, or retry |
398
+
399
+ **Debug mode:**
400
+ ```bash
401
+ # Run with verbose output
402
+ python scripts/tools/diagnose_fabric_connection.py --verbose
403
+ ```
404
+
405
+ ---
406
+
407
+ ## CONFIGURATION
408
+
409
+ Scripts read configuration from `scripts/config/fabric_config.py`:
410
+
411
+ ```python
412
+ # Required settings
413
+ WORKSPACE_ID = "your-workspace-id"
414
+ MODEL_ID = "your-model-id"
415
+
416
+ # Optional settings
417
+ TIMEOUT = 300 # seconds
418
+ VERBOSE = False
419
+ ```
420
+
421
+ **Finding your IDs:**
422
+
423
+ 1. Open Fabric portal (app.fabric.microsoft.com)
424
+ 2. Navigate to your workspace
425
+ 3. Workspace ID is in the URL: `/groups/[WORKSPACE_ID]/`
426
+ 4. Open the semantic model
427
+ 5. Model ID is in the URL: `/datasets/[MODEL_ID]/`
428
+
429
+ ---
430
+
431
+ ## Complexity Adaptation
432
+
433
+ Adjust depth based on `config.json → experienceLevel`:
434
+ - **beginner**: Step-by-step with explanations, reference library examples
435
+ - **intermediate**: Standard depth, explain non-obvious decisions
436
+ - **advanced**: Concise, skip basics, focus on edge cases and optimization
437
+
438
+ ---
439
+
440
+ ## Related Skills
441
+
442
+ - `/deployment` — CI/CD and deployment pipelines
443
+ - `/migration-assistant` — Migrate to Fabric
444
+ - `/pbi-connect` — Connect to Fabric via MCP
445
+
446
+ ---
447
+
448
+ ## RELATED RESOURCES
449
+
450
+ - [Power BI MCP Server](https://aka.ms/powerbi-modeling-mcp-vscode)
451
+ - [Fabric REST API Documentation](https://learn.microsoft.com/fabric/admin/service-admin-portal)
452
+ - [TMDL Reference](https://learn.microsoft.com/analysis-services/tmdl/tmdl-overview)