@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,288 +0,0 @@
1
- # Retail Analytics - Data Model
2
-
3
- Complete table definitions for the retail analytics star schema.
4
-
5
- ---
6
-
7
- ## Fact Table
8
-
9
- ### FactSales
10
-
11
- | Column | Data Type | Description |
12
- |--------|-----------|-------------|
13
- | SalesKey | Text | Surrogate primary key |
14
- | DateKey | Text | FK to DimDate (YYYYMMDD format) |
15
- | ProductKey | Integer | FK to DimProduct |
16
- | CustomerKey | Integer | FK to DimCustomer |
17
- | StoreKey | Integer | FK to DimStore |
18
- | Quantity | Integer | Units sold |
19
- | UnitPrice | Currency | Sale price per unit |
20
- | Discount | Currency | Discount amount applied |
21
- | Amount | Currency | Net sale amount (Qty × Price - Discount) |
22
- | Cost | Currency | Total cost (Qty × UnitCost) |
23
-
24
- **Relationships:**
25
- - FactSales[DateKey] → DimDate[DateKey] (Many:1)
26
- - FactSales[ProductKey] → DimProduct[ProductKey] (Many:1)
27
- - FactSales[CustomerKey] → DimCustomer[CustomerKey] (Many:1)
28
- - FactSales[StoreKey] → DimStore[StoreKey] (Many:1)
29
-
30
- ---
31
-
32
- ## Dimension Tables
33
-
34
- ### DimDate
35
-
36
- | Column | Data Type | Description | Example |
37
- |--------|-----------|-------------|---------|
38
- | DateKey | Text | Primary key (YYYYMMDD) | "20240115" |
39
- | Date | Date | Full date | 2024-01-15 |
40
- | Year | Integer | Calendar year | 2024 |
41
- | Quarter | Text | Quarter label | "Q1" |
42
- | QuarterNumber | Integer | Quarter number | 1 |
43
- | Month | Integer | Month number | 1 |
44
- | MonthName | Text | Full month name | "January" |
45
- | MonthShort | Text | 3-letter month | "Jan" |
46
- | YearMonth | Text | Year-Month label | "2024-01" |
47
- | Week | Integer | Week of year | 3 |
48
- | WeekOfMonth | Integer | Week of month | 3 |
49
- | Day | Integer | Day of month | 15 |
50
- | DayOfWeek | Integer | Day of week (1=Mon) | 1 |
51
- | DayOfWeekName | Text | Day name | "Monday" |
52
- | IsWeekend | Boolean | Weekend flag | FALSE |
53
- | IsHoliday | Boolean | Holiday flag | FALSE |
54
- | FiscalYear | Integer | Fiscal year | 2024 |
55
- | FiscalQuarter | Text | Fiscal quarter | "FQ1" |
56
- | FiscalMonth | Integer | Fiscal month | 7 |
57
-
58
- **Settings:**
59
- - Mark as Date Table using Date column
60
- - Sort MonthName by Month
61
- - Sort DayOfWeekName by DayOfWeek
62
-
63
- ---
64
-
65
- ### DimProduct
66
-
67
- | Column | Data Type | Description | Example |
68
- |--------|-----------|-------------|---------|
69
- | ProductKey | Integer | Surrogate PK | 1001 |
70
- | ProductID | Text | Business key | "SKU-12345" |
71
- | ProductName | Text | Product name | "Wireless Mouse" |
72
- | Category | Text | Top-level category | "Electronics" |
73
- | SubCategory | Text | Sub-category | "Accessories" |
74
- | Brand | Text | Brand name | "TechBrand" |
75
- | UnitCost | Currency | Cost to company | 12.50 |
76
- | UnitPrice | Currency | List price | 24.99 |
77
- | Margin | Decimal | Calculated margin | 0.50 |
78
- | IsActive | Boolean | Currently sold | TRUE |
79
- | LaunchDate | Date | Product launch | 2023-06-01 |
80
-
81
- **Hierarchies:**
82
- - Category > SubCategory > ProductName
83
- - Brand > ProductName
84
-
85
- ---
86
-
87
- ### DimCustomer
88
-
89
- | Column | Data Type | Description | Example |
90
- |--------|-----------|-------------|---------|
91
- | CustomerKey | Integer | Surrogate PK | 5001 |
92
- | CustomerID | Text | Business key | "CUST-12345" |
93
- | CustomerName | Text | Full name | "John Smith" |
94
- | Email | Text | Email address | "john@example.com" |
95
- | Phone | Text | Phone number | "555-0100" |
96
- | Address | Text | Street address | "123 Main St" |
97
- | City | Text | City | "Seattle" |
98
- | State | Text | State code | "WA" |
99
- | PostalCode | Text | ZIP code | "98101" |
100
- | Region | Text | Sales region | "West" |
101
- | Country | Text | Country | "USA" |
102
- | JoinDate | Date | Customer since | 2022-03-15 |
103
- | Tier | Text | Customer tier | "Gold" |
104
- | IsActive | Boolean | Active customer | TRUE |
105
-
106
- **Hierarchies:**
107
- - Region > State > City
108
- - Tier > CustomerName
109
-
110
- ---
111
-
112
- ### DimStore
113
-
114
- | Column | Data Type | Description | Example |
115
- |--------|-----------|-------------|---------|
116
- | StoreKey | Integer | Surrogate PK | 101 |
117
- | StoreID | Text | Business key | "STORE-001" |
118
- | StoreName | Text | Store name | "Downtown Seattle" |
119
- | StoreType | Text | Store type | "Flagship" |
120
- | Address | Text | Street address | "100 Pike St" |
121
- | City | Text | City | "Seattle" |
122
- | State | Text | State code | "WA" |
123
- | PostalCode | Text | ZIP code | "98101" |
124
- | Region | Text | Sales region | "West" |
125
- | Country | Text | Country | "USA" |
126
- | Latitude | Decimal | Latitude | 47.6062 |
127
- | Longitude | Decimal | Longitude | -122.3321 |
128
- | OpenDate | Date | Store opened | 2020-01-15 |
129
- | SquareFeet | Integer | Floor space | 25000 |
130
- | EmployeeCount | Integer | Staff count | 45 |
131
- | Manager | Text | Manager name | "Jane Doe" |
132
- | IsActive | Boolean | Currently open | TRUE |
133
-
134
- **Hierarchies:**
135
- - Region > State > City > StoreName
136
- - StoreType > StoreName
137
-
138
- ---
139
-
140
- ## Calculated Columns
141
-
142
- ### DimDate - Date Table Generation
143
-
144
- ```m
145
- // Power Query for DimDate
146
- let
147
- StartDate = #date(2020, 1, 1),
148
- EndDate = #date(2026, 12, 31),
149
- DateList = List.Dates(StartDate, Duration.Days(EndDate - StartDate) + 1, #duration(1, 0, 0, 0)),
150
- DateTable = Table.FromList(DateList, Splitter.SplitByNothing(), {"Date"}),
151
-
152
- // Add columns
153
- WithColumns = Table.AddColumn(
154
- Table.AddColumn(
155
- Table.AddColumn(
156
- Table.AddColumn(
157
- Table.AddColumn(
158
- Table.AddColumn(
159
- Table.TransformColumnTypes(DateTable, {{"Date", type date}}),
160
- "DateKey", each Date.ToText([Date], "yyyyMMdd"), type text
161
- ),
162
- "Year", each Date.Year([Date]), Int64.Type
163
- ),
164
- "Month", each Date.Month([Date]), Int64.Type
165
- ),
166
- "MonthName", each Date.MonthName([Date]), type text
167
- ),
168
- "Quarter", each "Q" & Text.From(Date.QuarterOfYear([Date])), type text
169
- ),
170
- "DayOfWeek", each Date.DayOfWeek([Date], Day.Monday) + 1, Int64.Type
171
- ),
172
-
173
- // Add more columns
174
- WithMoreColumns = Table.AddColumn(
175
- Table.AddColumn(
176
- Table.AddColumn(WithColumns,
177
- "IsWeekend", each Date.DayOfWeek([Date], Day.Monday) >= 5, type logical
178
- ),
179
- "YearMonth", each Date.ToText([Date], "yyyy-MM"), type text
180
- ),
181
- "Week", each Date.WeekOfYear([Date]), Int64.Type
182
- )
183
- in
184
- WithMoreColumns
185
- ```
186
-
187
- ### DimProduct - Margin Calculation
188
-
189
- ```dax
190
- // DAX Calculated Column
191
- Margin =
192
- DIVIDE(
193
- DimProduct[UnitPrice] - DimProduct[UnitCost],
194
- DimProduct[UnitPrice]
195
- )
196
- ```
197
-
198
- ---
199
-
200
- ## Relationship Diagram
201
-
202
- ```
203
- DimDate[DateKey] ─────────────────────────────┐
204
-
205
- DimProduct[ProductKey] ────────────────────┐ │
206
- │ │
207
- DimCustomer[CustomerKey] ────────────────┐ │ │
208
- │ │ │
209
- DimStore[StoreKey] ────────────────────┐ │ │ │
210
- │ │ │ │
211
- ▼ ▼ ▼ ▼
212
- ┌───────────┐
213
- │ FactSales │
214
- └───────────┘
215
-
216
- All relationships: Many-to-One, Single direction (Dimension → Fact)
217
- Cross-filter direction: Single (except DimDate which may be Both for some scenarios)
218
- ```
219
-
220
- ---
221
-
222
- ## Model Settings
223
-
224
- ### Table Properties
225
-
226
- | Table | Load to Report | Include in Refresh |
227
- |-------|----------------|-------------------|
228
- | FactSales | Yes | Yes |
229
- | DimDate | Yes | Yes (or No if static) |
230
- | DimProduct | Yes | Yes |
231
- | DimCustomer | Yes | Yes |
232
- | DimStore | Yes | Yes |
233
-
234
- ### Hidden Columns
235
-
236
- Hide these columns from report view (they're for relationships only):
237
-
238
- - FactSales[DateKey]
239
- - FactSales[ProductKey]
240
- - FactSales[CustomerKey]
241
- - FactSales[StoreKey]
242
- - All surrogate key columns (except for debugging)
243
-
244
- ### Data Categories
245
-
246
- | Column | Data Category |
247
- |--------|---------------|
248
- | DimCustomer[City] | City |
249
- | DimCustomer[State] | State or Province |
250
- | DimCustomer[PostalCode] | Postal Code |
251
- | DimCustomer[Country] | Country |
252
- | DimStore[City] | City |
253
- | DimStore[State] | State or Province |
254
- | DimStore[Latitude] | Latitude |
255
- | DimStore[Longitude] | Longitude |
256
- | DimProduct[ProductName] | Uncategorized |
257
-
258
- ---
259
-
260
- ## Sample Data
261
-
262
- ### FactSales (5 rows)
263
-
264
- | SalesKey | DateKey | ProductKey | CustomerKey | StoreKey | Quantity | UnitPrice | Discount | Amount |
265
- |----------|---------|------------|-------------|----------|----------|-----------|----------|--------|
266
- | S001 | 20240115 | 1001 | 5001 | 101 | 2 | 24.99 | 0.00 | 49.98 |
267
- | S002 | 20240115 | 1002 | 5002 | 101 | 1 | 149.99 | 15.00 | 134.99 |
268
- | S003 | 20240116 | 1001 | 5003 | 102 | 3 | 24.99 | 5.00 | 69.97 |
269
- | S004 | 20240116 | 1003 | 5001 | 101 | 1 | 599.99 | 0.00 | 599.99 |
270
- | S005 | 20240117 | 1002 | 5004 | 103 | 2 | 149.99 | 20.00 | 279.98 |
271
-
272
- ### DimProduct (3 rows)
273
-
274
- | ProductKey | ProductID | ProductName | Category | SubCategory | Brand | UnitCost | UnitPrice |
275
- |------------|-----------|-------------|----------|-------------|-------|----------|-----------|
276
- | 1001 | SKU-001 | Wireless Mouse | Electronics | Accessories | TechBrand | 12.50 | 24.99 |
277
- | 1002 | SKU-002 | Bluetooth Headphones | Electronics | Audio | SoundMax | 45.00 | 149.99 |
278
- | 1003 | SKU-003 | Gaming Monitor | Electronics | Displays | ViewPro | 280.00 | 599.99 |
279
-
280
- ---
281
-
282
- ## Performance Tips
283
-
284
- 1. **Use surrogate keys** - Integer keys are faster for joins
285
- 2. **Avoid high-cardinality columns** in slicers
286
- 3. **Use aggregations** for large fact tables (1M+ rows)
287
- 4. **Partition** by date for incremental refresh
288
- 5. **Set data types** correctly - don't use text for numbers