@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.
Files changed (196) hide show
  1. package/.claude-plugin/marketplace.json +5 -3
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/.claude-plugin/skill-manifest.json +23 -7
  4. package/.plugin/plugin.json +1 -1
  5. package/AGENTS.md +124 -26
  6. package/CHANGELOG.md +494 -16
  7. package/README.md +33 -117
  8. package/bin/cli.js +1 -1
  9. package/bin/commands/diff.js +2 -2
  10. package/bin/commands/install.js +58 -45
  11. package/bin/commands/lint.js +2 -2
  12. package/bin/commands/validate-projects.js +1 -1
  13. package/bin/lib/generators/claude-plugin.js +14 -5
  14. package/bin/lib/generators/shared.js +9 -5
  15. package/bin/lib/mcp-config.js +22 -2
  16. package/bin/lib/skills.js +8 -8
  17. package/bin/mcp/powerbi-modeling-launcher.js +8 -4
  18. package/bin/postinstall.js +14 -12
  19. package/bin/utils/mcp-detect.js +11 -11
  20. package/commands/bi-connect.md +34 -17
  21. package/commands/bi-dax.md +385 -0
  22. package/commands/bi-kickoff.md +75 -44
  23. package/commands/bi-modeling.md +395 -0
  24. package/commands/bi-performance.md +455 -0
  25. package/commands/bi-start.md +30 -18
  26. package/desktop-extension/manifest.json +2 -2
  27. package/package.json +6 -3
  28. package/skills/bi-connect/SKILL.md +34 -17
  29. package/skills/bi-connect/scripts/update-check.js +1 -1
  30. package/skills/bi-dax/SKILL.md +387 -0
  31. package/skills/{bi-report → bi-dax}/scripts/update-check.js +1 -1
  32. package/skills/bi-kickoff/SKILL.md +75 -44
  33. package/skills/bi-kickoff/scripts/update-check.js +1 -1
  34. package/skills/bi-modeling/SKILL.md +397 -0
  35. package/skills/bi-modeling/scripts/update-check.js +403 -0
  36. package/skills/bi-performance/SKILL.md +457 -0
  37. package/skills/bi-performance/scripts/install-tabular-editor.ps1 +90 -0
  38. package/skills/bi-performance/scripts/run-bpa.ps1 +161 -0
  39. package/skills/bi-performance/scripts/update-check.js +403 -0
  40. package/skills/bi-start/SKILL.md +31 -19
  41. package/skills/bi-start/scripts/update-check.js +1 -1
  42. package/src/content/base.md +13 -8
  43. package/src/content/routing.md +1 -5
  44. package/src/content/skills/bi-connect.md +32 -15
  45. package/src/content/skills/bi-dax.md +358 -0
  46. package/src/content/skills/bi-kickoff.md +73 -42
  47. package/src/content/skills/bi-modeling.md +368 -0
  48. package/src/content/skills/bi-performance/SKILL.md +428 -0
  49. package/src/content/skills/bi-performance/scripts/install-tabular-editor.ps1 +90 -0
  50. package/src/content/skills/bi-performance/scripts/run-bpa.ps1 +161 -0
  51. package/src/content/skills/bi-start.md +30 -18
  52. package/templates/sales/AGENTS.md +33 -0
  53. package/templates/sales/sales-template.Report/.platform +11 -0
  54. package/templates/sales/sales-template.Report/StaticResources/RegisteredResources/BISuperpowers.json +3888 -0
  55. package/templates/sales/sales-template.Report/StaticResources/SharedResources/BaseThemes/Fluent2-CY26SU03.json +4104 -0
  56. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/page.json +123 -0
  57. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/10420560e5b8c5235857/visual.json +16 -0
  58. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/2181c54a94f0c67abb2d/visual.json +283 -0
  59. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/24eba6a7af0b59974ef5/visual.json +703 -0
  60. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/26db24c91e5b615a5c29/mobile.json +11 -0
  61. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/26db24c91e5b615a5c29/visual.json +528 -0
  62. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/2ec652d0956901dd2afd/mobile.json +11 -0
  63. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/2ec652d0956901dd2afd/visual.json +324 -0
  64. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/45dda4e0b159becf2dcd/mobile.json +11 -0
  65. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/45dda4e0b159becf2dcd/visual.json +359 -0
  66. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/4ca8800cf1539ad423f2/visual.json +468 -0
  67. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/4f5704218eb88f7cdff6/mobile.json +29 -0
  68. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/4f5704218eb88f7cdff6/visual.json +241 -0
  69. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/54d3fdbedbbb863a9d7a/visual.json +575 -0
  70. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/68043403e96ca8ed23e8/visual.json +575 -0
  71. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/80b54a678ef36a250994/visual.json +351 -0
  72. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/814f624b6056dc4c8de5/mobile.json +11 -0
  73. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/814f624b6056dc4c8de5/visual.json +421 -0
  74. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/85e1cc13559f4e107ede/visual.json +681 -0
  75. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/8686961b837e855963fe/mobile.json +11 -0
  76. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/8686961b837e855963fe/visual.json +720 -0
  77. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/8d302c5b7e87e8cb57bb/visual.json +590 -0
  78. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/a02c5b30f2e757637d78/mobile.json +11 -0
  79. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/a02c5b30f2e757637d78/visual.json +102 -0
  80. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/a405d29e7744c770d445/visual.json +575 -0
  81. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/b0dc2036d3cf2baafb35/mobile.json +11 -0
  82. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/b0dc2036d3cf2baafb35/visual.json +333 -0
  83. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/cdd696baaf3b80b326f8/mobile.json +11 -0
  84. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/cdd696baaf3b80b326f8/visual.json +468 -0
  85. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/ff77ca1bafff5bfe5044/mobile.json +11 -0
  86. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/ff77ca1bafff5bfe5044/visual.json +523 -0
  87. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/page.json +130 -0
  88. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/0352fd80d074693a65db/visual.json +681 -0
  89. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/1c5a14bf493697344b68/visual.json +351 -0
  90. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/3486cf7624c5b109b4e5/mobile.json +11 -0
  91. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/3486cf7624c5b109b4e5/visual.json +333 -0
  92. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/4d8b989008edc0db28d1/mobile.json +11 -0
  93. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/4d8b989008edc0db28d1/visual.json +102 -0
  94. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/5f4d76bbc870118e9840/mobile.json +11 -0
  95. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/5f4d76bbc870118e9840/visual.json +468 -0
  96. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/73629e1abebb7a444b59/mobile.json +11 -0
  97. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/73629e1abebb7a444b59/visual.json +359 -0
  98. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/749cb1388c7e0a88161c/visual.json +685 -0
  99. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/85090dcdf75ac2487d1e/visual.json +283 -0
  100. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/92cf92e3da10493adb78/visual.json +468 -0
  101. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/a30bd0950630ed94e8a3/visual.json +590 -0
  102. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/a56e91d9400a835e4814/mobile.json +11 -0
  103. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/a56e91d9400a835e4814/visual.json +528 -0
  104. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/a90aaa3e3117494f18f8/mobile.json +11 -0
  105. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/a90aaa3e3117494f18f8/visual.json +523 -0
  106. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/aded24cd205c0b528642/mobile.json +11 -0
  107. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/aded24cd205c0b528642/visual.json +720 -0
  108. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/af34b26f14a8a724c9a9/mobile.json +37 -0
  109. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/af34b26f14a8a724c9a9/visual.json +1230 -0
  110. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/b06ef80aa78cabcef8a6/mobile.json +11 -0
  111. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/b06ef80aa78cabcef8a6/visual.json +324 -0
  112. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/d97979633a91e041107e/mobile.json +11 -0
  113. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/d97979633a91e041107e/visual.json +421 -0
  114. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/fa81f184e2cb0e8b087c/mobile.json +29 -0
  115. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/fa81f184e2cb0e8b087c/visual.json +241 -0
  116. package/templates/sales/sales-template.Report/definition/pages/pages.json +8 -0
  117. package/templates/sales/sales-template.Report/definition/report.json +89 -0
  118. package/templates/sales/sales-template.Report/definition/version.json +4 -0
  119. package/templates/sales/sales-template.Report/definition.pbir +9 -0
  120. package/templates/sales/sales-template.SemanticModel/.pbi/editorSettings.json +8 -0
  121. package/templates/sales/sales-template.SemanticModel/.platform +11 -0
  122. package/templates/sales/sales-template.SemanticModel/DAXQueries/.pbi/daxQueries.json +9 -0
  123. package/templates/sales/sales-template.SemanticModel/DAXQueries/Calendar445MonthNr.dax +0 -0
  124. package/templates/sales/sales-template.SemanticModel/DAXQueries/Consulta 1.dax +6 -0
  125. package/templates/sales/sales-template.SemanticModel/DAXQueries/Consulta 2.dax +32 -0
  126. package/templates/sales/sales-template.SemanticModel/definition/cultures/es-AR.tmdl +7324 -0
  127. package/templates/sales/sales-template.SemanticModel/definition/database.tmdl +3 -0
  128. package/templates/sales/sales-template.SemanticModel/definition/expressions.tmdl +233 -0
  129. package/templates/sales/sales-template.SemanticModel/definition/functions.tmdl +247 -0
  130. package/templates/sales/sales-template.SemanticModel/definition/model.tmdl +46 -0
  131. package/templates/sales/sales-template.SemanticModel/definition/relationships.tmdl +16 -0
  132. package/templates/sales/sales-template.SemanticModel/definition/tables/Aux Comparaciones.tmdl +194 -0
  133. package/templates/sales/sales-template.SemanticModel/definition/tables/Aux Dimensiones ventas.tmdl +71 -0
  134. package/templates/sales/sales-template.SemanticModel/definition/tables/Aux Ejes temporales.tmdl +67 -0
  135. package/templates/sales/sales-template.SemanticModel/definition/tables/Aux Per/303/255odos.tmdl" +318 -0
  136. package/templates/sales/sales-template.SemanticModel/definition/tables/Aux Vista de calendario.tmdl +36 -0
  137. package/templates/sales/sales-template.SemanticModel/definition/tables/Aux Vista del valor.tmdl +87 -0
  138. package/templates/sales/sales-template.SemanticModel/definition/tables/Aux Vista temporal.tmdl +62 -0
  139. package/templates/sales/sales-template.SemanticModel/definition/tables/Calendario.tmdl +198 -0
  140. package/templates/sales/sales-template.SemanticModel/definition/tables/Canales.tmdl +59 -0
  141. package/templates/sales/sales-template.SemanticModel/definition/tables/Clientes.tmdl +120 -0
  142. package/templates/sales/sales-template.SemanticModel/definition/tables/Modelo Configuraci/303/263n.tmdl" +48 -0
  143. package/templates/sales/sales-template.SemanticModel/definition/tables/Monedas.tmdl +43 -0
  144. package/templates/sales/sales-template.SemanticModel/definition/tables/M/303/251tricas.tmdl +553 -0
  145. package/templates/sales/sales-template.SemanticModel/definition/tables/Productos.tmdl +73 -0
  146. package/templates/sales/sales-template.SemanticModel/definition/tables/Tipo de cambio.tmdl +66 -0
  147. package/templates/sales/sales-template.SemanticModel/definition/tables/Ventas.tmdl +133 -0
  148. package/templates/sales/sales-template.SemanticModel/definition.pbism +5 -0
  149. package/templates/sales/sales-template.SemanticModel/diagramLayout.json +239 -0
  150. package/templates/sales/sales-template.pbip +14 -0
  151. package/theme/BISuperpowers.json +3888 -0
  152. package/commands/bi-report.md +0 -403
  153. package/skills/bi-report/SKILL.md +0 -405
  154. package/skills/bi-report/references/cli-commands.md +0 -184
  155. package/skills/bi-report/references/cli-setup.md +0 -101
  156. package/skills/bi-report/references/close-write-open-pattern.md +0 -80
  157. package/skills/bi-report/references/layouts/finance.md +0 -65
  158. package/skills/bi-report/references/layouts/generic.md +0 -46
  159. package/skills/bi-report/references/layouts/hr.md +0 -48
  160. package/skills/bi-report/references/layouts/marketing.md +0 -45
  161. package/skills/bi-report/references/layouts/operations.md +0 -44
  162. package/skills/bi-report/references/layouts/sales.md +0 -50
  163. package/skills/bi-report/references/native-visuals.md +0 -341
  164. package/skills/bi-report/references/pbi-desktop-installation.md +0 -87
  165. package/skills/bi-report/references/pbir-preview-activation.md +0 -40
  166. package/skills/bi-report/references/slicer.md +0 -89
  167. package/skills/bi-report/references/textbox.md +0 -101
  168. package/skills/bi-report/references/themes/BISuperpowers.json +0 -915
  169. package/skills/bi-report/references/troubleshooting.md +0 -135
  170. package/skills/bi-report/references/visual-types.md +0 -78
  171. package/skills/bi-report/scripts/apply-theme.js +0 -243
  172. package/skills/bi-report/scripts/create-visual.js +0 -942
  173. package/skills/bi-report/scripts/ensure-pbi-cli.sh +0 -41
  174. package/skills/bi-report/scripts/validate-pbir.js +0 -351
  175. package/src/content/skills/bi-report/SKILL.md +0 -376
  176. package/src/content/skills/bi-report/references/cli-commands.md +0 -184
  177. package/src/content/skills/bi-report/references/cli-setup.md +0 -101
  178. package/src/content/skills/bi-report/references/close-write-open-pattern.md +0 -80
  179. package/src/content/skills/bi-report/references/layouts/finance.md +0 -65
  180. package/src/content/skills/bi-report/references/layouts/generic.md +0 -46
  181. package/src/content/skills/bi-report/references/layouts/hr.md +0 -48
  182. package/src/content/skills/bi-report/references/layouts/marketing.md +0 -45
  183. package/src/content/skills/bi-report/references/layouts/operations.md +0 -44
  184. package/src/content/skills/bi-report/references/layouts/sales.md +0 -50
  185. package/src/content/skills/bi-report/references/native-visuals.md +0 -341
  186. package/src/content/skills/bi-report/references/pbi-desktop-installation.md +0 -87
  187. package/src/content/skills/bi-report/references/pbir-preview-activation.md +0 -40
  188. package/src/content/skills/bi-report/references/slicer.md +0 -89
  189. package/src/content/skills/bi-report/references/textbox.md +0 -101
  190. package/src/content/skills/bi-report/references/themes/BISuperpowers.json +0 -915
  191. package/src/content/skills/bi-report/references/troubleshooting.md +0 -135
  192. package/src/content/skills/bi-report/references/visual-types.md +0 -78
  193. package/src/content/skills/bi-report/scripts/apply-theme.js +0 -243
  194. package/src/content/skills/bi-report/scripts/create-visual.js +0 -942
  195. package/src/content/skills/bi-report/scripts/ensure-pbi-cli.sh +0 -41
  196. 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, Codex, Gemini CLI, and Kilo Code can work with Power BI projects using the same operating contract.
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
- - **4 skills** for session startup, BI project analysis, Power BI Desktop connection, and PBIR report generation.
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
- - **Claude Code plugin artifacts** with slash commands, discoverable skills, and MCP configuration.
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 each supported agent the same Power BI workflow:
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
- - generated Claude Code plugin artifacts for local project work;
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, Codex, Gemini CLI, and Kilo Code.
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 only use Claude Code, the marketplace path is the cleanest install experience:
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 4 skills;
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` or `bi-report` when appropriate.
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
- | Claude Code | `~/.claude/skills/` or marketplace plugin | `~/.claude.json` | Slash commands and natural language |
375
- | GitHub Copilot | `~/.copilot/skills/` | `~/.copilot/mcp-config.json` | Natural language with skills and MCPs |
376
- | Codex | `~/.agents/skills/` | `~/.codex/config.toml` | Natural language with skills and MCPs |
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 4 skills + 2 MCPs for selected agents
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
- ├─ bi-connect.md
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
- `examples/smoke-test/` is intentionally repo-only. It is used for QA and manual validation, not for user installs.
609
- `validation/` is also 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.
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
- examples/smoke-test/
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 super-test
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/runtime verification tool. The plugin helps agents work with project files, MCPs, PBIR, and semantic-model context more reliably.
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` and `bi-report`, are Windows-first.
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 the richest plugin/slash-command experience, but the npm installer supports GitHub Copilot, Codex, Gemini CLI, and Kilo Code too.
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 4 skills + 2 MCPs user-level across your AI agents
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
@@ -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`, `bi-report`, or
335
- // `bi-report/SKILL.md` and returns the canonical skill name.
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];
@@ -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). The user-facing messages are in Spanish to
22
- * match the primary Spanish-speaking audience of the project; code
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(' Ingresá números separados por comas (ej: 1,2,3)');
93
- console.log(' Presioná Enter para los detectados, o "a" para todos');
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: 'Permiso denegado. Revisá los permisos del directorio.',
165
- EPERM: 'Operación no permitida. En Windows, probá ejecutar como Administrador.',
166
- ENOSPC: 'No hay espacio en disco.',
167
- ENOENT: 'Archivo o directorio no existe.',
168
- EROFS: 'Sistema de archivos en solo lectura.',
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(`⚠ Flag ${args[i]} sin valor. Uso: ${args[i]} <agente-id>. Ignorando.`);
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(` Agentes desconocidos: ${unknown.join(', ')}`));
216
- console.log(chalk.gray(` Disponibles: ${Object.keys(AGENTS).join(', ')}\n`));
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(' Seleccioná los agentes donde querés instalar:\n'));
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('(detectado)')}` : agent.name,
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
- 'Directorio de skills no encontrado. Reinstalá el paquete con: npm install -g @luquimbo/bi-superpowers'
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, 'No pude leer los skills')));
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('Instalador multi-agente'),
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(` Ruta de instalación: ~/${UNIVERSAL_DIR}/`));
413
- console.log(chalk.gray(` Skills: ${skillDirs.length} disponibles\n`));
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 Ningún agente seleccionado. Nada que instalar.'));
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, 'Falló la instalación de skills')));
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} agente(s) usaron copia en vez de symlink ` +
459
- '(probable Windows sin permisos de admin).\n' +
460
- " Re-ejecutá 'super install' tras cada upgrade; la copia se espeja y elimina runtimes viejos."
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 = `Instalados ${skillDirs.length} skills + 2 MCPs para ${totalAgents} agentes`;
475
- const failureMsg = `Instalados ${skillDirs.length} skills. MCPs: ${mcpSuccess}/${mcpResults.length} agentes ✓, ${mcpFailures.length} con errores.`;
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('Agentes con errores en MCP:') +
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 configurados en ${mcpSuccess}/${mcpResults.length} agentes.`) +
491
+ chalk.gray(`MCPs configured in ${mcpSuccess}/${mcpResults.length} agents.`) +
492
492
  '\n' +
