@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.
Files changed (81) hide show
  1. package/.claude-plugin/marketplace.json +5 -5
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/.claude-plugin/skill-manifest.json +17 -17
  4. package/.plugin/plugin.json +1 -1
  5. package/AGENTS.md +50 -54
  6. package/CHANGELOG.md +67 -0
  7. package/README.md +103 -24
  8. package/bin/cli.js +12 -8
  9. package/bin/commands/build-desktop.js +37 -2
  10. package/bin/commands/diff.js +2 -2
  11. package/bin/commands/install.js +29 -7
  12. package/bin/commands/lint.js +2 -2
  13. package/bin/commands/mcp-setup.js +20 -30
  14. package/bin/commands/validate-projects.js +425 -0
  15. package/bin/commands/watch.js +1 -1
  16. package/bin/lib/generators/claude-plugin.js +20 -5
  17. package/bin/lib/generators/shared.js +8 -8
  18. package/bin/lib/skills.js +5 -5
  19. package/bin/postinstall.js +3 -3
  20. package/commands/{pbi-connect.md → bi-connect.md} +151 -3
  21. package/commands/{project-kickoff.md → bi-kickoff.md} +9 -9
  22. package/commands/{report-design.md → bi-report.md} +12 -12
  23. package/commands/bi-start.md +20 -20
  24. package/desktop-extension/manifest.json +1 -1
  25. package/package.json +1 -1
  26. package/skills/{pbi-connect → bi-connect}/SKILL.md +153 -5
  27. package/skills/{pbi-connect → bi-connect}/scripts/update-check.js +1 -1
  28. package/skills/{project-kickoff → bi-kickoff}/SKILL.md +11 -11
  29. package/skills/{report-design → bi-kickoff}/scripts/update-check.js +1 -1
  30. package/skills/{report-design → bi-report}/SKILL.md +14 -14
  31. package/skills/{report-design → bi-report}/references/layouts/hr.md +1 -1
  32. package/{src/content/skills/report-design → skills/bi-report}/references/native-visuals.md +1 -1
  33. package/{src/content/skills/report-design → skills/bi-report}/references/pbir-preview-activation.md +3 -3
  34. package/{src/content/skills/report-design → skills/bi-report}/references/troubleshooting.md +1 -1
  35. package/skills/{project-kickoff → bi-report}/scripts/update-check.js +1 -1
  36. package/skills/bi-start/SKILL.md +21 -21
  37. package/skills/bi-start/scripts/update-check.js +1 -1
  38. package/src/content/base.md +6 -5
  39. package/src/content/routing.md +22 -20
  40. package/src/content/skills/{pbi-connect.md → bi-connect.md} +149 -1
  41. package/src/content/skills/{project-kickoff.md → bi-kickoff.md} +8 -8
  42. package/src/content/skills/{report-design → bi-report}/SKILL.md +11 -11
  43. package/src/content/skills/{report-design → bi-report}/references/layouts/hr.md +1 -1
  44. package/{skills/report-design → src/content/skills/bi-report}/references/native-visuals.md +1 -1
  45. package/{skills/report-design → src/content/skills/bi-report}/references/pbir-preview-activation.md +3 -3
  46. package/{skills/report-design → src/content/skills/bi-report}/references/troubleshooting.md +1 -1
  47. package/src/content/skills/bi-start.md +20 -20
  48. /package/skills/{report-design → bi-report}/references/cli-commands.md +0 -0
  49. /package/skills/{report-design → bi-report}/references/cli-setup.md +0 -0
  50. /package/skills/{report-design → bi-report}/references/close-write-open-pattern.md +0 -0
  51. /package/skills/{report-design → bi-report}/references/layouts/finance.md +0 -0
  52. /package/skills/{report-design → bi-report}/references/layouts/generic.md +0 -0
  53. /package/skills/{report-design → bi-report}/references/layouts/marketing.md +0 -0
  54. /package/skills/{report-design → bi-report}/references/layouts/operations.md +0 -0
  55. /package/skills/{report-design → bi-report}/references/layouts/sales.md +0 -0
  56. /package/skills/{report-design → bi-report}/references/pbi-desktop-installation.md +0 -0
  57. /package/skills/{report-design → bi-report}/references/slicer.md +0 -0
  58. /package/skills/{report-design → bi-report}/references/textbox.md +0 -0
  59. /package/skills/{report-design → bi-report}/references/themes/BISuperpowers.json +0 -0
  60. /package/skills/{report-design → bi-report}/references/visual-types.md +0 -0
  61. /package/skills/{report-design → bi-report}/scripts/apply-theme.js +0 -0
  62. /package/skills/{report-design → bi-report}/scripts/create-visual.js +0 -0
  63. /package/skills/{report-design → bi-report}/scripts/ensure-pbi-cli.sh +0 -0
  64. /package/skills/{report-design → bi-report}/scripts/validate-pbir.js +0 -0
  65. /package/src/content/skills/{report-design → bi-report}/references/cli-commands.md +0 -0
  66. /package/src/content/skills/{report-design → bi-report}/references/cli-setup.md +0 -0
  67. /package/src/content/skills/{report-design → bi-report}/references/close-write-open-pattern.md +0 -0
  68. /package/src/content/skills/{report-design → bi-report}/references/layouts/finance.md +0 -0
  69. /package/src/content/skills/{report-design → bi-report}/references/layouts/generic.md +0 -0
  70. /package/src/content/skills/{report-design → bi-report}/references/layouts/marketing.md +0 -0
  71. /package/src/content/skills/{report-design → bi-report}/references/layouts/operations.md +0 -0
  72. /package/src/content/skills/{report-design → bi-report}/references/layouts/sales.md +0 -0
  73. /package/src/content/skills/{report-design → bi-report}/references/pbi-desktop-installation.md +0 -0
  74. /package/src/content/skills/{report-design → bi-report}/references/slicer.md +0 -0
  75. /package/src/content/skills/{report-design → bi-report}/references/textbox.md +0 -0
  76. /package/src/content/skills/{report-design → bi-report}/references/themes/BISuperpowers.json +0 -0
  77. /package/src/content/skills/{report-design → bi-report}/references/visual-types.md +0 -0
  78. /package/src/content/skills/{report-design → bi-report}/scripts/apply-theme.js +0 -0
  79. /package/src/content/skills/{report-design → bi-report}/scripts/create-visual.js +0 -0
  80. /package/src/content/skills/{report-design → bi-report}/scripts/ensure-pbi-cli.sh +0 -0
  81. /package/src/content/skills/{report-design → bi-report}/scripts/validate-pbir.js +0 -0
