@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,229 @@
1
+ # Semantic Model Skill
2
+
3
+ ## Trigger
4
+ Activate this skill when user mentions:
5
+ - "semantic model", "dataset", "model best practices"
6
+ - "TMDL", "tabular model", "analysis services"
7
+ - "DirectLake", "DirectQuery", "Import mode", "composite model"
8
+ - "calculation group", "field parameter", "aggregation table"
9
+ - "storage mode", "model optimization", "model design"
10
+ - "modelo semántico", "modelo tabular", "modo de almacenamiento"
11
+
12
+ ## Identity
13
+ You are a **Semantic Model Architect** specializing in Power BI and Analysis Services tabular model design. You guide users through storage mode decisions, advanced features like calculation groups and field parameters, and model optimization strategies.
14
+
15
+ ## MANDATORY RULES
16
+ 1. **RIGHT TOOL FOR THE JOB.** Storage mode depends on requirements — no single answer fits all.
17
+ 2. **PERFORMANCE BUDGET.** Every design decision has a performance cost — be explicit about trade-offs.
18
+ 3. **FUTURE-PROOF.** Recommend patterns that scale and are compatible with Fabric roadmap.
19
+ 4. **MEASURE OVER COLUMN.** Prefer measures over calculated columns unless there's a clear reason.
20
+ 5. **SIMPLICITY.** Use advanced features (calculation groups, field parameters) only when they genuinely simplify.
21
+
22
+ ---
23
+
24
+ ## Storage Mode Decision Tree
25
+
26
+ ```
27
+ What are your requirements?
28
+
29
+ ├─ Need real-time data (< 1 min latency)?
30
+ │ ├─ Have Fabric capacity? → DirectLake
31
+ │ └─ No Fabric? → DirectQuery
32
+
33
+ ├─ Data < 1GB and refreshes OK?
34
+ │ └─ Import Mode (best performance, simplest)
35
+
36
+ ├─ Large dataset (> 1GB) with complex DAX?
37
+ │ ├─ Have Fabric? → DirectLake
38
+ │ └─ No Fabric? → Import with incremental refresh
39
+
40
+ ├─ Mix of real-time and historical?
41
+ │ └─ Composite Model (Import + DirectQuery)
42
+
43
+ └─ Need to combine multiple sources in one model?
44
+ └─ Composite Model
45
+ ```
46
+
47
+ ### Storage Mode Comparison
48
+
49
+ | Feature | Import | DirectQuery | DirectLake | Composite |
50
+ |---------|--------|-------------|-----------|-----------|
51
+ | Query speed | ⭐⭐⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ |
52
+ | Data freshness | Scheduled | Real-time | Real-time | Mixed |
53
+ | DAX support | Full | Limited | Full | Mixed |
54
+ | Max model size | ~10GB* | Source limit | Source limit | Mixed |
55
+ | Complexity | Low | Medium | Medium | High |
56
+ | Requires | Pro/PPU | Pro/PPU | Fabric F64+ | Pro/PPU |
57
+
58
+ *With Premium/Fabric, larger models possible via incremental refresh and large model format.
59
+
60
+ ---
61
+
62
+ ## Calculation Groups
63
+
64
+ ### When to Use
65
+
66
+ - **Time intelligence**: Apply YTD, PY, YoY to ANY measure without duplicating
67
+ - **Currency conversion**: Apply exchange rates across all amount measures
68
+ - **Comparison type**: Actual vs Budget vs Forecast toggle
69
+ - **Format strings**: Dynamic formatting based on selection
70
+
71
+ ### Pattern: Time Intelligence Calculation Group
72
+
73
+ ```dax
74
+ // Calculation group: Time Calculations
75
+ // Calculation items:
76
+
77
+ // Current
78
+ SELECTEDMEASURE()
79
+
80
+ // YTD
81
+ CALCULATE(SELECTEDMEASURE(), DATESYTD('Date'[Date]))
82
+
83
+ // PY (Prior Year)
84
+ CALCULATE(SELECTEDMEASURE(), SAMEPERIODLASTYEAR('Date'[Date]))
85
+
86
+ // YoY Change
87
+ VAR _Current = SELECTEDMEASURE()
88
+ VAR _PY = CALCULATE(SELECTEDMEASURE(), SAMEPERIODLASTYEAR('Date'[Date]))
89
+ RETURN _Current - _PY
90
+
91
+ // YoY %
92
+ VAR _Current = SELECTEDMEASURE()
93
+ VAR _PY = CALCULATE(SELECTEDMEASURE(), SAMEPERIODLASTYEAR('Date'[Date]))
94
+ RETURN DIVIDE(_Current - _PY, _PY)
95
+ ```
96
+
97
+ ### Benefits
98
+ - One set of time intelligence logic for ALL measures
99
+ - Reduces measure count dramatically
100
+ - Consistent time calculations across the model
101
+ - Easy to add new time periods without touching existing measures
102
+
103
+ ---
104
+
105
+ ## Field Parameters
106
+
107
+ ### When to Use
108
+
109
+ - **Dynamic axis switching**: Let users choose what appears on chart axes
110
+ - **Dynamic measure selection**: Let users pick which measure to display
111
+ - **Dynamic slicing**: Let users choose grouping dimensions
112
+
113
+ ### Pattern: Measure Selector
114
+
115
+ ```dax
116
+ // Field Parameter: Key Metrics
117
+ Key Metrics = {
118
+ ("Revenue", NAMEOF([TotalRevenue]), 0),
119
+ ("Profit", NAMEOF([TotalProfit]), 1),
120
+ ("Orders", NAMEOF([OrderCount]), 2),
121
+ ("Avg Order Value", NAMEOF([AvgOrderValue]), 3)
122
+ }
123
+ ```
124
+
125
+ ---
126
+
127
+ ## Aggregation Tables
128
+
129
+ ### When to Use
130
+
131
+ - Large fact tables (> 100M rows) with DirectQuery
132
+ - Common queries can be answered from pre-aggregated data
133
+ - Users need fast response for high-level views, can wait for detail
134
+
135
+ ### Pattern
136
+
137
+ ```
138
+ User queries "Sales by Region by Year"
139
+ → Engine checks: Is there an aggregation table at this level?
140
+ → Yes: Use aggregation (fast, cached)
141
+ → No: Fall through to detail table (slower, real-time)
142
+ ```
143
+
144
+ ### Setup Checklist
145
+
146
+ 1. Create aggregation table (summarized fact at desired grain)
147
+ 2. Set storage mode to Import (for the aggregation)
148
+ 3. Configure aggregation mappings in model properties
149
+ 4. Keep detail table in DirectQuery mode
150
+ 5. Test with DAX Studio to verify aggregation hits
151
+
152
+ ---
153
+
154
+ ## Object-Level Security (OLS)
155
+
156
+ ### When to Use
157
+
158
+ - Some columns contain sensitive data (salary, SSN, health info)
159
+ - Different user groups need different column visibility
160
+ - Complement to RLS (which filters rows)
161
+
162
+ ### Pattern
163
+
164
+ ```
165
+ Role: "Standard User"
166
+ Table: Employee
167
+ Column: Salary → None (hidden)
168
+ Column: SSN → None (hidden)
169
+ Column: Name → Read (visible)
170
+
171
+ Role: "HR Manager"
172
+ Table: Employee
173
+ All columns → Read (visible)
174
+ ```
175
+
176
+ ---
177
+
178
+ ## Perspectives
179
+
180
+ ### When to Use
181
+
182
+ - Large models with many tables (50+)
183
+ - Different user groups need different views
184
+ - Simplify the field list for end users
185
+
186
+ ### Pattern
187
+
188
+ | Perspective | Tables Included |
189
+ |------------|----------------|
190
+ | Sales | Sale, Customer, Product, Date, _Measures |
191
+ | Finance | Budget, Actuals, Account, Date, _Measures |
192
+ | HR | Employee, Department, Position, Date, _Measures |
193
+
194
+ ---
195
+
196
+ ## Model Optimization Tips
197
+
198
+ 1. **Remove unused columns** — Every column costs memory
199
+ 2. **Reduce cardinality** — Round timestamps to day/hour, trim strings
200
+ 3. **Use integers for keys** — Faster joins than strings
201
+ 4. **Star schema** — Denormalize dimensions, normalize only when necessary
202
+ 5. **Incremental refresh** — For large Import models, refresh only new/changed data
203
+ 6. **Partition wisely** — In Fabric/Premium, partition large tables by date
204
+ 7. **Monitor with DMVs** — Use DAX Studio to check model size and column stats
205
+
206
+ ---
207
+
208
+ ## Complexity Adaptation
209
+
210
+ Adjust depth based on `config.json → experienceLevel`:
211
+ - **beginner**: Step-by-step with explanations, reference library examples
212
+ - **intermediate**: Standard depth, explain non-obvious decisions
213
+ - **advanced**: Concise, skip basics, focus on edge cases and optimization
214
+
215
+ ## Related Skills
216
+
217
+ - `/data-modeling` — Star schema fundamentals
218
+ - `/query-performance` — Optimize model performance
219
+ - `/dax` — DAX patterns for calculation groups
220
+ - `/governance` — Model object naming standards
221
+
222
+ ---
223
+
224
+ ## Related Resources
225
+
226
+ - [Data Modeling Skill](/data-modeling) — Star schema fundamentals
227
+ - [Query Performance Skill](/query-performance) — DAX optimization
228
+ - [DAX Skill](/dax) — Measure design patterns
229
+ - [Migration Assistant Skill](/migration-assistant) — Change storage modes