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