@luquimbo/bi-superpowers 3.1.0 → 3.2.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 (110) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/.claude-plugin/skill-manifest.json +1 -1
  4. package/.plugin/plugin.json +1 -1
  5. package/README.md +2 -2
  6. package/bin/build-plugin.js +6 -6
  7. package/bin/cli.js +169 -310
  8. package/bin/commands/install.js +87 -70
  9. package/bin/commands/install.test.js +2 -2
  10. package/bin/lib/agents.js +21 -2
  11. package/bin/lib/mcp-config.js +27 -5
  12. package/bin/lib/mcp-config.test.js +1 -1
  13. package/desktop-extension/manifest.json +4 -11
  14. package/desktop-extension/server.js +34 -25
  15. package/package.json +3 -9
  16. package/skills/pbi-connect/SKILL.md +1 -1
  17. package/skills/project-kickoff/SKILL.md +1 -1
  18. package/bin/commands/add.js +0 -533
  19. package/bin/commands/add.test.js +0 -77
  20. package/bin/commands/changelog.js +0 -443
  21. package/bin/commands/pull.js +0 -287
  22. package/bin/commands/pull.test.js +0 -36
  23. package/bin/commands/push.js +0 -231
  24. package/bin/commands/push.test.js +0 -14
  25. package/bin/commands/search.js +0 -344
  26. package/bin/commands/search.test.js +0 -115
  27. package/bin/commands/setup.js +0 -545
  28. package/bin/commands/setup.test.js +0 -46
  29. package/bin/commands/sync-profile.js +0 -405
  30. package/bin/commands/sync-profile.test.js +0 -14
  31. package/bin/commands/sync-source.js +0 -418
  32. package/bin/commands/sync-source.test.js +0 -14
  33. package/bin/utils/errors.js +0 -159
  34. package/bin/utils/git.js +0 -298
  35. package/bin/utils/logger.js +0 -142
  36. package/bin/utils/pbix.js +0 -305
  37. package/bin/utils/pbix.test.js +0 -37
  38. package/bin/utils/profiles.js +0 -312
  39. package/bin/utils/projects.js +0 -169
  40. package/bin/utils/readline.js +0 -206
  41. package/bin/utils/readline.test.js +0 -47
  42. package/docs/openrouter-free-models.md +0 -92
  43. package/library/examples/README.md +0 -151
  44. package/library/examples/finance-reporting/README.md +0 -351
  45. package/library/examples/finance-reporting/data-model.md +0 -267
  46. package/library/examples/finance-reporting/measures.dax +0 -557
  47. package/library/examples/hr-analytics/README.md +0 -371
  48. package/library/examples/hr-analytics/data-model.md +0 -315
  49. package/library/examples/hr-analytics/measures.dax +0 -460
  50. package/library/examples/marketing-analytics/README.md +0 -37
  51. package/library/examples/marketing-analytics/data-model.md +0 -62
  52. package/library/examples/marketing-analytics/measures.dax +0 -110
  53. package/library/examples/retail-analytics/README.md +0 -439
  54. package/library/examples/retail-analytics/data-model.md +0 -288
  55. package/library/examples/retail-analytics/measures.dax +0 -481
  56. package/library/examples/supply-chain/README.md +0 -37
  57. package/library/examples/supply-chain/data-model.md +0 -69
  58. package/library/examples/supply-chain/measures.dax +0 -77
  59. package/library/examples/udf-library/README.md +0 -228
  60. package/library/examples/udf-library/functions.dax +0 -571
  61. package/library/snippets/dax/README.md +0 -292
  62. package/library/snippets/dax/business-domains.md +0 -576
  63. package/library/snippets/dax/calculate-patterns.md +0 -276
  64. package/library/snippets/dax/calculation-groups.md +0 -489
  65. package/library/snippets/dax/error-handling.md +0 -495
  66. package/library/snippets/dax/iterators-and-aggregations.md +0 -474
  67. package/library/snippets/dax/kpis-and-metrics.md +0 -293
  68. package/library/snippets/dax/rankings-and-topn.md +0 -235
  69. package/library/snippets/dax/security-patterns.md +0 -413
  70. package/library/snippets/dax/text-and-formatting.md +0 -316
  71. package/library/snippets/dax/time-intelligence.md +0 -196
  72. package/library/snippets/dax/user-defined-functions.md +0 -477
  73. package/library/snippets/dax/virtual-tables.md +0 -546
  74. package/library/snippets/excel-formulas/README.md +0 -84
  75. package/library/snippets/excel-formulas/aggregations.md +0 -330
  76. package/library/snippets/excel-formulas/dates-and-times.md +0 -361
  77. package/library/snippets/excel-formulas/dynamic-arrays.md +0 -314
  78. package/library/snippets/excel-formulas/lookups.md +0 -169
  79. package/library/snippets/excel-formulas/text-functions.md +0 -363
  80. package/library/snippets/governance/naming-conventions.md +0 -97
  81. package/library/snippets/governance/review-checklists.md +0 -107
  82. package/library/snippets/power-query/README.md +0 -389
  83. package/library/snippets/power-query/api-integration.md +0 -707
  84. package/library/snippets/power-query/connections.md +0 -434
  85. package/library/snippets/power-query/data-cleaning.md +0 -298
  86. package/library/snippets/power-query/error-handling.md +0 -526
  87. package/library/snippets/power-query/parameters.md +0 -350
  88. package/library/snippets/power-query/performance.md +0 -506
  89. package/library/snippets/power-query/transformations.md +0 -330
  90. package/library/snippets/report-design/accessibility.md +0 -78
  91. package/library/snippets/report-design/chart-selection.md +0 -54
  92. package/library/snippets/report-design/layout-patterns.md +0 -87
  93. package/library/templates/data-models/README.md +0 -93
  94. package/library/templates/data-models/finance-model.md +0 -627
  95. package/library/templates/data-models/retail-star-schema.md +0 -473
  96. package/library/templates/excel/README.md +0 -83
  97. package/library/templates/excel/budget-tracker.md +0 -432
  98. package/library/templates/excel/data-entry-form.md +0 -533
  99. package/library/templates/power-bi/README.md +0 -72
  100. package/library/templates/power-bi/finance-report.md +0 -449
  101. package/library/templates/power-bi/kpi-scorecard.md +0 -461
  102. package/library/templates/power-bi/sales-dashboard.md +0 -281
  103. package/library/themes/excel/README.md +0 -436
  104. package/library/themes/power-bi/README.md +0 -271
  105. package/library/themes/power-bi/accessible.json +0 -307
  106. package/library/themes/power-bi/bi-superpowers-default.json +0 -858
  107. package/library/themes/power-bi/corporate-blue.json +0 -291
  108. package/library/themes/power-bi/dark-mode.json +0 -291
  109. package/library/themes/power-bi/minimal.json +0 -292
  110. 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