@@ -1,10 +1,10 @@
1
1
  ---
2
- name: "pbi-connect"
3
- description: "Use when the user asks about Power BI MCP Connection Skill, especially phrases like \"connect Power BI\", \"PBI connection\", \"MCP connection\", \"Power BI MCP\", \"modeling mcp\", \"Power BI Modeling MCP\"."
4
- version: "4.1.5"
2
+ name: "bi-connect"
3
+ description: "Use when the user asks about Power BI MCP Connection Skill, especially phrases like \"connect Power BI\", \"PBI connection\", \"MCP connection\", \"Power BI MCP\", \"DAX UDF\", \"DAX user-defined function\"."
4
+ version: "5.0.0"
5
5
  ---
6
6
 
7
- <!-- Generated by BI Agent Superpowers. Edit src/content/skills/pbi-connect.md instead. -->
7
+ <!-- Generated by BI Agent Superpowers. Edit src/content/skills/bi-connect.md instead. -->
8
8
 
9
9
  <!-- bi-superpowers update-check preamble (auto-generated, do not edit) -->
10
10
  ## ⬆ Update check
@@ -32,9 +32,12 @@ If the command fails (missing binary, permissions, offline), ignore the error an
32
32
  ## Trigger
33
33
  Activate this skill when user mentions:
34
34
  - "connect Power BI", "PBI connection", "MCP connection", "Power BI MCP"
35
+ - "DAX UDF", "DAX user-defined function", "user defined function"
36
+ - "write UDF", "create UDF", "functions.tmdl", "DAXLIB", "daxlib"
35
37
  - "modeling mcp", "Power BI Modeling MCP"
36
38
  - "Power BI Desktop", "PBIP", "semantic model"
37
39
  - "conectar Power BI", "MCP de Power BI", "modeling mcp"
40
+ - "crear UDF", "escribir UDF", "funciones DAX"
38
41
  - "can't connect to Power BI", "connection error", "MCP not working"
39
42
 
40
43
  ## Identity
@@ -46,6 +49,7 @@ You are a **Power BI MCP Connection Specialist**. Your job is to help the user c
46
49
  3. **WINDOWS LIMITATION.** Explain clearly that the local Modeling MCP is only available on Windows.
47
50
  4. **NO PORT INVENTION.** Do not suggest local port-based setups for the official Modeling MCP flow.
48
51
  5. **ONE QUESTION AT A TIME.** Follow the wizard pattern.
52
+ 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.
49
53
 
50
54
  ---
51
55
 
@@ -208,6 +212,150 @@ claude --plugin-dir .
208
212
 
209
213
  ---
210
214
 
