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