@luquimbo/bi-superpowers 5.0.0 → 5.0.2
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 +5 -3
- package/.claude-plugin/plugin.json +1 -1
- package/.claude-plugin/skill-manifest.json +23 -7
- package/.plugin/plugin.json +1 -1
- package/AGENTS.md +124 -26
- package/CHANGELOG.md +494 -16
- package/README.md +33 -117
- package/bin/cli.js +1 -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 +1 -1
- package/bin/lib/generators/claude-plugin.js +14 -5
- package/bin/lib/generators/shared.js +9 -5
- 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 +34 -17
- package/commands/bi-dax.md +385 -0
- package/commands/bi-kickoff.md +75 -44
- package/commands/bi-modeling.md +395 -0
- package/commands/bi-performance.md +455 -0
- package/commands/bi-start.md +30 -18
- package/desktop-extension/manifest.json +2 -2
- package/package.json +6 -3
- package/skills/bi-connect/SKILL.md +34 -17
- package/skills/bi-connect/scripts/update-check.js +1 -1
- package/skills/bi-dax/SKILL.md +387 -0
- package/skills/{bi-report → bi-dax}/scripts/update-check.js +1 -1
- package/skills/bi-kickoff/SKILL.md +75 -44
- package/skills/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 +31 -19
- package/skills/bi-start/scripts/update-check.js +1 -1
- package/src/content/base.md +13 -8
- package/src/content/routing.md +1 -5
- package/src/content/skills/bi-connect.md +32 -15
- package/src/content/skills/bi-dax.md +358 -0
- package/src/content/skills/bi-kickoff.md +73 -42
- 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 +30 -18
- package/templates/sales/AGENTS.md +33 -0
- package/templates/sales/sales-template.Report/.platform +11 -0
- package/templates/sales/sales-template.Report/StaticResources/RegisteredResources/BISuperpowers.json +3888 -0
- package/templates/sales/sales-template.Report/StaticResources/SharedResources/BaseThemes/Fluent2-CY26SU03.json +4104 -0
- package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/page.json +123 -0
- package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/10420560e5b8c5235857/visual.json +16 -0
- package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/2181c54a94f0c67abb2d/visual.json +283 -0
- package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/24eba6a7af0b59974ef5/visual.json +703 -0
- package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/26db24c91e5b615a5c29/mobile.json +11 -0
- package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/26db24c91e5b615a5c29/visual.json +528 -0
- package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/2ec652d0956901dd2afd/mobile.json +11 -0
- package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/2ec652d0956901dd2afd/visual.json +324 -0
- package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/45dda4e0b159becf2dcd/mobile.json +11 -0
- package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/45dda4e0b159becf2dcd/visual.json +359 -0
- package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/4ca8800cf1539ad423f2/visual.json +468 -0
- package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/4f5704218eb88f7cdff6/mobile.json +29 -0
- package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/4f5704218eb88f7cdff6/visual.json +241 -0
- package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/54d3fdbedbbb863a9d7a/visual.json +575 -0
- package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/68043403e96ca8ed23e8/visual.json +575 -0
- package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/80b54a678ef36a250994/visual.json +351 -0
- package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/814f624b6056dc4c8de5/mobile.json +11 -0
- package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/814f624b6056dc4c8de5/visual.json +421 -0
- package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/85e1cc13559f4e107ede/visual.json +681 -0
- package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/8686961b837e855963fe/mobile.json +11 -0
- package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/8686961b837e855963fe/visual.json +720 -0
- package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/8d302c5b7e87e8cb57bb/visual.json +590 -0
- package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/a02c5b30f2e757637d78/mobile.json +11 -0
- package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/a02c5b30f2e757637d78/visual.json +102 -0
- package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/a405d29e7744c770d445/visual.json +575 -0
- package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/b0dc2036d3cf2baafb35/mobile.json +11 -0
- package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/b0dc2036d3cf2baafb35/visual.json +333 -0
- package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/cdd696baaf3b80b326f8/mobile.json +11 -0
- package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/cdd696baaf3b80b326f8/visual.json +468 -0
- package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/ff77ca1bafff5bfe5044/mobile.json +11 -0
- package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/ff77ca1bafff5bfe5044/visual.json +523 -0
- package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/page.json +130 -0
- package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/0352fd80d074693a65db/visual.json +681 -0
- package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/1c5a14bf493697344b68/visual.json +351 -0
- package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/3486cf7624c5b109b4e5/mobile.json +11 -0
- package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/3486cf7624c5b109b4e5/visual.json +333 -0
- package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/4d8b989008edc0db28d1/mobile.json +11 -0
- package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/4d8b989008edc0db28d1/visual.json +102 -0
- package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/5f4d76bbc870118e9840/mobile.json +11 -0
- package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/5f4d76bbc870118e9840/visual.json +468 -0
- package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/73629e1abebb7a444b59/mobile.json +11 -0
- package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/73629e1abebb7a444b59/visual.json +359 -0
- package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/749cb1388c7e0a88161c/visual.json +685 -0
- package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/85090dcdf75ac2487d1e/visual.json +283 -0
- package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/92cf92e3da10493adb78/visual.json +468 -0
- package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/a30bd0950630ed94e8a3/visual.json +590 -0
- package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/a56e91d9400a835e4814/mobile.json +11 -0
- package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/a56e91d9400a835e4814/visual.json +528 -0
- package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/a90aaa3e3117494f18f8/mobile.json +11 -0
- package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/a90aaa3e3117494f18f8/visual.json +523 -0
- package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/aded24cd205c0b528642/mobile.json +11 -0
- package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/aded24cd205c0b528642/visual.json +720 -0
- package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/af34b26f14a8a724c9a9/mobile.json +37 -0
- package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/af34b26f14a8a724c9a9/visual.json +1230 -0
- package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/b06ef80aa78cabcef8a6/mobile.json +11 -0
- package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/b06ef80aa78cabcef8a6/visual.json +324 -0
- package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/d97979633a91e041107e/mobile.json +11 -0
- package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/d97979633a91e041107e/visual.json +421 -0
- package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/fa81f184e2cb0e8b087c/mobile.json +29 -0
- package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/fa81f184e2cb0e8b087c/visual.json +241 -0
- package/templates/sales/sales-template.Report/definition/pages/pages.json +8 -0
- package/templates/sales/sales-template.Report/definition/report.json +89 -0
- package/templates/sales/sales-template.Report/definition/version.json +4 -0
- package/templates/sales/sales-template.Report/definition.pbir +9 -0
- package/templates/sales/sales-template.SemanticModel/.pbi/editorSettings.json +8 -0
- package/templates/sales/sales-template.SemanticModel/.platform +11 -0
- package/templates/sales/sales-template.SemanticModel/DAXQueries/.pbi/daxQueries.json +9 -0
- package/templates/sales/sales-template.SemanticModel/DAXQueries/Calendar445MonthNr.dax +0 -0
- package/templates/sales/sales-template.SemanticModel/DAXQueries/Consulta 1.dax +6 -0
- package/templates/sales/sales-template.SemanticModel/DAXQueries/Consulta 2.dax +32 -0
- package/templates/sales/sales-template.SemanticModel/definition/cultures/es-AR.tmdl +7324 -0
- package/templates/sales/sales-template.SemanticModel/definition/database.tmdl +3 -0
- package/templates/sales/sales-template.SemanticModel/definition/expressions.tmdl +233 -0
- package/templates/sales/sales-template.SemanticModel/definition/functions.tmdl +247 -0
- package/templates/sales/sales-template.SemanticModel/definition/model.tmdl +46 -0
- package/templates/sales/sales-template.SemanticModel/definition/relationships.tmdl +16 -0
- package/templates/sales/sales-template.SemanticModel/definition/tables/Aux Comparaciones.tmdl +194 -0
- package/templates/sales/sales-template.SemanticModel/definition/tables/Aux Dimensiones ventas.tmdl +71 -0
- package/templates/sales/sales-template.SemanticModel/definition/tables/Aux Ejes temporales.tmdl +67 -0
- package/templates/sales/sales-template.SemanticModel/definition/tables/Aux Per/303/255odos.tmdl" +318 -0
- package/templates/sales/sales-template.SemanticModel/definition/tables/Aux Vista de calendario.tmdl +36 -0
- package/templates/sales/sales-template.SemanticModel/definition/tables/Aux Vista del valor.tmdl +87 -0
- package/templates/sales/sales-template.SemanticModel/definition/tables/Aux Vista temporal.tmdl +62 -0
- package/templates/sales/sales-template.SemanticModel/definition/tables/Calendario.tmdl +198 -0
- package/templates/sales/sales-template.SemanticModel/definition/tables/Canales.tmdl +59 -0
- package/templates/sales/sales-template.SemanticModel/definition/tables/Clientes.tmdl +120 -0
- package/templates/sales/sales-template.SemanticModel/definition/tables/Modelo Configuraci/303/263n.tmdl" +48 -0
- package/templates/sales/sales-template.SemanticModel/definition/tables/Monedas.tmdl +43 -0
- package/templates/sales/sales-template.SemanticModel/definition/tables/M/303/251tricas.tmdl +553 -0
- package/templates/sales/sales-template.SemanticModel/definition/tables/Productos.tmdl +73 -0
- package/templates/sales/sales-template.SemanticModel/definition/tables/Tipo de cambio.tmdl +66 -0
- package/templates/sales/sales-template.SemanticModel/definition/tables/Ventas.tmdl +133 -0
- package/templates/sales/sales-template.SemanticModel/definition.pbism +5 -0
- package/templates/sales/sales-template.SemanticModel/diagramLayout.json +239 -0
- package/templates/sales/sales-template.pbip +14 -0
- package/theme/BISuperpowers.json +3888 -0
- package/commands/bi-report.md +0 -403
- package/skills/bi-report/SKILL.md +0 -405
- package/skills/bi-report/references/cli-commands.md +0 -184
- package/skills/bi-report/references/cli-setup.md +0 -101
- package/skills/bi-report/references/close-write-open-pattern.md +0 -80
- package/skills/bi-report/references/layouts/finance.md +0 -65
- package/skills/bi-report/references/layouts/generic.md +0 -46
- package/skills/bi-report/references/layouts/hr.md +0 -48
- package/skills/bi-report/references/layouts/marketing.md +0 -45
- package/skills/bi-report/references/layouts/operations.md +0 -44
- package/skills/bi-report/references/layouts/sales.md +0 -50
- package/skills/bi-report/references/native-visuals.md +0 -341
- package/skills/bi-report/references/pbi-desktop-installation.md +0 -87
- package/skills/bi-report/references/pbir-preview-activation.md +0 -40
- package/skills/bi-report/references/slicer.md +0 -89
- package/skills/bi-report/references/textbox.md +0 -101
- package/skills/bi-report/references/themes/BISuperpowers.json +0 -915
- package/skills/bi-report/references/troubleshooting.md +0 -135
- package/skills/bi-report/references/visual-types.md +0 -78
- package/skills/bi-report/scripts/apply-theme.js +0 -243
- package/skills/bi-report/scripts/create-visual.js +0 -942
- package/skills/bi-report/scripts/ensure-pbi-cli.sh +0 -41
- package/skills/bi-report/scripts/validate-pbir.js +0 -351
- package/src/content/skills/bi-report/SKILL.md +0 -376
- package/src/content/skills/bi-report/references/cli-commands.md +0 -184
- package/src/content/skills/bi-report/references/cli-setup.md +0 -101
- package/src/content/skills/bi-report/references/close-write-open-pattern.md +0 -80
- package/src/content/skills/bi-report/references/layouts/finance.md +0 -65
- package/src/content/skills/bi-report/references/layouts/generic.md +0 -46
- package/src/content/skills/bi-report/references/layouts/hr.md +0 -48
- package/src/content/skills/bi-report/references/layouts/marketing.md +0 -45
- package/src/content/skills/bi-report/references/layouts/operations.md +0 -44
- package/src/content/skills/bi-report/references/layouts/sales.md +0 -50
- package/src/content/skills/bi-report/references/native-visuals.md +0 -341
- package/src/content/skills/bi-report/references/pbi-desktop-installation.md +0 -87
- package/src/content/skills/bi-report/references/pbir-preview-activation.md +0 -40
- package/src/content/skills/bi-report/references/slicer.md +0 -89
- package/src/content/skills/bi-report/references/textbox.md +0 -101
- package/src/content/skills/bi-report/references/themes/BISuperpowers.json +0 -915
- package/src/content/skills/bi-report/references/troubleshooting.md +0 -135
- package/src/content/skills/bi-report/references/visual-types.md +0 -78
- package/src/content/skills/bi-report/scripts/apply-theme.js +0 -243
- package/src/content/skills/bi-report/scripts/create-visual.js +0 -942
- package/src/content/skills/bi-report/scripts/ensure-pbi-cli.sh +0 -41
- package/src/content/skills/bi-report/scripts/validate-pbir.js +0 -351
package/README.md
CHANGED
|
@@ -7,16 +7,19 @@
|
|
|
7
7
|
|
|
8
8
|
**BI Agent Superpowers** is an open-source toolkit that gives AI coding agents practical Power BI Desktop capabilities.
|
|
9
9
|
|
|
10
|
-
It installs reusable agent skills, configures Microsoft MCP servers, and provides a small CLI called `super` so Claude Code, GitHub Copilot,
|
|
10
|
+
It installs reusable agent skills, configures Microsoft MCP servers, and provides a small CLI called `super` so Codex, Claude Code, GitHub Copilot, Gemini CLI, and Kilo Code can work with Power BI projects using the same operating contract.
|
|
11
11
|
|
|
12
12
|
This is not a loose prompt pack. It is a reproducible Power BI agent layer:
|
|
13
13
|
|
|
14
|
-
- **
|
|
14
|
+
- **6 skills** for Power BI/project work: session startup, project bootstrap, semantic-model design and audit, DAX authoring and optimization, performance profiling with Tabular Editor 2 / BPA integration, and Power BI Desktop MCP connection.
|
|
15
15
|
- **2 Microsoft MCP servers** for Power BI Desktop modeling and Microsoft Learn documentation.
|
|
16
16
|
- **1 CLI** (`super`) for install, updates, local plugin generation, checks, and regeneration.
|
|
17
|
-
- **
|
|
17
|
+
- **Codex-first skill and MCP installation**, plus compatibility adapters for other agents.
|
|
18
|
+
- **Claude Code plugin artifacts** for users who explicitly want that local plugin format.
|
|
18
19
|
|
|
19
20
|
> Status: `v5.0.x` is the current stable release line. The v5 line standardizes every public slash command under the `/bi-*` namespace.
|
|
21
|
+
>
|
|
22
|
+
> Validation baseline: BI Agent Superpowers is developed and stress-tested first in **Codex**. Other agent adapters are shipped as compatibility targets and may work, but they are not currently tested end-to-end with the same depth unless a release note says otherwise.
|
|
20
23
|
|
|
21
24
|
---
|
|
22
25
|
|
|
@@ -32,7 +35,6 @@ This is not a loose prompt pack. It is a reproducible Power BI agent layer:
|
|
|
32
35
|
- [CLI Reference](#cli-reference)
|
|
33
36
|
- [Plugin File Tree](#plugin-file-tree)
|
|
34
37
|
- [Requirements](#requirements)
|
|
35
|
-
- [BI Report Runtime](#bi-report-runtime)
|
|
36
38
|
- [Updates](#updates)
|
|
37
39
|
- [What Ships To npm](#what-ships-to-npm)
|
|
38
40
|
- [Development](#development)
|
|
@@ -51,12 +53,12 @@ Power BI work with AI agents usually breaks down in predictable places:
|
|
|
51
53
|
3. The agent invents DAX, PBIR, or setup steps without validating them against real tools.
|
|
52
54
|
4. Each agent has different skill and MCP configuration paths.
|
|
53
55
|
|
|
54
|
-
BI Agent Superpowers fixes that by giving
|
|
56
|
+
BI Agent Superpowers fixes that by giving Codex the primary tested Power BI workflow and exposing the same operating contract to compatible agents:
|
|
55
57
|
|
|
56
58
|
- project context through reusable skills;
|
|
57
59
|
- Power BI Desktop access through the Microsoft Power BI Modeling MCP;
|
|
58
60
|
- current Microsoft documentation through the Microsoft Learn MCP;
|
|
59
|
-
-
|
|
61
|
+
- optional Claude Code plugin artifacts for local project work;
|
|
60
62
|
- update checks so old plugin bundles do not silently stay stale.
|
|
61
63
|
|
|
62
64
|
The goal is simple: open a Power BI project, ask your agent for help, and have the agent know what tools, files, prerequisites, and guardrails apply.
|
|
@@ -67,7 +69,7 @@ The goal is simple: open a Power BI project, ask your agent for help, and have t
|
|
|
67
69
|
|
|
68
70
|
### All Supported Agents
|
|
69
71
|
|
|
70
|
-
Use this when you want one command path for Claude Code, GitHub Copilot,
|
|
72
|
+
Use this when you want one command path for Codex and the compatibility adapters for Claude Code, GitHub Copilot, Gemini CLI, and Kilo Code.
|
|
71
73
|
|
|
72
74
|
```bash
|
|
73
75
|
npm install -g @luquimbo/bi-superpowers
|
|
@@ -106,7 +108,7 @@ super install --agent kilo --yes
|
|
|
106
108
|
|
|
107
109
|
### Claude Code Marketplace Install
|
|
108
110
|
|
|
109
|
-
If you
|
|
111
|
+
If you use Claude Code, the marketplace path is the cleanest install experience for that agent. Claude Code is a compatibility target; Codex remains the primary end-to-end validation baseline.
|
|
110
112
|
|
|
111
113
|
```text
|
|
112
114
|
/plugin marketplace add luquimbo/bi-superpowers
|
|
@@ -271,7 +273,7 @@ Use it when:
|
|
|
271
273
|
|
|
272
274
|
### `bi-connect`
|
|
273
275
|
|
|
274
|
-
Power BI Desktop connection skill. It helps the agent connect to the open Power BI Desktop model through the Microsoft Power BI Modeling MCP.
|
|
276
|
+
Power BI Desktop connection skill. It helps the agent connect to the open Power BI Desktop model through the Microsoft Power BI Modeling MCP. Model writes go through MCP; PBIP files are treated as saved/exported version-control snapshots.
|
|
275
277
|
|
|
276
278
|
Use it when:
|
|
277
279
|
|
|
@@ -280,20 +282,6 @@ Use it when:
|
|
|
280
282
|
- you want the agent to inspect or modify the semantic model through Desktop.
|
|
281
283
|
- you want to write or review DAX user-defined functions using current Microsoft Learn syntax and DAXLIB patterns.
|
|
282
284
|
|
|
283
|
-
### `bi-report`
|
|
284
|
-
|
|
285
|
-
PBIR report generation skill. It turns a ready semantic model into Power BI report pages using bundled Node scripts, PBIR references, visual allowlists, layouts, themes, and validation.
|
|
286
|
-
|
|
287
|
-
Use it when:
|
|
288
|
-
|
|
289
|
-
- the model is ready and you want pages;
|
|
290
|
-
- you want native Power BI visuals generated as PBIR files;
|
|
291
|
-
- you want a report draft that can be opened and reviewed in Power BI Desktop.
|
|
292
|
-
|
|
293
|
-
Current runtime requirement: Windows + Power BI Desktop standalone + Python 3.10+ + `pipx` + `pbi-cli-tool`.
|
|
294
|
-
|
|
295
|
-
---
|
|
296
|
-
|
|
297
285
|
## Quick Demos
|
|
298
286
|
|
|
299
287
|
### Start A Session
|
|
@@ -305,7 +293,7 @@ Current runtime requirement: Windows + Power BI Desktop standalone + Python 3.10
|
|
|
305
293
|
Expected result:
|
|
306
294
|
|
|
307
295
|
- update check;
|
|
308
|
-
- menu of
|
|
296
|
+
- menu of 6 skills;
|
|
309
297
|
- environment hints;
|
|
310
298
|
- next-step recommendation.
|
|
311
299
|
|
|
@@ -321,7 +309,7 @@ Expected result:
|
|
|
321
309
|
- project map;
|
|
322
310
|
- risks and missing context;
|
|
323
311
|
- recommended implementation path;
|
|
324
|
-
- handoff to `bi-connect`
|
|
312
|
+
- handoff to `bi-connect` when appropriate.
|
|
325
313
|
|
|
326
314
|
### Connect To Power BI Desktop
|
|
327
315
|
|
|
@@ -350,32 +338,15 @@ Expected result:
|
|
|
350
338
|
- DAXLIB-aware pattern selection without vendoring external code by default;
|
|
351
339
|
- tested function draft and validation steps.
|
|
352
340
|
|
|
353
|
-
### Generate A Report Page
|
|
354
|
-
|
|
355
|
-
```text
|
|
356
|
-
/bi-report
|
|
357
|
-
Create an executive sales page with KPI cards, monthly trend, product ranking, and a slicer panel.
|
|
358
|
-
```
|
|
359
|
-
|
|
360
|
-
Expected result:
|
|
361
|
-
|
|
362
|
-
- prerequisite checks;
|
|
363
|
-
- page/layout plan;
|
|
364
|
-
- PBIR visual generation;
|
|
365
|
-
- validation against native visual types;
|
|
366
|
-
- instructions to open and verify in Power BI Desktop.
|
|
367
|
-
|
|
368
|
-
---
|
|
369
|
-
|
|
370
341
|
## Supported Agents
|
|
371
342
|
|
|
372
|
-
| Agent | Skill install path | MCP config path | Primary usage |
|
|
373
|
-
|
|
374
|
-
|
|
|
375
|
-
|
|
|
376
|
-
|
|
|
377
|
-
| Gemini CLI | `~/.gemini/skills/` | `~/.gemini/settings.json` | Natural language |
|
|
378
|
-
| Kilo Code | `~/.kilo/skills/` | `~/.kilo/mcp_settings.json` | Natural language |
|
|
343
|
+
| Agent | Skill install path | MCP config path | Primary usage | Validation status |
|
|
344
|
+
|---|---|---|---|---|
|
|
345
|
+
| Codex | `~/.agents/skills/` | `~/.codex/config.toml` | Natural language with skills and MCPs | Primary end-to-end test baseline |
|
|
346
|
+
| Claude Code | `~/.claude/skills/` or marketplace plugin | `~/.claude.json` | Slash commands and natural language | Compatibility target; not the primary end-to-end QA baseline |
|
|
347
|
+
| GitHub Copilot | `~/.copilot/skills/` | `~/.copilot/mcp-config.json` | Natural language with skills and MCPs | Compatibility target; not the primary end-to-end QA baseline |
|
|
348
|
+
| Gemini CLI | `~/.gemini/skills/` | `~/.gemini/settings.json` | Natural language | Compatibility target; not the primary end-to-end QA baseline |
|
|
349
|
+
| Kilo Code | `~/.kilo/skills/` | `~/.kilo/mcp_settings.json` | Natural language | Compatibility target; not the primary end-to-end QA baseline |
|
|
379
350
|
|
|
380
351
|
The installer always writes the universal skill copy to `~/.agents/skills/`, then links or copies agent-specific skill directories as needed.
|
|
381
352
|
|
|
@@ -412,7 +383,7 @@ bi-superpowers help
|
|
|
412
383
|
Common commands:
|
|
413
384
|
|
|
414
385
|
```bash
|
|
415
|
-
super install # Install
|
|
386
|
+
super install # Install 6 skills + 2 MCPs for selected agents
|
|
416
387
|
super kickoff # Advanced: generate optional local Claude Code plugin files
|
|
417
388
|
super recharge # Regenerate optional local Claude Code plugin artifacts
|
|
418
389
|
super powers # List available skills
|
|
@@ -449,8 +420,7 @@ project/
|
|
|
449
420
|
├─ commands/
|
|
450
421
|
│ ├─ bi-start.md
|
|
451
422
|
│ ├─ bi-kickoff.md
|
|
452
|
-
│
|
|
453
|
-
│ └─ bi-report.md
|
|
423
|
+
│ └─ bi-connect.md
|
|
454
424
|
├─ skills/
|
|
455
425
|
│ ├─ bi-start/
|
|
456
426
|
│ │ ├─ SKILL.md
|
|
@@ -461,22 +431,6 @@ project/
|
|
|
461
431
|
│ ├─ bi-connect/
|
|
462
432
|
│ │ ├─ SKILL.md
|
|
463
433
|
│ │ └─ scripts/update-check.js
|
|
464
|
-
│ └─ bi-report/
|
|
465
|
-
│ ├─ SKILL.md
|
|
466
|
-
│ ├─ scripts/
|
|
467
|
-
│ │ ├─ apply-theme.js
|
|
468
|
-
│ │ ├─ create-visual.js
|
|
469
|
-
│ │ ├─ ensure-pbi-cli.sh
|
|
470
|
-
│ │ ├─ update-check.js
|
|
471
|
-
│ │ └─ validate-pbir.js
|
|
472
|
-
│ └─ references/
|
|
473
|
-
│ ├─ cli-commands.md
|
|
474
|
-
│ ├─ cli-setup.md
|
|
475
|
-
│ ├─ native-visuals.md
|
|
476
|
-
│ ├─ pbi-desktop-installation.md
|
|
477
|
-
│ ├─ troubleshooting.md
|
|
478
|
-
│ ├─ layouts/
|
|
479
|
-
│ └─ themes/
|
|
480
434
|
└─ config.json
|
|
481
435
|
```
|
|
482
436
|
|
|
@@ -510,39 +464,6 @@ flowchart TD
|
|
|
510
464
|
- Power BI Desktop open.
|
|
511
465
|
- Power BI Modeling MCP available to the agent.
|
|
512
466
|
|
|
513
|
-
### For `bi-report`
|
|
514
|
-
|
|
515
|
-
- Windows.
|
|
516
|
-
- Power BI Desktop standalone, not the Microsoft Store build.
|
|
517
|
-
- Python 3.10 or newer.
|
|
518
|
-
- `pipx`.
|
|
519
|
-
- `pbi-cli-tool`.
|
|
520
|
-
- PBIR/TMDL enabled when applicable.
|
|
521
|
-
|
|
522
|
-
---
|
|
523
|
-
|
|
524
|
-
## BI Report Runtime
|
|
525
|
-
|
|
526
|
-
`bi-report` uses bundled Node scripts for PBIR visual and theme authoring:
|
|
527
|
-
|
|
528
|
-
- `create-visual.js`
|
|
529
|
-
- `apply-theme.js`
|
|
530
|
-
- `validate-pbir.js`
|
|
531
|
-
|
|
532
|
-
It still uses `pbi-cli-tool` for the current runtime flow:
|
|
533
|
-
|
|
534
|
-
- `pbi connect`
|
|
535
|
-
- `pbi measure list`
|
|
536
|
-
- `pbi table list`
|
|
537
|
-
- `pbi column list`
|
|
538
|
-
- `pbi report add-page`
|
|
539
|
-
- `pbi report list-pages`
|
|
540
|
-
- `pbi report validate`
|
|
541
|
-
|
|
542
|
-
This means `pbi-cli-tool` is not optional for `bi-report` today.
|
|
543
|
-
|
|
544
|
-
---
|
|
545
|
-
|
|
546
467
|
## Updates
|
|
547
468
|
|
|
548
469
|
### Claude Code Marketplace
|
|
@@ -583,6 +504,7 @@ bin/
|
|
|
583
504
|
commands/
|
|
584
505
|
skills/
|
|
585
506
|
src/content/
|
|
507
|
+
templates/
|
|
586
508
|
desktop-extension/
|
|
587
509
|
config.json
|
|
588
510
|
config.example.json
|
|
@@ -597,16 +519,16 @@ The npm package does not include:
|
|
|
597
519
|
|
|
598
520
|
```text
|
|
599
521
|
docs/superpowers/
|
|
600
|
-
examples/smoke-test/
|
|
601
522
|
validation/
|
|
602
523
|
validation.local.example.json
|
|
603
524
|
validation.local.json
|
|
604
525
|
node_modules/
|
|
605
526
|
*.test.js
|
|
527
|
+
**/.pbi/localSettings.json
|
|
606
528
|
```
|
|
607
529
|
|
|
608
|
-
`
|
|
609
|
-
`validation/` is
|
|
530
|
+
`templates/` ships canonical reference templates (today: `templates/sales/`). Each template is a complete PBIP package with `AGENTS.md`, semantic model, and report definition — used as the canonical "template-as-reference" by all specialist skills, and as the source for the upcoming `bi-kickoff` "create from template" branch (which will copy `templates/<domain>/` into `<user-repo>/pbip-files/<projectName>.*` with renaming).
|
|
531
|
+
`validation/` is repo-only. It stores sanitized validation descriptors and playbooks for project QA; private project paths live in `validation.local.json`, which must never be committed.
|
|
610
532
|
|
|
611
533
|
---
|
|
612
534
|
|
|
@@ -661,7 +583,7 @@ Power BI work without committing customer repositories.
|
|
|
661
583
|
Public fixtures live in:
|
|
662
584
|
|
|
663
585
|
```text
|
|
664
|
-
|
|
586
|
+
templates/sales/
|
|
665
587
|
```
|
|
666
588
|
|
|
667
589
|
Sanitized validation metadata lives in:
|
|
@@ -683,7 +605,7 @@ map client projects on your own machine.
|
|
|
683
605
|
Run the structural validation:
|
|
684
606
|
|
|
685
607
|
```bash
|
|
686
|
-
super validate-projects --project
|
|
608
|
+
super validate-projects --project sales-template
|
|
687
609
|
```
|
|
688
610
|
|
|
689
611
|
Run every descriptor, treating skipped private projects as failures:
|
|
@@ -751,10 +673,6 @@ If npm's global bin directory is not in `PATH`, fix `PATH` or use your package m
|
|
|
751
673
|
3. Confirm the Power BI Modeling MCP is installed.
|
|
752
674
|
4. Restart the agent after MCP installation.
|
|
753
675
|
|
|
754
|
-
### `bi-report` Stops Because Power BI Desktop Is The Microsoft Store Build
|
|
755
|
-
|
|
756
|
-
Install the standalone Power BI Desktop build. The Store build can block flows required by CLI/MCP tooling.
|
|
757
|
-
|
|
758
676
|
### `pbi-cli-tool` Is Missing
|
|
759
677
|
|
|
760
678
|
Install Python, `pipx`, and `pbi-cli-tool`:
|
|
@@ -772,19 +690,17 @@ pbi --version
|
|
|
772
690
|
|
|
773
691
|
### Does This Replace Power BI Desktop?
|
|
774
692
|
|
|
775
|
-
No. Power BI Desktop remains the visual
|
|
693
|
+
No. Power BI Desktop remains the visual and report authoring tool. The plugin helps agents inspect project files and use MCPs for semantic-model work, but PBIP files are treated as version-control snapshots. Agents must not patch `.Report/**` PBIR JSON, `visual.json`, bookmarks, slicer/card settings, themes, or report resources directly.
|
|
694
|
+
|
|
695
|
+
The only report-side exception is template adaptation through the dedicated plugin field-swap/rebind command. Agents must not patch PBIR JSON by hand, even for a "simple measure replacement." The command may write PBIR only for data bindings (`projections`, `prototypeQuery`, query refs, field parameters, and sort/filter field references when required), with dry-run, backup, validation, and an explicit source-to-target mapping. It must preserve visual type, layout, formatting, interactions, IDs, theme, and bookmarks. Until that tool exists, report field swaps remain manual Desktop work.
|
|
776
696
|
|
|
777
697
|
### Does It Work Outside Windows?
|
|
778
698
|
|
|
779
|
-
The CLI and several skills can run outside Windows. Workflows that depend on Power BI Desktop, especially `bi-connect
|
|
699
|
+
The CLI and several skills can run outside Windows. Workflows that depend on Power BI Desktop, especially `bi-connect`, are Windows-first.
|
|
780
700
|
|
|
781
701
|
### Do I Need Claude Code?
|
|
782
702
|
|
|
783
|
-
No. Claude Code has
|
|
784
|
-
|
|
785
|
-
### Do I Need `pbi-cli-tool`?
|
|
786
|
-
|
|
787
|
-
For `bi-report`, yes. For `bi-start`, `bi-kickoff`, and `bi-connect`, not necessarily.
|
|
703
|
+
No. Codex is the primary development and end-to-end validation baseline for this plugin. Claude Code has a useful compatibility path through marketplace/local plugin artifacts, but it is not the canonical test base unless a release note explicitly says that release was tested there.
|
|
788
704
|
|
|
789
705
|
### Can I Use Only The MCP Servers?
|
|
790
706
|
|
package/bin/cli.js
CHANGED
|
@@ -159,7 +159,7 @@ Usage:
|
|
|
159
159
|
super <command> [options]
|
|
160
160
|
|
|
161
161
|
Primary commands:
|
|
162
|
-
install Install the
|
|
162
|
+
install Install ${TOTAL_SKILL_COUNT || 'the'} skills + 2 MCPs user-level across your AI agents
|
|
163
163
|
kickoff [path] Optional: generate a repo-local Claude Code plugin
|
|
164
164
|
recharge [path] Optional: regenerate an existing repo-local Claude Code plugin
|
|
165
165
|
build-desktop Build the .mcpb extension for Claude Desktop
|
package/bin/commands/diff.js
CHANGED
|
@@ -331,8 +331,8 @@ function diffCommand(args, config) {
|
|
|
331
331
|
let skillFiles = [];
|
|
332
332
|
|
|
333
333
|
if (options.skill) {
|
|
334
|
-
// normalizeSkillName accepts `dax`, `dax.md`, `
|
|
335
|
-
// `
|
|
334
|
+
// normalizeSkillName accepts `dax`, `dax.md`, `folder-skill`, or
|
|
335
|
+
// `folder-skill/SKILL.md` and returns the canonical skill name.
|
|
336
336
|
const skill = skillsByName.get(normalizeSkillName(options.skill));
|
|
337
337
|
if (skill) {
|
|
338
338
|
skillFiles = [skill.path];
|
package/bin/commands/install.js
CHANGED
|
@@ -18,10 +18,8 @@
|
|
|
18
18
|
* expected config file in the format that agent requires (JSON for
|
|
19
19
|
* most, TOML for Codex) — see `lib/mcp-config.js` for details.
|
|
20
20
|
*
|
|
21
|
-
* Fully open source (MIT).
|
|
22
|
-
*
|
|
23
|
-
* comments and JSDoc stay in English so contributors from any language
|
|
24
|
-
* can work on the source.
|
|
21
|
+
* Fully open source (MIT). CLI copy, comments, and JSDoc stay in English
|
|
22
|
+
* so contributors from any language can work on the source.
|
|
25
23
|
*
|
|
26
24
|
* Usage:
|
|
27
25
|
* npx @luquimbo/bi-superpowers install
|
|
@@ -89,8 +87,8 @@ async function selectMultiple(rl, items, preselected = []) {
|
|
|
89
87
|
console.log(` ${i + 1}) ${marker} ${item.name}`);
|
|
90
88
|
});
|
|
91
89
|
console.log();
|
|
92
|
-
console.log('
|
|
93
|
-
console.log('
|
|
90
|
+
console.log(' Enter numbers separated by commas (for example: 1,2,3)');
|
|
91
|
+
console.log(' Press Enter for detected agents, or "a" for all agents');
|
|
94
92
|
|
|
95
93
|
const answer = await prompt(rl, '\n > ');
|
|
96
94
|
|
|
@@ -161,11 +159,11 @@ function copySkillDir(srcDir, destDir) {
|
|
|
161
159
|
*/
|
|
162
160
|
function formatFsError(err, context) {
|
|
163
161
|
const codeHints = {
|
|
164
|
-
EACCES: '
|
|
165
|
-
EPERM: '
|
|
166
|
-
ENOSPC: 'No
|
|
167
|
-
ENOENT: '
|
|
168
|
-
EROFS: '
|
|
162
|
+
EACCES: 'Permission denied. Check the directory permissions.',
|
|
163
|
+
EPERM: 'Operation not permitted. On Windows, try running as Administrator.',
|
|
164
|
+
ENOSPC: 'No disk space left.',
|
|
165
|
+
ENOENT: 'File or directory does not exist.',
|
|
166
|
+
EROFS: 'Read-only filesystem.',
|
|
169
167
|
};
|
|
170
168
|
const hint = codeHints[err.code] || '';
|
|
171
169
|
return `${context}: ${err.message}${hint ? `\n ${hint}` : ''}`;
|
|
@@ -188,7 +186,9 @@ function parseArgs(args) {
|
|
|
188
186
|
const next = args[i + 1];
|
|
189
187
|
if (next === undefined || next.startsWith('-')) {
|
|
190
188
|
// Missing value — warn and skip this flag instead of crashing.
|
|
191
|
-
console.warn(
|
|
189
|
+
console.warn(
|
|
190
|
+
`⚠ Flag ${args[i]} is missing a value. Usage: ${args[i]} <agent-id>. Ignoring.`
|
|
191
|
+
);
|
|
192
192
|
continue;
|
|
193
193
|
}
|
|
194
194
|
opts.agentFlags.push(next);
|
|
@@ -212,8 +212,8 @@ async function resolveSelectedAgents(opts, baseDir, chalk) {
|
|
|
212
212
|
const known = opts.agentFlags.filter((a) => AGENTS[a]);
|
|
213
213
|
const unknown = opts.agentFlags.filter((a) => !AGENTS[a]);
|
|
214
214
|
if (unknown.length > 0) {
|
|
215
|
-
console.log(chalk.yellow(`
|
|
216
|
-
console.log(chalk.gray(`
|
|
215
|
+
console.log(chalk.yellow(` Unknown agents: ${unknown.join(', ')}`));
|
|
216
|
+
console.log(chalk.gray(` Available agents: ${Object.keys(AGENTS).join(', ')}\n`));
|
|
217
217
|
}
|
|
218
218
|
return known;
|
|
219
219
|
}
|
|
@@ -224,11 +224,11 @@ async function resolveSelectedAgents(opts, baseDir, chalk) {
|
|
|
224
224
|
|
|
225
225
|
// Interactive mode — detect installed agents and prompt the user.
|
|
226
226
|
const detected = detectAgents(baseDir);
|
|
227
|
-
console.log(chalk.cyan('
|
|
227
|
+
console.log(chalk.cyan(' Select the agents where you want to install:\n'));
|
|
228
228
|
|
|
229
229
|
const items = Object.entries(AGENTS).map(([id, agent]) => ({
|
|
230
230
|
id,
|
|
231
|
-
name: detected.includes(id) ? `${agent.name} ${chalk.green('(
|
|
231
|
+
name: detected.includes(id) ? `${agent.name} ${chalk.green('(detected)')}` : agent.name,
|
|
232
232
|
}));
|
|
233
233
|
|
|
234
234
|
const rl = createReadline();
|
|
@@ -330,9 +330,7 @@ function performInstall(skillsSourceDir, skillDirs, selectedAgents, baseDir) {
|
|
|
330
330
|
* @returns {Array<{agent: string, success: boolean, configPath?: string, error?: string}>}
|
|
331
331
|
*/
|
|
332
332
|
function configureMcpsForAgents(selectedAgents, packageDir, baseDir, chalk) {
|
|
333
|
-
console.log(
|
|
334
|
-
chalk.cyan('\n Configurando MCP servers (Power BI Modeling + Microsoft Learn)...\n')
|
|
335
|
-
);
|
|
333
|
+
console.log(chalk.cyan('\n Configuring MCP servers (Power BI Modeling + Microsoft Learn)...\n'));
|
|
336
334
|
|
|
337
335
|
const results = [];
|
|
338
336
|
for (const agentId of selectedAgents) {
|
|
@@ -374,7 +372,7 @@ async function installCommand(args, config) {
|
|
|
374
372
|
if (!fs.existsSync(skillsSourceDir)) {
|
|
375
373
|
console.error(
|
|
376
374
|
chalk.red(
|
|
377
|
-
'
|
|
375
|
+
'Skills directory not found. Reinstall the package with: npm install -g @luquimbo/bi-superpowers'
|
|
378
376
|
)
|
|
379
377
|
);
|
|
380
378
|
process.exit(1);
|
|
@@ -390,7 +388,7 @@ async function installCommand(args, config) {
|
|
|
390
388
|
)
|
|
391
389
|
.map((d) => d.name);
|
|
392
390
|
} catch (err) {
|
|
393
|
-
console.error(chalk.red(formatFsError(err, '
|
|
391
|
+
console.error(chalk.red(formatFsError(err, 'Could not read skills')));
|
|
394
392
|
process.exit(1);
|
|
395
393
|
}
|
|
396
394
|
|
|
@@ -400,7 +398,7 @@ async function installCommand(args, config) {
|
|
|
400
398
|
chalk.bold.cyan('BI Agent Superpowers') +
|
|
401
399
|
chalk.gray(` v${config.version}`) +
|
|
402
400
|
'\n' +
|
|
403
|
-
chalk.gray('
|
|
401
|
+
chalk.gray('Multi-agent installer'),
|
|
404
402
|
{
|
|
405
403
|
padding: 1,
|
|
406
404
|
borderStyle: 'round',
|
|
@@ -409,21 +407,19 @@ async function installCommand(args, config) {
|
|
|
409
407
|
)
|
|
410
408
|
);
|
|
411
409
|
|
|
412
|
-
console.log(chalk.gray(`
|
|
413
|
-
console.log(chalk.gray(` Skills: ${skillDirs.length}
|
|
410
|
+
console.log(chalk.gray(` Install path: ~/${UNIVERSAL_DIR}/`));
|
|
411
|
+
console.log(chalk.gray(` Skills available: ${skillDirs.length}\n`));
|
|
414
412
|
|
|
415
413
|
// Resolve which agents to configure.
|
|
416
414
|
const selectedAgents = await resolveSelectedAgents(opts, baseDir, chalk);
|
|
417
415
|
|
|
418
416
|
if (selectedAgents.length === 0) {
|
|
419
|
-
console.log(chalk.yellow('\n
|
|
417
|
+
console.log(chalk.yellow('\n No agent selected. Nothing to install.'));
|
|
420
418
|
return;
|
|
421
419
|
}
|
|
422
420
|
|
|
423
421
|
console.log(
|
|
424
|
-
chalk.cyan(
|
|
425
|
-
`\n Instalando ${skillDirs.length} skills para ${selectedAgents.length} agentes...\n`
|
|
426
|
-
)
|
|
422
|
+
chalk.cyan(`\n Installing ${skillDirs.length} skills for ${selectedAgents.length} agents...\n`)
|
|
427
423
|
);
|
|
428
424
|
|
|
429
425
|
// Phase 1: copy skills and create symlinks per agent.
|
|
@@ -434,7 +430,7 @@ async function installCommand(args, config) {
|
|
|
434
430
|
agentResults = result.agentResults;
|
|
435
431
|
copyFallbacks = result.copyFallbacks;
|
|
436
432
|
} catch (err) {
|
|
437
|
-
console.error(chalk.red(formatFsError(err, '
|
|
433
|
+
console.error(chalk.red(formatFsError(err, 'Skill installation failed')));
|
|
438
434
|
process.exit(1);
|
|
439
435
|
}
|
|
440
436
|
|
|
@@ -455,9 +451,9 @@ async function installCommand(args, config) {
|
|
|
455
451
|
if (copyFallbacks > 0) {
|
|
456
452
|
console.log(
|
|
457
453
|
chalk.yellow(
|
|
458
|
-
`\n ⚠ ${copyFallbacks}
|
|
459
|
-
'(
|
|
460
|
-
" Re-
|
|
454
|
+
`\n ⚠ ${copyFallbacks} agent(s) used copy fallback instead of symlink ` +
|
|
455
|
+
'(probably Windows without admin permissions).\n' +
|
|
456
|
+
" Re-run 'super install' after each upgrade; copied installs are mirrored and stale runtimes are removed."
|
|
461
457
|
)
|
|
462
458
|
);
|
|
463
459
|
}
|
|
@@ -471,36 +467,34 @@ async function installCommand(args, config) {
|
|
|
471
467
|
const mcpFailures = mcpResults.filter((r) => !r.success);
|
|
472
468
|
const hasFailures = mcpFailures.length > 0;
|
|
473
469
|
|
|
474
|
-
const successMsg = `
|
|
475
|
-
const failureMsg = `
|
|
470
|
+
const successMsg = `Installed ${skillDirs.length} skills + 2 MCPs for ${totalAgents} agents`;
|
|
471
|
+
const failureMsg = `Installed ${skillDirs.length} skills. MCPs: ${mcpSuccess}/${mcpResults.length} agents ok, ${mcpFailures.length} failed.`;
|
|
476
472
|
const headerLine = hasFailures ? chalk.yellow.bold(failureMsg) : chalk.green.bold(successMsg);
|
|
477
473
|
|
|
478
474
|
const failureDetail = hasFailures
|
|
479
475
|
? '\n' +
|
|
480
|
-
chalk.red('
|
|
476
|
+
chalk.red('Agents with MCP errors:') +
|
|
481
477
|
'\n' +
|
|
482
478
|
mcpFailures.map((r) => chalk.red(` ✗ ${r.agent}: ${r.error}`)).join('\n') +
|
|
483
479
|
'\n'
|
|
484
480
|
: '';
|
|
485
481
|
|
|
482
|
+
const skillSummary = skillDirs
|
|
483
|
+
.map((skillName) => ` /${skillName.padEnd(15)} — ${describeSkill(skillName)}`)
|
|
484
|
+
.join('\n');
|
|
485
|
+
|
|
486
486
|
console.log(
|
|
487
487
|
boxen(
|
|
488
488
|
headerLine +
|
|
489
489
|
failureDetail +
|
|
490
490
|
'\n\n' +
|
|
491
|
-
chalk.gray(`MCPs
|
|
491
|
+
chalk.gray(`MCPs configured in ${mcpSuccess}/${mcpResults.length} agents.`) +
|
|
492
492
|
'\n' +
|
|
493
|
-
chalk.gray('
|
|
493
|
+
chalk.gray('Restart your AI agent so it loads the new MCP configuration.') +
|
|
494
494
|
'\n\n' +
|
|
495
|
-
chalk.gray(
|
|
496
|
-
'\n' +
|
|
497
|
-
chalk.gray(' /bi-start — Arrancar una sesión: menú + update + conexión') +
|
|
495
|
+
chalk.gray(`Skills available (${skillDirs.length}):`) +
|
|
498
496
|
'\n' +
|
|
499
|
-
chalk.gray(
|
|
500
|
-
'\n' +
|
|
501
|
-
chalk.gray(' /bi-connect — Conectá Power BI + guía UDF DAX') +
|
|
502
|
-
'\n' +
|
|
503
|
-
chalk.gray(' /bi-report — Generá reportes PBIR para Power BI Desktop (Windows)'),
|
|
497
|
+
chalk.gray(skillSummary),
|
|
504
498
|
{
|
|
505
499
|
padding: 1,
|
|
506
500
|
margin: { top: 1 },
|
|
@@ -526,3 +520,22 @@ module.exports.copySkillDir = copySkillDir;
|
|
|
526
520
|
module.exports.formatFsError = formatFsError;
|
|
527
521
|
module.exports.AGENTS = AGENTS;
|
|
528
522
|
module.exports.UNIVERSAL_DIR = UNIVERSAL_DIR;
|
|
523
|
+
|
|
524
|
+
function describeSkill(skillName) {
|
|
525
|
+
switch (skillName) {
|
|
526
|
+
case 'bi-start':
|
|
527
|
+
return 'Session opener, update check, and routing';
|
|
528
|
+
case 'bi-kickoff':
|
|
529
|
+
return 'Analyze or start a new BI project';
|
|
530
|
+
case 'bi-modeling':
|
|
531
|
+
return 'Design and audit semantic models';
|
|
532
|
+
case 'bi-dax':
|
|
533
|
+
return 'Write, debug, and optimize DAX';
|
|
534
|
+
case 'bi-performance':
|
|
535
|
+
return 'Performance profiling, VertiPaq, and BPA';
|
|
536
|
+
case 'bi-connect':
|
|
537
|
+
return 'Connect Power BI Desktop and guide DAX UDF work';
|
|
538
|
+
default:
|
|
539
|
+
return 'Specialized BI skill';
|
|
540
|
+
}
|
|
541
|
+
}
|
package/bin/commands/lint.js
CHANGED
|
@@ -366,7 +366,7 @@ function lintCommand(args, config) {
|
|
|
366
366
|
// Determine which files to lint. Use the shared skill loader so we
|
|
367
367
|
// catch both flat (`<name>.md`) and folder-based (`<name>/SKILL.md`)
|
|
368
368
|
// skills — a previous version filtered with `f.endsWith('.md')` and
|
|
369
|
-
// silently skipped every folder-based skill
|
|
369
|
+
// silently skipped every folder-based skill.
|
|
370
370
|
const allSkills = readSkillDirectory(skillsDir);
|
|
371
371
|
const skillsByName = new Map(allSkills.map((s) => [s.name, s]));
|
|
372
372
|
let filesToLint = [];
|
|
@@ -379,7 +379,7 @@ function lintCommand(args, config) {
|
|
|
379
379
|
return f;
|
|
380
380
|
}
|
|
381
381
|
// Look up by skill name. normalizeSkillName accepts `dax`,
|
|
382
|
-
// `dax.md`, `
|
|
382
|
+
// `dax.md`, `folder-skill`, or `folder-skill/SKILL.md`.
|
|
383
383
|
const skill = skillsByName.get(normalizeSkillName(f));
|
|
384
384
|
if (skill) return skill.path;
|
|
385
385
|
|
|
@@ -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
|
|
|
@@ -163,7 +172,7 @@ node "{skillBundleDir}/scripts/update-check.js" --silent-if-uptodate --silent-if
|
|
|
163
172
|
|
|
164
173
|
- Empty output or \`UPTODATE\` — proceed with the skill silently. No message.
|
|
165
174
|
- \`UPDATE_AVAILABLE <installed> <latest>\` — tell the user exactly once this conversation, before diving into the skill:
|
|
166
|
-
> "
|
|
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."
|
|
167
176
|
|
|
168
177
|
Then continue with the skill below.
|
|
169
178
|
- \`SNOOZED <iso>\` — proceed silently.
|
|
@@ -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
|
-
'bi-kickoff':
|
|
69
|
-
|
|
70
|
-
'bi-
|
|
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/bi-report/references/\` - PBIR layouts, themes, native visuals, and troubleshooting
|
|
209
|
-
- Runtime scripts: \`skills/bi-report/scripts/\` - PBIR visual, theme, and validation helpers
|
|
210
214
|
|
|
211
215
|
---
|
|
212
216
|
|