@luquimbo/bi-superpowers 3.1.1 → 4.1.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 (186) hide show
  1. package/.claude-plugin/marketplace.json +5 -3
  2. package/.claude-plugin/plugin.json +28 -2
  3. package/.claude-plugin/skill-manifest.json +22 -6
  4. package/.plugin/plugin.json +1 -1
  5. package/AGENTS.md +52 -36
  6. package/CHANGELOG.md +295 -0
  7. package/README.md +75 -26
  8. package/bin/build-plugin.js +17 -10
  9. package/bin/cli.js +278 -322
  10. package/bin/commands/build-desktop.js +35 -16
  11. package/bin/commands/diff.js +31 -13
  12. package/bin/commands/install.js +93 -72
  13. package/bin/commands/lint.js +40 -26
  14. package/bin/commands/mcp-setup.js +3 -10
  15. package/bin/commands/update-check.js +389 -0
  16. package/bin/lib/agents.js +19 -0
  17. package/bin/lib/generators/claude-plugin.js +144 -6
  18. package/bin/lib/generators/shared.js +29 -33
  19. package/bin/lib/mcp-config.js +191 -16
  20. package/bin/lib/skills.js +115 -27
  21. package/bin/postinstall.js +4 -2
  22. package/bin/utils/mcp-detect.js +2 -2
  23. package/commands/bi-start.md +218 -0
  24. package/commands/pbi-connect.md +43 -65
  25. package/commands/project-kickoff.md +393 -673
  26. package/commands/report-design.md +403 -0
  27. package/desktop-extension/manifest.json +5 -12
  28. package/desktop-extension/server.js +34 -25
  29. package/package.json +6 -10
  30. package/skills/bi-start/SKILL.md +220 -0
  31. package/skills/bi-start/scripts/update-check.js +389 -0
  32. package/skills/pbi-connect/SKILL.md +45 -67
  33. package/skills/pbi-connect/scripts/update-check.js +389 -0
  34. package/skills/project-kickoff/SKILL.md +395 -675
  35. package/skills/project-kickoff/scripts/update-check.js +389 -0
  36. package/skills/report-design/SKILL.md +405 -0
  37. package/skills/report-design/references/cli-commands.md +184 -0
  38. package/skills/report-design/references/cli-setup.md +101 -0
  39. package/skills/report-design/references/close-write-open-pattern.md +80 -0
  40. package/skills/report-design/references/layouts/finance.md +65 -0
  41. package/skills/report-design/references/layouts/generic.md +46 -0
  42. package/skills/report-design/references/layouts/hr.md +48 -0
  43. package/skills/report-design/references/layouts/marketing.md +45 -0
  44. package/skills/report-design/references/layouts/operations.md +44 -0
  45. package/skills/report-design/references/layouts/sales.md +50 -0
  46. package/skills/report-design/references/native-visuals.md +341 -0
  47. package/skills/report-design/references/pbi-desktop-installation.md +87 -0
  48. package/skills/report-design/references/pbir-preview-activation.md +40 -0
  49. package/skills/report-design/references/slicer.md +89 -0
  50. package/skills/report-design/references/textbox.md +101 -0
  51. package/skills/report-design/references/themes/BISuperpowers.json +915 -0
  52. package/skills/report-design/references/troubleshooting.md +135 -0
  53. package/skills/report-design/references/visual-types.md +78 -0
  54. package/skills/report-design/scripts/apply-theme.js +243 -0
  55. package/skills/report-design/scripts/create-visual.js +878 -0
  56. package/skills/report-design/scripts/ensure-pbi-cli.sh +41 -0
  57. package/skills/report-design/scripts/update-check.js +389 -0
  58. package/skills/report-design/scripts/validate-pbir.js +322 -0
  59. package/src/content/base.md +12 -68
  60. package/src/content/mcp-requirements.json +0 -25
  61. package/src/content/routing.md +19 -74
  62. package/src/content/skills/bi-start.md +191 -0
  63. package/src/content/skills/pbi-connect.md +22 -65
  64. package/src/content/skills/project-kickoff.md +372 -673
  65. package/src/content/skills/report-design/SKILL.md +376 -0
  66. package/src/content/skills/report-design/references/cli-commands.md +184 -0
  67. package/src/content/skills/report-design/references/cli-setup.md +101 -0
  68. package/src/content/skills/report-design/references/close-write-open-pattern.md +80 -0
  69. package/src/content/skills/report-design/references/layouts/finance.md +65 -0
  70. package/src/content/skills/report-design/references/layouts/generic.md +46 -0
  71. package/src/content/skills/report-design/references/layouts/hr.md +48 -0
  72. package/src/content/skills/report-design/references/layouts/marketing.md +45 -0
  73. package/src/content/skills/report-design/references/layouts/operations.md +44 -0
  74. package/src/content/skills/report-design/references/layouts/sales.md +50 -0
  75. package/src/content/skills/report-design/references/native-visuals.md +341 -0
  76. package/src/content/skills/report-design/references/pbi-desktop-installation.md +87 -0
  77. package/src/content/skills/report-design/references/pbir-preview-activation.md +40 -0
  78. package/src/content/skills/report-design/references/slicer.md +89 -0
  79. package/src/content/skills/report-design/references/textbox.md +101 -0
  80. package/src/content/skills/report-design/references/themes/BISuperpowers.json +915 -0
  81. package/src/content/skills/report-design/references/troubleshooting.md +135 -0
  82. package/src/content/skills/report-design/references/visual-types.md +78 -0
  83. package/src/content/skills/report-design/scripts/apply-theme.js +243 -0
  84. package/src/content/skills/report-design/scripts/create-visual.js +878 -0
  85. package/src/content/skills/report-design/scripts/ensure-pbi-cli.sh +41 -0
  86. package/src/content/skills/report-design/scripts/validate-pbir.js +322 -0
  87. package/bin/commands/add.js +0 -533
  88. package/bin/commands/add.test.js +0 -77
  89. package/bin/commands/changelog.js +0 -443
  90. package/bin/commands/install.test.js +0 -289
  91. package/bin/commands/lint.test.js +0 -103
  92. package/bin/commands/pull.js +0 -287
  93. package/bin/commands/pull.test.js +0 -36
  94. package/bin/commands/push.js +0 -231
  95. package/bin/commands/push.test.js +0 -14
  96. package/bin/commands/search.js +0 -344
  97. package/bin/commands/search.test.js +0 -115
  98. package/bin/commands/setup.js +0 -545
  99. package/bin/commands/setup.test.js +0 -46
  100. package/bin/commands/sync-profile.js +0 -405
  101. package/bin/commands/sync-profile.test.js +0 -14
  102. package/bin/commands/sync-source.js +0 -418
  103. package/bin/commands/sync-source.test.js +0 -14
  104. package/bin/lib/generators/claude-plugin.test.js +0 -111
  105. package/bin/lib/mcp-config.test.js +0 -310
  106. package/bin/lib/microsoft-mcp.test.js +0 -115
  107. package/bin/utils/errors.js +0 -159
  108. package/bin/utils/git.js +0 -298
  109. package/bin/utils/logger.js +0 -142
  110. package/bin/utils/mcp-detect.test.js +0 -81
  111. package/bin/utils/pbix.js +0 -305
  112. package/bin/utils/pbix.test.js +0 -37
  113. package/bin/utils/profiles.js +0 -312
  114. package/bin/utils/projects.js +0 -169
  115. package/bin/utils/readline.js +0 -206
  116. package/bin/utils/readline.test.js +0 -47
  117. package/bin/utils/tui.test.js +0 -127
  118. package/docs/openrouter-free-models.md +0 -92
  119. package/library/examples/README.md +0 -151
  120. package/library/examples/finance-reporting/README.md +0 -351
  121. package/library/examples/finance-reporting/data-model.md +0 -267
  122. package/library/examples/finance-reporting/measures.dax +0 -557
  123. package/library/examples/hr-analytics/README.md +0 -371
  124. package/library/examples/hr-analytics/data-model.md +0 -315
  125. package/library/examples/hr-analytics/measures.dax +0 -460
  126. package/library/examples/marketing-analytics/README.md +0 -37
  127. package/library/examples/marketing-analytics/data-model.md +0 -62
  128. package/library/examples/marketing-analytics/measures.dax +0 -110
  129. package/library/examples/retail-analytics/README.md +0 -439
  130. package/library/examples/retail-analytics/data-model.md +0 -288
  131. package/library/examples/retail-analytics/measures.dax +0 -481
  132. package/library/examples/supply-chain/README.md +0 -37
  133. package/library/examples/supply-chain/data-model.md +0 -69
  134. package/library/examples/supply-chain/measures.dax +0 -77
  135. package/library/examples/udf-library/README.md +0 -228
  136. package/library/examples/udf-library/functions.dax +0 -571
  137. package/library/snippets/dax/README.md +0 -292
  138. package/library/snippets/dax/business-domains.md +0 -576
  139. package/library/snippets/dax/calculate-patterns.md +0 -276
  140. package/library/snippets/dax/calculation-groups.md +0 -489
  141. package/library/snippets/dax/error-handling.md +0 -495
  142. package/library/snippets/dax/iterators-and-aggregations.md +0 -474
  143. package/library/snippets/dax/kpis-and-metrics.md +0 -293
  144. package/library/snippets/dax/rankings-and-topn.md +0 -235
  145. package/library/snippets/dax/security-patterns.md +0 -413
  146. package/library/snippets/dax/text-and-formatting.md +0 -316
  147. package/library/snippets/dax/time-intelligence.md +0 -196
  148. package/library/snippets/dax/user-defined-functions.md +0 -477
  149. package/library/snippets/dax/virtual-tables.md +0 -546
  150. package/library/snippets/excel-formulas/README.md +0 -84
  151. package/library/snippets/excel-formulas/aggregations.md +0 -330
  152. package/library/snippets/excel-formulas/dates-and-times.md +0 -361
  153. package/library/snippets/excel-formulas/dynamic-arrays.md +0 -314
  154. package/library/snippets/excel-formulas/lookups.md +0 -169
  155. package/library/snippets/excel-formulas/text-functions.md +0 -363
  156. package/library/snippets/governance/naming-conventions.md +0 -97
  157. package/library/snippets/governance/review-checklists.md +0 -107
  158. package/library/snippets/power-query/README.md +0 -389
  159. package/library/snippets/power-query/api-integration.md +0 -707
  160. package/library/snippets/power-query/connections.md +0 -434
  161. package/library/snippets/power-query/data-cleaning.md +0 -298
  162. package/library/snippets/power-query/error-handling.md +0 -526
  163. package/library/snippets/power-query/parameters.md +0 -350
  164. package/library/snippets/power-query/performance.md +0 -506
  165. package/library/snippets/power-query/transformations.md +0 -330
  166. package/library/snippets/report-design/accessibility.md +0 -78
  167. package/library/snippets/report-design/chart-selection.md +0 -54
  168. package/library/snippets/report-design/layout-patterns.md +0 -87
  169. package/library/templates/data-models/README.md +0 -93
  170. package/library/templates/data-models/finance-model.md +0 -627
  171. package/library/templates/data-models/retail-star-schema.md +0 -473
  172. package/library/templates/excel/README.md +0 -83
  173. package/library/templates/excel/budget-tracker.md +0 -432
  174. package/library/templates/excel/data-entry-form.md +0 -533
  175. package/library/templates/power-bi/README.md +0 -72
  176. package/library/templates/power-bi/finance-report.md +0 -449
  177. package/library/templates/power-bi/kpi-scorecard.md +0 -461
  178. package/library/templates/power-bi/sales-dashboard.md +0 -281
  179. package/library/themes/excel/README.md +0 -436
  180. package/library/themes/power-bi/README.md +0 -271
  181. package/library/themes/power-bi/accessible.json +0 -307
  182. package/library/themes/power-bi/bi-superpowers-default.json +0 -858
  183. package/library/themes/power-bi/corporate-blue.json +0 -291
  184. package/library/themes/power-bi/dark-mode.json +0 -291
  185. package/library/themes/power-bi/minimal.json +0 -292
  186. package/library/themes/power-bi/print-friendly.json +0 -309
