@luquimbo/bi-superpowers 2.0.1 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/.claude-plugin/marketplace.json +2 -24
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/.claude-plugin/skill-manifest.json +2 -178
  4. package/.mcp.json +0 -16
  5. package/.plugin/plugin.json +1 -1
  6. package/AGENTS.md +37 -55
  7. package/CHANGELOG.md +44 -0
  8. package/README.md +74 -191
  9. package/bin/cli.js +42 -43
  10. package/bin/commands/install.js +59 -8
  11. package/bin/commands/install.test.js +77 -0
  12. package/bin/lib/generators/claude-plugin.js +6 -31
  13. package/bin/lib/generators/claude-plugin.test.js +12 -11
  14. package/bin/lib/mcp-config.js +287 -0
  15. package/bin/lib/mcp-config.test.js +273 -0
  16. package/bin/lib/microsoft-mcp.js +6 -20
  17. package/bin/lib/microsoft-mcp.test.js +25 -21
  18. package/bin/postinstall.js +18 -23
  19. package/bin/utils/mcp-detect.js +4 -20
  20. package/bin/utils/mcp-detect.test.js +9 -33
  21. package/package.json +1 -1
  22. package/skills/pbi-connect/SKILL.md +1 -1
  23. package/skills/project-kickoff/SKILL.md +1 -1
  24. package/commands/contributions.md +0 -265
  25. package/commands/data-model-design.md +0 -468
  26. package/commands/dax-doctor.md +0 -248
  27. package/commands/fabric-scripts.md +0 -452
  28. package/commands/migration-assistant.md +0 -290
  29. package/commands/model-documenter.md +0 -242
  30. package/commands/report-layout.md +0 -296
  31. package/commands/rls-design.md +0 -533
  32. package/commands/theme-tweaker.md +0 -624
  33. package/skills/contributions/SKILL.md +0 -267
  34. package/skills/data-model-design/SKILL.md +0 -470
  35. package/skills/data-modeling/SKILL.md +0 -280
  36. package/skills/data-quality/SKILL.md +0 -664
  37. package/skills/dax/SKILL.md +0 -746
  38. package/skills/dax-doctor/SKILL.md +0 -250
  39. package/skills/dax-udf/SKILL.md +0 -489
  40. package/skills/deployment/SKILL.md +0 -320
  41. package/skills/excel-formulas/SKILL.md +0 -463
  42. package/skills/fabric-scripts/SKILL.md +0 -454
  43. package/skills/fast-standard/SKILL.md +0 -509
  44. package/skills/governance/SKILL.md +0 -258
  45. package/skills/migration-assistant/SKILL.md +0 -292
  46. package/skills/model-documenter/SKILL.md +0 -244
  47. package/skills/power-query/SKILL.md +0 -406
  48. package/skills/query-performance/SKILL.md +0 -480
  49. package/skills/report-design/SKILL.md +0 -207
  50. package/skills/report-layout/SKILL.md +0 -298
  51. package/skills/rls-design/SKILL.md +0 -535
  52. package/skills/semantic-model/SKILL.md +0 -237
  53. package/skills/testing-validation/SKILL.md +0 -643
  54. package/skills/theme-tweaker/SKILL.md +0 -626
  55. package/src/content/skills/contributions.md +0 -259
  56. package/src/content/skills/data-model-design.md +0 -462
  57. package/src/content/skills/data-modeling.md +0 -272
  58. package/src/content/skills/data-quality.md +0 -656
  59. package/src/content/skills/dax-doctor.md +0 -242
  60. package/src/content/skills/dax-udf.md +0 -481
  61. package/src/content/skills/dax.md +0 -738
  62. package/src/content/skills/deployment.md +0 -312
  63. package/src/content/skills/excel-formulas.md +0 -455
  64. package/src/content/skills/fabric-scripts.md +0 -446
  65. package/src/content/skills/fast-standard.md +0 -501
  66. package/src/content/skills/governance.md +0 -250
  67. package/src/content/skills/migration-assistant.md +0 -284
  68. package/src/content/skills/model-documenter.md +0 -236
  69. package/src/content/skills/power-query.md +0 -398
  70. package/src/content/skills/query-performance.md +0 -472
  71. package/src/content/skills/report-design.md +0 -199
  72. package/src/content/skills/report-layout.md +0 -290
  73. package/src/content/skills/rls-design.md +0 -527
  74. package/src/content/skills/semantic-model.md +0 -229
  75. package/src/content/skills/testing-validation.md +0 -635
  76. package/src/content/skills/theme-tweaker.md +0 -618
