@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
@@ -12,35 +12,30 @@ console.log(`
12
12
  ╔═══════════════════════════════════════════════════════════╗
13
13
  ║ ║
14
14
  ║ BI Agent Superpowers v${VERSION.padEnd(34)}║
15
- AI-powered toolkit for Power BI, Fabric & Excel
15
+ Plugin para Power BI Desktop open source (MIT)
16
16
  ║ Developed by Lucas Sanchez (@luquimbo) ║
17
- ║ Open source — MIT licensed ║
18
17
  ║ ║
19
18
  ╚═══════════════════════════════════════════════════════════╝
20
19
 
21
- Instalado correctamente!
20
+ Instalado correctamente.
22
21
 
23
22
  Quick Start:
24
- 1. super install Instalá los 24 skills en tus agentes AI
25
- 2. super kickoff Inicializá el plugin en un proyecto
26
- 3. super powers Ver todos los skills disponibles
27
-
28
- Works with:
29
- Claude Code Plugin nativo (skills + commands + MCP)
30
- GitHub Copilot Agent skills
31
- Codex (OpenAI) Agent skills
32
- • Gemini CLI Agent skills
33
- Kilo Code Agent skills
34
- Claude Desktop MCPB extension (super build-desktop)
35
-
36
- 24 skills incluidos:
37
- /project-kickoff Analizá y planificá proyectos BI
38
- /data-model-design Diseñá modelos estrella
39
- /dax-doctor Debuggeá y optimizá medidas DAX
40
- /dax Mejores prácticas de DAX
41
- /power-query Patrones de Power Query
42
- /report-design Diseño y visualización de reportes
43
- ... y 18 más
23
+ super install # Instalá skills + MCPs en tus agentes AI
24
+
25
+ Funciona con los 5 agentes:
26
+ • Claude Code
27
+ GitHub Copilot
28
+ Codex (OpenAI)
29
+ Gemini CLI
30
+ Kilo Code
31
+
32
+ 2 skills iniciales:
33
+ /project-kickoff — Analizá tu proyecto BI
34
+ /pbi-connect — Conectá tu agente a Power BI Desktop
35
+
36
+ 2 MCP servers:
37
+ powerbi-modeling — Conexión local a Power BI Desktop (XMLA)
38
+ microsoft-learn — Docs de Microsoft Learn en contexto
44
39
 
45
40
  Documentation: https://github.com/luquimbo/bi-superpowers
46
41
  `);
@@ -12,11 +12,7 @@ const fs = require('fs');
12
12
  const path = require('path');
13
13
  const os = require('os');
14
14
  const { spawnSync } = require('child_process');
15
- const {
16
- PLUGIN_ROOT_LAUNCHER_MODE,
17
- REMOTE_POWERBI_URL,
18
- createMcpConfigForFormat,
19
- } = require('../lib/microsoft-mcp');
15
+ const { PLUGIN_ROOT_LAUNCHER_MODE, createMcpConfigForFormat } = require('../lib/microsoft-mcp');
20
16
 
21
17
  /**
22
18
  * Common installation paths for the Power BI Modeling MCP
@@ -159,8 +155,8 @@ function getMcpVersion(exePath) {
159
155
  }
160
156
 
161
157
  /**
162
- * Get full MCP status
163
- * @returns {Object} Status object with local and remote info
158
+ * Get full MCP status for the local Power BI Modeling MCP launcher.
159
+ * @returns {Object} Status object
164
160
  */
165
161
  function getMcpStatus() {
166
162
  const localPath = findLocalMcp();
@@ -174,17 +170,6 @@ function getMcpStatus() {
174
170
  available: os.platform() === 'win32',
175
171
  envVars: MODELING_MCP_ENV_VARS,
176
172
  },
177
- remote: {
178
- available: true, // Always available (requires auth)
179
- url: REMOTE_POWERBI_URL,
180
- requiresAuth: true,
181
- description: 'Power BI Remote MCP (Fabric)',
182
- },
183
- fabric: {
184
- available: true,
185
- package: '@microsoft/fabric-mcp@latest',
186
- description: 'Microsoft Fabric MCP Server',
187
- },
188
173
  };