@@ -1,276 +0,0 @@
1
- # CALCULATE Patterns in DAX
2
-
3
- Essential CALCULATE patterns for filtering and context modification.
4
-
5
- ## Basic Filter Patterns
6
-
7
- ### Simple Filter
8
- ```dax
9
- Sales_HighValue =
10
- CALCULATE(
11
- SUM(Sales[Amount]),
12
- Sales[Amount] > 1000
13
- )
14
- ```
15
-
16
- ### Multiple Filters (AND logic)
17
- ```dax
18
- Sales_HighValue_2024 =
19
- CALCULATE(
20
- SUM(Sales[Amount]),
21
- Sales[Amount] > 1000,
22
- 'Date'[Year] = 2024
23
- )
24
- ```
25
-
26
- ### Filter on Related Table
27
- ```dax
28
- Sales_Electronics =
29
- CALCULATE(
30
- SUM(Sales[Amount]),
31
- Products[Category] = "Electronics"
32
- )
33
- ```
34
-
35
- ## ALL Function Patterns
36
-
37
- ### Remove All Filters
38
- ```dax
39
- TotalSales_All =
40
- CALCULATE(
41
- SUM(Sales[Amount]),
42
- ALL(Sales)
43
- )
44
- ```
45
-
46
- ### Remove Filter from One Column
47
- ```dax
48
- Sales_AllProducts =
49
- CALCULATE(
50
- SUM(Sales[Amount]),
51
- ALL(Products[ProductName])
52
- )
53
- ```
54
-
55
- ### Remove Filter but Keep Others (ALLEXCEPT)
56
- ```dax
57
- Sales_KeepCategory =
58
- CALCULATE(
59
- SUM(Sales[Amount]),
60
- ALLEXCEPT(Products, Products[Category])
61
- )
62
- ```
63
-
64
- ### Percentage of Total
65
- ```dax
66
- Pct_of_Total =
67
- DIVIDE(
68
- SUM(Sales[Amount]),
69
- CALCULATE(
70
- SUM(Sales[Amount]),
71
- ALL(Sales)
72
- )
73
- )
74
- ```
75
-
76
- ### Percentage of Category
77
- ```dax
78
- Pct_of_Category =
79
- DIVIDE(
80
- SUM(Sales[Amount]),
81
- CALCULATE(
82
- SUM(Sales[Amount]),
83
- ALLEXCEPT(Products, Products[Category])
84
- )
85
- )
86
- ```
87
-
88
- ## FILTER Function Patterns
89
-
90
- ### Complex Filter Logic
91
- ```dax
92
- Sales_TopCategories =
93
- CALCULATE(
94
- SUM(Sales[Amount]),
95
- FILTER(
96
- ALL(Products[Category]),
97
- [CategorySales] > 100000
98
- )
99
- )
100
- ```
101
-
102
- ### Filter with OR Logic
103
- ```dax
104
- Sales_SelectedRegions =
105
- CALCULATE(
106
- SUM(Sales[Amount]),
107
- FILTER(
108
- ALL(Geography[Region]),
109
- Geography[Region] IN {"North", "South", "West"}
110
- )
111
- )
112
- ```
113
-
114
- ### Filter on Measure Result
115
- ```dax
116
- Sales_ProfitableProducts =
117
- CALCULATE(
118
- SUM(Sales[Amount]),
119
- FILTER(
120
- ALL(Products[ProductName]),
121
- [ProfitMargin] > 0.20
122
- )
123
- )
124
- ```
125
-
126
- ## KEEPFILTERS Pattern
127
-
128
- ### Add Filter Without Replacing
129
- ```dax
130
- Sales_Premium_KeepFilters =
131
- CALCULATE(
132
- SUM(Sales[Amount]),
133
- KEEPFILTERS(Products[Tier] = "Premium")
134
- )
135
- ```
136
-
137
- ### Intersection of Filters
138
- ```dax
139
- Sales_Filtered_Intersection =
140
- CALCULATE(
141
- SUM(Sales[Amount]),
142
- KEEPFILTERS(
143
- FILTER(
144
- ALL(Products[Category]),
145
- Products[Category] IN {"Electronics", "Clothing"}
146
- )
147
- )
148
- )
149
- ```
150
-
151
- ## REMOVEFILTERS Pattern (DAX 2019+)
152
-
153
- ### Clear Specific Filters
154
- ```dax
155
- Sales_NoProductFilter =
156
- CALCULATE(
157
- SUM(Sales[Amount]),
158
- REMOVEFILTERS(Products)
159
- )
160
- ```
161
-
162
- ### Clear Column Filter
163
- ```dax
164
- Sales_NoYearFilter =
165
- CALCULATE(
166
- SUM(Sales[Amount]),
167
- REMOVEFILTERS('Date'[Year])
168
- )
169
- ```
170
-
171
- ## USERELATIONSHIP Pattern
172
-
173
- ### Activate Inactive Relationship
174
- ```dax
175
- Sales_ByShipDate =
176
- CALCULATE(
177
- SUM(Sales[Amount]),
178
- USERELATIONSHIP(Sales[ShipDate], 'Date'[Date])
179
- )
180
- ```
181
-
182
- ### Compare Order vs Ship Date
183
- ```dax
184
- Sales_Variance_OrderVsShip =
185
- VAR _ByOrderDate = SUM(Sales[Amount])
186
- VAR _ByShipDate =
187
- CALCULATE(
188
- SUM(Sales[Amount]),
189
- USERELATIONSHIP(Sales[ShipDate], 'Date'[Date])
190
- )
191
- RETURN
192
- _ByOrderDate - _ByShipDate
193
- ```
194
-
195
- ## CROSSFILTER Pattern
196
-
197
- ### Change Filter Direction
198
- ```dax
199
- ProductCount_BySales =
200
- CALCULATE(
201
- DISTINCTCOUNT(Products[ProductID]),
202
- CROSSFILTER(Sales[ProductID], Products[ProductID], BOTH)
203
- )
204
- ```
205
-
206
- ### Disable Relationship
207
- ```dax
208
- Sales_IgnoreProductRelation =
209
- CALCULATE(
210
- SUM(Sales[Amount]),
211
- CROSSFILTER(Sales[ProductID], Products[ProductID], NONE)
212
- )
213
- ```
214
-
215
- ## Context Transition
216
-
217
- ### Row Context to Filter Context
218
- ```dax
219
- -- In a calculated column or iterator
220
- SalesForThisProduct =
221
- CALCULATE(SUM(Sales[Amount]))
222
- -- Converts current row context to filter context
223
- ```
224
-
225
- ### EARLIER for Nested Row Context
226
- ```dax
227
- -- In a calculated column
228
- RunningTotal =
229
- CALCULATE(
230
- SUM(Sales[Amount]),
231
- FILTER(
232
- ALL(Sales),
233
- Sales[Date] <= EARLIER(Sales[Date])
234
- )
235
- )
236
- ```
237
-
238
- ## Virtual Tables
239
-
240
- ### CALCULATE with SUMMARIZE
241
- ```dax
242
- Sales_TopMonths =
243
- CALCULATE(
244
- SUM(Sales[Amount]),
245
- TOPN(
246
- 3,
247
- SUMMARIZE(
248
- Sales,
249
- 'Date'[MonthYear],
250
- "@MonthlySales", SUM(Sales[Amount])
251
- ),
252
- [@MonthlySales],
253
- DESC
254
- )
255
- )
256
- ```
257
-
258
- ### CALCULATE with TREATAS
259
- ```dax
260
- Sales_MatchingProducts =
261
- CALCULATE(
262
- SUM(Sales[Amount]),
263
- TREATAS(
264
- VALUES(BudgetProducts[ProductID]),
265
- Products[ProductID]
266
- )
267
- )
268
- ```
269
-
270
- ## Usage Notes
271
-
272
- - CALCULATE is the most important DAX function
273
- - Always prefer simple column filters over FILTER when possible (better performance)
274
- - Use FILTER for complex conditions or when filtering on measures
275
- - ALL removes filters; REMOVEFILTERS is more explicit (same result)
276
- - KEEPFILTERS intersects filters instead of replacing them