package/README.md CHANGED
@@ -3,239 +3,122 @@
3
3
  [![npm version](https://img.shields.io/npm/v/@luquimbo/bi-superpowers)](https://www.npmjs.com/package/@luquimbo/bi-superpowers)
4
4
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
5
5
  [![Node.js Version](https://img.shields.io/badge/node-%3E%3D18.0.0-brightgreen)](https://nodejs.org)
6
- [![Power BI](https://img.shields.io/badge/Power%20BI-Ready-F2C811?logo=powerbi)](https://powerbi.microsoft.com)
7
- [![Claude Code](https://img.shields.io/badge/Claude%20Code-plugin-191919)](https://docs.anthropic.com/en/docs/claude-code)
6
+ [![Power BI](https://img.shields.io/badge/Power%20BI-Desktop-F2C811?logo=powerbi)](https://powerbi.microsoft.com)
8
7
 
9
- AI-powered toolkit for Power BI, Microsoft Fabric & Excel development. Ships as a native Claude Code plugin with 24 skills, 11 interactive commands, and MCP integration with official Microsoft servers.
8
+ Toolkit open-source para trabajar con **Power BI Desktop** desde tu agente AI favorito. Funciona con los 5 agentes soportados: Claude Code, GitHub Copilot, Codex, Gemini CLI y Kilo Code.
10
9
 
11
- **Cross-platform**: Windows + macOS (Power BI Desktop and Excel MCP require Windows).
10
+ > **Estado:** versión inicial. 2 skills y 2 MCP servers para empezar a iterar.
12
11
 
13
- ## Works with
14
-
15
- | Platform | How | Status |
16
- |----------|-----|--------|
17
- | **Claude Code** | Native plugin (`--plugin-dir .`) | Full support |
18
- | **[1code.dev](https://1code.dev)** | Uses Claude Code SDK — plugins work automatically | Full support |
19
- | **Claude Desktop** | MCPB extension (`super build-desktop`) | Skills as MCP prompts |
12
+ ---
20
13
 
21
14
  ## Quick Start
22
15
 
23
- ### Option 1 — Install skills for your AI agents (fastest)
24
-
25
16
  ```bash
26
- npx @luquimbo/bi-superpowers install
17
+ # 1. Instalá la CLI
18
+ npm install -g @luquimbo/bi-superpowers
19
+
20
+ # 2. Instalá skills y MCPs en todos tus agentes
21
+ super install
27
22
  ```
28
23
 
29
- Interactive installer detects Claude Code, GitHub Copilot, Codex, Gemini CLI, Kilo Code and installs the 24 skills into the right directories.
24
+ Eso es todo. El instalador:
30
25
 
31
- ### Option 2 Full CLI with plugin generation
26
+ 1. Detecta qué agentes AI tenés instalados (Claude Code, Copilot, Codex, Gemini, Kilo).
27
+ 2. Te deja elegir para cuáles instalar (o hace todos con `--all --yes`).
28
+ 3. Copia los 2 skills en los directorios correctos de cada agente.
29
+ 4. Escribe los 2 MCPs en el config file correcto de cada agente (con el formato/schema que cada uno espera).
32
30
 
33
- ```bash
34
- # Install globally
35
- npm install -g @luquimbo/bi-superpowers
31
+ Reiniciá tu agente AI, y ya tenés bi-superpowers funcionando.
36
32
 
37
- # Initialize the plugin in your project
38
- cd your-bi-project
39
- super kickoff
33
+ ---
40
34
 
41
- # Run with the plugin
42
- claude --plugin-dir .
43
- ```
35
+ ## Qué viene incluido
44
36
 
45
- 100% open source (MIT). No license keys. All 24 skills and the full library ship with the npm package.
37
+ ### 2 Skills
46
38
 
47
- ### Claude Desktop
39
+ | Skill | Para qué |
40
+ |---|---|
41
+ | `project-kickoff` | Analizá el estado de tu proyecto BI y decidí próximos pasos |
42
+ | `pbi-connect` | Conectá tu agente AI a Power BI Desktop vía MCP |
48
43
 
49
- ```bash
50
- super build-desktop
51
- # Double-click bi-superpowers.mcpb to install in Claude Desktop
52
- # 24 skills available as MCP prompts
53
- ```
44
+ ### 2 MCP Servers (oficiales de Microsoft)
54
45
 
55
- ### Free models via OpenRouter
46
+ | MCP | Para qué |
47
+ |---|---|
48
+ | `powerbi-modeling` | Conexión local a Power BI Desktop (XMLA). Leer/escribir modelo semántico, ejecutar DAX. |
49
+ | `microsoft-learn` | HTTP MCP de Microsoft Learn — docs oficiales de Power BI/DAX/Fabric en contexto de la conversación. |
56
50
 
57
- Using [1code.dev](https://1code.dev) with free AI models? See [docs/openrouter-free-models.md](./docs/openrouter-free-models.md) for setup instructions.
51
+ ---
58
52
 
59
- ## Plugin Structure
53
+ ## Agentes soportados
60
54
 
61
- `super kickoff` generates the following in your project:
55
+ | Agente | Skills | MCP config path |
56
+ |---|---|---|
57
+ | **Claude Code** | ✅ `~/.claude/skills/` | `~/.claude.json` |
58
+ | **GitHub Copilot** | ✅ `~/.github/skills/` | `~/.copilot/mcp-config.json` |
59
+ | **Codex (OpenAI)** | ✅ `~/.agents/skills/` | `~/.codex/config.toml` |
60
+ | **Gemini CLI** | ✅ `~/.gemini/skills/` | `~/.gemini/settings.json` |
61
+ | **Kilo Code** | ✅ `~/.kilocode/skills/` | `~/.kilocode/mcp_settings.json` |
62
62
 
63
- ```
64
- your-project/
65
- ├── .claude-plugin/plugin.json # Plugin manifest
66
- ├── .mcp.json # Power BI + Fabric MCPs
67
- ├── commands/ # 11 slash commands (interactive wizards)
68
- ├── skills/ # 24 skills (SKILL.md files)
69
- ├── config.json # User preferences (experience level, language, domain)
70
- └── library/ → symlink # Snippets, templates, themes
71
- ```
63
+ `super install` escribe todo esto automáticamente.
72
64
 
73
- ## Skills (24)
74
-
75
- ### Command Skills — 11 Interactive Wizards
76
-
77
- | Skill | Purpose | Trigger |
78
- |-------|---------|---------|
79
- | `/project-kickoff` | Analyze and plan BI projects | "new project", "analyze" |
80
- | `/data-model-design` | Interactive star schema builder | "design model" |
81
- | `/dax-doctor` | DAX debugging and optimization | "debug DAX", "fix measure" |
82
- | `/theme-tweaker` | Customize Power BI themes | "customize theme", "colors" |
83
- | `/pbi-connect` | Connect to Power BI Desktop | "connect Power BI" |
84
- | `/rls-design` | Row-level security design | "RLS", "security" |
85
- | `/fabric-scripts` | Microsoft Fabric automation | "Fabric scripts" |
86
- | `/model-documenter` | Semantic model documentation | "document model" |
87
- | `/migration-assistant` | Migration and upgrade wizard | "migrate", "move to Fabric" |
88
- | `/report-layout` | Report page layout planner | "report layout" |
89
- | `/contributions` | Contribution guidelines | "contribute", "PR" |
90
-
91
- ### Reference Skills — 13 Background Knowledge
92
-
93
- | Skill | Purpose | Trigger |
94
- |-------|---------|---------|
95
- | `/dax` | DAX writing best practices | "DAX", "measure" |
96
- | `/power-query` | Power Query / M language | "Power Query", "M code" |
97
- | `/data-modeling` | Star schema theory and patterns | "star schema" |
98
- | `/excel-formulas` | Modern Excel formulas | "XLOOKUP", "Excel formula" |
99
- | `/fast-standard` | FP&A financial modeling (FAST) | "FAST standard" |
100
- | `/query-performance` | Performance optimization | "optimize", "slow" |
101
- | `/data-quality` | Data profiling and validation | "data quality" |
102
- | `/testing-validation` | DAX and data testing workflows | "testing", "test cases" |
103
- | `/governance` | Naming conventions and standards | "naming convention" |
104
- | `/semantic-model` | Semantic model best practices | "TMDL", "DirectLake" |
105
- | `/report-design` | Report design and visualization | "chart type", "IBCS" |
106
- | `/deployment` | CI/CD and deployment patterns | "CI/CD", "pipeline" |
107
- | `/dax-udf` | DAX user-defined functions | "UDF", "DEFINE FUNCTION" |
108
-
109
- ## MCP Integration
110
-
111
- 4 official Microsoft MCP servers configured automatically via `.mcp.json`:
112
-
113
- | MCP Server | Transport | Platform | Description |
114
- |------------|-----------|----------|-------------|
115
- | `powerbi-remote` | HTTP | Windows, macOS, Linux | Power BI remote operations via Fabric API |
116
- | `fabric-mcp-server` | stdio (`npx`) | Windows, macOS, Linux | Microsoft Fabric automation |
117
- | `powerbi-modeling-mcp` | stdio (local) | Windows only | Local Power BI Desktop modeling |
118
- | `microsoft-learn` | HTTP | Windows, macOS, Linux | Search Microsoft docs, code samples |
119
-
120
- > **Note**: `powerbi-modeling-mcp` requires Power BI Desktop (Windows only). `microsoft-learn` is free, requires no authentication, and provides access to the full Microsoft Learn documentation library.
121
-
122
- ## CLI Commands
123
-
124
- | Command | Description |
125
- |---------|-------------|
126
- | `super kickoff` | Generate the Claude Code plugin in your project |
127
- | `super recharge` | Regenerate plugin after editing source skills |
128
- | `super build-desktop` | Build MCPB extension for Claude Desktop |
129
- | `super mcp-setup` | Configure MCP servers |
130
- | `super install` | Install skills into your AI agents' directories |
131
- | `super powers` | Show available skills, snippets, and themes |
132
- | `super upgrade` | Update to the latest version |
133
- | `super xray <query>` | Search snippets and library content |
134
- | `super checkup [file]` | Validate skill files |
135
- | `super scan` | Show diff between source and generated configs |
136
- | `super sentinel` | Watch for changes and auto-regenerate |
137
- | `super help` | Show help menu |
138
-
139
- ## Library
140
-
141
- The `library/` folder contains reusable assets accessible from your prompts:
65
+ ### Instalación selectiva
142
66
 
143
- ```
144
- library/
145
- ├── snippets/ # Code patterns
146
- │ ├── dax/ # Time intelligence, CALCULATE, rankings, UDFs
147
- │ ├── power-query/ # Transformations, error handling, API integration
148
- │ ├── excel-formulas/ # Dynamic arrays, lookups, text functions
149
- │ ├── report-design/ # Chart selection, accessibility, layouts
150
- │ └── governance/ # Naming conventions, review checklists
151
- ├── templates/ # Project starters (Power BI, Excel, data models)
152
- ├── themes/ # Power BI JSON themes (6 themes included)
153
- └── examples/ # Reference implementations
154
- ├── finance-reporting/
155
- ├── hr-analytics/
156
- ├── retail-analytics/
157
- ├── supply-chain/
158
- └── marketing-analytics/
67
+ ```bash
68
+ # Solo para Claude Code
69
+ super install --agent claude-code --yes
70
+
71
+ # Solo para Claude Code y GitHub Copilot
72
+ super install --agent claude-code --agent github-copilot --yes
73
+
74
+ # Todos sin prompts
75
+ super install --all --yes
159
76
  ```
160
77
 
161
- Use in prompts: *"Using patterns from library/snippets/dax/time-intelligence.md, create a rolling 12-month average measure"*
78
+ ---
162
79
 
163
- ## Configuration
80
+ ## Actualizar
164
81
 
165
- `config.json` provides context to the AI about your experience level and domain:
82
+ ```bash
83
+ # Actualizar la CLI a la última versión
84
+ npm install -g @luquimbo/bi-superpowers@latest
166
85
 
167
- ```json
168
- {
169
- "experienceLevel": "intermediate",
170
- "language": "en",
171
- "workArea": "finance",
172
- "powerBIConnection": "desktop"
173
- }
86
+ # Re-instalar skills y MCPs (sobrescribe los viejos)
87
+ super install --all --yes
174
88
  ```
175
89
 
176
- ## Project Types
90
+ ---
177
91
 
178
- | Feature | Desktop (.pbix) | PBIP | Fabric |
179
- |---------|-----------------|------|--------|
180
- | Single file | Yes | No | N/A (cloud) |
181
- | Git-friendly | No | Yes | Yes |
182
- | Code reviews | No | Yes | Yes |
183
- | Works offline | Yes | Yes | No |
184
- | Team collaboration | Limited | Excellent | Excellent |
185
- | AI file access | Via running PBI | Direct file access | Via API |
186
- | CI/CD ready | No | Yes | Yes |
92
+ ## Requisitos
187
93
 
188
- ## Repository Structure
94
+ - **Node.js ≥ 18**
95
+ - **Power BI Desktop en Windows** (para el MCP `powerbi-modeling` — el MCP `microsoft-learn` funciona en cualquier plataforma)
96
+ - Al menos uno de: Claude Code, GitHub Copilot, Codex, Gemini CLI, Kilo Code
189
97
 
190
- ```
191
- bi-superpowers/
192
- ├── bin/ # CLI tool and commands
193
- ├── src/content/ # Source content (single source of truth)
194
- │ ├── base.md # Core AI identity
195
- │ ├── routing.md # Skill activation logic
196
- │ └── skills/ # 24 skill definitions
197
- ├── library/ # Reusable assets (snippets, templates, themes)
198
- ├── desktop-extension/ # Claude Desktop MCPB template
199
- ├── docs/ # Additional documentation
200
- ├── commands/ # Generated slash commands
201
- ├── skills/ # Generated SKILL.md files
202
- ├── .claude-plugin/ # Plugin manifest
203
- ├── .mcp.json # MCP server configuration
204
- ├── config.json # AI preferences
205
- └── AGENTS.md # AI context and documentation
206
- ```
98
+ ---
207
99
 
208
- ## Development
100
+ ## Comandos
209
101
 
210
102
  ```bash
211
- npm install
212
- npm run build:plugin # Generate 11 commands + 24 skills
213
- npm test # 77 tests
214
- npm run check # ESLint + Prettier
103
+ super install # Instalá skills + MCPs en tus agentes AI
104
+ super kickoff # Generá el plugin de Claude Code en un proyecto (avanzado)
105
+ super recharge # Regenerá el plugin tras editar skills fuente
106
+ super powers # Listá skills disponibles
107
+ super upgrade # Actualizá la CLI a la última versión
108
+ super help # Ayuda completa
215
109
  ```
216
110
 
217
- ## Resources
218
-
219
- - [Claude Code plugins](https://docs.anthropic.com/en/docs/claude-code)
220
- - [Power BI MCP overview](https://learn.microsoft.com/en-us/power-bi/developer/mcp/mcp-servers-overview)
221
- - [Microsoft Fabric MCP](https://github.com/microsoft/mcp/tree/main/servers/Fabric.Mcp.Server)
222
- - [DAX Guide](https://dax.guide)
223
- - [OpenRouter free models](./docs/openrouter-free-models.md)
111
+ ---
224
112
 
225
- ## Author
113
+ ## Contribuir
226
114
 
227
- **Lucas Sánchez** BI Consultant with 10+ years delivering Power BI, Excel, and data analytics projects.
115
+ Este proyecto está empezando. Si querés agregar skills, mejorar los existentes, o reportar bugs:
228
116
 
229
- Creator of **[Acadevor.com](https://acadevor.com)**, the leading Spanish-speaking community for Business Intelligence professionals.
117
+ - Abrí un issue en https://github.com/luquimbo/bi-superpowers/issues
118
+ - Pull requests bienvenidas
230
119
 
231
- - [LinkedIn](https://www.linkedin.com/in/luquimbo/)
232
- - [GitHub](https://github.com/luquimbo)
233
- - [Acadevor](https://acadevor.com)
120
+ ---
234
121
 
235
122
  ## License
236
123
 
237
- [MIT](./LICENSE)
238
-
239
- ---
240
-
241
- **BI Agent Superpowers** v1.0.0 — AI-powered toolkit for Business Intelligence.
124
+ MIT © Lucas Sanchez ([@luquimbo](https://github.com/luquimbo))
package/bin/cli.js CHANGED
@@ -164,57 +164,56 @@ BI Agent Superpowers v${VERSION}
164
164
  ================================
165
165
 
166
166
  Claude Code plugin for Power BI, Fabric & Excel development.
167
- Works with: Claude Code, 1code.dev, Claude Desktop.
167
+
168
+ Quick Start:
169
+ super kickoff # Genera el plugin en tu proyecto
170
+ claude --plugin-dir . # Abrí Claude Code con el plugin
168
171
 
169
172
  Usage:
170
173
  super <command> [options]
171
174
 
172
- Commands:
173
- install Install skills for your AI agents (Claude, Copilot, Codex...)
174
- kickoff [path] Initialize the Claude Code plugin in your project
175
- recharge [path] Regenerate the plugin from source skills
176
- build-desktop Build .mcpb extension for Claude Desktop
177
- powers List available skills and resources
178
- xray <query> Search snippets and library content
179
- checkup [file] Validate skill files
180
- scan Show changes between source and generated configs
181
- sentinel Watch for changes and auto-regenerate
182
- mcp-setup Configure official Microsoft MCP servers
183
- upgrade Update to latest version
184
- about Show installation info
185
- help Show this help
186
-
187
- Repo Multi-Proyecto (v3):
188
- setup Create your bi-repo for version control
189
- add <file> Add a .pbix/.xlsx project to the repo
190
- pull [project] Pull changes from original file to repo
191
- push [project] Push changes from repo to original file
192
- sync-source Bidirectional sync (detects which is newer)
193
- sync-profile Sync snippets to a base profile
175
+ Primary commands (Claude Code):
176
+ kickoff [path] Genera el plugin completo (skills + commands + MCPs)
177
+ recharge [path] Regenerá el plugin tras editar skills fuente
178
+ build-desktop Buildea la extensión .mcpb para Claude Desktop
179
+ mcp-setup Configurá los MCP servers de Microsoft
180
+ powers Listá skills y recursos disponibles
181
+ upgrade Actualizá a la última versión
182
+ about Info de la instalación
183
+ help Mostrá esta ayuda
184
+
185
+ Developer tools:
186
+ xray <query> Buscá snippets y contenido de la biblioteca
187
+ checkup [file] Validá archivos de skills
188
+ scan Diff entre source y generated
189
+ sentinel Watch y auto-regenerá
194
190
 
195
- Options:
196
- --dry-run Preview changes without creating files (kickoff, recharge)
191
+ Repo Multi-Proyecto:
192
+ setup Creá tu bi-repo para version control
193
+ add <file> Agregá un proyecto .pbix/.xlsx al repo
194
+ pull [project] Pull changes desde el archivo original
195
+ push [project] Push changes al archivo original
196
+ sync-source Bidirectional sync (detecta cuál es más nuevo)
197
+ sync-profile Sync snippets al profile base
197
198
 
198
- Install options:
199
- --agent, -a Specify agents (e.g. -a claude-code -a codex)
200
- --all Install for all supported agents
201
- --yes, -y Skip confirmation prompts
199
+ Experimental (solo skills, sin commands ni MCPs):
200
+ install Instalá skills en otros agentes AI (Copilot, Codex, Gemini, Kilo)
201
+
202
+ Options:
203
+ --dry-run Preview de cambios sin escribir archivos (kickoff, recharge)
202
204
 
203
205
  Examples:
204
- super install # Interactive multi-agent installer
205
- super install -a claude-code # Install for Claude Code only
206
- super install --all --yes # Install for all agents, no prompts
207
- super kickoff # Initialize plugin in current directory
208
- super kickoff ./my-project # Initialize in specific directory
209
- super kickoff --dry-run # Preview what would be created
210
- super recharge # Regenerate plugin from source skills
211
- super build-desktop # Build .mcpb for Claude Desktop
212
- super xray "YTD" # Search for time intelligence patterns
213
- super xray --category dax # Search within a category
214
- super checkup # Validate all skills
215
- super mcp-setup # Configure official Microsoft MCPs
216
- super powers # Show available superpowers
217
- claude --plugin-dir . # Run Claude Code with the plugin
206
+ super kickoff # Inicializá el plugin en el directorio actual
207
+ super kickoff ./my-project # Inicializá en un directorio específico
208
+ super kickoff --dry-run # Preview de qué archivos se crearían
209
+ super recharge # Regenerá el plugin tras editar skills
210
+ super build-desktop # Buildeá .mcpb para Claude Desktop
211
+ super mcp-setup # Configurá los MCPs de Microsoft
212
+ super powers # Mostrá todos los skills disponibles
213
+ claude --plugin-dir . # Corré Claude Code con el plugin
214
+
215
+ super install # [Experimental] Instalá skills en otros agentes
216
+ super install -a claude-code # Instalá solo para un agente específico
218
217
 
219
218
  Repo Multi-Proyecto:
220
219
  super setup # Create your bi-repo (first time)
@@ -26,6 +26,7 @@ const path = require('path');
26
26
  const os = require('os');
27
27
  const readline = require('readline');
28
28
  const { AGENTS, UNIVERSAL_DIR } = require('../lib/agents');
29
+ const { writeMcpConfigForAgent } = require('../lib/mcp-config');
29
30
 
30
31
  /**
31
32
  * Detecta qué agentes están instalados revisando sus directorios de config.
@@ -348,7 +349,7 @@ async function installCommand(args, config) {
348
349
  )
349
350
  );
350
351
 
351
- // Instalar
352
+ // Instalar skills
352
353
  let agentResults;
353
354
  let copyFallbacks;
354
355
  try {
@@ -356,18 +357,18 @@ async function installCommand(args, config) {
356
357
  agentResults = result.agentResults;
357
358
  copyFallbacks = result.copyFallbacks;
358
359
  } catch (err) {
359
- console.error(chalk.red(formatFsError(err, 'Falló la instalación')));
360
+ console.error(chalk.red(formatFsError(err, 'Falló la instalación de skills')));
360
361
  process.exit(1);
361
362
  }
362
363
 
363
- // Universal
364
+ // Universal skills path
364
365
  const universalAgents = selectedAgents
365
366
  .filter((id) => AGENTS[id] && AGENTS[id].dir === UNIVERSAL_DIR)
366
367
  .map((id) => AGENTS[id].name);
367
368
  const universalSuffix = universalAgents.length > 0 ? ` — ${universalAgents.join(', ')}` : '';
368
369
  console.log(chalk.green(` ✓ ${UNIVERSAL_DIR}/ (${skillDirs.length} skills)${universalSuffix}`));
369
370
 
370
- // Por agente
371
+ // Skills por agente
371
372
  for (const result of agentResults) {
372
373
  const icon = result.method === 'symlinked' ? '→' : '✓';
373
374
  console.log(chalk.green(` ${icon} ${result.dir}/ (${result.method}) — ${result.agent}`));
@@ -384,23 +385,73 @@ async function installCommand(args, config) {
384
385
  );
385
386
  }
386
387
 
388
+ // Configurar MCPs para cada agente seleccionado
389
+ console.log(
390
+ chalk.cyan('\n Configurando MCP servers (Power BI Modeling + Microsoft Learn)...\n')
391
+ );
392
+ const mcpResults = [];
393
+ for (const agentId of selectedAgents) {
394
+ const agent = AGENTS[agentId];
395
+ try {
396
+ const configPath = writeMcpConfigForAgent(agentId, packageDir);
397
+ if (configPath) {
398
+ const relPath = configPath.replace(baseDir, '~');
399
+ console.log(chalk.green(` ✓ ${relPath} — ${agent.name}`));
400
+ mcpResults.push({ agent: agent.name, configPath, success: true });
401
+ }
402
+ } catch (err) {
403
+ console.log(chalk.red(` ✗ ${agent.name}: ${err.message}`));
404
+ mcpResults.push({ agent: agent.name, success: false, error: err.message });
405
+ }
406
+ }
407
+
387
408
  // Resumen
388
409
  const totalAgents = agentResults.length + (universalAgents.length > 0 ? 1 : 0);
410
+ const mcpSuccess = mcpResults.filter((r) => r.success).length;
411
+ const mcpFailures = mcpResults.filter((r) => !r.success);
412
+ const hasFailures = mcpFailures.length > 0;
413
+
414
+ const successMsg = `Instalados ${skillDirs.length} skills + 2 MCPs para ${totalAgents} agentes`;
415
+ const failureMsg = `Instalados ${skillDirs.length} skills. MCPs: ${mcpSuccess}/${mcpResults.length} agentes ✓, ${mcpFailures.length} con errores.`;
416
+ const headerLine = hasFailures ? chalk.yellow.bold(failureMsg) : chalk.green.bold(successMsg);
417
+
418
+ const failureDetail = hasFailures
419
+ ? '\n' +
420
+ chalk.red('Agentes con errores en MCP:') +
421
+ '\n' +
422
+ mcpFailures.map((r) => chalk.red(` ✗ ${r.agent}: ${r.error}`)).join('\n') +
423
+ '\n'
424
+ : '';
425
+
389
426
  console.log(
390
427
  boxen(
391
- chalk.green.bold(`Instalados ${skillDirs.length} skills para ${totalAgents} agentes`) +
428
+ headerLine +
429
+ failureDetail +
430
+ '\n\n' +
431
+ chalk.gray(`MCPs configurados en ${mcpSuccess}/${mcpResults.length} agentes.`) +
432
+ '\n' +
433
+ chalk.gray('Reiniciá tu agente AI para que tome los MCPs nuevos.') +
392
434
  '\n\n' +
393
- chalk.gray('Los skills están listos. Abrí tu agente AI y empezá a usarlos.') +
435
+ chalk.gray('Los 2 skills disponibles:') +
394
436
  '\n' +
395
- chalk.gray('Ejemplo: "Ayudame a escribir una medida DAX de ventas YTD"'),
437
+ chalk.gray(' /project-kickoff — Analizá tu proyecto BI') +
438
+ '\n' +
439
+ chalk.gray(' /pbi-connect — Conectá Claude a Power BI Desktop'),
396
440
  {
397
441
  padding: 1,
398
442
  margin: { top: 1 },
399
443
  borderStyle: 'round',
400
- borderColor: 'green',
444
+ borderColor: hasFailures ? 'yellow' : 'green',
401
445
  }
402
446
  )
403
447
  );
448
+
449
+ if (hasFailures) {
450
+ // Non-zero exit so CI/scripts know something went wrong, but skills
451
+ // still got installed — we use exit code 2 to distinguish from total
452
+ // failure (exit 1).
453
+ process.exitCode = 2;
454
+ }
404
455
  }
405
456
 
406
457
  // Exports internos para testing
@@ -210,3 +210,80 @@ describe('install command - module exports', () => {
210
210
  assert.strictEqual(typeof installCommand.formatFsError, 'function');
211
211
  });
212
212
  });
213
+
214
+ describe('install command - integration: --all --yes', () => {
215
+ let tempHome;
216
+ let tempPkg;
217
+ let origHome;
218
+
219
+ beforeEach(() => {
220
+ tempHome = fs.mkdtempSync(path.join(os.tmpdir(), 'bi-install-int-home-'));
221
+ tempPkg = fs.mkdtempSync(path.join(os.tmpdir(), 'bi-install-int-pkg-'));
222
+
223
+ // Minimal fake package layout: skills/<name>/SKILL.md + launcher file
224
+ const skillsDir = path.join(tempPkg, 'skills');
225
+ for (const skillName of ['project-kickoff', 'pbi-connect']) {
226
+ const dir = path.join(skillsDir, skillName);
227
+ fs.mkdirSync(dir, { recursive: true });
228
+ fs.writeFileSync(
229
+ path.join(dir, 'SKILL.md'),
230
+ `---\nname: ${skillName}\ndescription: fake skill for test\n---\n# ${skillName}\n`
231
+ );
232
+ }
233
+ fs.mkdirSync(path.join(tempPkg, 'bin', 'mcp'), { recursive: true });
234
+ fs.writeFileSync(
235
+ path.join(tempPkg, 'bin', 'mcp', 'powerbi-modeling-launcher.js'),
236
+ '// fake launcher\n'
237
+ );
238
+
239
+ origHome = os.homedir;
240
+ os.homedir = () => tempHome;
241
+ });
242
+
243
+ afterEach(() => {
244
+ os.homedir = origHome;
245
+ fs.rmSync(tempHome, { recursive: true, force: true });
246
+ fs.rmSync(tempPkg, { recursive: true, force: true });
247
+ });
248
+
249
+ test('installs skills and writes MCP config for all 5 agents', async () => {
250
+ const origExitCode = process.exitCode;
251
+ try {
252
+ await installCommand(['--all', '--yes'], {
253
+ packageDir: tempPkg,
254
+ version: '9.9.9-test',
255
+ });
256
+ } finally {
257
+ // Reset exit code so subsequent tests aren't affected
258
+ process.exitCode = origExitCode;
259
+ }
260
+
261
+ // Skills installed at universal path
262
+ assert.ok(
263
+ fs.existsSync(path.join(tempHome, '.agents', 'skills', 'project-kickoff', 'SKILL.md'))
264
+ );
265
+ assert.ok(fs.existsSync(path.join(tempHome, '.agents', 'skills', 'pbi-connect', 'SKILL.md')));
266
+
267
+ // MCP configs written for all 5 agents
268
+ const expectedMcpFiles = [
269
+ path.join(tempHome, '.claude.json'),
270
+ path.join(tempHome, '.copilot', 'mcp-config.json'),
271
+ path.join(tempHome, '.codex', 'config.toml'),
272
+ path.join(tempHome, '.gemini', 'settings.json'),
273
+ path.join(tempHome, '.kilocode', 'mcp_settings.json'),
274
+ ];
275
+ for (const filePath of expectedMcpFiles) {
276
+ assert.ok(fs.existsSync(filePath), `expected MCP config at ${filePath}`);
277
+ }
278
+
279
+ // Claude Code config has both servers under mcpServers
280
+ const claudeConfig = JSON.parse(fs.readFileSync(path.join(tempHome, '.claude.json'), 'utf8'));
281
+ assert.ok(claudeConfig.mcpServers['powerbi-modeling']);
282
+ assert.ok(claudeConfig.mcpServers['microsoft-learn']);
283
+
284
+ // Codex TOML has both sections
285
+ const codexToml = fs.readFileSync(path.join(tempHome, '.codex', 'config.toml'), 'utf8');
286
+ assert.ok(codexToml.includes('[mcp_servers.powerbi-modeling]'));
287
+ assert.ok(codexToml.includes('[mcp_servers.microsoft-learn]'));
288
+ });
289
+ });
@@ -20,37 +20,12 @@ const {
20
20
  } = require('../microsoft-mcp');
21
21
  const { parseSkillMetadata, getSkillPurpose } = require('./shared');
22
22
 
23
- const COMMAND_SKILLS = new Set([
24
- 'project-kickoff',
25
- 'data-model-design',
26
- 'theme-tweaker',
27
- 'pbi-connect',
28
- 'rls-design',
29
- 'fabric-scripts',
30
- 'contributions',
31
- // Phase 2 — new interactive wizards
32
- 'dax-doctor',
33
- 'model-documenter',
34
- 'migration-assistant',
35
- 'report-layout',
36
- ]);
37
-
38
- const REFERENCE_SKILLS = new Set([
39
- 'dax',
40
- 'power-query',
41
- 'data-modeling',
42
- 'query-performance',
43
- 'testing-validation',
44
- 'data-quality',
45
- 'fast-standard',
46
- 'excel-formulas',
47
- // Phase 3 — new background knowledge
48
- 'governance',
49
- 'semantic-model',
50
- 'report-design',
51
- 'deployment',
52
- 'dax-udf',
53
- ]);
23
+ // Currently the plugin ships 2 skills, both interactive wizards.
24
+ // The old reference-skills split is kept as an empty set so that any
25
+ // downstream code that checks `REFERENCE_SKILLS.has(x)` still works.
26
+ const COMMAND_SKILLS = new Set(['project-kickoff', 'pbi-connect']);
27
+
28
+ const REFERENCE_SKILLS = new Set();
54
29
 
55
30
  /**
56
31
  * Ensure a directory exists.