@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,461 +0,0 @@
1
- # KPI Scorecard Template
2
-
3
- ## Overview
4
-
5
- A strategic KPI monitoring dashboard for tracking organizational performance against targets. Designed for balanced scorecard methodology with support for multiple perspectives and drill-down capabilities.
6
-
7
- ---
8
-
9
- ## Target Audience
10
-
11
- - C-Suite Executives
12
- - Department Heads
13
- - Strategy & Operations Teams
14
- - Board of Directors
15
-
16
- ---
17
-
18
- ## Data Requirements
19
-
20
- ### Required Tables
21
-
22
- | Table | Description | Key Columns |
23
- |-------|-------------|-------------|
24
- | **FactKPI** | KPI values by period | KPIID, Date, ActualValue, TargetValue, PriorValue |
25
- | **DimKPI** | KPI definitions | KPIID, KPIName, Description, Unit, Format, Polarity, Perspective |
26
- | **DimDate** | Date dimension | Date, Year, Quarter, Month, Period |
27
- | **DimPerspective** | Balanced Scorecard perspectives | PerspectiveID, Name, SortOrder |
28
- | **DimOwner** | KPI owners | OwnerID, Name, Department, Email |
29
-
30
- ### Optional Tables
31
-
32
- | Table | Description | Use Case |
33
- |-------|-------------|----------|
34
- | **FactKPICommentary** | Period-end comments | Narrative explanations |
35
- | **DimInitiative** | Strategic initiatives | Linking KPIs to projects |
36
- | **FactMilestone** | Initiative milestones | Progress tracking |
37
-
38
- ---
39
-
40
- ## KPI Framework
41
-
42
- ### Balanced Scorecard Perspectives
43
-
44
- | Perspective | Focus | Example KPIs |
45
- |-------------|-------|--------------|
46
- | **Financial** | Shareholder value | Revenue Growth, EBITDA Margin, ROI |
47
- | **Customer** | Customer satisfaction | NPS, Customer Retention, CSAT |
48
- | **Internal Process** | Operational excellence | Cycle Time, Quality Rate, Utilization |
49
- | **Learning & Growth** | Organizational capacity | Employee Engagement, Training Hours, Innovation Index |
50
-
51
- ### KPI Definition Structure
52
-
53
- ```
54
- DimKPI columns:
55
- - KPIID: Unique identifier
56
- - KPIName: Display name
57
- - Description: Full description for tooltips
58
- - Unit: "Currency", "Percent", "Number", "Days", "Score"
59
- - Format: DAX format string
60
- - Polarity: "Higher is Better" or "Lower is Better"
61
- - Perspective: Link to DimPerspective
62
- - Frequency: "Monthly", "Quarterly", "Annual"
63
- - DataSource: Origin system
64
- - Formula: Calculation methodology
65
- - Owner: Responsible person
66
- ```
67
-
68
- ---
69
-
70
- ## Recommended Measures
71
-
72
- ### Core KPI Metrics
73
-
74
- ```dax
75
- // Actual Value
76
- Actual =
77
- SUM(FactKPI[ActualValue])
78
-
79
- // Target Value
80
- Target =
81
- SUM(FactKPI[TargetValue])
82
-
83
- // Prior Period Value
84
- Prior =
85
- SUM(FactKPI[PriorValue])
86
-
87
- // Achievement %
88
- Achievement % =
89
- VAR _Actual = [Actual]
90
- VAR _Target = [Target]
91
- VAR _Polarity = SELECTEDVALUE(DimKPI[Polarity])
92
- RETURN
93
- IF(
94
- _Polarity = "Lower is Better",
95
- DIVIDE(_Target, _Actual), // Inverse for "lower is better"
96
- DIVIDE(_Actual, _Target)
97
- )
98
-
99
- // Variance to Target
100
- Variance =
101
- [Actual] - [Target]
102
-
103
- // Variance %
104
- Variance % =
105
- DIVIDE([Variance], ABS([Target]))
106
- ```
107
-
108
- ### Status Indicators
109
-
110
- ```dax
111
- // KPI Status (Traffic Light)
112
- KPI Status =
113
- VAR _Achievement = [Achievement %]
114
- VAR _Polarity = SELECTEDVALUE(DimKPI[Polarity])
115
- RETURN
116
- SWITCH(
117
- TRUE(),
118
- _Achievement >= 1, "Green", // On or above target
119
- _Achievement >= 0.9, "Yellow", // Within 10% of target
120
- _Achievement < 0.9, "Red" // More than 10% below
121
- )
122
-
123
- // Status Icon
124
- Status Icon =
125
- SWITCH(
126
- [KPI Status],
127
- "Green", UNICHAR(9679), // Filled circle
128
- "Yellow", UNICHAR(9681), // Half circle
129
- "Red", UNICHAR(9675) // Empty circle
130
- )
131
-
132
- // Trend Arrow
133
- Trend Arrow =
134
- VAR _Current = [Actual]
135
- VAR _Prior = [Prior]
136
- VAR _Change = _Current - _Prior
137
- RETURN
138
- SWITCH(
139
- TRUE(),
140
- _Change > 0, UNICHAR(9650), // Up arrow
141
- _Change < 0, UNICHAR(9660), // Down arrow
142
- UNICHAR(9644) // Horizontal line
143
- )
144
- ```
145
-
146
- ### Period Intelligence
147
-
148
- ```dax
149
- // Current Period Actual
150
- Current Period =
151
- CALCULATE(
152
- [Actual],
153
- LASTDATE(DimDate[Date])
154
- )
155
-
156
- // YTD Actual
157
- YTD =
158
- CALCULATE(
159
- [Actual],
160
- DATESYTD(DimDate[Date])
161
- )
162
-
163
- // Full Year Target
164
- FY Target =
165
- CALCULATE(
166
- [Target],
167
- DATESYTD(DimDate[Date])
168
- )
169
-
170
- // Projected Year-End (Linear)
171
- Projected FY =
172
- VAR _YTD = [YTD]
173
- VAR _DaysElapsed = DATEDIFF(
174
- MIN(DATESYTD(DimDate[Date])),
175
- MAX(DATESYTD(DimDate[Date])),
176
- DAY
177
- ) + 1
178
- VAR _DaysInYear = 365
179
- RETURN
180
- DIVIDE(_YTD * _DaysInYear, _DaysElapsed)
181
- ```
182
-
183
- ### Scoring
184
-
185
- ```dax
186
- // Weighted Score (for overall scorecard)
187
- Weighted Score =
188
- SUMX(
189
- DimKPI,
190
- [Achievement %] * DimKPI[Weight]
191
- )
192
-
193
- // Perspective Score
194
- Perspective Score =
195
- CALCULATE(
196
- AVERAGEX(DimKPI, [Achievement %]),
197
- ALLEXCEPT(DimKPI, DimKPI[Perspective])
198
- )
199
-
200
- // Overall Scorecard Score
201
- Overall Score =
202
- AVERAGEX(
203
- VALUES(DimPerspective[Name]),
204
- [Perspective Score]
205
- )
206
- ```
207
-
208
- ---
209
-
210
- ## Page Structure
211
-
212
- ### Page 1: Executive Scorecard
213
-
214
- **Purpose:** Single-page strategic overview
215
-
216
- | Visual | Position | Content |
217
- |--------|----------|---------|
218
- | Card | Top-center | Overall Score with gauge visual |
219
- | Multi-row Card | Top row | 4 Perspective scores (Financial, Customer, Process, L&G) |
220
- | Matrix | Main area | KPI summary by perspective: |
221
- | | | Columns: KPI Name, Actual, Target, Achievement %, Status, Trend |
222
- | | | Rows grouped by Perspective |
223
- | | | Conditional formatting on Status column |
224
-
225
- **Layout concept:**
226
- ```
227
- +--------------------------------------------------+
228
- | OVERALL SCORE: 87% |
229
- +----------+----------+----------+----------+------+
230
- | Finance | Customer | Process | Learning | ... |
231
- | 92% | 85% | 88% | 82% | |
232
- +----------+----------+----------+----------+------+
233
- | |
234
- | PERSPECTIVE: Financial |
235
- | +--------------------------------------------+ |
236
- | | Revenue Growth | $2.1M | $2.0M |105%|G | |
237
- | | EBITDA Margin | 18% | 20% | 90%|Y | |
238
- | | ROI | 15% | 12% |125%|G | |
239
- | +--------------------------------------------+ |
240
- | |
241
- | PERSPECTIVE: Customer |
242
- | +--------------------------------------------+ |
243
- | | NPS | 45 | 50 | 90%|Y | |
244
- | | Retention Rate | 88% | 85% |104%|G | |
245
- | +--------------------------------------------+ |
246
- | ... |
247
- +--------------------------------------------------+
248
- ```
249
-
250
- ### Page 2: Financial Perspective
251
-
252
- **Purpose:** Detailed financial KPI analysis
253
-
254
- | Visual | Position | Content |
255
- |--------|----------|---------|
256
- | Cards | Top row | Key financial KPIs with YTD values |
257
- | Line Chart | Middle-left | Monthly trend with target line |
258
- | Waterfall | Middle-right | YTD performance bridge |
259
- | Table | Bottom | Detailed monthly breakdown |
260
-
261
- ### Page 3: Customer Perspective
262
-
263
- **Purpose:** Customer-centric KPIs
264
-
265
- | Visual | Position | Content |
266
- |--------|----------|---------|
267
- | Gauge | Top row | NPS, CSAT, Retention Rate |
268
- | Line Chart | Middle | Trend over time with benchmarks |
269
- | Bar Chart | Bottom-left | KPI by segment/region |
270
- | Commentary | Bottom-right | Latest period narrative |
271
-
272
- ### Page 4: Process Perspective
273
-
274
- **Purpose:** Operational efficiency metrics
275
-
276
- | Visual | Position | Content |
277
- |--------|----------|---------|
278
- | KPI cards | Top | Cycle time, Quality, Throughput |
279
- | Control Chart | Middle | Process stability indicators |
280
- | Pareto | Bottom-left | Top issues/defects |
281
- | Table | Bottom-right | Process metrics by department |
282
-
283
- ### Page 5: Learning & Growth
284
-
285
- **Purpose:** People and capability metrics
286
-
287
- | Visual | Position | Content |
288
- |--------|----------|---------|
289
- | Cards | Top | Engagement Score, Training Hours, Turnover |
290
- | Clustered Bar | Middle | Metrics by department |
291
- | Line Chart | Bottom-left | Trend analysis |
292
- | Matrix | Bottom-right | Initiative progress |
293
-
294
- ### Page 6: KPI Detail (Drillthrough)
295
-
296
- **Purpose:** Deep dive on individual KPI
297
-
298
- | Visual | Position | Content |
299
- |--------|----------|---------|
300
- | Header | Top | KPI Name, Description, Owner |
301
- | KPI Visual | Top-right | Large KPI card with target |
302
- | Line Chart | Middle | Full history with target band |
303
- | Table | Bottom-left | Monthly data table |
304
- | Text | Bottom-right | Commentary and action items |
305
-
306
- ---
307
-
308
- ## Visual Specifications
309
-
310
- ### Scorecard Color Palette
311
-
312
- | Status | Color | Hex | Usage |
313
- |--------|-------|-----|-------|
314
- | Green (On Track) | Green | #2E7D32 | >= 100% of target |
315
- | Yellow (At Risk) | Amber | #F9A825 | 90-99% of target |
316
- | Red (Off Track) | Red | #C62828 | < 90% of target |
317
- | Neutral | Gray | #757575 | No target or N/A |
318
-
319
- ### Conditional Formatting Rules
320
-
321
- **Status column (background):**
322
- ```
323
- Green: #E8F5E9
324
- Yellow: #FFF8E1
325
- Red: #FFEBEE
326
- ```
327
-
328
- **Achievement % (data bars):**
329
- ```
330
- Minimum: 0%
331
- Maximum: 150%
332
- Positive bar: #4CAF50
333
- Negative bar: #EF5350
334
- ```
335
-
336
- ### KPI Card Design
337
-
338
- ```
339
- +------------------------+
340
- | [Icon] Revenue Growth |
341
- | |
342
- | $2.1M [G] |
343
- | Target: $2.0M |
344
- | +5.2% vs PY |
345
- +------------------------+
346
- ```
347
-
348
- ---
349
-
350
- ## Interactive Features
351
-
352
- ### Drillthrough Configuration
353
-
354
- From any KPI in the matrix, enable drillthrough to:
355
- - KPI Detail page (full history and analysis)
356
- - Initiative page (related strategic projects)
357
-
358
- ### Tooltip Enhancement
359
-
360
- Custom tooltip page showing:
361
- - KPI definition and formula
362
- - Monthly spark trend
363
- - Owner contact information
364
- - Last updated timestamp
365
-
366
- ### Bookmarks
367
-
368
- - "Current Month" - Latest period only
369
- - "YTD View" - Year-to-date aggregation
370
- - "Perspective Focus" - One perspective at a time
371
- - "Print View" - Simplified layout for export
372
-
373
- ---
374
-
375
- ## Alerting Integration
376
-
377
- ### Power Automate Triggers
378
-
379
- Configure alerts when:
380
- - KPI moves from Green to Yellow or Red
381
- - Achievement drops below 85%
382
- - Target is achieved for the first time
383
- - Commentary is added or updated
384
-
385
- ### Email Distribution
386
-
387
- ```
388
- Subject: [KPI Alert] {KPIName} Status Changed to {Status}
389
-
390
- Body:
391
- KPI: {KPIName}
392
- Current Value: {Actual}
393
- Target: {Target}
394
- Achievement: {Achievement%}
395
- Owner: {Owner}
396
-
397
- View Dashboard: [Link]
398
- ```
399
-
400
- ---
401
-
402
- ## Data Refresh Considerations
403
-
404
- ### Refresh Frequency
405
-
406
- | KPI Type | Refresh | Notes |
407
- |----------|---------|-------|
408
- | Financial | Monthly | After month-end close |
409
- | Operational | Daily/Weekly | Automated from source systems |
410
- | Survey-based | Quarterly | After survey completion |
411
- | Annual | Annually | Strategic planning cycle |
412
-
413
- ### Incremental Refresh
414
-
415
- ```
416
- Configure incremental refresh for FactKPI:
417
- - Archive data older than 3 years
418
- - Incremental: Last 12 months
419
- - Always refresh: Current month
420
- ```
421
-
422
- ---
423
-
424
- ## Implementation Checklist
425
-
426
- - [ ] Define KPI catalog with owners
427
- - [ ] Establish target-setting methodology
428
- - [ ] Configure DimKPI with all metadata
429
- - [ ] Build calculation logic respecting polarity
430
- - [ ] Design status thresholds (90%/100%)
431
- - [ ] Create conditional formatting rules
432
- - [ ] Configure drillthrough pages
433
- - [ ] Set up Power Automate alerts
434
- - [ ] Document data sources and refresh schedule
435
- - [ ] Train KPI owners on commentary workflow
436
- - [ ] Establish governance for target updates
437
-
438
- ---
439
-
440
- ## Governance
441
-
442
- ### Change Control
443
-
444
- - Target changes require approval from Strategy team
445
- - KPI additions/removals go through quarterly review
446
- - Formula changes documented with effective date
447
-
448
- ### Data Quality
449
-
450
- Include data quality indicators:
451
- - Freshness: Days since last update
452
- - Completeness: % of expected data points present
453
- - Accuracy: Variance from source system validation
454
-
455
- ---
456
-
457
- ## Related Resources
458
-
459
- - [DAX Patterns](../../snippets/dax/)
460
- - [Conditional Formatting Best Practices](../../skills/data-modeling/SKILL.md)
461
- - [Corporate Blue Theme](../../styles/power-bi/corporate-blue.json)