@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.
- package/.claude-plugin/marketplace.json +2 -24
- package/.claude-plugin/plugin.json +1 -1
- package/.claude-plugin/skill-manifest.json +2 -178
- package/.mcp.json +0 -16
- package/.plugin/plugin.json +1 -1
- package/AGENTS.md +37 -55
- package/CHANGELOG.md +44 -0
- package/README.md +74 -191
- package/bin/cli.js +42 -43
- package/bin/commands/install.js +59 -8
- package/bin/commands/install.test.js +77 -0
- package/bin/lib/generators/claude-plugin.js +6 -31
- package/bin/lib/generators/claude-plugin.test.js +12 -11
- package/bin/lib/mcp-config.js +287 -0
- package/bin/lib/mcp-config.test.js +273 -0
- package/bin/lib/microsoft-mcp.js +6 -20
- package/bin/lib/microsoft-mcp.test.js +25 -21
- package/bin/postinstall.js +18 -23
- package/bin/utils/mcp-detect.js +4 -20
- package/bin/utils/mcp-detect.test.js +9 -33
- package/package.json +1 -1
- package/skills/pbi-connect/SKILL.md +1 -1
- package/skills/project-kickoff/SKILL.md +1 -1
- package/commands/contributions.md +0 -265
- package/commands/data-model-design.md +0 -468
- package/commands/dax-doctor.md +0 -248
- package/commands/fabric-scripts.md +0 -452
- package/commands/migration-assistant.md +0 -290
- package/commands/model-documenter.md +0 -242
- package/commands/report-layout.md +0 -296
- package/commands/rls-design.md +0 -533
- package/commands/theme-tweaker.md +0 -624
- package/skills/contributions/SKILL.md +0 -267
- package/skills/data-model-design/SKILL.md +0 -470
- package/skills/data-modeling/SKILL.md +0 -280
- package/skills/data-quality/SKILL.md +0 -664
- package/skills/dax/SKILL.md +0 -746
- package/skills/dax-doctor/SKILL.md +0 -250
- package/skills/dax-udf/SKILL.md +0 -489
- package/skills/deployment/SKILL.md +0 -320
- package/skills/excel-formulas/SKILL.md +0 -463
- package/skills/fabric-scripts/SKILL.md +0 -454
- package/skills/fast-standard/SKILL.md +0 -509
- package/skills/governance/SKILL.md +0 -258
- package/skills/migration-assistant/SKILL.md +0 -292
- package/skills/model-documenter/SKILL.md +0 -244
- package/skills/power-query/SKILL.md +0 -406
- package/skills/query-performance/SKILL.md +0 -480
- package/skills/report-design/SKILL.md +0 -207
- package/skills/report-layout/SKILL.md +0 -298
- package/skills/rls-design/SKILL.md +0 -535
- package/skills/semantic-model/SKILL.md +0 -237
- package/skills/testing-validation/SKILL.md +0 -643
- package/skills/theme-tweaker/SKILL.md +0 -626
- package/src/content/skills/contributions.md +0 -259
- package/src/content/skills/data-model-design.md +0 -462
- package/src/content/skills/data-modeling.md +0 -272
- package/src/content/skills/data-quality.md +0 -656
- package/src/content/skills/dax-doctor.md +0 -242
- package/src/content/skills/dax-udf.md +0 -481
- package/src/content/skills/dax.md +0 -738
- package/src/content/skills/deployment.md +0 -312
- package/src/content/skills/excel-formulas.md +0 -455
- package/src/content/skills/fabric-scripts.md +0 -446
- package/src/content/skills/fast-standard.md +0 -501
- package/src/content/skills/governance.md +0 -250
- package/src/content/skills/migration-assistant.md +0 -284
- package/src/content/skills/model-documenter.md +0 -236
- package/src/content/skills/power-query.md +0 -398
- package/src/content/skills/query-performance.md +0 -472
- package/src/content/skills/report-design.md +0 -199
- package/src/content/skills/report-layout.md +0 -290
- package/src/content/skills/rls-design.md +0 -527
- package/src/content/skills/semantic-model.md +0 -229
- package/src/content/skills/testing-validation.md +0 -635
- package/src/content/skills/theme-tweaker.md +0 -618
package/README.md
CHANGED
|
@@ -3,239 +3,122 @@
|
|
|
3
3
|
[](https://www.npmjs.com/package/@luquimbo/bi-superpowers)
|
|
4
4
|
[](https://opensource.org/licenses/MIT)
|
|
5
5
|
[](https://nodejs.org)
|
|
6
|
-
[](https://docs.anthropic.com/en/docs/claude-code)
|
|
6
|
+
[](https://powerbi.microsoft.com)
|
|
8
7
|
|
|
9
|
-
|
|
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
|
-
**
|
|
10
|
+
> **Estado:** versión inicial. 2 skills y 2 MCP servers para empezar a iterar.
|
|
12
11
|
|
|
13
|
-
|
|
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
|
-
|
|
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
|
-
|
|
24
|
+
Eso es todo. El instalador:
|
|
30
25
|
|
|
31
|
-
|
|
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
|
-
|
|
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
|
-
|
|
38
|
-
cd your-bi-project
|
|
39
|
-
super kickoff
|
|
33
|
+
---
|
|
40
34
|
|
|
41
|
-
|
|
42
|
-
claude --plugin-dir .
|
|
43
|
-
```
|
|
35
|
+
## Qué viene incluido
|
|
44
36
|
|
|
45
|
-
|
|
37
|
+
### 2 Skills
|
|
46
38
|
|
|
47
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
51
|
+
---
|
|
58
52
|
|
|
59
|
-
##
|
|
53
|
+
## Agentes soportados
|
|
60
54
|
|
|
61
|
-
|
|
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
|
-
|
|
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
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
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
|
-
|
|
78
|
+
---
|
|
162
79
|
|
|
163
|
-
##
|
|
80
|
+
## Actualizar
|
|
164
81
|
|
|
165
|
-
|
|
82
|
+
```bash
|
|
83
|
+
# Actualizar la CLI a la última versión
|
|
84
|
+
npm install -g @luquimbo/bi-superpowers@latest
|
|
166
85
|
|
|
167
|
-
|
|
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
|
-
|
|
90
|
+
---
|
|
177
91
|
|
|
178
|
-
|
|
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
|
-
|
|
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
|
-
##
|
|
100
|
+
## Comandos
|
|
209
101
|
|
|
210
102
|
```bash
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
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
|
-
|
|
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
|
-
##
|
|
113
|
+
## Contribuir
|
|
226
114
|
|
|
227
|
-
|
|
115
|
+
Este proyecto está empezando. Si querés agregar skills, mejorar los existentes, o reportar bugs:
|
|
228
116
|
|
|
229
|
-
|
|
117
|
+
- Abrí un issue en https://github.com/luquimbo/bi-superpowers/issues
|
|
118
|
+
- Pull requests bienvenidas
|
|
230
119
|
|
|
231
|
-
|
|
232
|
-
- [GitHub](https://github.com/luquimbo)
|
|
233
|
-
- [Acadevor](https://acadevor.com)
|
|
120
|
+
---
|
|
234
121
|
|
|
235
122
|
## License
|
|
236
123
|
|
|
237
|
-
[
|
|
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
|
-
|
|
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
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
powers
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
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
|
-
|
|
196
|
-
|
|
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
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
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
|
|
205
|
-
super
|
|
206
|
-
super
|
|
207
|
-
super
|
|
208
|
-
super
|
|
209
|
-
super
|
|
210
|
-
super
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
super
|
|
214
|
-
super
|
|
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)
|
package/bin/commands/install.js
CHANGED
|
@@ -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
|
-
//
|
|
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
|
-
|
|
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
|
|
435
|
+
chalk.gray('Los 2 skills disponibles:') +
|
|
394
436
|
'\n' +
|
|
395
|
-
chalk.gray('
|
|
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
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
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.
|