215
+ ## DAX UDF WIKI: DAXLIB-AWARE AUTHORING
216
+
217
+ Use this section when the user asks to write, review, import, or refactor DAX
218
+ user-defined functions (UDFs).
219
+
220
+ ### Upstream references to consult
221
+
222
+ Always check current upstream material before writing non-trivial UDFs:
223
+
224
+ | Source | Use it for |
225
+ | --- | --- |
226
+ | Microsoft Learn DAX UDF docs | Current syntax, preview limitations, supported parameter types, and management flow |
227
+ | DAXLIB source repo | Real-world `functions.tmdl` packages, naming conventions, parameter docs, package manifests |
228
+ | DAXLIB docs | Human-facing package docs and examples |
229
+ | DAXLIB GitHub organization | Development repos for individual libraries and patterns |
230
+
231
+ Canonical links:
232
+
233
+ - https://learn.microsoft.com/en-us/dax/best-practices/dax-user-defined-functions
234
+ - https://github.com/daxlib/daxlib
235
+ - https://docs.daxlib.org/
236
+ - https://github.com/daxlib
237
+
238
+ ### What DAXLIB is for in this plugin
239
+
240
+ DAXLIB is a reference library, not a bundled runtime dependency.
241
+
242
+ Use it to learn:
243
+
244
+ - how library packages organize reusable functions in `lib/functions.tmdl`;
245
+ - how functions are namespaced with dotted names;
246
+ - how function comments document purpose, params, and return shape;
247
+ - how helper functions compose with public functions;
248
+ - how manifests describe package identity, version, authors, tags, and dependencies.
249
+
250
+ Do not:
251
+
252
+ - copy an entire DAXLIB package into a customer model without explicit user
253
+ approval;
254
+ - keep DAXLIB package annotations when creating a user-owned function;
255
+ - claim a DAXLIB pattern is current without checking upstream;
256
+ - ignore the fact that DAX UDFs are still preview in Microsoft documentation.
257
+
258
+ ### Authoring workflow
259
+
260
+ When writing a UDF:
261
+
262
+ 1. Confirm the model target: PBIP/TMDL file edit, DAX Query View, TMDL View, or
263
+ MCP-backed semantic model change.
264
+ 2. Confirm that DAX UDF preview is enabled in Power BI Desktop when live Desktop
265
+ authoring is required.
266
+ 3. Inspect existing functions first:
267
+ ```dax
268
+ EVALUATE INFO.USERDEFINEDFUNCTIONS()
269
+ ```
270
+ 4. Search DAXLIB upstream for a similar function family or package pattern.
271
+ 5. Decide whether you are:
272
+ - writing a new original UDF;
273
+ - adapting one DAXLIB function with attribution;
274
+ - installing/importing a DAXLIB package by user request.
275
+ 6. Use a namespaced function name for reusable business logic, for example
276
+ `Company.Finance.GrossMarginPct`.
277
+ 7. Prefer explicit parameter hints. Use reference/expression parameters when the
278
+ function must preserve or change filter context.
279
+ 8. Test the function with a small `DEFINE FUNCTION ... EVALUATE ...` query before
280
+ applying it to the model.
281
+ 9. If editing PBIP files directly, put model functions in the semantic model
282
+ TMDL `definition/functions.tmdl` file.
283
+ 10. After saving, re-query `INFO.USERDEFINEDFUNCTIONS()` or equivalent model
284
+ metadata to verify the function exists.
285
+
286
+ ### UDF design checklist
287
+
288
+ Before returning a UDF to the user, verify:
289
+
290
+ - The function name is unique, well-formed, and not a built-in DAX function or
291
+ reserved word.
292
+ - The name does not start/end with a dot and does not contain consecutive dots.
293
+ - The comment explains why the function exists, not just what the formula says.
294
+ - Every parameter has a meaningful name and type hint.
295
+ - `VAL` vs `EXPR` behavior is intentional.
296
+ - The return shape is clear: scalar, table, filter table, or format string.
297
+ - The function does not expose secured measure/table names in its public name or
298
+ description.
299
+ - The function body is deterministic unless randomness is explicitly required.
300
+ - Helper functions are private-by-convention through naming, not assumed hidden;
301
+ current Power BI limitations do not support hiding/unhiding UDFs.
302
+
303
+ ### Templates for a new original UDF
304
+
305
+ Use DAX Query View first when you need to test the function before saving it:
306
+
307
+ ```dax
308
+ DEFINE
309
+ /// Returns gross margin percentage from gross margin and revenue.
310
+ /// @param {NUMERIC} grossMargin - Gross margin amount.
311
+ /// @param {NUMERIC} revenue - Revenue amount.
312
+ /// @returns Gross margin percentage, blank when revenue is blank or zero.
313
+ FUNCTION Company.Finance.GrossMarginPct =
314
+ (
315
+ grossMargin : NUMERIC,
316
+ revenue : NUMERIC
317
+ ) =>
318
+ DIVIDE ( grossMargin, revenue )
319
+
320
+ EVALUATE
321
+ { Company.Finance.GrossMarginPct ( 120, 300 ) }
322
+ ```
323
+
324
+ Use TMDL/PBIP shape only when you are saving the function into the model's
325
+ `definition/functions.tmdl`:
326
+
327
+ ```tmdl
328
+ createOrReplace
329
+ /// Returns gross margin percentage from gross margin and revenue.
330
+ /// @param {NUMERIC} grossMargin - Gross margin amount.
331
+ /// @param {NUMERIC} revenue - Revenue amount.
332
+ /// @returns Gross margin percentage, blank when revenue is blank or zero.
333
+ function Company.Finance.GrossMarginPct =
334
+ (
335
+ grossMargin : NUMERIC,
336
+ revenue : NUMERIC
337
+ ) =>
338
+ DIVIDE ( grossMargin, revenue )
339
+ ```
340
+
341
+ ### DAXLIB adaptation rules
342
+
343
+ If the user asks to adapt a function from DAXLIB:
344
+
345
+ 1. Link to the source package/function you used.
346
+ 2. Explain whether you changed naming, dependencies, parameter types, or return
347
+ behavior.
348
+ 3. Preserve attribution when meaningful.
349
+ 4. Replace `DAXLIB_PackageId` and `DAXLIB_PackageVersion` annotations with
350
+ user/project-owned metadata only if the target model uses such annotations.
351
+ 5. Validate dependencies: DAXLIB functions often call helper functions from the
352
+ same package or a declared dependency.
353
+
354
+ If the user did not ask to import DAXLIB code, use DAXLIB only as a design
355
+ reference and produce an original function.
356
+
357
+ ---
358
+
211
359
  ## TROUBLESHOOTING
