@luquimbo/bi-superpowers 5.0.1 → 5.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/.claude-plugin/skill-manifest.json +1 -1
  4. package/.plugin/plugin.json +1 -1
  5. package/AGENTS.md +3 -3
  6. package/CHANGELOG.md +35 -0
  7. package/README.md +6 -5
  8. package/bin/commands/validate-projects.js +1 -1
  9. package/commands/bi-modeling.md +1 -1
  10. package/package.json +4 -2
  11. package/skills/bi-connect/SKILL.md +1 -1
  12. package/skills/bi-connect/scripts/update-check.js +1 -1
  13. package/skills/bi-dax/SKILL.md +1 -1
  14. package/skills/bi-dax/scripts/update-check.js +1 -1
  15. package/skills/bi-kickoff/SKILL.md +1 -1
  16. package/skills/bi-kickoff/scripts/update-check.js +1 -1
  17. package/skills/bi-modeling/SKILL.md +2 -2
  18. package/skills/bi-modeling/scripts/update-check.js +1 -1
  19. package/skills/bi-performance/SKILL.md +1 -1
  20. package/skills/bi-performance/scripts/update-check.js +1 -1
  21. package/skills/bi-start/SKILL.md +1 -1
  22. package/skills/bi-start/scripts/update-check.js +1 -1
  23. package/src/content/skills/bi-modeling.md +1 -1
  24. package/templates/sales/AGENTS.md +33 -0
  25. package/templates/sales/sales-template.Report/.platform +11 -0
  26. package/templates/sales/sales-template.Report/StaticResources/RegisteredResources/BISuperpowers.json +3888 -0
  27. package/templates/sales/sales-template.Report/StaticResources/SharedResources/BaseThemes/Fluent2-CY26SU03.json +4104 -0
  28. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/page.json +123 -0
  29. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/10420560e5b8c5235857/visual.json +16 -0
  30. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/2181c54a94f0c67abb2d/visual.json +283 -0
  31. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/24eba6a7af0b59974ef5/visual.json +703 -0
  32. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/26db24c91e5b615a5c29/mobile.json +11 -0
  33. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/26db24c91e5b615a5c29/visual.json +528 -0
  34. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/2ec652d0956901dd2afd/mobile.json +11 -0
  35. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/2ec652d0956901dd2afd/visual.json +324 -0
  36. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/45dda4e0b159becf2dcd/mobile.json +11 -0
  37. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/45dda4e0b159becf2dcd/visual.json +359 -0
  38. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/4ca8800cf1539ad423f2/visual.json +468 -0
  39. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/4f5704218eb88f7cdff6/mobile.json +29 -0
  40. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/4f5704218eb88f7cdff6/visual.json +241 -0
  41. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/54d3fdbedbbb863a9d7a/visual.json +575 -0
  42. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/68043403e96ca8ed23e8/visual.json +575 -0
  43. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/80b54a678ef36a250994/visual.json +351 -0
  44. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/814f624b6056dc4c8de5/mobile.json +11 -0
  45. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/814f624b6056dc4c8de5/visual.json +421 -0
  46. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/85e1cc13559f4e107ede/visual.json +681 -0
  47. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/8686961b837e855963fe/mobile.json +11 -0
  48. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/8686961b837e855963fe/visual.json +720 -0
  49. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/8d302c5b7e87e8cb57bb/visual.json +590 -0
  50. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/a02c5b30f2e757637d78/mobile.json +11 -0
  51. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/a02c5b30f2e757637d78/visual.json +102 -0
  52. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/a405d29e7744c770d445/visual.json +575 -0
  53. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/b0dc2036d3cf2baafb35/mobile.json +11 -0
  54. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/b0dc2036d3cf2baafb35/visual.json +333 -0
  55. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/cdd696baaf3b80b326f8/mobile.json +11 -0
  56. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/cdd696baaf3b80b326f8/visual.json +468 -0
  57. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/ff77ca1bafff5bfe5044/mobile.json +11 -0
  58. package/templates/sales/sales-template.Report/definition/pages/017e2c84c7dc89f26e57/visuals/ff77ca1bafff5bfe5044/visual.json +523 -0
  59. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/page.json +130 -0
  60. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/0352fd80d074693a65db/visual.json +681 -0
  61. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/1c5a14bf493697344b68/visual.json +351 -0
  62. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/3486cf7624c5b109b4e5/mobile.json +11 -0
  63. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/3486cf7624c5b109b4e5/visual.json +333 -0
  64. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/4d8b989008edc0db28d1/mobile.json +11 -0
  65. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/4d8b989008edc0db28d1/visual.json +102 -0
  66. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/5f4d76bbc870118e9840/mobile.json +11 -0
  67. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/5f4d76bbc870118e9840/visual.json +468 -0
  68. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/73629e1abebb7a444b59/mobile.json +11 -0
  69. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/73629e1abebb7a444b59/visual.json +359 -0
  70. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/749cb1388c7e0a88161c/visual.json +685 -0
  71. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/85090dcdf75ac2487d1e/visual.json +283 -0
  72. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/92cf92e3da10493adb78/visual.json +468 -0
  73. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/a30bd0950630ed94e8a3/visual.json +590 -0
  74. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/a56e91d9400a835e4814/mobile.json +11 -0
  75. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/a56e91d9400a835e4814/visual.json +528 -0
  76. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/a90aaa3e3117494f18f8/mobile.json +11 -0
  77. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/a90aaa3e3117494f18f8/visual.json +523 -0
  78. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/aded24cd205c0b528642/mobile.json +11 -0
  79. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/aded24cd205c0b528642/visual.json +720 -0
  80. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/af34b26f14a8a724c9a9/mobile.json +37 -0
  81. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/af34b26f14a8a724c9a9/visual.json +1230 -0
  82. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/b06ef80aa78cabcef8a6/mobile.json +11 -0
  83. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/b06ef80aa78cabcef8a6/visual.json +324 -0
  84. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/d97979633a91e041107e/mobile.json +11 -0
  85. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/d97979633a91e041107e/visual.json +421 -0
  86. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/fa81f184e2cb0e8b087c/mobile.json +29 -0
  87. package/templates/sales/sales-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/fa81f184e2cb0e8b087c/visual.json +241 -0
  88. package/templates/sales/sales-template.Report/definition/pages/pages.json +8 -0
  89. package/templates/sales/sales-template.Report/definition/report.json +89 -0
  90. package/templates/sales/sales-template.Report/definition/version.json +4 -0
  91. package/templates/sales/sales-template.Report/definition.pbir +9 -0
  92. package/templates/sales/sales-template.SemanticModel/.pbi/editorSettings.json +8 -0
  93. package/templates/sales/sales-template.SemanticModel/.platform +11 -0
  94. package/templates/sales/sales-template.SemanticModel/DAXQueries/.pbi/daxQueries.json +9 -0
  95. package/templates/sales/sales-template.SemanticModel/DAXQueries/Calendar445MonthNr.dax +0 -0
  96. package/templates/sales/sales-template.SemanticModel/DAXQueries/Consulta 1.dax +6 -0
  97. package/templates/sales/sales-template.SemanticModel/DAXQueries/Consulta 2.dax +32 -0
  98. package/templates/sales/sales-template.SemanticModel/definition/cultures/es-AR.tmdl +7324 -0
  99. package/templates/sales/sales-template.SemanticModel/definition/database.tmdl +3 -0
  100. package/templates/sales/sales-template.SemanticModel/definition/expressions.tmdl +233 -0
  101. package/templates/sales/sales-template.SemanticModel/definition/functions.tmdl +247 -0
  102. package/templates/sales/sales-template.SemanticModel/definition/model.tmdl +46 -0
  103. package/templates/sales/sales-template.SemanticModel/definition/relationships.tmdl +16 -0
  104. package/templates/sales/sales-template.SemanticModel/definition/tables/Aux Comparaciones.tmdl +194 -0
  105. package/templates/sales/sales-template.SemanticModel/definition/tables/Aux Dimensiones ventas.tmdl +71 -0
  106. package/templates/sales/sales-template.SemanticModel/definition/tables/Aux Ejes temporales.tmdl +67 -0
  107. package/templates/sales/sales-template.SemanticModel/definition/tables/Aux Per/303/255odos.tmdl" +318 -0
  108. package/templates/sales/sales-template.SemanticModel/definition/tables/Aux Vista de calendario.tmdl +36 -0
  109. package/templates/sales/sales-template.SemanticModel/definition/tables/Aux Vista del valor.tmdl +87 -0
  110. package/templates/sales/sales-template.SemanticModel/definition/tables/Aux Vista temporal.tmdl +62 -0
  111. package/templates/sales/sales-template.SemanticModel/definition/tables/Calendario.tmdl +198 -0
  112. package/templates/sales/sales-template.SemanticModel/definition/tables/Canales.tmdl +59 -0
  113. package/templates/sales/sales-template.SemanticModel/definition/tables/Clientes.tmdl +120 -0
  114. package/templates/sales/sales-template.SemanticModel/definition/tables/Modelo Configuraci/303/263n.tmdl" +48 -0
  115. package/templates/sales/sales-template.SemanticModel/definition/tables/Monedas.tmdl +43 -0
  116. package/templates/sales/sales-template.SemanticModel/definition/tables/M/303/251tricas.tmdl +553 -0
  117. package/templates/sales/sales-template.SemanticModel/definition/tables/Productos.tmdl +73 -0
  118. package/templates/sales/sales-template.SemanticModel/definition/tables/Tipo de cambio.tmdl +66 -0
  119. package/templates/sales/sales-template.SemanticModel/definition/tables/Ventas.tmdl +133 -0
  120. package/templates/sales/sales-template.SemanticModel/definition.pbism +5 -0
  121. package/templates/sales/sales-template.SemanticModel/diagramLayout.json +239 -0
  122. package/templates/sales/sales-template.pbip +14 -0
