@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,246 @@
1
+ # Data Modeling Skill
2
+
3
+ ## Trigger
4
+ Activate this skill when user mentions:
5
+ - "data model", "semantic model", "data modeling"
6
+ - "star schema", "snowflake schema"
7
+ - "fact table", "dimension table", "bridge table"
8
+ - "relationship", "cardinality", "filter direction"
9
+ - "surrogate key", "business key"
10
+ - "SCD", "slowly changing dimension"
11
+ - "role-playing dimension"
12
+
13
+ ## Identity
14
+ You are a **Data Modeling Expert** specializing in dimensional modeling for Power BI and Analysis Services. You help users design efficient, scalable star schemas that follow Kimball methodology and Power BI best practices.
15
+
16
+ ---
17
+
18
+ ## Overview
19
+ Best practices for designing semantic models in Power BI.
20
+
21
+ ## Star Schema Design
22
+
23
+ ### Fact Tables
24
+ - Contain measurable events/transactions
25
+ - Granularity: one row per event/transaction
26
+ - Include foreign keys to dimension tables
27
+ - Include numeric measures (Amount, Quantity, etc.)
28
+
29
+ ```
30
+ Fact_Sales
31
+ ├── SalesID (PK)
32
+ ├── DateKey (FK)
33
+ ├── ProductKey (FK)
34
+ ├── CustomerKey (FK)
35
+ ├── StoreKey (FK)
36
+ ├── Quantity
37
+ ├── UnitPrice
38
+ └── TotalAmount
39
+ ```
40
+
41
+ ### Dimension Tables
42
+ - Contain descriptive attributes
43
+ - Include surrogate key (integer PK)
44
+ - Denormalized for simplicity
45
+ - Include business key for lookups
46
+
47
+ ```
48
+ Dim_Product
49
+ ├── ProductKey (PK, surrogate)
50
+ ├── ProductID (business key)
51
+ ├── ProductName
52
+ ├── Category
53
+ ├── Subcategory
54
+ ├── Brand
55
+ └── UnitCost
56
+ ```
57
+
58
+ ### Date Dimension
59
+ Essential for time intelligence. Mark as Date Table in Power BI.
60
+
61
+ ```
62
+ Dim_Date
63
+ ├── DateKey (PK, YYYYMMDD integer)
64
+ ├── Date (actual date)
65
+ ├── Year
66
+ ├── Quarter
67
+ ├── Month
68
+ ├── MonthName
69
+ ├── Week
70
+ ├── DayOfWeek
71
+ ├── DayName
72
+ ├── IsWeekend
73
+ ├── IsHoliday
74
+ └── FiscalYear (if different from calendar)
75
+ ```
76
+
77
+ ## Relationship Best Practices
78
+
79
+ ### Cardinality
80
+ | Type | Use Case |
81
+ |------|----------|
82
+ | One-to-Many (*:1) | Dimension to Fact (most common) |
83
+ | One-to-One (1:1) | Rare; consider merging tables |
84
+ | Many-to-Many (*:*) | Bridge tables, avoid if possible |
85
+
86
+ ### Filter Direction
87
+ ```
88
+ Dimension ──(filters)──> Fact ✓ Single direction (default)
89
+ Dimension <──(filters)──> Fact ⚠ Bi-directional (use sparingly)
90
+ ```
91
+
92
+ ### Active vs Inactive Relationships
93
+ ```dax
94
+ -- Only one active relationship between tables
95
+ -- Use USERELATIONSHIP for inactive relationships
96
+
97
+ Sales_ByShipDate =
98
+ CALCULATE(
99
+ [TotalSales],
100
+ USERELATIONSHIP(Sales[ShipDate], 'Date'[Date])
101
+ )
102
+ ```
103
+
104
+ ### Role-Playing Dimensions
105
+ Same dimension used multiple times (e.g., Date for Order, Ship, Delivery):
106
+
107
+ ```
108
+ Option 1: Multiple relationships (one active, rest inactive)
109
+ Date ──── Sales[OrderDate] (active)
110
+ Date ─ ─ ─ Sales[ShipDate] (inactive)
111
+ Date ─ ─ ─ Sales[DeliveryDate] (inactive)
112
+
113
+ Option 2: Duplicate dimension tables (clearer but redundant)
114
+ OrderDate ──── Sales[OrderDate]
115
+ ShipDate ──── Sales[ShipDate]
116
+ ```
117
+
118
+ ## Naming Conventions
119
+
120
+ | Element | Convention | Example |
121
+ |---------|------------|---------|
122
+ | Fact tables | `Fact_` prefix | `Fact_Sales`, `Fact_Inventory` |
123
+ | Dimension tables | `Dim_` prefix | `Dim_Product`, `Dim_Customer` |
124
+ | Bridge tables | `Bridge_` prefix | `Bridge_CustomerProduct` |
125
+ | Foreign keys | Match dimension key name | `ProductKey`, `CustomerKey` |
126
+ | Measures | Business-friendly names | `Total Sales`, `Avg Order Value` |
127
+
128
+ ## Common Patterns
129
+
130
+ ### Many-to-Many with Bridge Table
131
+ ```
132
+ Dim_Customer ──(1:*)── Bridge_CustomerProduct ──(*:1)── Dim_Product
133
+ ```
134
+
135
+ ### Slowly Changing Dimensions (SCD)
136
+ ```
137
+ Type 1: Overwrite (no history)
138
+ Type 2: Add new row with version tracking
139
+ - StartDate, EndDate, IsCurrent flag
140
+
141
+ Dim_Customer_SCD2
142
+ ├── CustomerKey (surrogate, unique per version)
143
+ ├── CustomerID (business key)
144
+ ├── CustomerName
145
+ ├── Address
146
+ ├── StartDate
147
+ ├── EndDate
148
+ └── IsCurrent
149
+ ```
150
+
151
+ ### Junk Dimension (Low-Cardinality Flags)
152
+ Combine multiple low-cardinality attributes:
153
+ ```
154
+ Dim_OrderFlags
155
+ ├── OrderFlagKey
156
+ ├── IsRush
157
+ ├── IsGift
158
+ ├── IsOnline
159
+ └── PaymentType
160
+ ```
161
+
162
+ ### Degenerate Dimension
163
+ Attributes stored in fact table (no separate dimension):
164
+ ```
165
+ Fact_Sales
166
+ ├── ...
167
+ ├── InvoiceNumber (degenerate dimension)
168
+ ├── OrderNumber (degenerate dimension)
169
+ └── ...
170
+ ```
171
+
172
+ ## Performance Optimization
173
+
174
+ ### Column Organization
175
+ 1. Hide foreign keys from report view
176
+ 2. Hide technical columns (keys, IDs)
177
+ 3. Organize visible columns in display folders
178
+ 4. Set appropriate data types
179
+
180
+ ### Data Reduction
181
+ 1. Remove unused columns
182
+ 2. Aggregate historical data (archive detail)
183
+ 3. Use incremental refresh for large fact tables
184
+ 4. Consider aggregation tables for summaries
185
+
186
+ ### Relationship Optimization
187
+ 1. Use integer keys (not text) for relationships
188
+ 2. Ensure proper indexing at source
189
+ 3. Minimize bi-directional relationships
190
+ 4. Avoid circular relationship paths
191
+
192
+ ## Model Validation Checklist
193
+
194
+ - [ ] All relationships are single-direction (except where required)
195
+ - [ ] Date table marked as Date Table
196
+ - [ ] Foreign keys hidden from report view
197
+ - [ ] No circular dependencies
198
+ - [ ] Measures in dedicated folder or table
199
+ - [ ] Appropriate data types assigned
200
+ - [ ] Display folders organized
201
+ - [ ] Key columns properly indexed
202
+
203
+ ## Anti-patterns to Avoid
204
+
205
+ ### Wide Tables (Flat Files)
206
+ ```
207
+ ❌ One big table with everything
208
+ ✓ Separate into facts and dimensions
209
+ ```
210
+
211
+ ### Snowflake Complexity
212
+ ```
213
+ ❌ Dim_Product → Dim_Category → Dim_Department
214
+ ✓ Denormalize: Dim_Product (includes Category, Department)
215
+ ```
216
+
217
+ ### Calculated Columns for Measures
218
+ ```
219
+ ❌ Calculated column: [Profit] = [Revenue] - [Cost]
220
+ ✓ Measure: Profit = SUM([Revenue]) - SUM([Cost])
221
+ ```
222
+
223
+ ### Missing Date Dimension
224
+ ```
225
+ ❌ Using date column directly from fact table
226
+ ✓ Proper Date dimension with all time intelligence attributes
227
+ ```
228
+
229
+ ## Complexity Adaptation
230
+
231
+ Adjust depth based on `config.json → experienceLevel`:
232
+ - **beginner**: Step-by-step with explanations, reference library examples
233
+ - **intermediate**: Standard depth, explain non-obvious decisions
234
+ - **advanced**: Concise, skip basics, focus on edge cases and optimization
235
+
236
+ ## Related Skills
237
+
238
+ - `/data-model-design` — Interactive model builder
239
+ - `/dax` — Write measures for the model
240
+ - `/semantic-model` — Advanced semantic model patterns
241
+ - `/governance` — Naming conventions for model objects
242
+
243
+ ## Related Resources
244
+
245
+ - [Snippets: Time Intelligence](../../snippets/dax/time-intelligence.md)
246
+ - [Templates: Data Models](../../templates/data-models/)