212
360
 
213
361
  | Problem | What to do |
@@ -244,7 +392,7 @@ Adjust depth based on `config.json → experienceLevel`:
244
392
 
245
393
  ## Related Skills
246
394
 
247
- - `/project-kickoff` — Analyze a BI project and plan next steps
395
+ - `/bi-kickoff` — Analyze a BI project and plan next steps
248
396
 
249
397
  ---
250
398
 
@@ -47,7 +47,7 @@ const HTTPS_TIMEOUT_MS = 5000;
47
47
  // Rewritten at generation time when this helper is copied into
48
48
  // `skills/<name>/scripts/update-check.js`. In the canonical source under
49
49
  // `bin/commands/`, it stays null and we fall back to package.json.
50
- const BUNDLED_INSTALLED_VERSION = "4.1.5";
50
+ const BUNDLED_INSTALLED_VERSION = "5.0.0";
51
51
 
52
52
  // ---------------------------------------------------------------------------
53
53
  // Argument parsing
@@ -1,10 +1,10 @@
1
1
  ---
2
- name: "project-kickoff"
2
+ name: "bi-kickoff"
3
3
  description: "Use when the user asks about Project Kickoff Skill, especially phrases like \"I'm starting a brand-new BI project from scratch\", \"analizar proyecto\", \"analyze project\", \"project kickoff\", \"nuevo proyecto\", \"new project\"."
4
- version: "4.1.5"
4
+ version: "5.0.0"
5
5
  ---
6
6
 
7
- <!-- Generated by BI Agent Superpowers. Edit src/content/skills/project-kickoff.md instead. -->
7
+ <!-- Generated by BI Agent Superpowers. Edit src/content/skills/bi-kickoff.md instead. -->
8
8
 
9
9
  <!-- bi-superpowers update-check preamble (auto-generated, do not edit) -->
10
10
  ## ⬆ Update check
@@ -109,7 +109,7 @@ Write `AGENTS.md` + the 4 pointers using the templates at the end of this skill
109
109
 
110
110
  Cuando estés en Windows:
111
111
  1. Abrí el `.pbip` en Power BI Desktop
112
- 2. Corré `/project-kickoff` de vuelta desde esta misma carpeta
112
+ 2. Corré `/bi-kickoff` de vuelta desde esta misma carpeta
113
113
  3. Yo retomo desde la conexión MCP y hacemos el modelado
114
114
  ```
115
115
 
@@ -148,7 +148,7 @@ La conexión no respondió. Probá estos pasos:
148
148
  Cuando lo arregles, avisame y reintento.
149
149
  ```
150
150
 
151
- Load `/pbi-connect` if the user needs deeper troubleshooting.
151
+ Load `/bi-connect` if the user needs deeper troubleshooting.
152
152
 
153
153
  ---
154
154
 
@@ -585,14 +585,14 @@ These are starting points, not gospel — adapt to what the user said in PHASE 4
585
585
 
586
586
  ---
587
587
 
588
- ## PHASE 7: Handoff to `/report-design`
588
+ ## PHASE 7: Handoff to `/bi-report`
589
589
 
590
590
  Once the model has at least 1 fact, 1 dim, and 3 measures in place, propose moving to reports:
591
591
 
592
592
  ```
593
593
  ✓ Modelo base listo. Tenés fact + dims + {N} medidas.
594
594
 
595
- El siguiente paso lógico es armar los 3 reportes con `/report-design`. Ese skill va a:
595
+ El siguiente paso lógico es armar los 3 reportes con `/bi-report`. Ese skill va a:
596
596
  1. Usar el dominio que ya definimos ({domain})
597
597
  2. Inspeccionar tu modelo vía el Modeling MCP (o `pbi-cli-tool` si hace falta) para las medidas/dimensiones exactas
598
598
  3. Generar 3 páginas con scripts Node + comandos `pbi report` (card, line, bar, matrix)
@@ -600,23 +600,23 @@ El siguiente paso lógico es armar los 3 reportes con `/report-design`. Ese skil
600
600
 
601
601
  Requisito: necesitás Windows + Power BI Desktop + Python 3.10+ + `pipx` + `pbi-cli-tool` (si te falta algo, el skill te guía).
602
602
 
603
- ¿Arrancamos con /report-design, o preferís agregar más medidas al modelo primero?
603
+ ¿Arrancamos con /bi-report, o preferís agregar más medidas al modelo primero?
604
604
  ```
605
605
 
606
- If the user opts for reports, load `/report-design` and let it run. If they want to keep modeling, stay on this skill.
606
+ If the user opts for reports, load `/bi-report` and let it run. If they want to keep modeling, stay on this skill.
607
607
 
608
608
  ---
609
609
 
610
610
  ## What this skill does NOT do
611
611
 
612
612
  - **No scoring / benchmarking** of an existing model. For that, the user can ask "audit this model" separately.
613
- - **Report authoring** is delegated to `/report-design` which uses bundled Node scripts plus the `pbi` CLI runtime flow — don't write `.Report/` files from here.
613
+ - **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.
614
614
 