@@ -6,7 +6,7 @@
6
6
  },
7
7
  "metadata": {
8
8
  "description": "AI-powered skills for Power BI Desktop development. Works with Claude Code, GitHub Copilot, Codex, Gemini CLI, and Kilo Code.",
9
- "version": "5.0.1",
9
+ "version": "5.0.2",
10
10
  "repository": "https://github.com/luquimbo/bi-superpowers"
11
11
  },
12
12
  "plugins": [
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "bi-superpowers",
3
3
  "description": "Claude Code plugin for Power BI, Microsoft Fabric, and semantic model workflows powered by the official Microsoft MCP servers.",
4
- "version": "5.0.1",
4
+ "version": "5.0.2",
5
5
  "author": {
6
6
  "name": "Lucas Sanchez"
7
7
  },
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bi-superpowers",
3
- "version": "5.0.1",
3
+ "version": "5.0.2",
4
4
  "skillCount": 6,
5
5
  "skills": [
6
6
  {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "spec": "open-plugin-spec@1",
3
3
  "name": "bi-superpowers",
4
- "version": "5.0.1",
4
+ "version": "5.0.2",
5
5
  "description": "Claude Code plugin for Power BI, Microsoft Fabric, and semantic model workflows powered by the official Microsoft MCP servers.",
6
6
  "author": {
7
7
  "name": "Lucas Sanchez"
package/AGENTS.md CHANGED
@@ -16,7 +16,7 @@
16
16
  - All semantic-model changes must go through the Power BI Modeling MCP against Power BI Desktop, then be persisted by Desktop save/export. Do not hand-edit `.tmdl` or other semantic model files.
17
17
  - Report and visual design changes are manual Power BI Desktop work. Never edit PBIR report artifacts directly: no `.Report/**/visual.json`, `page.json`, `report.json`, `definition.pbir`, theme/resource JSON, coordinates, bookmarks, slicers, card settings, conditional formatting, or free-form visual changes by file patch.
18
18
  - The only permitted report mutation is the plugin-owned field-swap/rebind command for template adaptation. Agents may not patch PBIR by hand, even when the requested change is "just replacing a measure." The command may write PBIR only to replace source fields/measures in existing visuals with target model fields/measures, using an explicit source-to-target mapping and preserving visual type, layout, formatting, interactions, IDs, theme, and bookmarks. The command must support dry-run, backup, validation, and a tight write scope limited to data bindings (`projections`, `prototypeQuery`, query refs, field parameters, sort/filter field references when required). If that command is unavailable, field swaps stay manual in Power BI Desktop.
19
- - **Template is the reference.** The BISuperpowers smoke-test template (`examples/smoke-test/pbip-files/template.pbip`) encodes the patterns this plugin treats as default for any project: Auto Date/Time disabled, Date Table marked, `discourageImplicitMeasures: true`, the dedicated `Métricas` table with one-level display folders (`Auxiliar`, fact-table folders such as `Ventas`, and `Ratios`), period comparison via `Aux Comparaciones` (Sallieri pattern), parameterizable currency conversion via the Power Query `MonedaBase` parameter + `Modelo Configuración[ValorTexto]` + `Tipo de cambio[TipoCambioBase]`, dynamic dimensions via field parameters (`Aux Dimensiones ventas`), calculation groups for time intelligence, IBCS-aligned JSON theme. All specialist skills (`bi-kickoff`, `bi-modeling`, `bi-dax`, `bi-performance`, `bi-connect`) replicate these patterns in new projects and audit/migrate existing projects toward them. They are the floor, not optional decoration.
19
+ - **Template is the reference.** The BISuperpowers sales template (`templates/sales/sales-template.pbip`) encodes the patterns this plugin treats as default for any project: Auto Date/Time disabled, Date Table marked, `discourageImplicitMeasures: true`, the dedicated `Métricas` table with one-level display folders (`Auxiliar`, fact-table folders such as `Ventas`, and `Ratios`), period comparison via `Aux Comparaciones` (Sallieri pattern), parameterizable currency conversion via the Power Query `MonedaBase` parameter + `Modelo Configuración[ValorTexto]` + `Tipo de cambio[TipoCambioBase]`, dynamic dimensions via field parameters (`Aux Dimensiones ventas`), calculation groups for time intelligence, IBCS-aligned JSON theme. All specialist skills (`bi-kickoff`, `bi-modeling`, `bi-dax`, `bi-performance`, `bi-connect`) replicate these patterns in new projects and audit/migrate existing projects toward them. They are the floor, not optional decoration.
20
20
 
21
21
  ## Project Entry Points
22
22
  - `AGENTS.md` (this file) — operational context, conventions, install + publish flow.
@@ -247,7 +247,7 @@ Los 6 skills quedan disponibles como MCP prompts. Claude Desktop is a compatibil
247
247
  Use `validation/` when the user wants to test the plugin against public fixtures
248
248
  or private client projects. Keep this boundary:
249
249
 
250
- - `examples/smoke-test/` is the public fixture area.
250
+ - `templates/<domain>/` is the public template area (today: `templates/sales/`). Each template ships its own `AGENTS.md` and PBIP package.
251
251
  - `validation/projects/*.json` stores sanitized metadata only.
252
252
  - `validation/cases/*.md` stores manual validation playbooks.
253
253
  - `validation.local.json` stores private local repo paths and is gitignored.
@@ -258,7 +258,7 @@ screenshots with private data, or private Git remotes into this public repo. Run
258
258
  structural checks with:
259
259
 
260
260
  ```bash
261
- super validate-projects --project template
261
+ super validate-projects --project sales-template
262
262
  super validate-projects --strict
263
263
  ```
264
264
 
package/CHANGELOG.md CHANGED
@@ -7,6 +7,41 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [5.0.2] — 2026-05-08
11
+
12
+ ### Changed — 2026-05-08 (templates folder + Calendario merge)
13
+
14
+ - Moved the canonical reference template from `examples/smoke-test/pbip-files/template.*`
15
+ to `templates/sales/sales-template.*` to make room for additional template
16
+ domains (`templates/<domain>/`). Removed the `examples/smoke-test/` umbrella
17
+ and the orphaned `super-test.*` Desktop cache. Filename rename to
18
+ `sales-template.*` was performed via Power BI Desktop "Save As" so the PBIP
19
+ descriptor JSONs (`.pbip` and `Report/definition.pbir`) were never
20
+ hand-edited.
21
+ - `templates/` now ships in the npm tarball (added to `package.json` files
22
+ whitelist). Excluded `**/.pbi/localSettings.json` from the tarball — those
23
+ files contain DPAPI-encrypted machine-specific Desktop bindings and must not
24
+ ship.
25
+ - Updated all repo-side references (skills, AGENTS.md, README.md,
26
+ ARCHITECTURE.md, CONTRIBUTING.md, validation registry) to point at the new
27
+ `templates/sales/` location.
28
+ - Merged the `Calendar` Power Query helper into the loaded `Calendario` Date
29
+ Table. `Calendario` is now rolling (ends at `Today` adjusted by the
30
+ `ZonaHoraria` parameter) and exposes 7 hidden 4-4-5 fiscal columns
31
+ (`Fiscal445Year`, `Fiscal445MonthNr`, `Fiscal445QuarterNr`,
32
+ `Fiscal445SemesterNr`, `Fiscal445MonthKey`, `Fiscal445QuarterKey`,
33
+ `Fiscal445SemesterKey`) consumed by `Aux Períodos`. The `Calendar` named
34
+ expression was deleted; `Aux Períodos` rebound to `Calendario` and renamed
35
+ `[Date]` → `[Fecha]` references.
36
+
37
+ ### Removed — 2026-05-08 (orphan measures in sales template)
38
+
39
+ - Deleted 5 unused measures from `Métricas`: `Tipo de cambio seleccionado`,
40
+ `Ventas brutas`, `Métrica seleccionada`, `Color de tarjeta de tendencia`,
41
+ `Color de barras de tendencia`. Audit confirmed zero consumers in report
42
+ visuals, other measures, calculation items, or UDFs. Total measure count:
43
+ 32 → 27.
44
+
10
45
  ### Fixed — 2026-05-08 (release readiness review)
11
46
 
12
47
  - Updated all template-reference guidance to match the current smoke-test
package/README.md CHANGED
@@ -504,6 +504,7 @@ bin/
504
504
  commands/
505
505
  skills/
506
506
  src/content/
507
+ templates/
507
508
  desktop-extension/
508
509
  config.json
509
510
  config.example.json
@@ -518,16 +519,16 @@ The npm package does not include:
518
519
 
519
520
  ```text
520
521
  docs/superpowers/
521
- examples/smoke-test/
522
522
  validation/
523
523
  validation.local.example.json
524
524
  validation.local.json
525
525
  node_modules/
526
526
  *.test.js
527
+ **/.pbi/localSettings.json
527
528
  ```
528
529
 
529
- `examples/smoke-test/` is intentionally repo-only. It is used for QA and manual validation, not for user installs.
530
- `validation/` is also repo-only. It stores sanitized validation descriptors and playbooks for project QA; private project paths live in `validation.local.json`, which must never be committed.
530
+ `templates/` ships canonical reference templates (today: `templates/sales/`). Each template is a complete PBIP package with `AGENTS.md`, semantic model, and report definition — used as the canonical "template-as-reference" by all specialist skills, and as the source for the upcoming `bi-kickoff` "create from template" branch (which will copy `templates/<domain>/` into `<user-repo>/pbip-files/<projectName>.*` with renaming).
531
+ `validation/` is repo-only. It stores sanitized validation descriptors and playbooks for project QA; private project paths live in `validation.local.json`, which must never be committed.
531
532
 
532
533
  ---
533
534
 
@@ -582,7 +583,7 @@ Power BI work without committing customer repositories.
582
583
  Public fixtures live in:
583
584
 
584
585
  ```text
585
- examples/smoke-test/
586
+ templates/sales/
586
587
  ```
587
588
 
588
589
  Sanitized validation metadata lives in:
@@ -604,7 +605,7 @@ map client projects on your own machine.
604
605
  Run the structural validation:
605
606
 
606
607
  ```bash
607
- super validate-projects --project template
608
+ super validate-projects --project sales-template
608
609
  ```
609
610
 
610
611
  Run every descriptor, treating skipped private projects as failures:
@@ -9,7 +9,7 @@
9
9
  *
10
10
  * Usage:
11
11
  * super validate-projects
12
- * super validate-projects --project template
12
+ * super validate-projects --project sales-template
13
13
  * super validate-projects --root C:\path\to\bi-superpowers
14
14
  */
15
15
 
@@ -334,7 +334,7 @@ Read `config.json → experienceLevel` if available; otherwise infer from how th
334
334
 
335
335
  ## Template Patterns to Replicate
336
336
 
337
- The BISuperpowers smoke-test template (`examples/smoke-test/pbip-files/template.pbip` in the plugin repo, or the bundled copy that ships with `super install`) is the canonical reference. When designing a new model or auditing an existing one, replicate these structures **by default**:
337
+ The BISuperpowers sales template (`templates/sales/sales-template.pbip` in the plugin repo, or the bundled copy that ships with `super install`) is the canonical reference. When designing a new model or auditing an existing one, replicate these structures **by default**:
338
338
 
339
339
  ### Structural patterns
340
340
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@luquimbo/bi-superpowers",
3
- "version": "5.0.1",
3
+ "version": "5.0.2",
4
4
  "description": "Open-source Power BI Desktop toolkit for Claude Code, GitHub Copilot, Codex, Gemini CLI, and Kilo Code. Ships 6 BI skills and 2 official Microsoft MCP servers.",
5
5
  "main": "bin/cli.js",
6
6
  "bin": {
@@ -78,6 +78,7 @@
78
78
  "commands/",
79
79
  "skills/",
80
80
  "src/content/",
81
+ "templates/",
81
82
  "theme/",
82
83
  "desktop-extension/",
83
84
  "config.json",
@@ -86,6 +87,7 @@
86
87
  "LICENSE",
87
88
  "CHANGELOG.md",
88
89
  "AGENTS.md",
89
- "!**/*.test.js"
90
+ "!**/*.test.js",
91
+ "!**/.pbi/localSettings.json"
90
92
  ]
91
93
  }
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: "bi-connect"
3
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.1"
4
+ version: "5.0.2"
5
5
  ---
6
6
 
7
7
  <!-- Generated by BI Agent Superpowers. Edit src/content/skills/bi-connect.md instead. -->
@@ -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 = "5.0.1";
50
+ const BUNDLED_INSTALLED_VERSION = "5.0.2";
51
51
 
52
52
  // ---------------------------------------------------------------------------
53
53
  // Argument parsing
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: "bi-dax"
3
3
  description: "Use when the user asks about Power BI DAX Expert Skill, especially phrases like \"bi-dax\", \"/bi-dax\", \"DAX\", \"medida DAX\", \"DAX measure\", \"fórmula DAX\"."
4
- version: "5.0.1"
4
+ version: "5.0.2"
5
5
  ---
6
6
 
7
7
  <!-- Generated by BI Agent Superpowers. Edit src/content/skills/bi-dax.md instead. -->
@@ -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 = "5.0.1";
50
+ const BUNDLED_INSTALLED_VERSION = "5.0.2";
51
51
 
52
52
  // ---------------------------------------------------------------------------
53
53
  // Argument parsing
@@ -1,7 +1,7 @@
1
1
  ---
2
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: "5.0.1"
4
+ version: "5.0.2"
5
5
  ---
6
6
 
7
7
  <!-- Generated by BI Agent Superpowers. Edit src/content/skills/bi-kickoff.md instead. -->
@@ -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 = "5.0.1";
50
+ const BUNDLED_INSTALLED_VERSION = "5.0.2";
51
51
 
52
52
  // ---------------------------------------------------------------------------
53
53
  // Argument parsing
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: "bi-modeling"
3
3
  description: "Use when the user asks about Power BI Data Modeling Skill, especially phrases like \"bi-modeling\", \"bi modeling\", \"/bi-modeling\", \"modelar\", \"modelo semántico\", \"semantic model\"."
4
- version: "5.0.1"
4
+ version: "5.0.2"
5
5
  ---
6
6
 
7
7
  <!-- Generated by BI Agent Superpowers. Edit src/content/skills/bi-modeling.md instead. -->
@@ -336,7 +336,7 @@ Read `config.json → experienceLevel` if available; otherwise infer from how th
336
336
 
337
337
  ## Template Patterns to Replicate
338
338
 
339
- The BISuperpowers smoke-test template (`examples/smoke-test/pbip-files/template.pbip` in the plugin repo, or the bundled copy that ships with `super install`) is the canonical reference. When designing a new model or auditing an existing one, replicate these structures **by default**:
339
+ The BISuperpowers sales template (`templates/sales/sales-template.pbip` in the plugin repo, or the bundled copy that ships with `super install`) is the canonical reference. When designing a new model or auditing an existing one, replicate these structures **by default**:
340
340
 
341
341
  ### Structural patterns
342
342
 
@@ -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 = "5.0.1";
50
+ const BUNDLED_INSTALLED_VERSION = "5.0.2";
51
51
 
52
52
  // ---------------------------------------------------------------------------
53
53
  // Argument parsing
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: "bi-performance"
3
3
  description: "Use when the user asks about Power BI Performance Skill, especially phrases like \"bi-performance\", \"/bi-performance\", \"performance\", \"rendimiento\", \"lento\", \"slow\"."
4
- version: "5.0.1"
4
+ version: "5.0.2"
5
5
  ---
6
6
 
7
7
  <!-- Generated by BI Agent Superpowers. Edit src/content/skills/bi-performance/SKILL.md instead. -->
@@ -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 = "5.0.1";
50
+ const BUNDLED_INSTALLED_VERSION = "5.0.2";
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: "5.0.1"
4
+ version: "5.0.2"
5
5
  ---
6
6
 
7
7
  <!-- Generated by BI Agent Superpowers. Edit src/content/skills/bi-start.md instead. -->
@@ -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 = "5.0.1";
50
+ const BUNDLED_INSTALLED_VERSION = "5.0.2";
51
51
 
52
52
  // ---------------------------------------------------------------------------
53
53
  // Argument parsing
@@ -307,7 +307,7 @@ Read `config.json → experienceLevel` if available; otherwise infer from how th
307
307
 
308
308
  ## Template Patterns to Replicate
309
309
 
310
- The BISuperpowers smoke-test template (`examples/smoke-test/pbip-files/template.pbip` in the plugin repo, or the bundled copy that ships with `super install`) is the canonical reference. When designing a new model or auditing an existing one, replicate these structures **by default**:
310
+ The BISuperpowers sales template (`templates/sales/sales-template.pbip` in the plugin repo, or the bundled copy that ships with `super install`) is the canonical reference. When designing a new model or auditing an existing one, replicate these structures **by default**:
311
311
 
312
312
  ### Structural patterns
313
313
 
@@ -0,0 +1,33 @@
1
+ # AGENTS.md — Instrucciones para agentes de IA en este proyecto Power BI
2
+
3
+ ## Regla crítica 1: siempre usar el Power BI MCP para escribir
4
+
5
+ Cuando crees o modifiques medidas DAX, tablas, columnas, relaciones o cualquier elemento del modelo semántico, DEBES usar el servidor MCP de Power BI Desktop. NO edites archivos TMDL (`.tmdl`, `.tmd`) directamente. Esos archivos los gestiona el motor tabular. Editarlos a mano basado en tu conocimiento de entrenamiento es propenso a errores y probablemente rompa el modelo.
6
+
7
+ ## Regla crítica 2: verificar la conexión MCP al iniciar sesión
8
+
9
+ Antes de hacer cualquier cambio al proyecto, verifica que el MCP de Power BI Desktop esté conectado a una instancia abierta. Si no lo está, avisa al usuario para que abra el archivo `.pbip` en Power BI Desktop primero.
10
+
11
+ ## Regla crítica 3: los archivos TMDL son SOLO LECTURA
12
+
13
+ Puedes LEER archivos TMDL para entender la estructura del modelo, las relaciones, las medidas. Es a veces más rápido que consultar por MCP. Pero NUNCA ESCRIBAS en esos archivos.
14
+
15
+ ## Regla crítica 4: consultar Microsoft Learn MCP para documentación técnica
16
+
17
+ Cuando el usuario pregunte sobre funciones DAX, propiedades de Power BI, conectores o capacidades de Fabric, consulta el Microsoft Learn MCP antes de responder. No respondas de memoria sobre temas donde la documentación puede haber cambiado desde tu fecha de corte de entrenamiento. Si el Learn MCP no está disponible, avisa al usuario antes de responder.
18
+
19
+ ## Regla crítica 5: flujo completo
20
+
21
+ Escribir via MCP. Leer via archivos. Versionar via Git. Después de cambios significativos, sugiere al usuario hacer un commit.
22
+
23
+ ## Estructura del proyecto
24
+
25
+ La carpeta raíz del proyecto es un repositorio Git independiente.
26
+
27
+ - Archivo `/sales-template.pbip`: archivo del proyecto Power BI (renombralo al nombre de tu proyecto si lo adaptás)
28
+ - Carpeta `/sales-template.SemanticModel/`: definición del modelo (archivos TMDL, **SOLO LECTURA para agentes**)
29
+ - Carpeta `/sales-template.Report/`: definición del reporte (**SOLO LECTURA para agentes**)
30
+
31
+ Si renombrás los archivos `template.*` para tu proyecto, actualizá también las referencias internas:
32
+ - `<tu-proyecto>.pbip` → campo `artifacts[0].report.path` apunta a `<tu-proyecto>.Report`
33
+ - `<tu-proyecto>.Report/definition.pbir` → campo `datasetReference.byPath.path` apunta a `../<tu-proyecto>.SemanticModel`
@@ -0,0 +1,11 @@
1
+ {
2
+ "$schema": "https://developer.microsoft.com/json-schemas/fabric/gitIntegration/platformProperties/2.0.0/schema.json",
3
+ "metadata": {
4
+ "type": "Report",
5
+ "displayName": "sales-template"
6
+ },
7
+ "config": {
8
+ "version": "2.0",
9
+ "logicalId": "04b20925-5d76-439b-98f1-a45b9ad6ea5d"
10
+ }
11
+ }