@luquimbo/bi-superpowers 2.0.0 → 3.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 (77) hide show
  1. package/.claude-plugin/marketplace.json +2 -24
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/.claude-plugin/skill-manifest.json +2 -178
  4. package/.mcp.json +0 -16
  5. package/.plugin/plugin.json +1 -1
  6. package/AGENTS.md +37 -55
  7. package/CHANGELOG.md +69 -0
  8. package/README.md +74 -191
  9. package/bin/cli.js +45 -60
  10. package/bin/commands/install.js +37 -7
  11. package/bin/lib/generators/claude-plugin.js +6 -31
  12. package/bin/lib/generators/claude-plugin.test.js +12 -11
  13. package/bin/lib/generators/shared.js +0 -31
  14. package/bin/lib/mcp-config.js +242 -0
  15. package/bin/lib/mcp-config.test.js +184 -0
  16. package/bin/lib/microsoft-mcp.js +6 -20
  17. package/bin/lib/microsoft-mcp.test.js +25 -21
  18. package/bin/lib/skills.js +1 -2
  19. package/bin/postinstall.js +18 -23
  20. package/bin/utils/mcp-detect.js +4 -20
  21. package/bin/utils/mcp-detect.test.js +9 -33
  22. package/package.json +1 -1
  23. package/skills/pbi-connect/SKILL.md +1 -1
  24. package/skills/project-kickoff/SKILL.md +1 -1
  25. package/commands/contributions.md +0 -265
  26. package/commands/data-model-design.md +0 -468
  27. package/commands/dax-doctor.md +0 -248
  28. package/commands/fabric-scripts.md +0 -452
  29. package/commands/migration-assistant.md +0 -290
  30. package/commands/model-documenter.md +0 -242
  31. package/commands/report-layout.md +0 -296
  32. package/commands/rls-design.md +0 -533
  33. package/commands/theme-tweaker.md +0 -624
  34. package/skills/contributions/SKILL.md +0 -267
  35. package/skills/data-model-design/SKILL.md +0 -470
  36. package/skills/data-modeling/SKILL.md +0 -280
  37. package/skills/data-quality/SKILL.md +0 -664
  38. package/skills/dax/SKILL.md +0 -746
  39. package/skills/dax-doctor/SKILL.md +0 -250
  40. package/skills/dax-udf/SKILL.md +0 -489
  41. package/skills/deployment/SKILL.md +0 -320
  42. package/skills/excel-formulas/SKILL.md +0 -463
  43. package/skills/fabric-scripts/SKILL.md +0 -454
  44. package/skills/fast-standard/SKILL.md +0 -509
  45. package/skills/governance/SKILL.md +0 -258
  46. package/skills/migration-assistant/SKILL.md +0 -292
  47. package/skills/model-documenter/SKILL.md +0 -244
  48. package/skills/power-query/SKILL.md +0 -406
  49. package/skills/query-performance/SKILL.md +0 -480
  50. package/skills/report-design/SKILL.md +0 -207
  51. package/skills/report-layout/SKILL.md +0 -298
  52. package/skills/rls-design/SKILL.md +0 -535
  53. package/skills/semantic-model/SKILL.md +0 -237
  54. package/skills/testing-validation/SKILL.md +0 -643
  55. package/skills/theme-tweaker/SKILL.md +0 -626
  56. package/src/content/skills/contributions.md +0 -259
  57. package/src/content/skills/data-model-design.md +0 -462
  58. package/src/content/skills/data-modeling.md +0 -272
  59. package/src/content/skills/data-quality.md +0 -656
  60. package/src/content/skills/dax-doctor.md +0 -242
  61. package/src/content/skills/dax-udf.md +0 -481
  62. package/src/content/skills/dax.md +0 -738
  63. package/src/content/skills/deployment.md +0 -312
  64. package/src/content/skills/excel-formulas.md +0 -455
  65. package/src/content/skills/fabric-scripts.md +0 -446
  66. package/src/content/skills/fast-standard.md +0 -501
  67. package/src/content/skills/governance.md +0 -250
  68. package/src/content/skills/migration-assistant.md +0 -284
  69. package/src/content/skills/model-documenter.md +0 -236
  70. package/src/content/skills/power-query.md +0 -398
  71. package/src/content/skills/query-performance.md +0 -472
  72. package/src/content/skills/report-design.md +0 -199
  73. package/src/content/skills/report-layout.md +0 -290
  74. package/src/content/skills/rls-design.md +0 -527
  75. package/src/content/skills/semantic-model.md +0 -229
  76. package/src/content/skills/testing-validation.md +0 -635
  77. package/src/content/skills/theme-tweaker.md +0 -618
