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