@luquimbo/bi-superpowers 4.1.6 → 5.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.
- package/.claude-plugin/marketplace.json +8 -6
- package/.claude-plugin/plugin.json +1 -1
- package/.claude-plugin/skill-manifest.json +35 -19
- package/.plugin/plugin.json +1 -1
- package/AGENTS.md +150 -26
- package/CHANGELOG.md +489 -14
- package/README.md +103 -114
- package/bin/cli.js +7 -1
- package/bin/commands/diff.js +2 -2
- package/bin/commands/install.js +58 -45
- package/bin/commands/lint.js +2 -2
- package/bin/commands/validate-projects.js +425 -0
- package/bin/lib/generators/claude-plugin.js +31 -7
- package/bin/lib/generators/shared.js +11 -7
- package/bin/lib/mcp-config.js +22 -2
- package/bin/lib/skills.js +8 -8
- package/bin/mcp/powerbi-modeling-launcher.js +8 -4
- package/bin/postinstall.js +14 -12
- package/bin/utils/mcp-detect.js +11 -11
- package/commands/bi-connect.md +418 -0
- package/commands/bi-dax.md +385 -0
- package/commands/{project-kickoff.md → bi-kickoff.md} +78 -47
- package/commands/bi-modeling.md +395 -0
- package/commands/bi-performance.md +455 -0
- package/commands/bi-start.md +39 -27
- package/desktop-extension/manifest.json +2 -2
- package/package.json +3 -2
- package/skills/bi-connect/SKILL.md +420 -0
- package/skills/{pbi-connect → bi-connect}/scripts/update-check.js +1 -1
- package/skills/bi-dax/SKILL.md +387 -0
- package/skills/{report-design → bi-dax}/scripts/update-check.js +1 -1
- package/skills/{project-kickoff → bi-kickoff}/SKILL.md +79 -48
- package/skills/{project-kickoff → bi-kickoff}/scripts/update-check.js +1 -1
- package/skills/bi-modeling/SKILL.md +397 -0
- package/skills/bi-modeling/scripts/update-check.js +403 -0
- package/skills/bi-performance/SKILL.md +457 -0
- package/skills/bi-performance/scripts/install-tabular-editor.ps1 +90 -0
- package/skills/bi-performance/scripts/run-bpa.ps1 +161 -0
- package/skills/bi-performance/scripts/update-check.js +403 -0
- package/skills/bi-start/SKILL.md +40 -28
- package/skills/bi-start/scripts/update-check.js +1 -1
- package/src/content/base.md +15 -10
- package/src/content/routing.md +15 -18
- package/src/content/skills/bi-connect.md +391 -0
- package/src/content/skills/bi-dax.md +358 -0
- package/src/content/skills/{project-kickoff.md → bi-kickoff.md} +75 -44
- package/src/content/skills/bi-modeling.md +368 -0
- package/src/content/skills/bi-performance/SKILL.md +428 -0
- package/src/content/skills/bi-performance/scripts/install-tabular-editor.ps1 +90 -0
- package/src/content/skills/bi-performance/scripts/run-bpa.ps1 +161 -0
- package/src/content/skills/bi-start.md +39 -27
- package/theme/BISuperpowers.json +3888 -0
- package/commands/pbi-connect.md +0 -253
- package/commands/report-design.md +0 -403
- package/skills/pbi-connect/SKILL.md +0 -255
- package/skills/report-design/SKILL.md +0 -405
- package/skills/report-design/references/cli-commands.md +0 -184
- package/skills/report-design/references/cli-setup.md +0 -101
- package/skills/report-design/references/close-write-open-pattern.md +0 -80
- package/skills/report-design/references/layouts/finance.md +0 -65
- package/skills/report-design/references/layouts/generic.md +0 -46
- package/skills/report-design/references/layouts/hr.md +0 -48
- package/skills/report-design/references/layouts/marketing.md +0 -45
- package/skills/report-design/references/layouts/operations.md +0 -44
- package/skills/report-design/references/layouts/sales.md +0 -50
- package/skills/report-design/references/native-visuals.md +0 -341
- package/skills/report-design/references/pbi-desktop-installation.md +0 -87
- package/skills/report-design/references/pbir-preview-activation.md +0 -40
- package/skills/report-design/references/slicer.md +0 -89
- package/skills/report-design/references/textbox.md +0 -101
- package/skills/report-design/references/themes/BISuperpowers.json +0 -915
- package/skills/report-design/references/troubleshooting.md +0 -135
- package/skills/report-design/references/visual-types.md +0 -78
- package/skills/report-design/scripts/apply-theme.js +0 -243
- package/skills/report-design/scripts/create-visual.js +0 -942
- package/skills/report-design/scripts/ensure-pbi-cli.sh +0 -41
- package/skills/report-design/scripts/validate-pbir.js +0 -351
- package/src/content/skills/pbi-connect.md +0 -226
- package/src/content/skills/report-design/SKILL.md +0 -376
- package/src/content/skills/report-design/references/cli-commands.md +0 -184
- package/src/content/skills/report-design/references/cli-setup.md +0 -101
- package/src/content/skills/report-design/references/close-write-open-pattern.md +0 -80
- package/src/content/skills/report-design/references/layouts/finance.md +0 -65
- package/src/content/skills/report-design/references/layouts/generic.md +0 -46
- package/src/content/skills/report-design/references/layouts/hr.md +0 -48
- package/src/content/skills/report-design/references/layouts/marketing.md +0 -45
- package/src/content/skills/report-design/references/layouts/operations.md +0 -44
- package/src/content/skills/report-design/references/layouts/sales.md +0 -50
- package/src/content/skills/report-design/references/native-visuals.md +0 -341
- package/src/content/skills/report-design/references/pbi-desktop-installation.md +0 -87
- package/src/content/skills/report-design/references/pbir-preview-activation.md +0 -40
- package/src/content/skills/report-design/references/slicer.md +0 -89
- package/src/content/skills/report-design/references/textbox.md +0 -101
- package/src/content/skills/report-design/references/themes/BISuperpowers.json +0 -915
- package/src/content/skills/report-design/references/troubleshooting.md +0 -135
- package/src/content/skills/report-design/references/visual-types.md +0 -78
- package/src/content/skills/report-design/scripts/apply-theme.js +0 -243
- package/src/content/skills/report-design/scripts/create-visual.js +0 -942
- package/src/content/skills/report-design/scripts/ensure-pbi-cli.sh +0 -41
- package/src/content/skills/report-design/scripts/validate-pbir.js +0 -351
|
@@ -20,12 +20,21 @@ const {
|
|
|
20
20
|
} = require('../microsoft-mcp');
|
|
21
21
|
const { parseSkillMetadata, getSkillPurpose } = require('./shared');
|
|
22
22
|
|
|
23
|
-
// Currently the plugin ships
|
|
24
|
-
//
|
|
25
|
-
//
|
|
23
|
+
// Currently the plugin ships 6 command skills:
|
|
24
|
+
// - bi-start: session-opener that routes to the BI specialists.
|
|
25
|
+
// - bi-kickoff: new-project bootstrap with AGENTS.md scaffolding.
|
|
26
|
+
// - bi-modeling / bi-dax / bi-performance: model design, DAX, profiling.
|
|
27
|
+
// - bi-connect: MCP connection + DAX UDFs.
|
|
26
28
|
// The old reference-skills split is kept as an empty set so that any
|
|
27
29
|
// downstream code that checks `REFERENCE_SKILLS.has(x)` still works.
|
|
28
|
-
const COMMAND_SKILLS = new Set([
|
|
30
|
+
const COMMAND_SKILLS = new Set([
|
|
31
|
+
'bi-start',
|
|
32
|
+
'bi-kickoff',
|
|
33
|
+
'bi-modeling',
|
|
34
|
+
'bi-dax',
|
|
35
|
+
'bi-performance',
|
|
36
|
+
'bi-connect',
|
|
37
|
+
]);
|
|
29
38
|
|
|
30
39
|
const REFERENCE_SKILLS = new Set();
|
|
31
40
|
|
|
@@ -124,6 +133,19 @@ function toFrontmatterValue(value) {
|
|
|
124
133
|
return JSON.stringify(value);
|
|
125
134
|
}
|
|
126
135
|
|
|
136
|
+
/**
|
|
137
|
+
* Return the canonical source path that maintainers should edit.
|
|
138
|
+
*
|
|
139
|
+
* @param {Object} skill - Skill definition object
|
|
140
|
+
* @returns {string} Source path relative to the repository root
|
|
141
|
+
*/
|
|
142
|
+
function getSourceEditPath(skill) {
|
|
143
|
+
if (skill.bundleDir) {
|
|
144
|
+
return `src/content/skills/${skill.name}/SKILL.md`;
|
|
145
|
+
}
|
|
146
|
+
return `src/content/skills/${skill.name}.md`;
|
|
147
|
+
}
|
|
148
|
+
|
|
127
149
|
// ---------------------------------------------------------------------------
|
|
128
150
|
// Update-check preamble
|
|
129
151
|
// ---------------------------------------------------------------------------
|
|
@@ -150,7 +172,7 @@ node "{skillBundleDir}/scripts/update-check.js" --silent-if-uptodate --silent-if
|
|
|
150
172
|
|
|
151
173
|
- Empty output or \`UPTODATE\` — proceed with the skill silently. No message.
|
|
152
174
|
- \`UPDATE_AVAILABLE <installed> <latest>\` — tell the user exactly once this conversation, before diving into the skill:
|
|
153
|
-
> "
|
|
175
|
+
> "bi-superpowers v{latest} is available (you are on v{installed}). Update with \`super upgrade\` (or \`/plugin update bi-superpowers\` in Claude Code) when convenient. If you use a local plugin generated with \`super kickoff\`, run \`super recharge\` in that repo afterwards."
|
|
154
176
|
|
|
155
177
|
Then continue with the skill below.
|
|
156
178
|
- \`SNOOZED <iso>\` — proceed silently.
|
|
@@ -185,12 +207,13 @@ function buildCommandMarkdown(skill, libraryPrefix, options = {}) {
|
|
|
185
207
|
const description = getSkillPurpose(skill.name);
|
|
186
208
|
const content = rewriteLibraryReferences(skill.content, libraryPrefix);
|
|
187
209
|
const preamble = shouldIncludeUpdateCheckPreamble(skill, options) ? UPDATE_CHECK_PREAMBLE : '';
|
|
210
|
+
const sourceEditPath = getSourceEditPath(skill);
|
|
188
211
|
|
|
189
212
|
return `---
|
|
190
213
|
description: ${toFrontmatterValue(description)}
|
|
191
214
|
---
|
|
192
215
|
|
|
193
|
-
<!-- Generated by BI Agent Superpowers. Edit
|
|
216
|
+
<!-- Generated by BI Agent Superpowers. Edit ${sourceEditPath} instead. -->
|
|
194
217
|
|
|
195
218
|
${preamble}${content}`;
|
|
196
219
|
}
|
|
@@ -208,6 +231,7 @@ ${preamble}${content}`;
|
|
|
208
231
|
function buildSkillMarkdown(skill, version, libraryPrefix, options = {}) {
|
|
209
232
|
const content = rewriteLibraryReferences(skill.content, libraryPrefix);
|
|
210
233
|
const preamble = shouldIncludeUpdateCheckPreamble(skill, options) ? UPDATE_CHECK_PREAMBLE : '';
|
|
234
|
+
const sourceEditPath = getSourceEditPath(skill);
|
|
211
235
|
|
|
212
236
|
return `---
|
|
213
237
|
name: ${toFrontmatterValue(skill.name)}
|
|
@@ -215,7 +239,7 @@ description: ${toFrontmatterValue(getPluginDescription(skill))}
|
|
|
215
239
|
version: ${toFrontmatterValue(version)}
|
|
216
240
|
---
|
|
217
241
|
|
|
218
|
-
<!-- Generated by BI Agent Superpowers. Edit
|
|
242
|
+
<!-- Generated by BI Agent Superpowers. Edit ${sourceEditPath} instead. -->
|
|
219
243
|
|
|
220
244
|
${preamble}${content}`;
|
|
221
245
|
}
|
|
@@ -35,8 +35,8 @@ function parseSkillMetadata(content) {
|
|
|
35
35
|
// - Prose bullets: - User mentions: "analizar proyecto", "new project"
|
|
36
36
|
// - Asterisk bullets: * "pattern"
|
|
37
37
|
// The regex intentionally doesn't anchor to bullet syntax — that's
|
|
38
|
-
// what broke extraction for
|
|
39
|
-
//
|
|
38
|
+
// what broke extraction for bi-kickoff (prose) and under-counted
|
|
39
|
+
// bi-connect (first quote per bullet only) before this change.
|
|
40
40
|
const triggerSection = content.match(/##\s+Trigger[\s\S]*?(?=##|$)/i);
|
|
41
41
|
if (triggerSection) {
|
|
42
42
|
const quotedFragments = triggerSection[0].match(/"([^"]+)"/g);
|
|
@@ -65,9 +65,15 @@ function parseSkillMetadata(content) {
|
|
|
65
65
|
*/
|
|
66
66
|
const SKILL_PURPOSES = {
|
|
67
67
|
'bi-start': 'Session opener — environment snapshot, update check, and routing to other skills',
|
|
68
|
-
'
|
|
69
|
-
|
|
70
|
-
'
|
|
68
|
+
'bi-kickoff':
|
|
69
|
+
'New-project bootstrap — AGENTS.md, ROADMAP.md, foundation model with fictitious data',
|
|
70
|
+
'bi-modeling':
|
|
71
|
+
'Semantic model design and audit — star schema, relationships, Date Table, health checklist',
|
|
72
|
+
'bi-dax':
|
|
73
|
+
'DAX authoring, debugging, and optimization — measures, calculation groups, SE/FE timing, Sallieri patterns',
|
|
74
|
+
'bi-performance':
|
|
75
|
+
'Performance profiling — Performance Analyzer, VertiPaq DMVs, refresh diagnostics, Tabular Editor 2 / BPA',
|
|
76
|
+
'bi-connect': 'Power BI Desktop MCP connection and DAX UDF authoring',
|
|
71
77
|
};
|
|
72
78
|
|
|
73
79
|
/**
|
|
@@ -205,8 +211,6 @@ function getFormatFooter() {
|
|
|
205
211
|
## Resources
|
|
206
212
|
|
|
207
213
|
- Skills: \`skills/*/SKILL.md\` - BI workflow instructions
|
|
208
|
-
- Report design references: \`skills/report-design/references/\` - PBIR layouts, themes, native visuals, and troubleshooting
|
|
209
|
-
- Runtime scripts: \`skills/report-design/scripts/\` - PBIR visual, theme, and validation helpers
|
|
210
214
|
|
|
211
215
|
---
|
|
212
216
|
|
package/bin/lib/mcp-config.js
CHANGED
|
@@ -31,6 +31,19 @@ const os = require('os');
|
|
|
31
31
|
const MICROSOFT_LEARN_URL = 'https://learn.microsoft.com/api/mcp';
|
|
32
32
|
const MODELING_SERVER_NAME = 'powerbi-modeling-mcp';
|
|
33
33
|
const LEARN_SERVER_NAME = 'microsoft-learn';
|
|
34
|
+
const CODEX_POWERBI_WRITE_TOOLS = [
|
|
35
|
+
'column_operations',
|
|
36
|
+
'database_operations',
|
|
37
|
+
'function_operations',
|
|
38
|
+
'measure_operations',
|
|
39
|
+
'object_translation_operations',
|
|
40
|
+
'partition_operations',
|
|
41
|
+
'perspective_operations',
|
|
42
|
+
'query_group_operations',
|
|
43
|
+
'relationship_operations',
|
|
44
|
+
'table_operations',
|
|
45
|
+
'user_hierarchy_operations',
|
|
46
|
+
];
|
|
34
47
|
|
|
35
48
|
/**
|
|
36
49
|
* Resolves the absolute path to the Power BI Modeling MCP launcher
|
|
@@ -418,18 +431,25 @@ function writeCodexConfig(packageDir) {
|
|
|
418
431
|
// Remove any previous bi-superpowers MCP sections so re-running install
|
|
419
432
|
// doesn't duplicate them. Strips each section from its header to the
|
|
420
433
|
// next [ header or EOF. Server names are escaped for regex safety even
|
|
421
|
-
// though current values are literal
|
|
434
|
+
// though current values are literal. The optional suffix removes child
|
|
435
|
+
// sections like [mcp_servers.powerbi-modeling-mcp.tools.measure_operations].
|
|
422
436
|
const namePattern = [MODELING_SERVER_NAME, LEARN_SERVER_NAME].map(escapeRegex).join('|');
|
|
423
437
|
const stripPattern = new RegExp(
|
|
424
|
-
`\\n?\\[mcp_servers\\.(${namePattern})
|
|
438
|
+
`\\n?\\[mcp_servers\\.(${namePattern})(?:\\.[^\\]]+)?\\][\\s\\S]*?(?=\\n\\[|$)`,
|
|
425
439
|
'g'
|
|
426
440
|
);
|
|
427
441
|
existing = existing.replace(stripPattern, '');
|
|
428
442
|
|
|
443
|
+
const writeToolApprovals = CODEX_POWERBI_WRITE_TOOLS.map(
|
|
444
|
+
(toolName) =>
|
|
445
|
+
`\n[mcp_servers.${MODELING_SERVER_NAME}.tools.${toolName}]\n` + 'approval_mode = "approve"\n'
|
|
446
|
+
).join('');
|
|
447
|
+
|
|
429
448
|
const newSections =
|
|
430
449
|
`\n\n[mcp_servers.${MODELING_SERVER_NAME}]\n` +
|
|
431
450
|
'command = "node"\n' +
|
|
432
451
|
`args = ["${tomlEscape(launcher)}"]\n` +
|
|
452
|
+
writeToolApprovals +
|
|
433
453
|
`\n[mcp_servers.${LEARN_SERVER_NAME}]\n` +
|
|
434
454
|
`url = "${MICROSOFT_LEARN_URL}"\n`;
|
|
435
455
|
|
package/bin/lib/skills.js
CHANGED
|
@@ -38,7 +38,7 @@ function loadFlatSkill(filePath) {
|
|
|
38
38
|
bundleDir: null,
|
|
39
39
|
};
|
|
40
40
|
} catch (err) {
|
|
41
|
-
console.warn(`⚠
|
|
41
|
+
console.warn(`⚠ Could not read skill ${filePath}: ${err.message}`);
|
|
42
42
|
return null;
|
|
43
43
|
}
|
|
44
44
|
}
|
|
@@ -63,7 +63,7 @@ function loadFolderSkill(folderPath) {
|
|
|
63
63
|
bundleDir: folderPath,
|
|
64
64
|
};
|
|
65
65
|
} catch (err) {
|
|
66
|
-
console.warn(`⚠
|
|
66
|
+
console.warn(`⚠ Could not read skill ${skillMd}: ${err.message}`);
|
|
67
67
|
return null;
|
|
68
68
|
}
|
|
69
69
|
}
|
|
@@ -89,7 +89,7 @@ function readSkillDirectory(directory) {
|
|
|
89
89
|
try {
|
|
90
90
|
entries = fs.readdirSync(directory, { withFileTypes: true });
|
|
91
91
|
} catch (err) {
|
|
92
|
-
console.warn(`⚠
|
|
92
|
+
console.warn(`⚠ Could not read skills directory ${directory}: ${err.message}`);
|
|
93
93
|
return [];
|
|
94
94
|
}
|
|
95
95
|
|
|
@@ -138,16 +138,16 @@ function loadSkills(options = {}) {
|
|
|
138
138
|
/**
|
|
139
139
|
* Normalize any user-facing skill identifier into its canonical name.
|
|
140
140
|
*
|
|
141
|
-
* Accepts `dax`, `dax.md`, `
|
|
142
|
-
* or `
|
|
141
|
+
* Accepts `dax`, `dax.md`, `folder-skill`, `folder-skill/SKILL.md`,
|
|
142
|
+
* or `folder-skill\SKILL.md` (Windows separator) and returns the
|
|
143
143
|
* canonical skill name used as the key in readSkillDirectory's
|
|
144
|
-
* output map (`dax`, `
|
|
144
|
+
* output map (`dax`, `folder-skill`).
|
|
145
145
|
*
|
|
146
146
|
* Uses a single alternation regex so the longer suffix `/SKILL.md`
|
|
147
147
|
* is tried BEFORE the bare `.md`. Earlier callers chained two
|
|
148
148
|
* `.replace()` calls and stripped `.md` first, which meant the
|
|
149
|
-
* `/SKILL.md` alternative never matched — `
|
|
150
|
-
* came out as `
|
|
149
|
+
* `/SKILL.md` alternative never matched — `folder-skill/SKILL.md`
|
|
150
|
+
* came out as `folder-skill/SKILL` and the lookup failed.
|
|
151
151
|
*
|
|
152
152
|
* @param {string} input - User-supplied skill identifier
|
|
153
153
|
* @returns {string} Canonical skill name
|
|
@@ -18,10 +18,14 @@ if (!executablePath) {
|
|
|
18
18
|
process.exit(1);
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
-
const child = spawn(
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
21
|
+
const child = spawn(
|
|
22
|
+
executablePath,
|
|
23
|
+
['--readwrite', '--skip-confirmation', ...process.argv.slice(2)],
|
|
24
|
+
{
|
|
25
|
+
stdio: 'inherit',
|
|
26
|
+
env: process.env,
|
|
27
|
+
}
|
|
28
|
+
);
|
|
25
29
|
|
|
26
30
|
child.on('error', (error) => {
|
|
27
31
|
console.error(`Failed to launch Power BI Modeling MCP: ${error.message}`);
|
package/bin/postinstall.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Post-install script for BI Agent Superpowers
|
|
5
|
-
* Shows helpful information after npm install
|
|
5
|
+
* Shows helpful information after npm install.
|
|
6
6
|
* Developed by Lucas Sanchez (@luquimbo)
|
|
7
7
|
*/
|
|
8
8
|
|
|
@@ -12,32 +12,34 @@ console.log(`
|
|
|
12
12
|
╔═══════════════════════════════════════════════════════════╗
|
|
13
13
|
║ ║
|
|
14
14
|
║ BI Agent Superpowers v${VERSION.padEnd(34)}║
|
|
15
|
-
║
|
|
15
|
+
║ Power BI Desktop toolkit — open source (MIT) ║
|
|
16
16
|
║ Developed by Lucas Sanchez (@luquimbo) ║
|
|
17
17
|
║ ║
|
|
18
18
|
╚═══════════════════════════════════════════════════════════╝
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
Installed successfully.
|
|
21
21
|
|
|
22
22
|
Quick Start:
|
|
23
|
-
super install #
|
|
23
|
+
super install # Install skills + MCPs in your AI agents
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
Works with 5 agents:
|
|
26
26
|
• Claude Code
|
|
27
27
|
• GitHub Copilot
|
|
28
28
|
• Codex (OpenAI)
|
|
29
29
|
• Gemini CLI
|
|
30
30
|
• Kilo Code
|
|
31
31
|
|
|
32
|
-
|
|
33
|
-
/bi-start —
|
|
34
|
-
/
|
|
35
|
-
/
|
|
36
|
-
/
|
|
32
|
+
6 skills:
|
|
33
|
+
/bi-start — Session opener and specialist routing
|
|
34
|
+
/bi-kickoff — New BI project bootstrap
|
|
35
|
+
/bi-modeling — Semantic model design and audit
|
|
36
|
+
/bi-dax — DAX authoring, debugging, and optimization
|
|
37
|
+
/bi-performance — Performance profiling, VertiPaq, and BPA
|
|
38
|
+
/bi-connect — Power BI Desktop MCP connection and DAX UDFs
|
|
37
39
|
|
|
38
40
|
2 MCP servers:
|
|
39
|
-
powerbi-modeling-mcp —
|
|
40
|
-
microsoft-learn
|
|
41
|
+
powerbi-modeling-mcp — Local Power BI Desktop connection (XMLA)
|
|
42
|
+
microsoft-learn — Microsoft Learn docs in context
|
|
41
43
|
|
|
42
44
|
Documentation: https://github.com/luquimbo/bi-superpowers
|
|
43
45
|
`);
|
package/bin/utils/mcp-detect.js
CHANGED
|
@@ -179,33 +179,33 @@ function getMcpStatus() {
|
|
|
179
179
|
*/
|
|
180
180
|
function getInstallInstructions() {
|
|
181
181
|
return {
|
|
182
|
-
title: 'Power BI Modeling MCP
|
|
182
|
+
title: 'Power BI Modeling MCP not detected',
|
|
183
183
|
options: [
|
|
184
184
|
{
|
|
185
185
|
name: 'VS Code / Cursor',
|
|
186
186
|
steps: [
|
|
187
|
-
'
|
|
188
|
-
'
|
|
189
|
-
'
|
|
190
|
-
'
|
|
191
|
-
'
|
|
187
|
+
'Open VS Code or Cursor',
|
|
188
|
+
'Go to Extensions (Ctrl+Shift+X)',
|
|
189
|
+
'Search for "Power BI Modeling MCP"',
|
|
190
|
+
'Install the Microsoft extension',
|
|
191
|
+
'Run: super install --all --yes',
|
|
192
192
|
],
|
|
193
193
|
link: 'https://aka.ms/powerbi-modeling-mcp-vscode',
|
|
194
194
|
},
|
|
195
195
|
{
|
|
196
196
|
name: 'Manual',
|
|
197
197
|
steps: [
|
|
198
|
-
'
|
|
199
|
-
'
|
|
200
|
-
`
|
|
201
|
-
'
|
|
198
|
+
'Download the VSIX from VS Code Marketplace',
|
|
199
|
+
'Rename .vsix to .zip',
|
|
200
|
+
`Extract to ${path.join(os.homedir(), '.bi-superpowers', 'mcp')}`,
|
|
201
|
+
'Set BI_SUPERPOWERS_POWERBI_MODELING_MCP_PATH to the .exe path',
|
|
202
202
|
],
|
|
203
203
|
link: 'https://marketplace.visualstudio.com/items?itemName=analysis-services.powerbi-modeling-mcp',
|
|
204
204
|
},
|
|
205
205
|
],
|
|
206
206
|
note:
|
|
207
207
|
os.platform() !== 'win32'
|
|
208
|
-
? '
|
|
208
|
+
? 'The local MCP is only available on Windows. On macOS/Linux, microsoft-learn still provides official docs.'
|
|
209
209
|
: null,
|
|
210
210
|
};
|
|
211
211
|
}
|