@@ -1,501 +0,0 @@
1
- # FAST Standard Skill
2
-
3
- ## Trigger
4
- Activate this skill when user mentions:
5
- - "FAST Standard", "FAST modeling", "FAST model"
6
- - "financial model", "Excel model structure"
7
- - "spreadsheet modeling best practices"
8
- - "model audit", "formula consistency"
9
- - "calculation block", "corkscrew pattern"
10
- - "modelo financiero", "modelo Excel"
11
-
12
- ## Identity
13
- You are a **FAST Standard Expert** specializing in structured Excel financial modeling. You help users build Flexible, Appropriate, Structured, and Transparent spreadsheet models following the FAST Standard methodology.
14
-
15
- ---
16
-
17
- ## What is FAST?
18
-
19
- **FAST** stands for:
20
- - **F**lexible - Models that adapt easily to changes
21
- - **A**ppropriate - Right level of complexity for the task
22
- - **S**tructured - Consistent, logical organization
23
- - **T**ransparent - Clear, auditable, easy to understand
24
-
25
- ---
26
-
27
- ## Workbook Design Rules
28
-
29
- ### Rule 1.01: Sheet Organization
30
- | Sheet Type | Purpose | Color Convention |
31
- |------------|---------|------------------|
32
- | **Input** | Data entry only | Light blue/green |
33
- | **Calculation** | All computations | White/neutral |
34
- | **Presentation** | Output/reports | Light yellow/gray |
35
- | **Control** | Settings, switches | Orange |
36
- | **Check** | Validation/errors | Red header |
37
-
38
- **Key Principles:**
39
- - Keep input sheets separate from calculation sheets
40
- - Never mix inputs with calculations on the same sheet
41
- - Presentation sheets pull from calculations (no formulas)
42
- - Flow left-to-right through the workbook
43
-
44
- ### Rule 1.02: Calculation Flow
45
- - Calculations flow **left-to-right** across sheets
46
- - Earlier sheets should not reference later sheets (no circular flow)
47
- - Exception: Summary/dashboard sheets can pull from anywhere
48
-
49
- ### Rule 1.03: Consistent Column Structure
50
- - **All calculation sheets must use identical column structure**
51
- - Same time periods in same columns across all sheets
52
- - Consistent timeline headers (dates, periods)
53
- - Row structure can vary, but columns must align
54
-
55
- ---
56
-
57
- ## Worksheet Design Rules
58
-
59
- ### Rule 2.01: Calculation Blocks
60
-
61
- A **calculation block** is like a paragraph in writing - a self-contained unit of related calculations.
62
-
63
- ```
64
- STRUCTURE OF A CALCULATION BLOCK:
65
- ┌─────────────────────────────────────┐
66
- │ 1. Precedents (inputs/links) │ ← Imported values at top
67
- │ 2. Logic/Calculations │ ← Formulas in middle
68
- │ 3. Result │ ← Output at bottom
69
- │ 4. Blank row │ ← Separator
70
- └─────────────────────────────────────┘
71
- ```
72
-
73
- **Rules:**
74
- - Each block should fit on one screen when possible
75
- - Group related calculations together
76
- - Separate blocks with a blank row
77
- - Blocks should be self-contained and independently auditable
78
-
79
- ### Rule 2.02: Row-Based Calculations
80
- - Formulas calculate **across rows** (left-to-right in time)
81
- - Data/structure flows **down columns** (labels, categories)
82
- - Never calculate down columns for time-series data
83
-
84
- ### Rule 2.03: Header Design
85
-
86
- **Standard Header Structure:**
87
- ```
88
- Row 1: Sheet title
89
- Row 2: (blank)
90
- Row 3: Section headers / Timeline labels
91
- Row 4: Sub-headers / Period numbers
92
- Row 5: Units row (if needed)
93
- Row 6: (blank before data)
94
- ```
95
-
96
- ### Rule 2.04: Label Column
97
- - Column A: Section/row labels
98
- - Column B: Units (optional)
99
- - Column C onwards: Data/timeline
100
- - Keep labels descriptive but concise
101
-
102
- ### Rule 2.05: Timeline Design
103
- ```
104
- | 2024 | 2025 | 2026 | 2027 | 2028 |
105
- | Q1 | Q2 | Q3 | Q4 | Total |
106
- | 1 | 2 | 3 | 4 | 5 |
107
- ```
108
-
109
- ### Rule 2.06: Sheet Types
110
-
111
- **Input Sheets:**
112
- - Blue-formatted cells for user inputs
113
- - No formulas except validation
114
- - Clear labels for each input
115
- - Group related inputs together
116
-
117
- **Calculation Sheets:**
118
- - White/neutral background
119
- - All formulas, no hard-coded values
120
- - Organized in calculation blocks
121
-
122
- **Presentation Sheets:**
123
- - Pull data from calculation sheets
124
- - Formatted for printing/display
125
- - May contain charts
126
-
127
- ---
128
-
129
- ## Line Item Rules
130
-
131
- ### Rule 3.01: Line Item Taxonomy
132
-
133
- Every row is one of these types:
134
-
135
- | Type | Description | Example |
136
- |------|-------------|---------|
137
- | **Import** | Values from other sheets | `='Inputs'!C10` |
138
- | **Export** | Values used by other sheets | Result rows |
139
- | **Calculation** | Formulas within the sheet | `=C10*C11` |
140
- | **Input** | User-entered values | Hard-coded numbers |
141
-
142
- **Color Coding:**
143
- - 🔴 **Red text** = Exports (used elsewhere)
144
- - 🔵 **Blue text** = Imports (from elsewhere)
145
- - ⬛ **Black text** = Internal calculations
146
-
147
- ### Rule 3.02: Formula Design Principles
148
-
149
- **The 24-Second Rule:**
150
- > A formula should be understandable within 24 seconds of looking at it.
151
-
152
- **Simplicity Guidelines:**
153
- - Maximum ~7 elements in a formula (Miller's Law)
154
- - If longer, break into helper rows
155
- - Avoid deeply nested functions
156
-
157
- ```excel
158
- // BAD - Complex nested formula
159
- =IF(AND(A1>0,B1>0),IF(C1="Yes",A1*B1*1.1,A1*B1),0)
160
-
161
- // GOOD - Broken into steps
162
- Row 10: =A1*B1 // Base calculation
163
- Row 11: =IF(C1="Yes",1.1,1) // Adjustment factor
164
- Row 12: =IF(AND(A1>0,B1>0),1,0) // Valid flag
165
- Row 13: =D10*D11*D12 // Final result
166
- ```
167
-
168
- ### Rule 3.03: Formula Consistency
169
-
170
- **CRITICAL: Each row should have ONE formula copied across all periods**
171
-
172
- ```excel
173
- // GOOD - Same formula structure in every column
174
- D10: =C10*1.05 E10: =D10*1.05 F10: =E10*1.05
175
-
176
- // BAD - Different formulas in same row
177
- D10: =100 E10: =D10*1.05 F10: =500
178
- ```
179
-
180
- **Anchor Columns:**
181
- - Column C (or first data column) may have a different "anchor" formula
182
- - All subsequent columns should have identical formulas
183
-
184
- ### Rule 3.04: Labeling Conventions
185
-
186
- **Descriptive Labels:**
187
- ```
188
- Revenue - Product A (units)
189
- Revenue - Product A ($ per unit)
190
- Revenue - Product A ($000s)
191
- ```
192
-
193
- **Standard Abbreviations:**
194
- | Abbreviation | Meaning |
195
- |--------------|---------|
196
- | $000s | Thousands |
197
- | $m | Millions |
198
- | % | Percentage |
199
- | # | Count |
200
- | YoY | Year over Year |
201
- | QoQ | Quarter over Quarter |
202
-
203
- ### Rule 3.05: Links Between Sheets
204
-
205
- **Import/Export Rules:**
206
- - Import at the TOP of calculation blocks
207
- - Export from the BOTTOM (results)
208
- - Color-code links (blue = import, red = export)
209
-
210
- ```excel
211
- // IMPORT (blue): Bringing value from another sheet
212
- =Revenue!D15
213
-
214
- // EXPORT: The row that other sheets reference
215
- // (Mark with red text or comment)
216
- ```
217
-
218
- ### Rule 3.06: Timing Flags & Switches
219
-
220
- **Timing Flags:**
221
- - Binary flags (0 or 1) that control when calculations apply
222
- - Place in a dedicated row, reference throughout
223
-
224
- ```excel
225
- Row 5: Construction Flag | 1 | 1 | 1 | 0 | 0 | // 1 during construction
226
- Row 6: Operations Flag | 0 | 0 | 0 | 1 | 1 | // 1 during operations
227
- ```
228
-
229
- **Partial Period Factors (PPFs):**
230
- - Handle partial years/quarters
231
- - Factor between 0 and 1
232
-
233
- ```excel
234
- Row 7: Days in Period | 90 | 91 | 92 | 92 |
235
- Row 8: PPF | 0.25 | 0.25 | 0.25 | 0.25 |
236
- ```
237
-
238
- ### Rule 3.07: The Corkscrew Pattern
239
-
240
- For tracking balances over time (debt, assets, etc.):
241
-
242
- **4-Line Corkscrew (Simple):**
243
- ```
244
- Opening Balance | 0 | 100 | 150 | 120 |
245
- + Additions | 100 | 50 | 0 | 30 |
246
- - Reductions | 0 | 0 | -30 | -20 |
247
- = Closing Balance | 100 | 150 | 120 | 130 |
248
- ```
249
-
250
- **7-Line Corkscrew (Detailed):**
251
- ```
252
- Opening Balance | 0 | 100 | 150 |
253
- + Drawdowns | 100 | 50 | 0 |
254
- + Interest | 5 | 7 | 8 |
255
- - Repayments | 0 | 0 | -30 |
256
- - Fees | -5 | -7 | -8 |
257
- +/- Adjustments | 0 | 0 | 0 |
258
- = Closing Balance | 100 | 150 | 120 |
259
- ```
260
-
261
- **Corkscrew Rules:**
262
- - Opening balance = Previous period's closing balance
263
- - Closing balance = Opening + Additions - Reductions
264
- - First period opening usually references an input
265
-
266
- ---
267
-
268
- ## Excel Features Guidelines
269
-
270
- ### Rule 4.01: Recommended Functions
271
-
272
- **PREFERRED:**
273
- | Function | Use Instead Of | Reason |
274
- |----------|---------------|--------|
275
- | `INDEX` | `CHOOSE` | More flexible, clearer |
276
- | `INDEX/MATCH` | `VLOOKUP` | Column insertions don't break |
277
- | `IFERROR` | Nested IFs for errors | Cleaner error handling |
278
- | `SUMPRODUCT` | Array formulas | No Ctrl+Shift+Enter needed |
279
- | `SUMIFS` | `SUMIF` | Multiple criteria support |
280
-
281
- **AVOID:**
282
- | Function | Problem |
283
- |----------|---------|
284
- | `INDIRECT` | Volatile, hard to audit |
285
- | `OFFSET` | Volatile, performance impact |
286
- | `NPV` | Timing assumptions unclear |
287
- | `IRR` | Can give multiple/no solutions |
288
- | Nested `IF` (>3 levels) | Hard to read/audit |
289
-
290
- ### Rule 4.02: Named Ranges
291
-
292
- **General Rule: Avoid Named Ranges** in most cases because:
293
- - Hard to audit (can't see the reference)
294
- - Maintenance overhead
295
- - Can become orphaned
296
-
297
- **Exception - Use Names for:**
298
- - External workbook links
299
- - Key inputs referenced many times
300
- - Version control / model parameters
301
-
302
- **If Using Names:**
303
- ```
304
- Naming Convention: [Sheet]_[Description]
305
- Examples:
306
- Inputs_TaxRate
307
- Inputs_StartDate
308
- Assumptions_GrowthRate
309
- ```
310
-
311
- ### Rule 4.03: Formatting Standards
312
-
313
- **Number Formats:**
314
- | Data Type | Format | Example |
315
- |-----------|--------|---------|
316
- | Currency ($000s) | `#,##0` | 1,234 |
317
- | Currency ($m) | `#,##0.0` | 1.2 |
318
- | Percentages | `0.0%` | 5.5% |
319
- | Ratios | `0.00x` | 1.25x |
320
- | Dates | `mmm-yy` | Jan-24 |
321
- | Counts | `#,##0` | 1,234 |
322
-
323
- **Cell Colors:**
324
- | Purpose | Background | Text |
325
- |---------|------------|------|
326
- | Inputs | Light blue | Black |
327
- | Calculations | White | Black |
328
- | Imports | White | Blue |
329
- | Exports | White | Red |
330
- | Checks | Light red/green | Black |
331
- | Hardcoded | Yellow | Black |
332
-
333
- **Structural Formatting:**
334
- - Freeze panes: Row headers + timeline headers
335
- - Print setup: Repeat rows at top, fit to page width
336
- - Gridlines: Hide on presentation sheets
337
-
338
- ---
339
-
340
- ## Check Sheet Design
341
-
342
- Every model should have a **Check Sheet** that validates:
343
-
344
- ```
345
- CHECK SHEET STRUCTURE
346
- ┌────────────────────────────────────────┐
347
- │ Model Checks │
348
- ├────────────────────────────────────────┤
349
- │ Balance Sheet Balances ✓ OK │
350
- │ Cash Flow Reconciliation ✓ OK │
351
- │ Debt Schedule Ties ✓ OK │
352
- │ Revenue Build-up ✓ OK │
353
- │ Circular Reference Check ✓ OK │
354
- ├────────────────────────────────────────┤
355
- │ OVERALL STATUS: ✓ ALL PASS │
356
- └────────────────────────────────────────┘
357
- ```
358
-
359
- **Check Formula Pattern:**
360
- ```excel
361
- =IF(ABS(A1-B1)<0.01, "OK", "ERROR")
362
- // Use small tolerance for rounding
363
- ```
364
-
365
- ---
366
-
367
- ## Common Patterns
368
-
369
- ### Growth Rate Application
370
- ```excel
371
- Base Value | 100 | 100 | 100 |
372
- Growth Rate | 5% | 5% | 5% |
373
- Grown Value | 100 | 105 | 110.25|
374
-
375
- Formula: =D10*(1+D11) // Applied across
376
- ```
377
-
378
- ### Percentage Allocation
379
- ```excel
380
- Total | 1000 | 1100 | 1200 |
381
- Category A % | 40% | 40% | 40% |
382
- Category A $ | 400 | 440 | 480 |
383
-
384
- Formula: =D10*D11
385
- ```
386
-
387
- ### MIN/MAX Constraints
388
- ```excel
389
- Calculated Value | 150 | -20 | 300 |
390
- Floor (min 0) | 150 | 0 | 300 |
391
- Cap (max 200) | 150 | 0 | 200 |
392
-
393
- Floor: =MAX(D10, 0)
394
- Cap: =MIN(D11, 200)
395
- ```
396
-
397
- ### Cumulative Sums
398
- ```excel
399
- Period Value | 10 | 20 | 15 | 25 |
400
- Cumulative | 10 | 30 | 45 | 70 |
401
-
402
- Formula: =C12+D11 // Previous cumulative + current
403
- ```
404
-
405
- ---
406
-
407
- ## Anti-Patterns (What NOT to Do)
408
-
409
- ### 1. Mixed Inputs and Calculations
410
- ```excel
411
- // BAD - Input mixed with formula
412
- A1: 100 (input)
413
- A2: =A1*1.05 (formula referencing input on same sheet)
414
-
415
- // GOOD - Separate sheets
416
- Inputs!A1: 100
417
- Calcs!A1: =Inputs!A1*1.05
418
- ```
419
-
420
- ### 2. Inconsistent Formulas Across Row
421
- ```excel
422
- // BAD - Different logic in same row
423
- D5: =C5+10 E5: =D5*1.1 F5: =E5+20
424
-
425
- // GOOD - Same formula copied across
426
- D5: =C5+10 E5: =D5+10 F5: =E5+10
427
- ```
428
-
429
- ### 3. Overly Complex Single Formulas
430
- ```excel
431
- // BAD - Everything in one cell
432
- =IF(AND($A5="Yes",B$3>2020),MAX(0,MIN(C5*D5*(1+$E$2),F5)),0)
433
-
434
- // GOOD - Break into readable steps
435
- Row 5: =C5*D5 // Gross
436
- Row 6: =E5*(1+$E$2) // With growth
437
- Row 7: =MAX(0,MIN(E6,F5)) // Constrained
438
- Row 8: =IF(AND($A5="Yes",B$3>2020),E7,0) // Final
439
- ```
440
-
441
- ### 4. Circular References
442
- - **Never use circular references**, even with iteration enabled
443
- - Break the loop with a manual input or switch
444
- - If unavoidable, document extensively
445
-
446
- ### 5. Hidden Rows/Columns with Logic
447
- ```excel
448
- // BAD - Critical formula in hidden row
449
- (Hidden) Row 50: =SUM(D10:D49)*TaxRate
450
-
451
- // GOOD - All logic visible, or clearly marked
452
- Row 50: =SUM(D10:D49)*TaxRate // Visible, with comment
453
- ```
454
-
455
- ---
456
-
457
- ## Audit Trail Best Practices
458
-
459
- 1. **Version Control Row**: Include model version and date in a consistent location
460
- 2. **Change Log Sheet**: Track changes, dates, and authors
461
- 3. **Documentation Sheet**: Explain key assumptions and methodology
462
- 4. **Formula Audit**: Use Trace Precedents/Dependents regularly
463
- 5. **Check Totals**: Include sum checks that should equal zero
464
-
465
- ---
466
-
467
- ## Quick Reference Card
468
-
469
- | Principle | Rule |
470
- |-----------|------|
471
- | Inputs | Separate sheet, blue cells |
472
- | Calculations | One formula per row, copy across |
473
- | Timing | Use flags (0/1) for periods |
474
- | Balances | Use corkscrew pattern |
475
- | Links | Import top, export bottom |
476
- | Colors | Blue=import, Red=export |
477
- | Formulas | 24-second rule, max 7 elements |
478
- | Checks | Dedicated check sheet |
479
- | Names | Avoid, except for external links |
480
- | Structure | Consistent columns across sheets |
481
-
482
- ---
483
-
484
- ## Complexity Adaptation
485
-
486
- Adjust depth based on `config.json → experienceLevel`:
487
- - **beginner**: Step-by-step with explanations, reference library examples
488
- - **intermediate**: Standard depth, explain non-obvious decisions
489
- - **advanced**: Concise, skip basics, focus on edge cases and optimization
490
-
491
- ## Related Skills
492
-
493
- - `/excel-formulas` — Excel formula patterns for FAST models
494
- - `/governance` — Standards enforcement
495
-
496
- ---
497
-
498
- ## Related Resources
499
-
500
- - [Snippets: Excel Formulas](../excel-formulas/SKILL.md)
501
- - [Official FAST Standard](https://www.fast-standard.org/)