615
615
  ---
616
616
 
617
617
  ## Related Skills
618
618
 
619
- - `/pbi-connect` — Deeper troubleshooting if the MCP connection fails
619
+ - `/bi-connect` — Deeper troubleshooting if the MCP connection fails
620
620
 
621
621
  ---
622
622
 
@@ -47,7 +47,7 @@ const HTTPS_TIMEOUT_MS = 5000;
47
47
  // Rewritten at generation time when this helper is copied into
48
48
  // `skills/<name>/scripts/update-check.js`. In the canonical source under
49
49
  // `bin/commands/`, it stays null and we fall back to package.json.
50
- const BUNDLED_INSTALLED_VERSION = "4.1.5";
50
+ const BUNDLED_INSTALLED_VERSION = "5.0.0";
51
51
 
52
52
  // ---------------------------------------------------------------------------
53
53
  // Argument parsing
@@ -1,10 +1,10 @@
1
1
  ---
2
- name: "report-design"
2
+ name: "bi-report"
3
3
  description: "Use when the user asks about Report Design Skill, especially phrases like \"crear reportes\", \"armar el reporte\", \"diseñar reporte\", \"report design\", \"create reports\", \"build dashboard\"."
4
- version: "4.1.5"
4
+ version: "5.0.0"
5
5
  ---
6
6
 
7
- <!-- Generated by BI Agent Superpowers. Edit src/content/skills/report-design.md instead. -->
7
+ <!-- Generated by BI Agent Superpowers. Edit src/content/skills/bi-report/SKILL.md instead. -->
8
8
 
9
9
  <!-- bi-superpowers update-check preamble (auto-generated, do not edit) -->
10
10
  ## ⬆ Update check
@@ -34,8 +34,8 @@ Activate this skill when the user mentions:
34
34
  - "crear reportes", "armar el reporte", "diseñar reporte"
35
35
  - "report design", "create reports", "build dashboard"
36
36
  - "páginas del reporte", "visualizaciones", "dashboard"
37
- - Runs naturally after `/project-kickoff` finishes building the semantic model
38
- - Explicit invocation: `/report-design`
37
+ - Runs naturally after `/bi-kickoff` finishes building the semantic model
38
+ - Explicit invocation: `/bi-report`
39
39
 
40
40
  ## Identity
41
41
  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:
@@ -58,9 +58,9 @@ Your job is to plan the report, call the right scripts in the right order, and m
58
58
  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.
59
59
  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`.
60
60
  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]"`.
61
- 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 `/project-kickoff` or add it manually via Power BI Desktop UI.
61
+ 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.
62
62
  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.
63
- 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 `/project-kickoff` + los scripts de authoring, pero la verificación visual se queda pendiente hasta abrir el .pbip en Windows."_
63
+ 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."_
64
64
 
