@luquimbo/bi-superpowers 2.0.1 → 3.0.1

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