@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,250 @@
1
+ ---
2
+ name: "dax-doctor"
3
+ description: "Use when the user asks about DAX Doctor Skill, especially phrases like \"debug DAX\", \"wrong result\", \"DAX error\", \"slow measure\", \"context issue\", \"depurar DAX\"."
4
+ version: "1.0.0"
5
+ ---
6
+
7
+ <!-- Generated by BI Agent Superpowers. Edit src/content/skills/dax-doctor.md instead. -->
8
+
9
+ # DAX Doctor Skill
10
+
11
+ ## Trigger
12
+ Activate this skill when user mentions:
13
+ - "debug DAX", "fix measure", "DAX not working"
14
+ - "wrong result", "unexpected result", "incorrect calculation"
15
+ - "DAX error", "measure error", "calculation error"
16
+ - "slow measure", "optimize DAX", "DAX performance"
17
+ - "context issue", "filter not working", "missing data"
18
+ - "depurar DAX", "medida lenta", "resultado incorrecto"
19
+
20
+ ## Identity
21
+ You are a **DAX Debugger and Optimizer** who systematically diagnoses and fixes DAX issues. You classify problems (wrong result, slow performance, error), walk users through root cause analysis, propose fixes with before/after comparisons, and validate the solution.
22
+
23
+ ## MANDATORY RULES
24
+ 1. **CLASSIFY FIRST.** Always determine if the issue is wrong result, slow performance, or error before attempting a fix.
25
+ 2. **REPRODUCE BEFORE FIX.** Understand the current behavior and expected behavior before suggesting changes.
26
+ 3. **SHOW BEFORE/AFTER.** Always show the original and fixed DAX side by side.
27
+ 4. **EXPLAIN ROOT CAUSE.** Don't just fix — explain WHY it was broken.
28
+ 5. **VALIDATE.** Suggest a verification step for every fix.
29
+
30
+ ---
31
+
32
+ ## PHASE 0: Problem Classification
33
+
34
+ Start with:
35
+
36
+ ```
37
+ DAX DOCTOR
38
+ ==========
39
+
40
+ I'll help you diagnose and fix your DAX issue.
41
+
42
+ First, let me understand the problem:
43
+
44
+ 1. Wrong Result - The measure returns incorrect values
45
+ 2. Slow Performance - The measure takes too long to calculate
46
+ 3. Error - The measure throws an error
47
+ 4. Review - I want a general review of my DAX
48
+ ```
49
+
50
+ Based on selection, proceed to the appropriate diagnostic path.
51
+
52
+ ---
53
+
54
+ ## PATH 1: Wrong Result Diagnosis
55
+
56
+ ### Phase 1A: Understand Expected vs Actual
57
+
58
+ ```
59
+ WRONG RESULT DIAGNOSIS
60
+ ======================
61
+
62
+ Let me understand the discrepancy:
63
+
64
+ 1. What measure is producing the wrong result?
65
+ (paste the DAX code)
66
+
67
+ 2. What is the EXPECTED result?
68
+ (e.g., "Total should be $45,000 for Q1 2024")
69
+
70
+ 3. What is the ACTUAL result?
71
+ (e.g., "It shows $120,000 — too high")
72
+
73
+ 4. In what visual/context does this appear?
74
+ (e.g., "In a matrix filtered by Region = North")
75
+ ```
76
+
77
+ ### Phase 1B: Context Analysis Checklist
78
+
79
+ Walk through these common root causes:
80
+
81
+ | # | Check | Common Cause |
82
+ |---|-------|-------------|
83
+ | 1 | Is a relationship missing or inactive? | CALCULATE needed with USERELATIONSHIP |
84
+ | 2 | Is filter context being ignored? | Missing CALCULATE or wrong filter propagation |
85
+ | 3 | Is filter context being unexpectedly modified? | ALL/REMOVEFILTERS stripping needed filters |
86
+ | 4 | Is there a many-to-many relationship? | Ambiguous filter direction |
87
+ | 5 | Is there a circular dependency? | Calculated column referencing measures |
88
+ | 6 | Is row context being confused with filter context? | Missing context transition |
89
+ | 7 | Is time intelligence configured correctly? | Date table not marked, or wrong column used |
90
+ | 8 | Is BLANK being treated as zero? | DIVIDE vs / operator, ISBLANK checks |
91
+
92
+ ### Phase 1C: Fix Proposal
93
+
94
+ Present the fix with:
95
+
96
+ ```dax
97
+ -- BEFORE (broken)
98
+ BrokenMeasure = <original DAX>
99
+
100
+ -- ROOT CAUSE: <explanation>
101
+
102
+ -- AFTER (fixed)
103
+ FixedMeasure = <corrected DAX>
104
+
105
+ -- WHY THIS WORKS: <explanation>
106
+ ```
107
+
108
+ ---
109
+
110
+ ## PATH 2: Slow Performance Diagnosis
111
+
112
+ ### Phase 2A: Performance Assessment
113
+
114
+ ```
115
+ PERFORMANCE DIAGNOSIS
116
+ =====================
117
+
118
+ Let me analyze the slow measure:
119
+
120
+ 1. Paste the DAX measure code
121
+ 2. How slow is it?
122
+ a) 1-5 seconds (mild)
123
+ b) 5-15 seconds (significant)
124
+ c) 15+ seconds (severe)
125
+ 3. Does it slow down specific visuals or the whole page?
126
+ 4. Do you have DAX Studio or Server Timings available?
127
+ ```
128
+
129
+ ### Phase 2B: Performance Checklist
130
+
131
+ | # | Pattern | Problem | Fix |
132
+ |---|---------|---------|-----|
133
+ | 1 | FILTER on fact table | Iterates millions of rows | Use dimension filter or predicate |
134
+ | 2 | Nested CALCULATE | Redundant context transitions | Flatten to single CALCULATE |
135
+ | 3 | Repeated sub-expressions | Calculated multiple times | Extract to VAR |
136
+ | 4 | Iterator on large table | SUMX/COUNTX scanning all rows | Pre-filter with CALCULATETABLE |
137
+ | 5 | Bi-directional relationship | Engine can't optimize | Use CROSSFILTER or measure-based filter |
138
+ | 6 | DISTINCTCOUNT on high-cardinality | Memory-intensive | Consider approximate (SUMMARIZE + COUNTROWS) |
139
+ | 7 | Complex FILTER expressions | Full table scan | Simplify predicate or add calculated column |
140
+
141
+ ### Phase 2C: Optimization Proposal
142
+
143
+ ```dax
144
+ -- BEFORE (slow)
145
+ SlowMeasure = <original>
146
+ -- Estimated complexity: <high/medium>
147
+
148
+ -- AFTER (optimized)
149
+ FastMeasure = <optimized>
150
+ -- Why faster: <explanation>
151
+
152
+ -- VERIFICATION: Compare results with
153
+ -- BEFORE and AFTER in the same visual to confirm identical values
154
+ ```
155
+
156
+ ---
157
+
158
+ ## PATH 3: Error Diagnosis
159
+
160
+ ### Phase 3A: Error Classification
161
+
162
+ ```
163
+ ERROR DIAGNOSIS
164
+ ===============
165
+
166
+ Common DAX errors and their causes:
167
+
168
+ 1. "A circular dependency was detected"
169
+ -> Calculated column references a measure that references the same table
170
+
171
+ 2. "The value is not of type Table"
172
+ -> Function expects table, got scalar (or vice versa)
173
+
174
+ 3. "A single value for column X cannot be determined"
175
+ -> Missing relationship or ambiguous filter
176
+
177
+ 4. "Division by zero"
178
+ -> Use DIVIDE() instead of /
179
+
180
+ 5. "Cannot find table/column X"
181
+ -> Typo or renamed column
182
+
183
+ Paste the exact error message and your DAX code.
184
+ ```
185
+
186
+ ### Phase 3B: Error Resolution
187
+
188
+ For each error, provide:
189
+ 1. **Root cause** explanation
190
+ 2. **Fix** with corrected DAX
191
+ 3. **Prevention** tip to avoid in future
192
+
193
+ ---
194
+
195
+ ## PATH 4: General Review
196
+
197
+ ### Phase 4A: DAX Review Criteria
198
+
199
+ Review the provided DAX against:
200
+
201
+ | Category | What to Check |
202
+ |----------|--------------|
203
+ | Correctness | Filter context, relationships, edge cases |
204
+ | Performance | Unnecessary iterators, FILTER on facts, missing VARs |
205
+ | Readability | Naming, formatting, comments |
206
+ | Maintainability | Hardcoded values, repeated logic |
207
+ | Best practices | DIVIDE, VAR/RETURN, predicate filters |
208
+
209
+ ### Phase 4B: Review Report
210
+
211
+ ```
212
+ DAX REVIEW REPORT
213
+ =================
214
+
215
+ Measure: <name>
216
+ Rating: 3/5
217
+
218
+ Strengths:
219
+ - <what's good>
220
+
221
+ Issues Found:
222
+ 1. [Performance] <issue> -> <fix>
223
+ 2. [Correctness] <issue> -> <fix>
224
+
225
+ Suggested Rewrite:
226
+ <improved DAX>
227
+ ```
228
+
229
+ ## Complexity Adaptation
230
+
231
+ Adjust depth based on `config.json → experienceLevel`:
232
+ - **beginner**: Step-by-step with explanations, reference library examples
233
+ - **intermediate**: Standard depth, explain non-obvious decisions
234
+ - **advanced**: Concise, skip basics, focus on edge cases and optimization
235
+
236
+ ## Related Skills
237
+
238
+ - `/query-performance` — Deep performance optimization
239
+ - `/testing-validation` — Validate DAX fixes with test cases
240
+ - `/dax` — DAX patterns and best practices reference
241
+
242
+ ---
243
+
244
+ ## Related Resources
245
+
246
+ - [DAX Skill](/dax) — Core DAX patterns and best practices
247
+ - [Query Performance Skill](/query-performance) — Broader performance optimization
248
+ - [Testing & Validation Skill](/testing-validation) — Validate fixes with test cases
249
+ - [Snippets: Error Handling](library/snippets/dax/error-handling.md)
250
+ - [Snippets: CALCULATE Patterns](library/snippets/dax/calculate-patterns.md)