65
65
  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`.
66
66
 
@@ -84,7 +84,7 @@ Your job is to plan the report, call the right scripts in the right order, and m
84
84
  - **Neither present** → STOP and guide the user through standalone install per `references/pbi-desktop-installation.md`.
85
85
 
86
86
  1. **Check the project layout** in CWD:
87
- - `./AGENTS.md` — should exist (`/project-kickoff` created it)
87
+ - `./AGENTS.md` — should exist (`/bi-kickoff` created it)
88
88
  - `./pbip-files/*.pbip` — must exist
89
89
  - `./pbip-files/*.SemanticModel/` — must exist
90
90
  - `./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`.
@@ -101,7 +101,7 @@ Your job is to plan the report, call the right scripts in the right order, and m
101
101
  4. **Read the project context:**
102
102
  - `./AGENTS.md` → extract `{projectName}`, `{domain}`, `{purpose}`.
103
103
  - `./ROADMAP.md` → confirm "Fase 1: Modelo base" has at least some `[x]` (fact + dim + measures must exist).
104
- - If the model has zero measures, stop and say: _"Necesitás al menos algunas medidas en el modelo antes de armar reportes. Volvé a `/project-kickoff` y terminemos la Fase 2."_
104
+ - 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."_
105
105
 
106
106
  ---
107
107
 
@@ -270,7 +270,7 @@ node "{skillBundleDir}/scripts/apply-theme.js" \
270
270
  --theme-file "{skillBundleDir}/references/themes/BISuperpowers.json"
271
271
  ~~~
272
272
 
273
- `{skillBundleDir}` is the installed skill folder — usually `~/.agents/skills/report-design/` after `super install`. The agent can also invoke the script from the source repo during development.
273
+ `{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.
274
274
 
275
275
  The helper is idempotent (re-running replaces the existing customTheme in place) and copies the theme JSON to `<reportPath>/StaticResources/RegisteredResources/<themeFileName>` automatically.
276
276
 
@@ -295,7 +295,7 @@ Do NOT hand-author `report.json` theme metadata. The canonical PBIR shape (for r
295
295
  - `resourcePackages` includes a `{name: "RegisteredResources", type: "RegisteredResources"}` package whose `items[]` has `{name: "<file>.json", path: "<file>.json", type: "CustomTheme"}`
296
296
  - the theme file itself lives at `<reportPath>/StaticResources/RegisteredResources/<file>.json`
297
297
 
298
- **Conditional formatting note.** Layout notes may describe variance colors, diverging matrix gradients, or signed-color bars as design intent. The current `report-design` 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.
298
+ **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.
299
299
 
300
300
  ### 4.4 Validate (two layers)
301
301
 
@@ -358,7 +358,7 @@ Listo. Tenés 3 páginas con {N_total} visuales en tu reporte.
358
358
 
359
359
  Para iterar:
360
360
  • Editar visuales en PBI Desktop UI directamente (drag, resize, format)
361
- • O volver a /report-design si querés regenerar desde cero
361
+ • O volver a /bi-report si querés regenerar desde cero
362
362
 
363
363
  Cuando guardes desde Desktop, commiteá el .pbip a git para versionar.
364
364
  ~~~
@@ -397,8 +397,8 @@ Cuando guardes desde Desktop, commiteá el .pbip a git para versionar.
397
397
 
398
398
  ## Related Skills
399
399
 
400
- - `/project-kickoff` — runs before this; produces `AGENTS.md` + the semantic model
401
- - `/pbi-connect` — Microsoft Modeling MCP connection for model operations
400
+ - `/bi-kickoff` — runs before this; produces `AGENTS.md` + the semantic model
401
+ - `/bi-connect` — Microsoft Modeling MCP connection for model operations
402
402
 
403
403
  ## Credit
404
404
 
@@ -45,4 +45,4 @@ Roles:
45
45
  | Position slicer | slicer (manual JSON — see `references/slicer.md`) | 312, 80, 280, 80 | `position-dim-column` |
46
46
  | Employee matrix | matrix | 16, 176, 1168, 480 | rows: `Employee[FullName]`, cols: `'Date'[Year]`, values: `headcount-measure` (as snapshot) + tenure if available |
47
47
 
48
- **Design notes:** If the model has PII, strongly suggest adding RLS (`/pbi-connect` → MCP) before sharing. Surface this to the user during kickoff.
48
+ **Design notes:** If the model has PII, strongly suggest adding RLS (`/bi-connect` → MCP) before sharing. Surface this to the user during kickoff.
@@ -303,7 +303,7 @@ Si PBI Desktop introduce un visualType nuevo (o encontrás uno nativo que falta
303
303
 
304
304
  4. `npm run build:plugin` para regenerar `skills/...` y `commands/...`.
305
305
 
306
- 5. Agregar tests en `src/content/skills/report-design/scripts/create-visual.test.js` (roles required, shape generado, error case).
306
+ 5. Agregar tests en `src/content/skills/bi-report/scripts/create-visual.test.js` (roles required, shape generado, error case).
307
307
 
308
308
  6. Re-correr `npm test` + `npm run lint`.
309
309
 
@@ -1,6 +1,6 @@
1
1
  # PBIR Preview Activation
2
2
 
3
- The Power BI Enhanced Report (PBIR) format is a Public Preview feature as of 2025–2026. It must be activated in Power BI Desktop before `/report-design` can write report files.
3
+ The Power BI Enhanced Report (PBIR) format is a Public Preview feature as of 2025–2026. It must be activated in Power BI Desktop before `/bi-report` can write report files.
4
4
 
5
5
  ## How to check if it's already active
6
6
 
@@ -33,8 +33,8 @@ pbip-files/{projectName}.Report/
33
33
  └── StaticResources/
34
34
  ```
35
35
 
36
- Once that structure exists, `/report-design` can proceed.
36
+ Once that structure exists, `/bi-report` can proceed.
37
37
 
38
38
  ## Warning to surface to the user
39
39
 
40
- PBIR is in Public Preview. Microsoft can change the schema between Power BI Desktop releases. If `/report-design` suddenly stops producing files that render, update the plugin: `super upgrade`. We keep the plugin in sync with PBIR schema changes while the feature is in preview.
40
+ PBIR is in Public Preview. Microsoft can change the schema between Power BI Desktop releases. If `/bi-report` suddenly stops producing files that render, update the plugin: `super upgrade`. We keep the plugin in sync with PBIR schema changes while the feature is in preview.
@@ -47,7 +47,7 @@ Desktop is not running, or the `.pbip` hasn't finished loading yet. Open Desktop
47
47
 
48
48
  ### `pbi connect` succeeds but `pbi measure list` returns empty
49
49
 
50
- The connected Desktop instance isn't loaded with a model, or the model has no measures yet. Check with `pbi table list` — if tables exist but measures don't, the user hasn't created any measures yet. Stop and ask them to add at least one (via PBI Desktop UI or `/project-kickoff`).
50
+ The connected Desktop instance isn't loaded with a model, or the model has no measures yet. Check with `pbi table list` — if tables exist but measures don't, the user hasn't created any measures yet. Stop and ask them to add at least one (via PBI Desktop UI or `/bi-kickoff`).
51
51
 
52
52
  ## Generation failures
53
53
 
@@ -47,7 +47,7 @@ const HTTPS_TIMEOUT_MS = 5000;
47
47
  // Rewritten at generation time when this helper is copied into
48
48
  // `skills/<name>/scripts/update-check.js`. In the canonical source under
49
49
  // `bin/commands/`, it stays null and we fall back to package.json.
50
- const BUNDLED_INSTALLED_VERSION = "4.1.5";
50
+ const BUNDLED_INSTALLED_VERSION = "5.0.0";
51
51
 
52
52
  // ---------------------------------------------------------------------------
53
53
  // Argument parsing
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: "bi-start"
3
3
  description: "Use when the user asks about BI Start Skill, especially phrases like \"bi-start\", \"bi start\", \"/bi-start\", \"empezar\", \"comenzar\", \"arranco\"."
4
- version: "4.1.5"
4
+ version: "5.0.0"
5
5
  ---
6
6
 
7
7
  <!-- Generated by BI Agent Superpowers. Edit src/content/skills/bi-start.md instead. -->
@@ -22,9 +22,9 @@ Also activate:
22
22
  - When the user seems lost about which skill to invoke (e.g. says "no sé qué usar").
23
23
 
24
24
  ## Identity
25
- 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 `/project-kickoff`), **not** a connection specialist (that's `/pbi-connect`), and **not** a report author (that's `/report-design`). You are the front desk.
25
+ 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.
26
26
 
27
- 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 `/project-kickoff`. Otherwise, this skill is the right home for general-purpose entry, discovery, environment checks, and pointing the user at the right specialist.
27
+ 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.
28
28
 
29
29
  ## MANDATORY RULES
30
30
 
@@ -32,7 +32,7 @@ You are the session-opener, **not** the project-opener. If the user's intent is
32
32
  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.
33
33
  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.
34
34
  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".
35
- 5. **OS-AWARE, NOT OS-GATING.** Works on any OS. Mark Windows-only skills clearly. On macOS/Linux, `/project-kickoff` still has partial value (writes `AGENTS.md` and stops); mention that honestly instead of refusing.
35
+ 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.
36
36
  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.
37
37
 
38
38
  ---
@@ -76,7 +76,7 @@ Do these detections in order:
76
76
  node -e "console.log(process.platform)"
77
77
  ```
78
78
  - `win32` → full workflow available.
79
- - `darwin` / `linux` → limited (report-design + local Modeling MCP don't work).
79
+ - `darwin` / `linux` → limited (bi-report + local Modeling MCP don't work).
80
80
 
81
81
  2. **Project context** (CWD-based):
82
82
  - `./pbip-files/*.pbip` present? → `$hasPbip = true`.
@@ -117,15 +117,15 @@ Remind the user that `/bi-start` is the session opener, then show the **3 specia
117
117
  ```
118
118
  Ya estás en `/bi-start` (session opener). Los 3 specialist skills disponibles son:
119
119
 
120
- /project-kickoff Arrancar un proyecto BI nuevo (crea AGENTS.md, plantea modelo) · Win / Mac / Linux (parcial fuera de Win)
121
- /pbi-connect Conectar el agente a Power BI Desktop vía MCP · Windows
122
- /report-design Generar las páginas PBIR desde el modelo · Windows + PBI Desktop
120
+ /bi-kickoff Arrancar un proyecto BI nuevo (crea AGENTS.md, plantea modelo) · Win / Mac / Linux (parcial fuera de Win)
121
+ /bi-connect Conectar el agente a Power BI Desktop vía MCP · Windows
122
+ /bi-report Generar las páginas PBIR desde el modelo · Windows + PBI Desktop
123
123
 
124
124
  Invocá el que necesites con /<nombre>, o decime en lenguaje natural lo que querés
125
125
  hacer (ej: "crear reportes", "conectar Power BI", "arranco proyecto nuevo") y te ruteo.
126
126
  ```
127
127
 
128
- If the user is on macOS/Linux and says they want `/report-design` or `/pbi-connect`, remind them once: _"Ese skill requiere Windows + PBI Desktop. Para este proyecto, podés arrancar con `/project-kickoff` — escribe `AGENTS.md` con el scope y cuando tengas acceso a una máquina Windows retomás los otros dos."_
128
+ 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."_
129
129
 
130
130
  ---
131
131
 
@@ -143,27 +143,27 @@ Continue to PHASE 4.
143
143
 
144
144
  **Case B — PBI Desktop running + MCP NOT configured** (Windows only):
145
145
  Offer once:
146
- > _"Power BI Desktop está abierto pero todavía no conectaste el agente al MCP. ¿Corro `/pbi-connect`? (`sí` / `no`)"_
146
+ > _"Power BI Desktop está abierto pero todavía no conectaste el agente al MCP. ¿Corro `/bi-connect`? (`sí` / `no`)"_
147
147
 
148
- - `sí` → dispatch `/pbi-connect` cleanly. Say "dispatching /pbi-connect" and stop being the orchestrator for this turn.
148
+ - `sí` → dispatch `/bi-connect` cleanly. Say "dispatching /bi-connect" and stop being the orchestrator for this turn.
149
149
  - `no` → continue to PHASE 4 silently.
150
150
 
151
151
  **Case C — PBI Desktop NOT running + `.pbip` exists in CWD** (Windows only):
152
152
  Offer once:
153
- > _"No veo Power BI Desktop abierto. Para conectar el agente al modelo necesitás abrir el .pbip. ¿Lo abro yo y corro `/pbi-connect`? (`sí` / `no`)"_
153
+ > _"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`)"_
154
154
 
155
155
  - `sí`:
156
- 1. Launch Desktop with the project's .pbip (use the standalone path per `/report-design` PHASE 5 launch pattern — see `references/pbi-desktop-installation.md` in `/report-design`):
156
+ 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`):
157
157
  ```bash
158
158
  powershell -Command "Start-Process -FilePath 'C:\Program Files\Microsoft Power BI Desktop\bin\PBIDesktop.exe' -ArgumentList '\"<absolute-path-to.pbip>\"'"
159
159
  ```
160
160
  2. Wait ~15-20 seconds for Desktop to finish loading.
161
- 3. Dispatch `/pbi-connect`.
161
+ 3. Dispatch `/bi-connect`.
162
162
 
163
163
  - `no` → continue to PHASE 4.
164
164
 
165
165
  On macOS/Linux, skip Case B and Case C — mention once:
166
- > _"PBI Desktop no corre fuera de Windows. El Modeling MCP queda solo disponible en una máquina Windows. `/project-kickoff` sí funciona parcialmente acá (escribe `AGENTS.md` y para)."_
166
+ > _"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)."_
167
167
 
168
168
  ---
169
169
 
@@ -179,16 +179,16 @@ Stop. Don't hover. The user will tell you what they want next.
179
179
 
180
180
  ## What this skill does NOT do
181
181
 
182
- - **Project analysis or setup**: that's `/project-kickoff`. If the user says "analizar mi proyecto", "armar el modelo base", "arrancar uno nuevo desde cero", delegate.
183
- - **MCP wiring details**: that's `/pbi-connect`. bi-start just offers to dispatch it; the actual configuration work is in that skill.
184
- - **Report authoring**: that's `/report-design`. Same pattern.
182
+ - **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.
183
+ - **MCP wiring details**: that's `/bi-connect`. bi-start just offers to dispatch it; the actual configuration work is in that skill.
184
+ - **Report authoring**: that's `/bi-report`. Same pattern.
185
185
  - **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`.
186
186
 
187
187
  ## Related Skills
188
188
 
189
- - `/project-kickoff` — when it's a brand-new project that needs `AGENTS.md` + model scaffolding.
190
- - `/pbi-connect` — when you need the agent talking to PBI Desktop via MCP.
191
- - `/report-design` — when you're generating report pages via the bundled Node scripts.
189
+ - `/bi-kickoff` — when it's a brand-new project that needs `AGENTS.md` + model scaffolding.
190
+ - `/bi-connect` — when you need the agent talking to PBI Desktop via MCP.
191
+ - `/bi-report` — when you're generating report pages via the bundled Node scripts.
192
192
 
193
193
  ## Bundle contents
194
194
 
@@ -47,7 +47,7 @@ const HTTPS_TIMEOUT_MS = 5000;
47
47
  // Rewritten at generation time when this helper is copied into
48
48
  // `skills/<name>/scripts/update-check.js`. In the canonical source under
49
49
  // `bin/commands/`, it stays null and we fall back to package.json.
50
- const BUNDLED_INSTALLED_VERSION = "4.1.5";
50
+ const BUNDLED_INSTALLED_VERSION = "5.0.0";
51
51
 
52
52
  // ---------------------------------------------------------------------------
53
53
  // Argument parsing
@@ -34,7 +34,7 @@ You are a **Business Intelligence Expert** with deep knowledge of:
34
34
  2. **Show examples** - Include code samples when relevant
35
35
  3. **Explain context** - Why something works, not just how
36
36
  4. **Suggest improvements** - Proactively identify optimizations
37
- 5. **Reference patterns** - Point to relevant snippets in `library/`
37
+ 5. **Verify against shipped resources** - Use bundled skill references and scripts when available; do not invent paths that are not present in the repo
38
38
 
39
39
  ---
40
40
 
@@ -59,13 +59,14 @@ You are a **Business Intelligence Expert** with deep knowledge of:
59
59
 
60
60
  ---
61
61
 
62
- ## Available Skills (3)
62
+ ## Available Skills (4)
63
63
 
64
64
  | Skill | Purpose | Trigger |
65
65
  |-------|---------|---------|
66
- | `/project-kickoff` | Analyze a BI project, build the semantic model, and write AGENTS.md | "analyze project", "get started", "kickoff" |
67
- | `/pbi-connect` | Connect to Power BI Desktop via the official Modeling MCP | "connect Power BI", "MCP" |
68
- | `/report-design` | Generate 3-page PBIR report via `pbi-cli-tool` (cards, charts, matrix, slicers) | "crear reportes", "report design", "dashboard" |
66
+ | `/bi-start` | Open a BI session with update check, environment snapshot, and routing guidance | "bi-start", "start session", "empezar" |
67
+ | `/bi-kickoff` | Analyze and plan a BI project before implementation | "analyze project", "new project", "kickoff" |
68
+ | `/bi-connect` | Connect to Power BI Desktop via the official Modeling MCP; guide DAX UDF authoring with Microsoft Learn + DAXLIB references | "connect Power BI", "MCP", "DAX UDF", "DAXLIB" |
69
+ | `/bi-report` | Generate PBIR report pages via bundled Node scripts and the current `pbi-cli-tool` runtime flow | "crear reportes", "report design", "dashboard" |
69
70
 
70
71
  ---
71
72