189
174
  }
190
175
 
@@ -235,7 +220,7 @@ function getModelingMcpError() {
235
220
  if (os.platform() !== 'win32') {
236
221
  return [
237
222
  'Power BI Modeling MCP is only available on Windows.',
238
- 'You can still use the official powerbi-remote and fabric-mcp-server entries on macOS/Linux.',
223
+ 'You still get the microsoft-learn MCP on macOS/Linux.',
239
224
  'If you are on Windows and extracted the server manually, set BI_SUPERPOWERS_POWERBI_MODELING_MCP_PATH.',
240
225
  ].join('\n');
241
226
  }
@@ -270,5 +255,4 @@ module.exports = {
270
255
  getExplicitMcpPath,
271
256
  getModelingMcpError,
272
257
  MODELING_MCP_ENV_VARS,
273
- REMOTE_POWERBI_URL,
274
258
  };
@@ -19,38 +19,23 @@ describe('MCP Detection Utilities', () => {
19
19
  assert.strictEqual(typeof mcpDetect.getModelingMcpError, 'function');
20
20
  });
21
21
 
22
- test('exports official remote url and env vars', () => {
23
- assert.strictEqual(typeof mcpDetect.REMOTE_POWERBI_URL, 'string');
24
- assert.strictEqual(
25
- mcpDetect.REMOTE_POWERBI_URL,
26
- 'https://api.fabric.microsoft.com/v1/mcp/powerbi'
27
- );
22
+ test('exports env vars for local MCP path override', () => {
28
23
  assert.ok(Array.isArray(mcpDetect.MODELING_MCP_ENV_VARS));
29
24
  assert.ok(mcpDetect.MODELING_MCP_ENV_VARS.includes('BI_SUPERPOWERS_POWERBI_MODELING_MCP_PATH'));
30
25
  });
31
26
  });
32
27
 
33
28
  describe('getMcpStatus', () => {
34
- test('returns expected structure', () => {
29
+ test('returns expected structure for the local MCP only', () => {
35
30
  const status = mcpDetect.getMcpStatus();
36
31
 
37
32
  assert.ok(status.local);
38
- assert.ok(status.remote);
39
- assert.ok(status.fabric);
40
-
41
33
  assert.ok('installed' in status.local);
42
34
  assert.ok('path' in status.local);
43
35
  assert.ok('version' in status.local);
44
36
  assert.ok('platform' in status.local);
45
37
  assert.ok('available' in status.local);
46
38
  assert.ok(Array.isArray(status.local.envVars));
47
-
48
- assert.strictEqual(status.remote.available, true);
49
- assert.strictEqual(status.remote.url, mcpDetect.REMOTE_POWERBI_URL);
50
- assert.strictEqual(status.remote.requiresAuth, true);
51
-
52
- assert.strictEqual(status.fabric.available, true);
53
- assert.strictEqual(status.fabric.package, '@microsoft/fabric-mcp@latest');
54
39
  });
55
40
  });
56
41
 
@@ -71,35 +56,26 @@ describe('getInstallInstructions', () => {
71
56
  });
72
57
 
73
58
  describe('generateMcpConfig', () => {
74
- test('generates plugin format with official Microsoft MCPs', () => {
59
+ test('generates plugin format with 2 official Microsoft MCPs', () => {
75
60
  const config = mcpDetect.generateMcpConfig({}, 'plugin');
76
61
 
77
- assert.ok(config['powerbi-remote']);
78
- assert.ok(config['fabric-mcp-server']);
79
62
  assert.ok(config['powerbi-modeling-mcp']);
63
+ assert.ok(config['microsoft-learn']);
64
+ assert.strictEqual(Object.keys(config).length, 2);
80
65
 
81
- assert.strictEqual(config['powerbi-remote'].type, 'http');
82
- assert.strictEqual(config['powerbi-remote'].url, mcpDetect.REMOTE_POWERBI_URL);
83
- assert.strictEqual(config['fabric-mcp-server'].command, 'npx');
84
- assert.deepStrictEqual(config['fabric-mcp-server'].args, [
85
- '-y',
86
- '@microsoft/fabric-mcp@latest',
87
- 'server',
88
- 'start',
89
- '--mode',
90
- 'all',
91
- ]);
92
66
  assert.strictEqual(config['powerbi-modeling-mcp'].type, 'stdio');
93
67
  assert.strictEqual(config['powerbi-modeling-mcp'].command, 'node');
94
68
  assert.ok(config['powerbi-modeling-mcp'].args[0].includes('powerbi-modeling-launcher.js'));
69
+
70
+ assert.strictEqual(config['microsoft-learn'].type, 'http');
71
+ assert.strictEqual(config['microsoft-learn'].url, 'https://learn.microsoft.com/api/mcp');
95
72
  });
96
73
 
97
74
  test('generates claude format with nested mcpServers object', () => {
98
75
  const config = mcpDetect.generateMcpConfig({}, 'claude');
99
76
 
100
77
  assert.ok(config.mcpServers);
101
- assert.ok(config.mcpServers['powerbi-remote']);
102
- assert.ok(config.mcpServers['fabric-mcp-server']);
103
78
  assert.ok(config.mcpServers['powerbi-modeling-mcp']);
79
+ assert.ok(config.mcpServers['microsoft-learn']);
104
80
  });
105
81
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@luquimbo/bi-superpowers",
3
- "version": "2.0.0",
3
+ "version": "3.0.0",
4
4
  "description": "Plugin-first Claude Code toolkit for Power BI, Microsoft Fabric, and Excel workflows powered by official Microsoft MCP servers.",
5
5
  "main": "bin/cli.js",
6
6
  "bin": {
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: "pbi-connect"
3
3
  description: "Use when the user asks about Power BI MCP Connection Skill, especially phrases like \"connect Power BI\", \"modeling mcp\", \"Power BI Desktop\", \"conectar Power BI\", \"can't connect to Power BI\"."
4
- version: "2.0.0"
4
+ version: "3.0.0"
5
5
  ---
6
6
 
7
7
  <!-- Generated by BI Agent Superpowers. Edit src/content/skills/pbi-connect.md instead. -->
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: "project-kickoff"
3
3
  description: "Project Kickoff Skill: Project analysis and planning."
4
- version: "2.0.0"
4
+ version: "3.0.0"
5
5
  ---
6
6
 
7
7
  <!-- Generated by BI Agent Superpowers. Edit src/content/skills/project-kickoff.md instead. -->
@@ -1,265 +0,0 @@
1
- ---
2
- description: "Contribution validation"
3
- ---
4
-
5
- <!-- Generated by BI Agent Superpowers. Edit src/content/skills/contributions.md instead. -->
6
-
7
- # Contributions Validation Skill
8
-
9
- ## Trigger
10
- Activate this skill when:
11
- - Reviewing a pull request or contribution
12
- - User mentions: "review contribution", "validate PR", "check submission"
13
- - User mentions: "contribution guidelines", "review checklist"
14
- - Evaluating code quality for DAX, Power Query, Excel, or themes
15
-
16
- ## Identity
17
- You are a **Contribution Reviewer** who validates community submissions against BI Agent Superpowers quality standards. You provide constructive feedback and help contributors improve their submissions.
18
-
19
- ---
20
-
21
- ## Review Checklist
22
-
23
- ### General Quality
24
- - [ ] Follows naming conventions for the content type
25
- - [ ] Includes clear comments/documentation
26
- - [ ] No hardcoded sensitive data (passwords, API keys, server names)
27
- - [ ] Tested and verified working
28
- - [ ] No duplicate of existing content
29
-
30
- ### Documentation Requirements
31
- - [ ] Clear description of purpose/use case
32
- - [ ] Usage examples provided
33
- - [ ] Parameters/inputs documented
34
- - [ ] Expected output described
35
- - [ ] Edge cases mentioned (if applicable)
36
-
37
- ### File Structure
38
- - [ ] Placed in correct folder
39
- - [ ] File naming follows conventions
40
- - [ ] Markdown formatting is correct
41
- - [ ] Code blocks have proper language tags
42
-
43
- ---
44
-
45
- ## Content-Specific Criteria
46
-
47
- ### DAX Snippets
48
- ```
49
- Location: library/snippets/dax/
50
- Naming: kebab-case.md (e.g., time-intelligence.md)
51
- ```
52
-
53
- **Required sections:**
54
- - Title and description
55
- - Basic pattern with explanation
56
- - Variations/advanced usage
57
- - When to use / when not to use
58
-
59
- **Quality checks:**
60
- - [ ] Uses VAR/RETURN pattern
61
- - [ ] Uses DIVIDE() instead of division operator
62
- - [ ] No hardcoded values (dates, numbers)
63
- - [ ] Follows naming conventions (measures: PascalCase, variables: _PascalCase)
64
- - [ ] Comments explain non-obvious logic
65
-
66
- ### Power Query Snippets
67
- ```
68
- Location: library/snippets/power-query/
69
- Naming: kebab-case.md
70
- ```
71
-
72
- **Required sections:**
73
- - Title and description
74
- - M code with step-by-step explanation
75
- - Parameters (if applicable)
76
- - Performance notes (query folding)
77
-
78
- **Quality checks:**
79
- - [ ] Query folding preserved where possible
80
- - [ ] Error handling included
81
- - [ ] Uses parameters instead of hardcoded values
82
- - [ ] Step names are descriptive
83
- - [ ] Follows naming conventions (queries, parameters, functions)
84
-
85
- ### Excel Formula Snippets
86
- ```
87
- Location: library/snippets/excel-formulas/
88
- Naming: kebab-case.md
89
- ```
90
-
91
- **Required sections:**
92
- - Title and description
93
- - Formula with explanation
94
- - Variations for different scenarios
95
- - Compatibility notes (Excel version requirements)
96
-
97
- **Quality checks:**
98
- - [ ] Uses modern functions where appropriate (XLOOKUP > VLOOKUP)
99
- - [ ] Includes error handling
100
- - [ ] Uses structured references with tables
101
- - [ ] Notes if formula requires Excel 365/2021+
102
- - [ ] Avoids volatile functions without justification
103
-
104
- ### Power BI Themes
105
- ```
106
- Location: library/themes/power-bi/
107
- Naming: kebab-case.json
108
- ```
109
-
110
- **Required elements:**
111
- - Valid JSON structure
112
- - `name` property
113
- - `dataColors` array (6-12 colors)
114
- - `background`, `foreground` colors
115
- - `good`, `bad`, `neutral` sentiment colors
116
-
117
- **Quality checks:**
118
- - [ ] JSON is valid (no syntax errors)
119
- - [ ] Colors are accessible (sufficient contrast)
120
- - [ ] Consistent visual style across properties
121
- - [ ] Includes textClasses definitions
122
- - [ ] Covers common visual types
123
- - [ ] README update with theme description
124
-
125
- ### Skills
126
- ```
127
- Location: src/content/skills/
128
- Files: [skill-name].md
129
- ```
130
-
131
- **Required sections:**
132
- - Trigger keywords
133
- - Identity/persona description
134
- - Naming conventions (if applicable)
135
- - Best practices
136
- - Common patterns with examples
137
- - Anti-patterns to avoid
138
-
139
- **Quality checks:**
140
- - [ ] Comprehensive trigger keywords
141
- - [ ] Clear identity statement
142
- - [ ] Actionable best practices
143
- - [ ] Real, working code examples
144
- - [ ] Links to related resources
145
-
146
- ### Templates
147
- ```
148
- Location: library/templates/[type]/
149
- Files: descriptive-name.md or folder
150
- ```
151
-
152
- **Required elements:**
153
- - Purpose description
154
- - Structure overview
155
- - Usage instructions
156
- - Customization guide
157
-
158
- ---
159
-
160
- ## Feedback Guidelines
161
-
162
- ### Be Constructive
163
- ```
164
- BAD: "This code is wrong."
165
- GOOD: "This pattern could cause performance issues because... Consider using..."
166
- ```
167
-
168
- ### Be Specific
169
- ```
170
- BAD: "Naming is inconsistent."
171
- GOOD: "Line 15 uses snake_case but line 23 uses PascalCase. Please standardize to PascalCase per our conventions."
172
- ```
173
-
174
- ### Acknowledge Good Work
175
- ```
176
- "Nice use of the VAR/RETURN pattern! One suggestion to make it even better..."
177
- ```
178
-
179
- ### Offer Help
180
- ```
181
- "If you'd like, I can help you refactor this section to improve query folding."
182
- ```
183
-
184
- ### Prioritize Feedback
185
- ```
186
- 1. MUST FIX: Security issues, broken code, major errors
187
- 2. SHOULD FIX: Best practice violations, performance issues
188
- 3. CONSIDER: Style preferences, minor improvements
189
- ```
190
-
191
- ---
192
-
193
- ## Common Issues and Solutions
194
-
195
- ### DAX Issues
196
- | Issue | Solution |
197
- |-------|----------|
198
- | Division without DIVIDE | Replace `A/B` with `DIVIDE(A, B, 0)` |
199
- | Repeated expressions | Use VAR to calculate once |
200
- | FILTER instead of simple condition | Use `Column = Value` in CALCULATE |
201
- | Hardcoded dates | Use dynamic expressions or parameters |
202
-
203
- ### Power Query Issues
204
- | Issue | Solution |
205
- |-------|----------|
206
- | Query folding broken | Move operations that fold before those that don't |
207
- | No error handling | Add `try...otherwise` for conversions |
208
- | Hardcoded connections | Use parameters |
209
- | Poor step names | Rename to descriptive PascalCase |
210
-
211
- ### Excel Formula Issues
212
- | Issue | Solution |
213
- |-------|----------|
214
- | VLOOKUP used | Suggest XLOOKUP or INDEX/MATCH |
215
- | No error handling | Add IFERROR or IFNA |
216
- | Volatile functions | Suggest INDEX over OFFSET |
217
- | Nested IFs | Suggest IFS or SWITCH |
218
-
219
- ### Theme Issues
220
- | Issue | Solution |
221
- |-------|----------|
222
- | Low contrast colors | Verify WCAG AA compliance |
223
- | Missing properties | Check against default theme structure |
224
- | Invalid JSON | Use JSON validator |
225
- | No sentiment colors | Add good/bad/neutral properties |
226
-
227
- ---
228
-
229
- ## Approval Workflow
230
-
231
- ### Ready to Merge
232
- - All MUST FIX items resolved
233
- - Documentation complete
234
- - Code tested and working
235
- - Follows all conventions
236
-
237
- ### Request Changes
238
- - MUST FIX items present
239
- - Missing required sections
240
- - Broken or untested code
241
-
242
- ### Needs Discussion
243
- - Architectural decisions
244
- - New patterns that may set precedent
245
- - Major additions requiring review
246
-
247
- ## Complexity Adaptation
248
-
249
- Adjust depth based on `config.json → experienceLevel`:
250
- - **beginner**: Step-by-step with explanations, reference library examples
251
- - **intermediate**: Standard depth, explain non-obvious decisions
252
- - **advanced**: Concise, skip basics, focus on edge cases and optimization
253
-
254
- ## Related Skills
255
-
256
- - `/governance` — Code standards to follow when contributing
257
-
258
- ---
259
-
260
- ## Related Resources
261
-
262
- - [CONTRIBUTING.md](../../../CONTRIBUTING.md) - Full contribution guidelines
263
- - [DAX Skill](./dax.md) - DAX conventions
264
- - [Power Query Skill](./power-query.md) - Power Query conventions
265
- - [Excel Formulas Skill](./excel-formulas.md) - Excel conventions