493
- chalk.gray('Reiniciá tu agente AI para que tome los MCPs nuevos.') +
493
+ chalk.gray('Restart your AI agent so it loads the new MCP configuration.') +
494
494
  '\n\n' +
495
- chalk.gray('Los 4 skills disponibles:') +
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(' /bi-kickoff — Analizá tu proyecto BI (proyecto nuevo)') +
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
+ }
@@ -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 (e.g. `bi-report`).
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`, `bi-report`, or `bi-report/SKILL.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
 
@@ -9,7 +9,7 @@
9
9
  *
10
10
  * Usage:
11
11
  * super validate-projects
12
- * super validate-projects --project super-test
12
+ * super validate-projects --project sales-template
13
13
  * super validate-projects --root C:\path\to\bi-superpowers
14
14
  */
15
15
 
@@ -20,12 +20,21 @@ const {
20
20
  } = require('../microsoft-mcp');
21
21
  const { parseSkillMetadata, getSkillPurpose } = require('./shared');
22
22
 
23
- // Currently the plugin ships 4 skills (bi-start, bi-kickoff,
24
- // bi-connect, bi-report). bi-start is the session-opener that
25
- // routes to the other three; the rest are specialists.
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(['bi-start', 'bi-kickoff', 'bi-connect', 'bi-report']);
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
- > "Hay **bi-superpowers v{latest}** disponible (estás en v{installed}). Actualizá con \`super upgrade\` (o \`/plugin update bi-superpowers\` en Claude Code) cuando te venga bien. Si estás usando un plugin local generado con \`super kickoff\`, después corré \`super recharge\` en ese repo."
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': 'Project analysis and planning',
69
- 'bi-connect': 'Power BI Desktop connection and DAX UDF authoring',
70
- 'bi-report': '3-page PBIR report generation for Power BI Desktop (Windows)',
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