@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,267 @@
1
+ # Finance Reporting - Data Model
2
+
3
+ Complete table definitions for the financial reporting star schema.
4
+
5
+ ---
6
+
7
+ ## Fact Table
8
+
9
+ ### FactFinancials
10
+
11
+ | Column | Data Type | Description |
12
+ |--------|-----------|-------------|
13
+ | FinancialKey | Integer | Surrogate primary key |
14
+ | DateKey | Text | FK to DimDate (YYYYMMDD) |
15
+ | AccountKey | Integer | FK to DimAccount |
16
+ | CostCenterKey | Integer | FK to DimCostCenter |
17
+ | ScenarioKey | Integer | FK to DimScenario |
18
+ | Amount | Currency | Transaction amount (natural sign) |
19
+
20
+ **Grain:** One row per Account, Cost Center, Scenario, Period combination.
21
+
22
+ **Note:** Amount is stored in natural sign (positive for debits, negative for credits as recorded). Use DimAccount[NaturalSign] to flip for reporting.
23
+
24
+ **Relationships:**
25
+ - FactFinancials[DateKey] → DimDate[DateKey] (Many:1)
26
+ - FactFinancials[AccountKey] → DimAccount[AccountKey] (Many:1)
27
+ - FactFinancials[CostCenterKey] → DimCostCenter[CostCenterKey] (Many:1)
28
+ - FactFinancials[ScenarioKey] → DimScenario[ScenarioKey] (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) | "20240131" |
39
+ | Date | Date | Full date | 2024-01-31 |
40
+ | Year | Integer | Calendar year | 2024 |
41
+ | Month | Integer | Calendar month | 1 |
42
+ | MonthName | Text | Month name | "January" |
43
+ | Quarter | Text | Calendar quarter | "Q1" |
44
+ | FiscalYear | Integer | Fiscal year | 2024 |
45
+ | FiscalPeriod | Integer | Fiscal period (1-12) | 7 |
46
+ | FiscalPeriodName | Text | Fiscal period label | "FY24-P07" |
47
+ | FiscalQuarter | Text | Fiscal quarter | "FY24-Q3" |
48
+ | FiscalYearStart | Date | First day of fiscal year | 2023-07-01 |
49
+ | FiscalYearEnd | Date | Last day of fiscal year | 2024-06-30 |
50
+ | IsCurrentPeriod | Boolean | Current reporting period | TRUE |
51
+ | IsYTD | Boolean | Within current YTD | TRUE |
52
+ | DaysInMonth | Integer | Days in month | 31 |
53
+ | IsMonthEnd | Boolean | Last day of month | TRUE |
54
+
55
+ **Notes:**
56
+ - Assumes July fiscal year start (adjust for your organization)
57
+ - Mark as Date Table in Power BI
58
+ - Sort MonthName by Month
59
+
60
+ ---
61
+
62
+ ### DimAccount
63
+
64
+ | Column | Data Type | Description | Example |
65
+ |--------|-----------|-------------|---------|
66
+ | AccountKey | Integer | Surrogate PK | 1001 |
67
+ | AccountCode | Text | GL account code | "4010" |
68
+ | AccountName | Text | Account name | "Product Revenue" |
69
+ | AccountType | Text | Account classification | "Revenue" |
70
+ | AccountGroup | Text | Grouping level | "Net Revenue" |
71
+ | AccountSubGroup | Text | Sub-grouping | "Product Sales" |
72
+ | FinancialStmt | Text | Statement type | "Income Statement" |
73
+ | NaturalSign | Integer | Sign multiplier | 1 or -1 |
74
+ | SortOrder | Integer | Display order | 100 |
75
+ | Level | Integer | Hierarchy level | 3 |
76
+ | IsDetail | Boolean | Lowest level | TRUE |
77
+ | ParentAccountKey | Integer | Parent for hierarchy | 1000 |
78
+
79
+ **Account Types:**
80
+
81
+ | AccountType | FinancialStmt | NaturalSign | SortOrder Range |
82
+ |-------------|---------------|-------------|-----------------|
83
+ | Revenue | Income Statement | -1 | 100-199 |
84
+ | COGS | Income Statement | 1 | 200-299 |
85
+ | OpEx | Income Statement | 1 | 300-499 |
86
+ | OtherIncome | Income Statement | -1 | 500-549 |
87
+ | OtherExpense | Income Statement | 1 | 550-599 |
88
+ | Tax | Income Statement | 1 | 600-699 |
89
+ | Asset | Balance Sheet | 1 | 700-799 |
90
+ | Liability | Balance Sheet | -1 | 800-849 |
91
+ | Equity | Balance Sheet | -1 | 850-899 |
92
+
93
+ **NaturalSign Logic:**
94
+ - Revenue/Income: Stored as negative (credit), display as positive → NaturalSign = -1
95
+ - Expenses: Stored as positive (debit), display as positive → NaturalSign = 1
96
+ - Assets: Stored as positive (debit), display as positive → NaturalSign = 1
97
+ - Liabilities/Equity: Stored as negative (credit), display as positive → NaturalSign = -1
98
+
99
+ **Hierarchies:**
100
+ - AccountType > AccountGroup > AccountSubGroup > AccountName
101
+
102
+ ---
103
+
104
+ ### DimCostCenter
105
+
106
+ | Column | Data Type | Description | Example |
107
+ |--------|-----------|-------------|---------|
108
+ | CostCenterKey | Integer | Surrogate PK | 501 |
109
+ | CostCenterCode | Text | Business key | "CC-MKTG-001" |
110
+ | CostCenterName | Text | Name | "Marketing - Digital" |
111
+ | Department | Text | Department | "Marketing" |
112
+ | Division | Text | Division | "Commercial" |
113
+ | Region | Text | Geographic region | "North America" |
114
+ | Manager | Text | Responsible manager | "Jane Smith" |
115
+ | IsActive | Boolean | Currently active | TRUE |
116
+
117
+ **Hierarchies:**
118
+ - Division > Department > CostCenterName
119
+ - Region > CostCenterName
120
+
121
+ ---
122
+
123
+ ### DimScenario
124
+
125
+ | Column | Data Type | Description | Example |
126
+ |--------|-----------|-------------|---------|
127
+ | ScenarioKey | Integer | Surrogate PK | 1 |
128
+ | ScenarioName | Text | Scenario name | "Actual" |
129
+ | ScenarioType | Text | Type classification | "Actual" |
130
+ | ScenarioYear | Integer | Applicable year | 2024 |
131
+ | Version | Text | Version identifier | "v1.0" |
132
+ | IsActual | Boolean | Actual data flag | TRUE |
133
+ | IsBudget | Boolean | Budget data flag | FALSE |
134
+ | IsForecast | Boolean | Forecast data flag | FALSE |
135
+ | IsActive | Boolean | Currently active | TRUE |
136
+ | EffectiveDate | Date | When scenario applies | 2024-01-01 |
137
+ | Description | Text | Scenario notes | "FY24 Actual Results" |
138
+
139
+ **Standard Scenarios:**
140
+
141
+ | ScenarioName | ScenarioType | IsActual | IsBudget | IsForecast |
142
+ |--------------|--------------|----------|----------|------------|
143
+ | Actual | Actual | TRUE | FALSE | FALSE |
144
+ | Budget | Budget | FALSE | TRUE | FALSE |
145
+ | Forecast Q1 | Forecast | FALSE | FALSE | TRUE |
146
+ | Forecast Q2 | Forecast | FALSE | FALSE | TRUE |
147
+ | Prior Year Actual | Actual | TRUE | FALSE | FALSE |
148
+ | Stretch Target | Budget | FALSE | TRUE | FALSE |
149
+
150
+ ---
151
+
152
+ ## Sample Data
153
+
154
+ ### DimAccount (Selected Rows)
155
+
156
+ | AccountKey | AccountCode | AccountName | AccountType | AccountGroup | NaturalSign | SortOrder |
157
+ |------------|-------------|-------------|-------------|--------------|-------------|-----------|
158
+ | 100 | 4000 | Net Revenue | Revenue | Net Revenue | -1 | 100 |
159
+ | 101 | 4010 | Product Revenue | Revenue | Net Revenue | -1 | 110 |
160
+ | 102 | 4020 | Service Revenue | Revenue | Net Revenue | -1 | 120 |
161
+ | 200 | 5000 | Cost of Goods Sold | COGS | COGS | 1 | 200 |
162
+ | 201 | 5010 | Materials | COGS | COGS | 1 | 210 |
163
+ | 202 | 5020 | Direct Labor | COGS | COGS | 1 | 220 |
164
+ | 300 | 6000 | Operating Expenses | OpEx | SG&A | 1 | 300 |
165
+ | 301 | 6100 | Salaries & Wages | OpEx | Personnel | 1 | 310 |
166
+ | 302 | 6200 | Rent & Facilities | OpEx | Occupancy | 1 | 320 |
167
+ | 303 | 6300 | Marketing | OpEx | Marketing | 1 | 330 |
168
+
169
+ ### FactFinancials (Sample)
170
+
171
+ | FinancialKey | DateKey | AccountKey | CostCenterKey | ScenarioKey | Amount |
172
+ |--------------|---------|------------|---------------|-------------|--------|
173
+ | 1 | 20240131 | 101 | 501 | 1 | -150000 |
174
+ | 2 | 20240131 | 101 | 501 | 2 | -145000 |
175
+ | 3 | 20240131 | 201 | 501 | 1 | 45000 |
176
+ | 4 | 20240131 | 301 | 502 | 1 | 25000 |
177
+ | 5 | 20240131 | 303 | 503 | 1 | 18000 |
178
+
179
+ ---
180
+
181
+ ## Calculated Columns
182
+
183
+ ### Display Amount (with sign correction)
184
+
185
+ ```dax
186
+ // Add to FactFinancials or use in measures
187
+ Display Amount =
188
+ FactFinancials[Amount] * RELATED(DimAccount[NaturalSign])
189
+ ```
190
+
191
+ ### Account Path (for hierarchy)
192
+
193
+ ```dax
194
+ // Add to DimAccount
195
+ Account Path =
196
+ VAR _Path =
197
+ PATH(DimAccount[AccountKey], DimAccount[ParentAccountKey])
198
+ RETURN
199
+ _Path
200
+ ```
201
+
202
+ ---
203
+
204
+ ## Relationship Diagram
205
+
206
+ ```
207
+ DimDate[DateKey] ─────────────────────────────────┐
208
+
209
+ DimAccount[AccountKey] ────────────────────────┐ │
210
+ │ │
211
+ DimCostCenter[CostCenterKey] ────────────────┐ │ │
212
+ │ │ │
213
+ DimScenario[ScenarioKey] ──────────────────┐ │ │ │
214
+ │ │ │ │
215
+ ▼ ▼ ▼ ▼
216
+ ┌────────────┐
217
+ │FactFinance │
218
+ └────────────┘
219
+
220
+ All relationships: Many-to-One, Single direction
221
+ ```
222
+
223
+ ---
224
+
225
+ ## Power Query Notes
226
+
227
+ ### Loading GL Data
228
+
229
+ ```m
230
+ let
231
+ Source = Sql.Database("server", "FinanceDB"),
232
+ GL = Source{[Schema="dbo", Item="GeneralLedger"]}[Data],
233
+
234
+ // Filter to relevant periods
235
+ Filtered = Table.SelectRows(GL, each
236
+ [PostingDate] >= #date(2022, 1, 1)
237
+ ),
238
+
239
+ // Map to dimension keys
240
+ WithKeys = Table.AddColumn(
241
+ Table.AddColumn(
242
+ Table.AddColumn(Filtered,
243
+ "DateKey", each Date.ToText([PostingDate], "yyyyMMdd")
244
+ ),
245
+ "AccountKey", each [GLAccountID]
246
+ ),
247
+ "CostCenterKey", each [CostCenterID]
248
+ ),
249
+
250
+ // Aggregate to grain
251
+ Grouped = Table.Group(WithKeys,
252
+ {"DateKey", "AccountKey", "CostCenterKey", "ScenarioKey"},
253
+ {{"Amount", each List.Sum([Amount]), Currency.Type}}
254
+ )
255
+ in
256
+ Grouped
257
+ ```
258
+
259
+ ---
260
+
261
+ ## Performance Tips
262
+
263
+ 1. **Pre-aggregate** - Financial data should be at period/account grain, not transaction detail
264
+ 2. **Use integer keys** - Faster joins than text account codes
265
+ 3. **Filter early** - Apply date filters in Power Query
266
+ 4. **Partition by year** - For large datasets, enable incremental refresh
267
+ 5. **Avoid calculated columns** - Use measures with NaturalSign instead