@luquimbo/bi-superpowers 4.1.5 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +5 -5
- package/.claude-plugin/plugin.json +1 -1
- package/.claude-plugin/skill-manifest.json +17 -17
- package/.plugin/plugin.json +1 -1
- package/AGENTS.md +50 -54
- package/CHANGELOG.md +67 -0
- package/README.md +103 -24
- package/bin/cli.js +12 -8
- package/bin/commands/build-desktop.js +37 -2
- package/bin/commands/diff.js +2 -2
- package/bin/commands/install.js +29 -7
- package/bin/commands/lint.js +2 -2
- package/bin/commands/mcp-setup.js +20 -30
- package/bin/commands/validate-projects.js +425 -0
- package/bin/commands/watch.js +1 -1
- package/bin/lib/generators/claude-plugin.js +20 -5
- package/bin/lib/generators/shared.js +8 -8
- package/bin/lib/skills.js +5 -5
- package/bin/postinstall.js +3 -3
- package/commands/{pbi-connect.md → bi-connect.md} +151 -3
- package/commands/{project-kickoff.md → bi-kickoff.md} +9 -9
- package/commands/{report-design.md → bi-report.md} +12 -12
- package/commands/bi-start.md +20 -20
- package/desktop-extension/manifest.json +1 -1
- package/package.json +1 -1
- package/skills/{pbi-connect → bi-connect}/SKILL.md +153 -5
- package/skills/{pbi-connect → bi-connect}/scripts/update-check.js +1 -1
- package/skills/{project-kickoff → bi-kickoff}/SKILL.md +11 -11
- package/skills/{report-design → bi-kickoff}/scripts/update-check.js +1 -1
- package/skills/{report-design → bi-report}/SKILL.md +14 -14
- package/skills/{report-design → bi-report}/references/layouts/hr.md +1 -1
- package/{src/content/skills/report-design → skills/bi-report}/references/native-visuals.md +1 -1
- package/{src/content/skills/report-design → skills/bi-report}/references/pbir-preview-activation.md +3 -3
- package/{src/content/skills/report-design → skills/bi-report}/references/troubleshooting.md +1 -1
- package/skills/{project-kickoff → bi-report}/scripts/update-check.js +1 -1
- package/skills/bi-start/SKILL.md +21 -21
- package/skills/bi-start/scripts/update-check.js +1 -1
- package/src/content/base.md +6 -5
- package/src/content/routing.md +22 -20
- package/src/content/skills/{pbi-connect.md → bi-connect.md} +149 -1
- package/src/content/skills/{project-kickoff.md → bi-kickoff.md} +8 -8
- package/src/content/skills/{report-design → bi-report}/SKILL.md +11 -11
- package/src/content/skills/{report-design → bi-report}/references/layouts/hr.md +1 -1
- package/{skills/report-design → src/content/skills/bi-report}/references/native-visuals.md +1 -1
- package/{skills/report-design → src/content/skills/bi-report}/references/pbir-preview-activation.md +3 -3
- package/{skills/report-design → src/content/skills/bi-report}/references/troubleshooting.md +1 -1
- package/src/content/skills/bi-start.md +20 -20
- /package/skills/{report-design → bi-report}/references/cli-commands.md +0 -0
- /package/skills/{report-design → bi-report}/references/cli-setup.md +0 -0
- /package/skills/{report-design → bi-report}/references/close-write-open-pattern.md +0 -0
- /package/skills/{report-design → bi-report}/references/layouts/finance.md +0 -0
- /package/skills/{report-design → bi-report}/references/layouts/generic.md +0 -0
- /package/skills/{report-design → bi-report}/references/layouts/marketing.md +0 -0
- /package/skills/{report-design → bi-report}/references/layouts/operations.md +0 -0
- /package/skills/{report-design → bi-report}/references/layouts/sales.md +0 -0
- /package/skills/{report-design → bi-report}/references/pbi-desktop-installation.md +0 -0
- /package/skills/{report-design → bi-report}/references/slicer.md +0 -0
- /package/skills/{report-design → bi-report}/references/textbox.md +0 -0
- /package/skills/{report-design → bi-report}/references/themes/BISuperpowers.json +0 -0
- /package/skills/{report-design → bi-report}/references/visual-types.md +0 -0
- /package/skills/{report-design → bi-report}/scripts/apply-theme.js +0 -0
- /package/skills/{report-design → bi-report}/scripts/create-visual.js +0 -0
- /package/skills/{report-design → bi-report}/scripts/ensure-pbi-cli.sh +0 -0
- /package/skills/{report-design → bi-report}/scripts/validate-pbir.js +0 -0
- /package/src/content/skills/{report-design → bi-report}/references/cli-commands.md +0 -0
- /package/src/content/skills/{report-design → bi-report}/references/cli-setup.md +0 -0
- /package/src/content/skills/{report-design → bi-report}/references/close-write-open-pattern.md +0 -0
- /package/src/content/skills/{report-design → bi-report}/references/layouts/finance.md +0 -0
- /package/src/content/skills/{report-design → bi-report}/references/layouts/generic.md +0 -0
- /package/src/content/skills/{report-design → bi-report}/references/layouts/marketing.md +0 -0
- /package/src/content/skills/{report-design → bi-report}/references/layouts/operations.md +0 -0
- /package/src/content/skills/{report-design → bi-report}/references/layouts/sales.md +0 -0
- /package/src/content/skills/{report-design → bi-report}/references/pbi-desktop-installation.md +0 -0
- /package/src/content/skills/{report-design → bi-report}/references/slicer.md +0 -0
- /package/src/content/skills/{report-design → bi-report}/references/textbox.md +0 -0
- /package/src/content/skills/{report-design → bi-report}/references/themes/BISuperpowers.json +0 -0
- /package/src/content/skills/{report-design → bi-report}/references/visual-types.md +0 -0
- /package/src/content/skills/{report-design → bi-report}/scripts/apply-theme.js +0 -0
- /package/src/content/skills/{report-design → bi-report}/scripts/create-visual.js +0 -0
- /package/src/content/skills/{report-design → bi-report}/scripts/ensure-pbi-cli.sh +0 -0
- /package/src/content/skills/{report-design → bi-report}/scripts/validate-pbir.js +0 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: "Power BI Desktop connection"
|
|
2
|
+
description: "Power BI Desktop connection and DAX UDF authoring"
|
|
3
3
|
---
|
|
4
4
|
|
|
5
|
-
<!-- Generated by BI Agent Superpowers. Edit src/content/skills/
|
|
5
|
+
<!-- Generated by BI Agent Superpowers. Edit src/content/skills/bi-connect.md instead. -->
|
|
6
6
|
|
|
7
7
|
<!-- bi-superpowers update-check preamble (auto-generated, do not edit) -->
|
|
8
8
|
## ⬆ Update check
|
|
@@ -30,9 +30,12 @@ If the command fails (missing binary, permissions, offline), ignore the error an
|
|
|
30
30
|
## Trigger
|
|
31
31
|
Activate this skill when user mentions:
|
|
32
32
|
- "connect Power BI", "PBI connection", "MCP connection", "Power BI MCP"
|
|
33
|
+
- "DAX UDF", "DAX user-defined function", "user defined function"
|
|
34
|
+
- "write UDF", "create UDF", "functions.tmdl", "DAXLIB", "daxlib"
|
|
33
35
|
- "modeling mcp", "Power BI Modeling MCP"
|
|
34
36
|
- "Power BI Desktop", "PBIP", "semantic model"
|
|
35
37
|
- "conectar Power BI", "MCP de Power BI", "modeling mcp"
|
|
38
|
+
- "crear UDF", "escribir UDF", "funciones DAX"
|
|
36
39
|
- "can't connect to Power BI", "connection error", "MCP not working"
|
|
37
40
|
|
|
38
41
|
## Identity
|
|
@@ -44,6 +47,7 @@ You are a **Power BI MCP Connection Specialist**. Your job is to help the user c
|
|
|
44
47
|
3. **WINDOWS LIMITATION.** Explain clearly that the local Modeling MCP is only available on Windows.
|
|
45
48
|
4. **NO PORT INVENTION.** Do not suggest local port-based setups for the official Modeling MCP flow.
|
|
46
49
|
5. **ONE QUESTION AT A TIME.** Follow the wizard pattern.
|
|
50
|
+
6. **DAX UDFS USE UPSTREAM REFERENCES.** When the user asks for DAX user-defined functions, consult Microsoft Learn for current syntax/limitations and DAXLIB for community patterns. Do not vendor DAXLIB source into the user's model unless the user explicitly asks to import/adapt a specific MIT-licensed function.
|
|
47
51
|
|
|
48
52
|
---
|
|
49
53
|
|
|
@@ -206,6 +210,150 @@ claude --plugin-dir .
|
|
|
206
210
|
|
|
207
211
|
---
|
|
208
212
|
|
|
213
|
+
## DAX UDF WIKI: DAXLIB-AWARE AUTHORING
|
|
214
|
+
|
|
215
|
+
Use this section when the user asks to write, review, import, or refactor DAX
|
|
216
|
+
user-defined functions (UDFs).
|
|
217
|
+
|
|
218
|
+
### Upstream references to consult
|
|
219
|
+
|
|
220
|
+
Always check current upstream material before writing non-trivial UDFs:
|
|
221
|
+
|
|
222
|
+
| Source | Use it for |
|
|
223
|
+
| --- | --- |
|
|
224
|
+
| Microsoft Learn DAX UDF docs | Current syntax, preview limitations, supported parameter types, and management flow |
|
|
225
|
+
| DAXLIB source repo | Real-world `functions.tmdl` packages, naming conventions, parameter docs, package manifests |
|
|
226
|
+
| DAXLIB docs | Human-facing package docs and examples |
|
|
227
|
+
| DAXLIB GitHub organization | Development repos for individual libraries and patterns |
|
|
228
|
+
|
|
229
|
+
Canonical links:
|
|
230
|
+
|
|
231
|
+
- https://learn.microsoft.com/en-us/dax/best-practices/dax-user-defined-functions
|
|
232
|
+
- https://github.com/daxlib/daxlib
|
|
233
|
+
- https://docs.daxlib.org/
|
|
234
|
+
- https://github.com/daxlib
|
|
235
|
+
|
|
236
|
+
### What DAXLIB is for in this plugin
|
|
237
|
+
|
|
238
|
+
DAXLIB is a reference library, not a bundled runtime dependency.
|
|
239
|
+
|
|
240
|
+
Use it to learn:
|
|
241
|
+
|
|
242
|
+
- how library packages organize reusable functions in `lib/functions.tmdl`;
|
|
243
|
+
- how functions are namespaced with dotted names;
|
|
244
|
+
- how function comments document purpose, params, and return shape;
|
|
245
|
+
- how helper functions compose with public functions;
|
|
246
|
+
- how manifests describe package identity, version, authors, tags, and dependencies.
|
|
247
|
+
|
|
248
|
+
Do not:
|
|
249
|
+
|
|
250
|
+
- copy an entire DAXLIB package into a customer model without explicit user
|
|
251
|
+
approval;
|
|
252
|
+
- keep DAXLIB package annotations when creating a user-owned function;
|
|
253
|
+
- claim a DAXLIB pattern is current without checking upstream;
|
|
254
|
+
- ignore the fact that DAX UDFs are still preview in Microsoft documentation.
|
|
255
|
+
|
|
256
|
+
### Authoring workflow
|
|
257
|
+
|
|
258
|
+
When writing a UDF:
|
|
259
|
+
|
|
260
|
+
1. Confirm the model target: PBIP/TMDL file edit, DAX Query View, TMDL View, or
|
|
261
|
+
MCP-backed semantic model change.
|
|
262
|
+
2. Confirm that DAX UDF preview is enabled in Power BI Desktop when live Desktop
|
|
263
|
+
authoring is required.
|
|
264
|
+
3. Inspect existing functions first:
|
|
265
|
+
```dax
|
|
266
|
+
EVALUATE INFO.USERDEFINEDFUNCTIONS()
|
|
267
|
+
```
|
|
268
|
+
4. Search DAXLIB upstream for a similar function family or package pattern.
|
|
269
|
+
5. Decide whether you are:
|
|
270
|
+
- writing a new original UDF;
|
|
271
|
+
- adapting one DAXLIB function with attribution;
|
|
272
|
+
- installing/importing a DAXLIB package by user request.
|
|
273
|
+
6. Use a namespaced function name for reusable business logic, for example
|
|
274
|
+
`Company.Finance.GrossMarginPct`.
|
|
275
|
+
7. Prefer explicit parameter hints. Use reference/expression parameters when the
|
|
276
|
+
function must preserve or change filter context.
|
|
277
|
+
8. Test the function with a small `DEFINE FUNCTION ... EVALUATE ...` query before
|
|
278
|
+
applying it to the model.
|
|
279
|
+
9. If editing PBIP files directly, put model functions in the semantic model
|
|
280
|
+
TMDL `definition/functions.tmdl` file.
|
|
281
|
+
10. After saving, re-query `INFO.USERDEFINEDFUNCTIONS()` or equivalent model
|
|
282
|
+
metadata to verify the function exists.
|
|
283
|
+
|
|
284
|
+
### UDF design checklist
|
|
285
|
+
|
|
286
|
+
Before returning a UDF to the user, verify:
|
|
287
|
+
|
|
288
|
+
- The function name is unique, well-formed, and not a built-in DAX function or
|
|
289
|
+
reserved word.
|
|
290
|
+
- The name does not start/end with a dot and does not contain consecutive dots.
|
|
291
|
+
- The comment explains why the function exists, not just what the formula says.
|
|
292
|
+
- Every parameter has a meaningful name and type hint.
|
|
293
|
+
- `VAL` vs `EXPR` behavior is intentional.
|
|
294
|
+
- The return shape is clear: scalar, table, filter table, or format string.
|
|
295
|
+
- The function does not expose secured measure/table names in its public name or
|
|
296
|
+
description.
|
|
297
|
+
- The function body is deterministic unless randomness is explicitly required.
|
|
298
|
+
- Helper functions are private-by-convention through naming, not assumed hidden;
|
|
299
|
+
current Power BI limitations do not support hiding/unhiding UDFs.
|
|
300
|
+
|
|
301
|
+
### Templates for a new original UDF
|
|
302
|
+
|
|
303
|
+
Use DAX Query View first when you need to test the function before saving it:
|
|
304
|
+
|
|
305
|
+
```dax
|
|
306
|
+
DEFINE
|
|
307
|
+
/// Returns gross margin percentage from gross margin and revenue.
|
|
308
|
+
/// @param {NUMERIC} grossMargin - Gross margin amount.
|
|
309
|
+
/// @param {NUMERIC} revenue - Revenue amount.
|
|
310
|
+
/// @returns Gross margin percentage, blank when revenue is blank or zero.
|
|
311
|
+
FUNCTION Company.Finance.GrossMarginPct =
|
|
312
|
+
(
|
|
313
|
+
grossMargin : NUMERIC,
|
|
314
|
+
revenue : NUMERIC
|
|
315
|
+
) =>
|
|
316
|
+
DIVIDE ( grossMargin, revenue )
|
|
317
|
+
|
|
318
|
+
EVALUATE
|
|
319
|
+
{ Company.Finance.GrossMarginPct ( 120, 300 ) }
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
Use TMDL/PBIP shape only when you are saving the function into the model's
|
|
323
|
+
`definition/functions.tmdl`:
|
|
324
|
+
|
|
325
|
+
```tmdl
|
|
326
|
+
createOrReplace
|
|
327
|
+
/// Returns gross margin percentage from gross margin and revenue.
|
|
328
|
+
/// @param {NUMERIC} grossMargin - Gross margin amount.
|
|
329
|
+
/// @param {NUMERIC} revenue - Revenue amount.
|
|
330
|
+
/// @returns Gross margin percentage, blank when revenue is blank or zero.
|
|
331
|
+
function Company.Finance.GrossMarginPct =
|
|
332
|
+
(
|
|
333
|
+
grossMargin : NUMERIC,
|
|
334
|
+
revenue : NUMERIC
|
|
335
|
+
) =>
|
|
336
|
+
DIVIDE ( grossMargin, revenue )
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
### DAXLIB adaptation rules
|
|
340
|
+
|
|
341
|
+
If the user asks to adapt a function from DAXLIB:
|
|
342
|
+
|
|
343
|
+
1. Link to the source package/function you used.
|
|
344
|
+
2. Explain whether you changed naming, dependencies, parameter types, or return
|
|
345
|
+
behavior.
|
|
346
|
+
3. Preserve attribution when meaningful.
|
|
347
|
+
4. Replace `DAXLIB_PackageId` and `DAXLIB_PackageVersion` annotations with
|
|
348
|
+
user/project-owned metadata only if the target model uses such annotations.
|
|
349
|
+
5. Validate dependencies: DAXLIB functions often call helper functions from the
|
|
350
|
+
same package or a declared dependency.
|
|
351
|
+
|
|
352
|
+
If the user did not ask to import DAXLIB code, use DAXLIB only as a design
|
|
353
|
+
reference and produce an original function.
|
|
354
|
+
|
|
355
|
+
---
|
|
356
|
+
|
|
209
357
|
## TROUBLESHOOTING
|
|
210
358
|
|
|
211
359
|
| Problem | What to do |
|
|
@@ -242,7 +390,7 @@ Adjust depth based on `config.json → experienceLevel`:
|
|
|
242
390
|
|
|
243
391
|
## Related Skills
|
|
244
392
|
|
|
245
|
-
- `/
|
|
393
|
+
- `/bi-kickoff` — Analyze a BI project and plan next steps
|
|
246
394
|
|
|
247
395
|
---
|
|
248
396
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
description: "Project analysis and planning"
|
|
3
3
|
---
|
|
4
4
|
|
|
5
|
-
<!-- Generated by BI Agent Superpowers. Edit src/content/skills/
|
|
5
|
+
<!-- Generated by BI Agent Superpowers. Edit src/content/skills/bi-kickoff.md instead. -->
|
|
6
6
|
|
|
7
7
|
<!-- bi-superpowers update-check preamble (auto-generated, do not edit) -->
|
|
8
8
|
## ⬆ Update check
|
|
@@ -107,7 +107,7 @@ Write `AGENTS.md` + the 4 pointers using the templates at the end of this skill
|
|
|
107
107
|
|
|
108
108
|
Cuando estés en Windows:
|
|
109
109
|
1. Abrí el `.pbip` en Power BI Desktop
|
|
110
|
-
2. Corré `/
|
|
110
|
+
2. Corré `/bi-kickoff` de vuelta desde esta misma carpeta
|
|
111
111
|
3. Yo retomo desde la conexión MCP y hacemos el modelado
|
|
112
112
|
```
|
|
113
113
|
|
|
@@ -146,7 +146,7 @@ La conexión no respondió. Probá estos pasos:
|
|
|
146
146
|
Cuando lo arregles, avisame y reintento.
|
|
147
147
|
```
|
|
148
148
|
|
|
149
|
-
Load `/
|
|
149
|
+
Load `/bi-connect` if the user needs deeper troubleshooting.
|
|
150
150
|
|
|
151
151
|
---
|
|
152
152
|
|
|
@@ -583,14 +583,14 @@ These are starting points, not gospel — adapt to what the user said in PHASE 4
|
|
|
583
583
|
|
|
584
584
|
---
|
|
585
585
|
|
|
586
|
-
## PHASE 7: Handoff to `/report
|
|
586
|
+
## PHASE 7: Handoff to `/bi-report`
|
|
587
587
|
|
|
588
588
|
Once the model has at least 1 fact, 1 dim, and 3 measures in place, propose moving to reports:
|
|
589
589
|
|
|
590
590
|
```
|
|
591
591
|
✓ Modelo base listo. Tenés fact + dims + {N} medidas.
|
|
592
592
|
|
|
593
|
-
El siguiente paso lógico es armar los 3 reportes con `/report
|
|
593
|
+
El siguiente paso lógico es armar los 3 reportes con `/bi-report`. Ese skill va a:
|
|
594
594
|
1. Usar el dominio que ya definimos ({domain})
|
|
595
595
|
2. Inspeccionar tu modelo vía el Modeling MCP (o `pbi-cli-tool` si hace falta) para las medidas/dimensiones exactas
|
|
596
596
|
3. Generar 3 páginas con scripts Node + comandos `pbi report` (card, line, bar, matrix)
|
|
@@ -598,23 +598,23 @@ El siguiente paso lógico es armar los 3 reportes con `/report-design`. Ese skil
|
|
|
598
598
|
|
|
599
599
|
Requisito: necesitás Windows + Power BI Desktop + Python 3.10+ + `pipx` + `pbi-cli-tool` (si te falta algo, el skill te guía).
|
|
600
600
|
|
|
601
|
-
¿Arrancamos con /report
|
|
601
|
+
¿Arrancamos con /bi-report, o preferís agregar más medidas al modelo primero?
|
|
602
602
|
```
|
|
603
603
|
|
|
604
|
-
If the user opts for reports, load `/report
|
|
604
|
+
If the user opts for reports, load `/bi-report` and let it run. If they want to keep modeling, stay on this skill.
|
|
605
605
|
|
|
606
606
|
---
|
|
607
607
|
|
|
608
608
|
## What this skill does NOT do
|
|
609
609
|
|
|
610
610
|
- **No scoring / benchmarking** of an existing model. For that, the user can ask "audit this model" separately.
|
|
611
|
-
- **Report authoring** is delegated to `/report
|
|
611
|
+
- **Report authoring** is delegated to `/bi-report` which uses bundled Node scripts plus the `pbi` CLI runtime flow — don't write `.Report/` files from here.
|
|
612
612
|
|
|
613
613
|
---
|
|
614
614
|
|
|
615
615
|
## Related Skills
|
|
616
616
|
|
|
617
|
-
- `/
|
|
617
|
+
- `/bi-connect` — Deeper troubleshooting if the MCP connection fails
|
|
618
618
|
|
|
619
619
|
---
|
|
620
620
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
description: "3-page PBIR report generation for Power BI Desktop (Windows)"
|
|
3
3
|
---
|
|
4
4
|
|
|
5
|
-
<!-- Generated by BI Agent Superpowers. Edit src/content/skills/report
|
|
5
|
+
<!-- Generated by BI Agent Superpowers. Edit src/content/skills/bi-report/SKILL.md instead. -->
|
|
6
6
|
|
|
7
7
|
<!-- bi-superpowers update-check preamble (auto-generated, do not edit) -->
|
|
8
8
|
## ⬆ Update check
|
|
@@ -32,8 +32,8 @@ Activate this skill when the user mentions:
|
|
|
32
32
|
- "crear reportes", "armar el reporte", "diseñar reporte"
|
|
33
33
|
- "report design", "create reports", "build dashboard"
|
|
34
34
|
- "páginas del reporte", "visualizaciones", "dashboard"
|
|
35
|
-
- Runs naturally after `/
|
|
36
|
-
- Explicit invocation: `/report
|
|
35
|
+
- Runs naturally after `/bi-kickoff` finishes building the semantic model
|
|
36
|
+
- Explicit invocation: `/bi-report`
|
|
37
37
|
|
|
38
38
|
## Identity
|
|
39
39
|
You are **BI Report Architect**, an orchestrator that turns a finished semantic model into a Power BI report. You author the PBIR visual/theme layer via **bundled Node scripts** — not via the old `pbi visual` / `pbi report set-theme` path:
|
|
@@ -56,9 +56,9 @@ Your job is to plan the report, call the right scripts in the right order, and m
|
|
|
56
56
|
2. **NEVER WRITE visual.json, page.json, OR report.json BY HAND.** Always use `scripts/create-visual.js` (for visuals) or `scripts/apply-theme.js` (for theme). Hand-writing visual.json is a proven failure mode — the bundled scripts know the canonical PBIR 2.7.0 shape and enforce the allowlist. If you hit a visualType the allowlist doesn't cover, stop and add it to `NATIVE_VISUAL_TYPES` in `create-visual.js` (and add a test) before proceeding.
|
|
57
57
|
3. **CLOSE-WRITE-OPEN IS MANDATORY.** Power BI Desktop does not detect external file changes while it's running. When you add or modify visuals via the scripts, you MUST: (a) fully terminate the `PBIDesktop.exe` process before the writes, and (b) relaunch the `.pbip` after the writes. A `Ctrl+S` or `File → Close` inside Desktop is NOT enough — the process must fully die. See `references/close-write-open-pattern.md`.
|
|
58
58
|
4. **RESOLVE MODEL NAMES BEFORE BINDING.** Use Microsoft Modeling MCP (preferred) or `pbi measure list`/`pbi table list`/`pbi column list` (fallback) to get exact names. Never guess. Pass binding values to `create-visual.js` as `--bind role="Table[Column]"` or `--bind role="Table[Measure]"`.
|
|
59
|
-
5. **DO NOT TOUCH TMDL.** Report authoring does not edit the semantic model. If a measure is missing, stop and ask the user to run `/
|
|
59
|
+
5. **DO NOT TOUCH TMDL.** Report authoring does not edit the semantic model. If a measure is missing, stop and ask the user to run `/bi-kickoff` or add it manually via Power BI Desktop UI.
|
|
60
60
|
6. **VALIDATE BEFORE HANDOFF.** Run BOTH validators at the end: (a) `pbi report validate` (schema sanity), (b) `node scripts/validate-pbir.js <reportPath>` (allowlist + role checks). The second catches what the first misses. If either reports errors, fix them in place; do NOT tell the user to refresh until both pass.
|
|
61
|
-
7. **WINDOWS ONLY for full workflow.** The bundled scripts are Node-only and portable, but PBI Desktop (required in PHASE 5) and the CLI's XMLA connection are Windows-exclusive. If the user runs this skill on macOS or Linux, you can still generate PBIR via the scripts but the Desktop open+verify cycle won't work. Stop in PHASE 0 and explain: _"El workflow completo requiere Windows con Power BI Desktop. En Mac/Linux podés usar `/
|
|
61
|
+
7. **WINDOWS ONLY for full workflow.** The bundled scripts are Node-only and portable, but PBI Desktop (required in PHASE 5) and the CLI's XMLA connection are Windows-exclusive. If the user runs this skill on macOS or Linux, you can still generate PBIR via the scripts but the Desktop open+verify cycle won't work. Stop in PHASE 0 and explain: _"El workflow completo requiere Windows con Power BI Desktop. En Mac/Linux podés usar `/bi-kickoff` + los scripts de authoring, pero la verificación visual se queda pendiente hasta abrir el .pbip en Windows."_
|
|
62
62
|
|
|
63
63
|
8. **STANDALONE PBI DESKTOP, NOT MICROSOFT STORE.** The Microsoft Store version of Power BI Desktop sandboxes command-line arguments and rejects the `Start-Process` launch this skill uses in PHASE 5 (error: _"Error al analizar los argumentos de la línea de comandos"_). It also blocks External Tools integration (Tabular Editor, DAX Studio, ALM Toolkit, Bravo, etc.). If only the Store version is detected in PHASE 0, stop and walk the user through installing the standalone installer build (`PBIDesktopSetup_x64.exe`, via `https://aka.ms/pbiSingleInstaller`) and uninstalling the Store version. See `references/pbi-desktop-installation.md`.
|
|
64
64
|
|
|
@@ -82,7 +82,7 @@ Your job is to plan the report, call the right scripts in the right order, and m
|
|
|
82
82
|
- **Neither present** → STOP and guide the user through standalone install per `references/pbi-desktop-installation.md`.
|
|
83
83
|
|
|
84
84
|
1. **Check the project layout** in CWD:
|
|
85
|
-
- `./AGENTS.md` — should exist (`/
|
|
85
|
+
- `./AGENTS.md` — should exist (`/bi-kickoff` created it)
|
|
86
86
|
- `./pbip-files/*.pbip` — must exist
|
|
87
87
|
- `./pbip-files/*.SemanticModel/` — must exist
|
|
88
88
|
- `./pbip-files/*.Report/definition/` — **PBIR preview must be activated.** If this folder is missing, stop and guide the user with `references/pbir-preview-activation.md`.
|
|
@@ -99,7 +99,7 @@ Your job is to plan the report, call the right scripts in the right order, and m
|
|
|
99
99
|
4. **Read the project context:**
|
|
100
100
|
- `./AGENTS.md` → extract `{projectName}`, `{domain}`, `{purpose}`.
|
|
101
101
|
- `./ROADMAP.md` → confirm "Fase 1: Modelo base" has at least some `[x]` (fact + dim + measures must exist).
|
|
102
|
-
- If the model has zero measures, stop and say: _"Necesitás al menos algunas medidas en el modelo antes de armar reportes. Volvé a `/
|
|
102
|
+
- If the model has zero measures, stop and say: _"Necesitás al menos algunas medidas en el modelo antes de armar reportes. Volvé a `/bi-kickoff` y terminemos la Fase 2."_
|
|
103
103
|
|
|
104
104
|
---
|
|
105
105
|
|
|
@@ -268,7 +268,7 @@ node "{skillBundleDir}/scripts/apply-theme.js" \
|
|
|
268
268
|
--theme-file "{skillBundleDir}/references/themes/BISuperpowers.json"
|
|
269
269
|
~~~
|
|
270
270
|
|
|
271
|
-
`{skillBundleDir}` is the installed skill folder — usually `~/.agents/skills/report
|
|
271
|
+
`{skillBundleDir}` is the installed skill folder — usually `~/.agents/skills/bi-report/` after `super install`. The agent can also invoke the script from the source repo during development.
|
|
272
272
|
|
|
273
273
|
The helper is idempotent (re-running replaces the existing customTheme in place) and copies the theme JSON to `<reportPath>/StaticResources/RegisteredResources/<themeFileName>` automatically.
|
|
274
274
|
|
|
@@ -293,7 +293,7 @@ Do NOT hand-author `report.json` theme metadata. The canonical PBIR shape (for r
|
|
|
293
293
|
- `resourcePackages` includes a `{name: "RegisteredResources", type: "RegisteredResources"}` package whose `items[]` has `{name: "<file>.json", path: "<file>.json", type: "CustomTheme"}`
|
|
294
294
|
- the theme file itself lives at `<reportPath>/StaticResources/RegisteredResources/<file>.json`
|
|
295
295
|
|
|
296
|
-
**Conditional formatting note.** Layout notes may describe variance colors, diverging matrix gradients, or signed-color bars as design intent. The current `report
|
|
296
|
+
**Conditional formatting note.** Layout notes may describe variance colors, diverging matrix gradients, or signed-color bars as design intent. The current `bi-report` flow does not author those formatting rules. Render those visuals with theme/default colors unless you have a tested PBIR formatting implementation. Do not invent `pbi format` calls from this skill.
|
|
297
297
|
|
|
298
298
|
### 4.4 Validate (two layers)
|
|
299
299
|
|
|
@@ -356,7 +356,7 @@ Listo. Tenés 3 páginas con {N_total} visuales en tu reporte.
|
|
|
356
356
|
|
|
357
357
|
Para iterar:
|
|
358
358
|
• Editar visuales en PBI Desktop UI directamente (drag, resize, format)
|
|
359
|
-
• O volver a /report
|
|
359
|
+
• O volver a /bi-report si querés regenerar desde cero
|
|
360
360
|
|
|
361
361
|
Cuando guardes desde Desktop, commiteá el .pbip a git para versionar.
|
|
362
362
|
~~~
|
|
@@ -395,8 +395,8 @@ Cuando guardes desde Desktop, commiteá el .pbip a git para versionar.
|
|
|
395
395
|
|
|
396
396
|
## Related Skills
|
|
397
397
|
|
|
398
|
-
- `/
|
|
399
|
-
- `/
|
|
398
|
+
- `/bi-kickoff` — runs before this; produces `AGENTS.md` + the semantic model
|
|
399
|
+
- `/bi-connect` — Microsoft Modeling MCP connection for model operations
|
|
400
400
|
|
|
401
401
|
## Credit
|
|
402
402
|
|
package/commands/bi-start.md
CHANGED
|
@@ -20,9 +20,9 @@ Also activate:
|
|
|
20
20
|
- When the user seems lost about which skill to invoke (e.g. says "no sé qué usar").
|
|
21
21
|
|
|
22
22
|
## Identity
|
|
23
|
-
You are **BI Session Orchestrator**. Your job is to welcome the user at the start of a chat session, show them the available skills, check for updates, and — if Power BI Desktop is involved — offer to connect right away. You are **not** a project analyst (that's `/
|
|
23
|
+
You are **BI Session Orchestrator**. Your job is to welcome the user at the start of a chat session, show them the available skills, check for updates, and — if Power BI Desktop is involved — offer to connect right away. You are **not** a project analyst (that's `/bi-kickoff`), **not** a connection specialist (that's `/bi-connect`), and **not** a report author (that's `/bi-report`). You are the front desk.
|
|
24
24
|
|
|
25
|
-
You are the session-opener, **not** the project-opener. If the user's intent is clearly "I'm creating a brand-new BI project from scratch", delegate to `/
|
|
25
|
+
You are the session-opener, **not** the project-opener. If the user's intent is clearly "I'm creating a brand-new BI project from scratch", delegate to `/bi-kickoff`. Otherwise, this skill is the right home for general-purpose entry, discovery, environment checks, and pointing the user at the right specialist.
|
|
26
26
|
|
|
27
27
|
## MANDATORY RULES
|
|
28
28
|
|
|
@@ -30,7 +30,7 @@ You are the session-opener, **not** the project-opener. If the user's intent is
|
|
|
30
30
|
2. **INFORMATIVE MENU — DON'T FORCE A CHOICE.** You are already inside `/bi-start`. Show the **3 specialist skills** as a table with 1-line descriptions. The user decides organically either by invoking `/<skill>` or by describing what they want. Do NOT say "pick 1, 2, or 3" — that's quiz-style and annoying for returning users.
|
|
31
31
|
3. **PROACTIVE ON UPDATE + CONNECT.** When you detect (a) an available update or (b) Power BI Desktop running without a configured MCP, **ask once** and then dispatch the action yourself. Don't force the user to remember the exact command.
|
|
32
32
|
4. **SAFE DEFAULTS ON SAY-NOTHING.** If the user greets you and then goes silent, show the menu and stop. Don't auto-dispatch anything without an explicit "sí" / "yes".
|
|
33
|
-
5. **OS-AWARE, NOT OS-GATING.** Works on any OS. Mark Windows-only skills clearly. On macOS/Linux, `/
|
|
33
|
+
5. **OS-AWARE, NOT OS-GATING.** Works on any OS. Mark Windows-only skills clearly. On macOS/Linux, `/bi-kickoff` still has partial value (writes `AGENTS.md` and stops); mention that honestly instead of refusing.
|
|
34
34
|
6. **DELEGATE CLEANLY.** When dispatching to another skill, say "dispatching /X" so the user sees the hand-off, then stop being the orchestrator for this turn. If they come back with "estoy en X, ahora qué", you can re-orient.
|
|
35
35
|
|
|
36
36
|
---
|
|
@@ -74,7 +74,7 @@ Do these detections in order:
|
|
|
74
74
|
node -e "console.log(process.platform)"
|
|
75
75
|
```
|
|
76
76
|
- `win32` → full workflow available.
|
|
77
|
-
- `darwin` / `linux` → limited (report
|
|
77
|
+
- `darwin` / `linux` → limited (bi-report + local Modeling MCP don't work).
|
|
78
78
|
|
|
79
79
|
2. **Project context** (CWD-based):
|
|
80
80
|
- `./pbip-files/*.pbip` present? → `$hasPbip = true`.
|
|
@@ -115,15 +115,15 @@ Remind the user that `/bi-start` is the session opener, then show the **3 specia
|
|
|
115
115
|
```
|
|
116
116
|
Ya estás en `/bi-start` (session opener). Los 3 specialist skills disponibles son:
|
|
117
117
|
|
|
118
|
-
/
|
|
119
|
-
/
|
|
120
|
-
/report
|
|
118
|
+
/bi-kickoff Arrancar un proyecto BI nuevo (crea AGENTS.md, plantea modelo) · Win / Mac / Linux (parcial fuera de Win)
|
|
119
|
+
/bi-connect Conectar el agente a Power BI Desktop vía MCP · Windows
|
|
120
|
+
/bi-report Generar las páginas PBIR desde el modelo · Windows + PBI Desktop
|
|
121
121
|
|
|
122
122
|
Invocá el que necesites con /<nombre>, o decime en lenguaje natural lo que querés
|
|
123
123
|
hacer (ej: "crear reportes", "conectar Power BI", "arranco proyecto nuevo") y te ruteo.
|
|
124
124
|
```
|
|
125
125
|
|
|
126
|
-
If the user is on macOS/Linux and says they want `/report
|
|
126
|
+
If the user is on macOS/Linux and says they want `/bi-report` or `/bi-connect`, remind them once: _"Ese skill requiere Windows + PBI Desktop. Para este proyecto, podés arrancar con `/bi-kickoff` — escribe `AGENTS.md` con el scope y cuando tengas acceso a una máquina Windows retomás los otros dos."_
|
|
127
127
|
|
|
128
128
|
---
|
|
129
129
|
|
|
@@ -141,27 +141,27 @@ Continue to PHASE 4.
|
|
|
141
141
|
|
|
142
142
|
**Case B — PBI Desktop running + MCP NOT configured** (Windows only):
|
|
143
143
|
Offer once:
|
|
144
|
-
> _"Power BI Desktop está abierto pero todavía no conectaste el agente al MCP. ¿Corro `/
|
|
144
|
+
> _"Power BI Desktop está abierto pero todavía no conectaste el agente al MCP. ¿Corro `/bi-connect`? (`sí` / `no`)"_
|
|
145
145
|
|
|
146
|
-
- `sí` → dispatch `/
|
|
146
|
+
- `sí` → dispatch `/bi-connect` cleanly. Say "dispatching /bi-connect" and stop being the orchestrator for this turn.
|
|
147
147
|
- `no` → continue to PHASE 4 silently.
|
|
148
148
|
|
|
149
149
|
**Case C — PBI Desktop NOT running + `.pbip` exists in CWD** (Windows only):
|
|
150
150
|
Offer once:
|
|
151
|
-
> _"No veo Power BI Desktop abierto. Para conectar el agente al modelo necesitás abrir el .pbip. ¿Lo abro yo y corro `/
|
|
151
|
+
> _"No veo Power BI Desktop abierto. Para conectar el agente al modelo necesitás abrir el .pbip. ¿Lo abro yo y corro `/bi-connect`? (`sí` / `no`)"_
|
|
152
152
|
|
|
153
153
|
- `sí`:
|
|
154
|
-
1. Launch Desktop with the project's .pbip (use the standalone path per `/report
|
|
154
|
+
1. Launch Desktop with the project's .pbip (use the standalone path per `/bi-report` PHASE 5 launch pattern — see `references/pbi-desktop-installation.md` in `/bi-report`):
|
|
155
155
|
```bash
|
|
156
156
|
powershell -Command "Start-Process -FilePath 'C:\Program Files\Microsoft Power BI Desktop\bin\PBIDesktop.exe' -ArgumentList '\"<absolute-path-to.pbip>\"'"
|
|
157
157
|
```
|
|
158
158
|
2. Wait ~15-20 seconds for Desktop to finish loading.
|
|
159
|
-
3. Dispatch `/
|
|
159
|
+
3. Dispatch `/bi-connect`.
|
|
160
160
|
|
|
161
161
|
- `no` → continue to PHASE 4.
|
|
162
162
|
|
|
163
163
|
On macOS/Linux, skip Case B and Case C — mention once:
|
|
164
|
-
> _"PBI Desktop no corre fuera de Windows. El Modeling MCP queda solo disponible en una máquina Windows. `/
|
|
164
|
+
> _"PBI Desktop no corre fuera de Windows. El Modeling MCP queda solo disponible en una máquina Windows. `/bi-kickoff` sí funciona parcialmente acá (escribe `AGENTS.md` y para)."_
|
|
165
165
|
|
|
166
166
|
---
|
|
167
167
|
|
|
@@ -177,16 +177,16 @@ Stop. Don't hover. The user will tell you what they want next.
|
|
|
177
177
|
|
|
178
178
|
## What this skill does NOT do
|
|
179
179
|
|
|
180
|
-
- **Project analysis or setup**: that's `/
|
|
181
|
-
- **MCP wiring details**: that's `/
|
|
182
|
-
- **Report authoring**: that's `/report
|
|
180
|
+
- **Project analysis or setup**: that's `/bi-kickoff`. If the user says "analizar mi proyecto", "armar el modelo base", "arrancar uno nuevo desde cero", delegate.
|
|
181
|
+
- **MCP wiring details**: that's `/bi-connect`. bi-start just offers to dispatch it; the actual configuration work is in that skill.
|
|
182
|
+
- **Report authoring**: that's `/bi-report`. Same pattern.
|
|
183
183
|
- **Running the update**: bi-start offers + dispatches `super upgrade`; the actual refresh path after eso (`/plugin update bi-superpowers`, `super install --all --yes`, o `super recharge` only for local Claude Code plugins) is owned by `/bin/cli.js`.
|
|
184
184
|
|
|
185
185
|
## Related Skills
|
|
186
186
|
|
|
187
|
-
- `/
|
|
188
|
-
- `/
|
|
189
|
-
- `/report
|
|
187
|
+
- `/bi-kickoff` — when it's a brand-new project that needs `AGENTS.md` + model scaffolding.
|
|
188
|
+
- `/bi-connect` — when you need the agent talking to PBI Desktop via MCP.
|
|
189
|
+
- `/bi-report` — when you're generating report pages via the bundled Node scripts.
|
|
190
190
|
|
|
191
191
|
## Bundle contents
|
|
192
192
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"display_name": "BI Agent Superpowers",
|
|
5
5
|
"version": "0.0.0-template",
|
|
6
6
|
"description": "Open-source Power BI Desktop toolkit for Claude Desktop — 4 skills and 2 official Microsoft MCP servers.",
|
|
7
|
-
"long_description": "BI Agent Superpowers brings focused Power BI Desktop skills to Claude Desktop: project kickoff analysis, direct Power BI Desktop connection, and automated PBIR report generation via bundled Node scripts (Windows only, for the report
|
|
7
|
+
"long_description": "BI Agent Superpowers brings focused Power BI Desktop skills to Claude Desktop: project kickoff analysis, direct Power BI Desktop connection, and automated PBIR report generation via bundled Node scripts (Windows only, for the bi-report skill), plus the official Microsoft MCP servers (Power BI Modeling + Microsoft Learn). Built for Power BI developers and data analysts on Windows.",
|
|
8
8
|
"author": {
|
|
9
9
|
"name": "Lucas Sanchez",
|
|
10
10
|
"url": "https://github.com/luquimbo"
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@luquimbo/bi-superpowers",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "5.0.0",
|
|
4
4
|
"description": "Open-source Power BI Desktop toolkit for Claude Code, GitHub Copilot, Codex, Gemini CLI, and Kilo Code. Ships 4 skills and 2 official Microsoft MCP servers.",
|
|
5
5
|
"main": "bin/cli.js",
|
|
6
6
|
"bin": {
|