bi-superpowers 1.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 +31 -0
- package/.claude-plugin/plugin.json +34 -0
- package/.claude-plugin/skill-manifest.json +79 -0
- package/.mcp.json +13 -0
- package/.plugin/plugin.json +14 -0
- package/LICENSE +21 -0
- package/README.md +849 -0
- package/bin/build-plugin.js +97 -0
- package/bin/cli.js +891 -0
- package/bin/commands/autoupdate.js +128 -0
- package/bin/commands/build-desktop.js +368 -0
- package/bin/commands/create-from-template.js +165 -0
- package/bin/commands/diff.js +435 -0
- package/bin/commands/install.js +542 -0
- package/bin/commands/lint.js +441 -0
- package/bin/commands/mcp-setup.js +255 -0
- package/bin/commands/session-update.js +204 -0
- package/bin/commands/smoke-test.js +20 -0
- package/bin/commands/uninstall.js +611 -0
- package/bin/commands/update-check.js +427 -0
- package/bin/commands/validate-cases.js +264 -0
- package/bin/commands/validate-projects.js +426 -0
- package/bin/commands/watch.js +251 -0
- package/bin/lib/agents.js +62 -0
- package/bin/lib/base-template-smoke.js +299 -0
- package/bin/lib/claude-hooks.js +160 -0
- package/bin/lib/generators/claude-plugin.js +529 -0
- package/bin/lib/generators/index.js +116 -0
- package/bin/lib/generators/shared.js +257 -0
- package/bin/lib/mcp-config.js +835 -0
- package/bin/lib/microsoft-mcp.js +206 -0
- package/bin/lib/powerbi-mcp-session.js +140 -0
- package/bin/lib/skills.js +164 -0
- package/bin/lib/template-scaffold.js +366 -0
- package/bin/mcp/powerbi-modeling-launcher.js +42 -0
- package/bin/postinstall.js +50 -0
- package/bin/utils/mcp-detect.js +346 -0
- package/bin/utils/tui.js +314 -0
- package/commands/bi-connect.md +520 -0
- package/commands/bi-dax.md +464 -0
- package/commands/bi-kickoff.md +550 -0
- package/commands/bi-modeling.md +485 -0
- package/commands/bi-performance.md +521 -0
- package/commands/bi-powerquery.md +229 -0
- package/commands/bi-refactor.md +249 -0
- package/commands/bi-scorecard.md +268 -0
- package/commands/bi-start.md +272 -0
- package/config.example.json +23 -0
- package/config.json +23 -0
- package/desktop-extension/manifest.json +30 -0
- package/desktop-extension/package.json +10 -0
- package/desktop-extension/server.js +137 -0
- package/package.json +94 -0
- package/skills/bi-connect/SKILL.md +522 -0
- package/skills/bi-connect/scripts/update-check.js +427 -0
- package/skills/bi-dax/SKILL.md +466 -0
- package/skills/bi-dax/scripts/update-check.js +427 -0
- package/skills/bi-kickoff/SKILL.md +552 -0
- package/skills/bi-kickoff/references/flow.html +78 -0
- package/skills/bi-kickoff/references/flow.md +62 -0
- package/skills/bi-kickoff/scripts/update-check.js +427 -0
- package/skills/bi-modeling/SKILL.md +487 -0
- package/skills/bi-modeling/scripts/update-check.js +427 -0
- package/skills/bi-performance/SKILL.md +523 -0
- package/skills/bi-performance/scripts/install-tabular-editor.ps1 +159 -0
- package/skills/bi-performance/scripts/run-bpa.ps1 +265 -0
- package/skills/bi-performance/scripts/update-check.js +427 -0
- package/skills/bi-powerquery/SKILL.md +231 -0
- package/skills/bi-powerquery/references/base-template-data-contract.md +323 -0
- package/skills/bi-powerquery/references/power-query-standards.md +74 -0
- package/skills/bi-powerquery/scripts/new-powerquery-staging.ps1 +371 -0
- package/skills/bi-powerquery/scripts/test-powerquery-contract.ps1 +225 -0
- package/skills/bi-powerquery/scripts/update-check.js +427 -0
- package/skills/bi-refactor/SKILL.md +251 -0
- package/skills/bi-refactor/references/flow.md +27 -0
- package/skills/bi-refactor/scripts/update-check.js +427 -0
- package/skills/bi-scorecard/SKILL.md +270 -0
- package/skills/bi-scorecard/examples/base-template-scorecard-overlay.json +82 -0
- package/skills/bi-scorecard/scripts/new-scorecard-blueprint-from-base-template.ps1 +124 -0
- package/skills/bi-scorecard/scripts/powerbi-goal-status-rules-api.ps1 +39 -0
- package/skills/bi-scorecard/scripts/powerbi-goal-values-api.ps1 +48 -0
- package/skills/bi-scorecard/scripts/powerbi-goals-api.ps1 +68 -0
- package/skills/bi-scorecard/scripts/powerbi-rest-common.ps1 +197 -0
- package/skills/bi-scorecard/scripts/powerbi-scorecards-api.ps1 +53 -0
- package/skills/bi-scorecard/scripts/update-check.js +427 -0
- package/skills/bi-start/SKILL.md +274 -0
- package/skills/bi-start/scripts/update-check.js +427 -0
- package/src/content/base.md +197 -0
- package/src/content/mcp-requirements.json +57 -0
- package/src/content/routing.md +201 -0
- package/src/content/skills/bi-connect.md +493 -0
- package/src/content/skills/bi-dax.md +437 -0
- package/src/content/skills/bi-kickoff/SKILL.md +523 -0
- package/src/content/skills/bi-kickoff/references/flow.html +78 -0
- package/src/content/skills/bi-kickoff/references/flow.md +62 -0
- package/src/content/skills/bi-modeling.md +458 -0
- package/src/content/skills/bi-performance/SKILL.md +494 -0
- package/src/content/skills/bi-performance/scripts/install-tabular-editor.ps1 +159 -0
- package/src/content/skills/bi-performance/scripts/run-bpa.ps1 +265 -0
- package/src/content/skills/bi-powerquery/SKILL.md +202 -0
- package/src/content/skills/bi-powerquery/references/base-template-data-contract.md +323 -0
- package/src/content/skills/bi-powerquery/references/power-query-standards.md +74 -0
- package/src/content/skills/bi-powerquery/scripts/new-powerquery-staging.ps1 +371 -0
- package/src/content/skills/bi-powerquery/scripts/test-powerquery-contract.ps1 +225 -0
- package/src/content/skills/bi-refactor/SKILL.md +222 -0
- package/src/content/skills/bi-refactor/references/flow.md +27 -0
- package/src/content/skills/bi-scorecard/SKILL.md +241 -0
- package/src/content/skills/bi-scorecard/examples/base-template-scorecard-blueprint.expected.json +105 -0
- package/src/content/skills/bi-scorecard/examples/base-template-scorecard-overlay.json +82 -0
- package/src/content/skills/bi-scorecard/scripts/new-scorecard-blueprint-from-base-template.ps1 +124 -0
- package/src/content/skills/bi-scorecard/scripts/powerbi-goal-status-rules-api.ps1 +39 -0
- package/src/content/skills/bi-scorecard/scripts/powerbi-goal-values-api.ps1 +48 -0
- package/src/content/skills/bi-scorecard/scripts/powerbi-goals-api.ps1 +68 -0
- package/src/content/skills/bi-scorecard/scripts/powerbi-rest-common.ps1 +197 -0
- package/src/content/skills/bi-scorecard/scripts/powerbi-scorecards-api.ps1 +53 -0
- package/src/content/skills/bi-start.md +266 -0
- package/templates/base-template/AGENTS.md +33 -0
- package/templates/base-template/base-template.Report/.platform +11 -0
- package/templates/base-template/base-template.Report/StaticResources/RegisteredResources/BISuperpowers.json +3888 -0
- package/templates/base-template/base-template.Report/StaticResources/SharedResources/BaseThemes/CY18SU07.json +177 -0
- package/templates/base-template/base-template.Report/StaticResources/SharedResources/BaseThemes/Fluent2-CY26SU03.json +4104 -0
- package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/AccessibleCityPark.json +26 -0
- package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/AccessibleDefault.json +26 -0
- package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/AccessibleNeutral.json +26 -0
- package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/AccessibleOrchid.json +26 -0
- package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/AccessibleTidal.json +26 -0
- package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/Bloom.json +139 -0
- package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/CityPark.json +40 -0
- package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/Classroom.json +40 -0
- package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/ColorblindSafe.json +48 -0
- package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/CopilotDefault.json +1861 -0
- package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/Divergent.json +127 -0
- package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/Electric.json +48 -0
- package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/Frontier.json +136 -0
- package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/HighContrast.json +40 -0
- package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/Highrise.json +41 -0
- package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/Innovate.json +227 -0
- package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/NewExecutive.json +41 -0
- package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/Solar.json +33 -0
- package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/Storm.json +25 -0
- package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/Sunset.json +48 -0
- package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/Temperature.json +33 -0
- package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/Tidal.json +100 -0
- package/templates/base-template/base-template.Report/StaticResources/SharedResources/BuiltInThemes/Twilight.json +40 -0
- package/templates/base-template/base-template.Report/definition/bookmarks/1d40d43c7ade66e8603c.bookmark.json +2297 -0
- package/templates/base-template/base-template.Report/definition/bookmarks/af068ff51c0ca3089ea7.bookmark.json +2300 -0
- package/templates/base-template/base-template.Report/definition/bookmarks/bookmarks.json +11 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/page.json +130 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/0352fd80d074693a65db/mobile.json +11 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/0352fd80d074693a65db/visual.json +669 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/1c5a14bf493697344b68/mobile.json +11 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/1c5a14bf493697344b68/visual.json +723 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/3486cf7624c5b109b4e5/mobile.json +11 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/3486cf7624c5b109b4e5/visual.json +333 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/4d8b989008edc0db28d1/mobile.json +11 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/4d8b989008edc0db28d1/visual.json +109 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/55e10ac7d76a1954f94f/mobile.json +31 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/55e10ac7d76a1954f94f/visual.json +378 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/57f52ecf4490f70e4da1/mobile.json +11 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/57f52ecf4490f70e4da1/visual.json +175 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/5f4d76bbc870118e9840/mobile.json +11 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/5f4d76bbc870118e9840/visual.json +468 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/73629e1abebb7a444b59/mobile.json +11 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/73629e1abebb7a444b59/visual.json +359 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/749cb1388c7e0a88161c/mobile.json +11 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/749cb1388c7e0a88161c/visual.json +690 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/90677f13cea5d1275990/visual.json +17 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/92cf92e3da10493adb78/mobile.json +11 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/92cf92e3da10493adb78/visual.json +468 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/9fe17b1971f68443fc15/mobile.json +10 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/9fe17b1971f68443fc15/visual.json +328 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/a30bd0950630ed94e8a3/mobile.json +11 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/a30bd0950630ed94e8a3/visual.json +578 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/a56e91d9400a835e4814/mobile.json +11 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/a56e91d9400a835e4814/visual.json +432 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/aded24cd205c0b528642/mobile.json +11 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/aded24cd205c0b528642/visual.json +801 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/af34b26f14a8a724c9a9/mobile.json +37 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/af34b26f14a8a724c9a9/visual.json +1318 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/b529688fe5a226643322/visual.json +209 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/c4c6f332d05e72e2eb06/mobile.json +11 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/c4c6f332d05e72e2eb06/visual.json +174 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/fa81f184e2cb0e8b087c/mobile.json +29 -0
- package/templates/base-template/base-template.Report/definition/pages/6a4808bb8bb9166f49ff/visuals/fa81f184e2cb0e8b087c/visual.json +241 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/page.json +130 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/07e9c4302e29029c5462/mobile.json +11 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/07e9c4302e29029c5462/visual.json +690 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/109ceede4bc015b0c006/mobile.json +11 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/109ceede4bc015b0c006/visual.json +468 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/118257e006d472277e10/mobile.json +11 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/118257e006d472277e10/visual.json +359 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/2caf02e0137c4a1280cc/mobile.json +11 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/2caf02e0137c4a1280cc/visual.json +669 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/311e76fe3c9edad68204/mobile.json +11 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/311e76fe3c9edad68204/visual.json +109 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/31c21f8cbeb3b208940a/visual.json +209 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/3ab72c25062437149b03/visual.json +17 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/5959867442abcb0ce2b3/mobile.json +11 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/5959867442abcb0ce2b3/visual.json +788 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/5b96e0f88d192b044a13/mobile.json +11 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/5b96e0f88d192b044a13/visual.json +592 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/64e749a63d0786000e22/mobile.json +11 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/64e749a63d0786000e22/visual.json +468 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/7ae1ca604edac6586ad0/mobile.json +11 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/7ae1ca604edac6586ad0/visual.json +1310 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/840300733885141a6603/mobile.json +11 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/840300733885141a6603/visual.json +175 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/a38448cdb203279273d2/mobile.json +11 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/a38448cdb203279273d2/visual.json +516 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/d1e86f213a3841d12e20/visual.json +328 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/d4a484c1bcc8ee3075e2/mobile.json +11 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/d4a484c1bcc8ee3075e2/visual.json +432 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/d87cb5cf06acca19bbb5/mobile.json +11 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/d87cb5cf06acca19bbb5/visual.json +241 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/e243da2677209ed69408/mobile.json +11 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/e243da2677209ed69408/visual.json +174 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/f3aaf24f5b22b67573b0/mobile.json +11 -0
- package/templates/base-template/base-template.Report/definition/pages/9a5b670b015cab882629/visuals/f3aaf24f5b22b67573b0/visual.json +333 -0
- package/templates/base-template/base-template.Report/definition/pages/pages.json +8 -0
- package/templates/base-template/base-template.Report/definition/report.json +89 -0
- package/templates/base-template/base-template.Report/definition/version.json +4 -0
- package/templates/base-template/base-template.Report/definition.pbir +9 -0
- package/templates/base-template/base-template.SemanticModel/.platform +11 -0
- package/templates/base-template/base-template.SemanticModel/definition/cultures/es-AR.tmdl +11185 -0
- package/templates/base-template/base-template.SemanticModel/definition/database.tmdl +3 -0
- package/templates/base-template/base-template.SemanticModel/definition/expressions.tmdl +234 -0
- package/templates/base-template/base-template.SemanticModel/definition/functions.tmdl +637 -0
- package/templates/base-template/base-template.SemanticModel/definition/model.tmdl +82 -0
- package/templates/base-template/base-template.SemanticModel/definition/relationships.tmdl +271 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/Calendario.tmdl +200 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/Campa/303/261as.tmdl +75 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/Canales.tmdl +84 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/Clientes.tmdl +143 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/Devoluciones.tmdl +95 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/Ejecuci/303/263n proyectos.tmdl" +130 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/Entregas.tmdl +122 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/Equipos m/303/251tricas.tmdl" +40 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/Equipos.tmdl +73 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/Horas.tmdl +122 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/Interacciones clientes.tmdl +146 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/Leads.tmdl +119 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/Monedas.tmdl +44 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/Movimientos financieros.tmdl +145 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/M/303/251tricas.tmdl +1294 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/N/303/263mina.tmdl +110 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/Oportunidades.tmdl +135 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/Presupuesto.tmdl +125 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/Productos.tmdl +98 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/Proyectos.tmdl +77 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/Servicios.tmdl +75 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/Tareas proyecto.tmdl +102 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/Tipo de cambio.tmdl +67 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/Ventas.tmdl +180 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/_Aux An/303/241lisis dimensiones.tmdl" +38 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/_Aux Comparaciones.tmdl +227 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/_Aux Compatibilidad m/303/251trica-dimensi/303/263n.tmdl" +68 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/_Aux Modelo configuraci/303/263n.tmdl" +44 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/_Aux Modo fechas.tmdl +36 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/_Aux M/303/251trica-Equipo.tmdl" +102 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/_Aux Overrides m/303/251trica-dimensi/303/263n.tmdl" +54 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/_Aux Per/303/255odos.tmdl" +182 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/_Aux Rango fechas modo.tmdl +36 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/_Aux Rango fechas.tmdl +27 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/_Aux Vista de calendario.tmdl +30 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/_GC C/303/241lculo.tmdl" +70 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/_GC Eje X.tmdl +63 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/_GC M/303/251trica.tmdl" +374 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/_GC Tipo c/303/241lculo.tmdl" +223 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/_PC Dimensi/303/263n.tmdl" +98 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables/_PC Eje X.tmdl +68 -0
- package/templates/base-template/base-template.SemanticModel/definition/tables//303/223rdenes servicio.tmdl" +151 -0
- package/templates/base-template/base-template.SemanticModel/definition.pbism +5 -0
- package/templates/base-template/base-template.SemanticModel/diagramLayout.json +568 -0
- package/templates/base-template/base-template.pbip +14 -0
- package/templates/base-template/template.manifest.json +41 -0
- package/theme/BISuperpowers.json +3888 -0
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Power BI Service scorecards — create scorecard blueprints from model metrics, manage goals, check-ins, and status rules"
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
<!-- Generated by BI Agent Superpowers. Edit src/content/skills/bi-scorecard/SKILL.md instead. -->
|
|
6
|
+
|
|
7
|
+
<!-- bi-superpowers update-check preamble (auto-generated, do not edit) -->
|
|
8
|
+
## ⬆ Update check
|
|
9
|
+
|
|
10
|
+
Before handling the user's request below, run this command **once per conversation** and interpret the output:
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
node "{skillBundleDir}/scripts/update-check.js" --silent-if-uptodate --silent-if-snoozed
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
- Empty output or `UPTODATE` — proceed with the skill silently. No message.
|
|
17
|
+
- `UPDATE_AVAILABLE <installed> <latest>` — tell the user exactly once this conversation, before diving into the skill:
|
|
18
|
+
> "bi-superpowers v{latest} is available (you are on v{installed}). Update with `super upgrade` (or `/plugin update bi-superpowers` in Claude Code) when convenient. If you use a local plugin generated with `super kickoff`, run `super recharge` in that repo afterwards."
|
|
19
|
+
|
|
20
|
+
Then continue with the skill below.
|
|
21
|
+
- `SNOOZED <iso>` — proceed silently.
|
|
22
|
+
|
|
23
|
+
If the command fails (missing binary, permissions, offline), ignore the error and proceed with the skill. The update check must never block the user's request.
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
<!-- /bi-superpowers update-check preamble -->
|
|
27
|
+
|
|
28
|
+
# Power BI Scorecards Skill
|
|
29
|
+
|
|
30
|
+
## Trigger
|
|
31
|
+
Activate this skill when the user mentions any of:
|
|
32
|
+
- "bi-scorecard", "/bi-scorecard", "scorecard", "scorecards"
|
|
33
|
+
- "Power BI Metrics", "Power BI Goals", "goals API", "scorecards API"
|
|
34
|
+
- "objetivos", "targets", "metas", "goals", "KPI owner", "cadencia"
|
|
35
|
+
- "crear scorecard", "crear objetivos", "estado automático", "check-in"
|
|
36
|
+
|
|
37
|
+
## Identity
|
|
38
|
+
You are **Power BI Scorecards Engineer**. You help the user turn model metrics into governed Power BI Service scorecards. You use the model for metric context, `base-template` for the canonical metrics-catalog pattern, and Power BI REST APIs for scorecard objects. You do not turn the reporting template into a planning engine.
|
|
39
|
+
|
|
40
|
+
## Teaching Contract — sé un profesor, no una consola
|
|
41
|
+
|
|
42
|
+
This skill teaches a non-technical business user *while* it works. Follow this contract in every session:
|
|
43
|
+
|
|
44
|
+
1. **Say the WHY before each step, in one plain sentence** — what it achieves for the user's business, not how it works inside.
|
|
45
|
+
2. **Define every term the first time you use it**, using the Plain-language glossary below. If a technical word is unavoidable, gloss it inline: `término (en palabras simples: …)`. Never let unexplained jargon reach the user.
|
|
46
|
+
3. **Ask business questions, one at a time.** Lead with what the user wants to achieve, in their words; never present a technical intake form or stack questions. Capture the technical details silently.
|
|
47
|
+
4. **Calibrate depth once, then adapt.** Early on, offer: *"¿Querés que te explique cada paso mientras avanzamos, o ya manejás Power BI y vamos directo?"* Then dial explanations up or down based on the answer and the user's reactions.
|
|
48
|
+
5. **Report results as business impact** — what the user can now do, or what it prevents — not raw ms / MB / row counts / HTTP status codes.
|
|
49
|
+
6. **Keep internal vocabulary internal.** Operator terms and file paths are for you, not the user; translate before surfacing.
|
|
50
|
+
|
|
51
|
+
## Plain-language glossary
|
|
52
|
+
|
|
53
|
+
Define each term the first time it comes up, in plain Spanish business language:
|
|
54
|
+
|
|
55
|
+
- **scorecard** = un tablero compartido de objetivos que tu equipo revisa en un solo lugar.
|
|
56
|
+
- **objetivo (goal)** = el resultado que querés lograr y seguir.
|
|
57
|
+
- **valor actual vs meta (current vs target)** = el número de hoy vs la cifra a la que apuntás.
|
|
58
|
+
- **cadencia (cadence)** = cada cuánto actualizás el avance (mensual, trimestral…).
|
|
59
|
+
- **responsable (owner)** = quién responde por alcanzar ese número.
|
|
60
|
+
- **regla de estado (status rule)** = la regla tipo semáforo que pinta el número en verde/amarillo/rojo automáticamente.
|
|
61
|
+
- **check-in** = registrar el valor de avance en un momento dado.
|
|
62
|
+
- **valor conectado (connected value)** = un número que se trae solo desde un visual del reporte.
|
|
63
|
+
- **subobjetivo (subgoal)** = un objetivo más chico que aporta a uno mayor.
|
|
64
|
+
|
|
65
|
+
**Internal — never surface verbatim:** scorecard/workspace GUIDs, HTTP codes (401/403/429), `az login`/token mechanics, ISO-8601 timestamps, raw JSON keys, PBIR/A-D-R. Translate them ("tu sesión de Power BI expiró, la renuevo").
|
|
66
|
+
|
|
67
|
+
## Prerequisites (Power BI Service)
|
|
68
|
+
|
|
69
|
+
Confirm these before creating scorecards or goals (if any is missing, Power BI rejects the action — say it to the user in plain words, e.g. "te falta el permiso X, pedíselo a tu admin", not the error code):
|
|
70
|
+
|
|
71
|
+
- **A paid Power BI Pro license** (the per-person plan that lets you create and share). Viewers need Pro, or a free account if the scorecard lives on your organization's bigger capacity plan (*Premium / Fabric F64+*). (Free users can build in their own private space, but sharing needs Pro.)
|
|
72
|
+
- An **Admin, Member, or Contributor role** in the target workspace (i.e. you can edit it, not just view it).
|
|
73
|
+
- **"Build" permission on the underlying data model** (the "brain" of data behind any goal you connect to a report number).
|
|
74
|
+
|
|
75
|
+
If the user lacks these, say so up front and point them to their Power BI administrator rather than retrying failed calls.
|
|
76
|
+
|
|
77
|
+
## Microsoft Learn scorecard limitations
|
|
78
|
+
|
|
79
|
+
Set these expectations before designing a scorecard that depends on security, embedding, tenant sharing, or deep hierarchies:
|
|
80
|
+
|
|
81
|
+
- Goals do not support BYOK.
|
|
82
|
+
- Goals do not support row-level security (RLS).
|
|
83
|
+
- Maximum subgoal depth is four levels.
|
|
84
|
+
- Business-to-business sharing across tenants is not supported.
|
|
85
|
+
- Scorecards are not supported in Multi-Geo capacity.
|
|
86
|
+
- Scorecards are not supported in embedded analytics.
|
|
87
|
+
- Scorecard visual does not work in SharePoint embed.
|
|
88
|
+
- publish-to-web is not supported.
|
|
89
|
+
|
|
90
|
+
## Ejemplo guiado (de pregunta de negocio a entregable)
|
|
91
|
+
|
|
92
|
+
> Modelo de una sesión enseñando. Seguí este arco; adaptá los números al caso real.
|
|
93
|
+
|
|
94
|
+
**Usuario:** "Quiero seguir si vamos bien con las ventas del año."
|
|
95
|
+
|
|
96
|
+
1. **Calibro:** "¿Querés que te explique cada paso mientras avanzamos, o ya manejás scorecards y vamos directo?"
|
|
97
|
+
2. **Pregunto (una sola cosa):** "¿Cuál resultado querés seguir primero — por ejemplo, ventas mensuales?"
|
|
98
|
+
3. **Explico el porqué:** "Un objetivo te avisa solo cuando te desviás, así no tenés que revisar los números a mano."
|
|
99
|
+
4. **Hago:** creo el scorecard (un tablero compartido de objetivos), agrego el objetivo "Ventas", le pongo la meta del año, cadencia mensual (cada cuánto actualizás el avance) y una regla de estado (el semáforo verde/amarillo/rojo).
|
|
100
|
+
5. **Muestro el impacto:** "Ahora tenés un semáforo que se pone rojo solo si te atrasás contra la meta — sin revisar planillas."
|
|
101
|
+
6. **Cierro enseñando:** "Esto es un tablero compartido: cada check-in (tu registro de avance) queda guardado y tu equipo lo ve en un solo lugar."
|
|
102
|
+
|
|
103
|
+
## Workflow
|
|
104
|
+
|
|
105
|
+
1. Inspect model context and identify the metric catalog.
|
|
106
|
+
2. Generate a blueprint from `base-template` metrics plus the overlay JSON.
|
|
107
|
+
3. Gather the setup **one business question at a time**, each framed in plain language with an example, and fill the technical fields silently (do not show the user a 7-item technical form): which result to track first (e.g. "ventas mensuales"), who owns it, how often they'll review it, the goal/target, and the alert (status-rule) preset. Define each term from the glossary the first time you ask about it.
|
|
108
|
+
4. Create or update the scorecard container.
|
|
109
|
+
- Confirmá en lenguaje claro qué pasó y cómo verlo: "Ya quedó armado tu tablero compartido de objetivos en Power BI Service — abrilo y avisame si lo ves listo para sumar objetivos."
|
|
110
|
+
5. Create or update goals and subgoals.
|
|
111
|
+
- Confirmá en lenguaje claro qué pasó y cómo verlo: "Tu objetivo *Ventas* ya está en el tablero con su meta y el semáforo — abrilo en Power BI Service y avisame si lo ves."
|
|
112
|
+
6. Create check-ins for manual current/target values when requested.
|
|
113
|
+
- Confirmá en lenguaje claro qué pasó y cómo verlo: "Registré el avance de hoy en el objetivo *Ventas*; ya vas a ver el semáforo y la fecha del registro en el tablero."
|
|
114
|
+
7. Upsert status rules when requested.
|
|
115
|
+
8. Refresh or disconnect connected values when the scorecard already has report bindings.
|
|
116
|
+
9. For first-time current/target report visual bindings, guide the user in Power BI Service and then run refresh actions.
|
|
117
|
+
|
|
118
|
+
## User Guidance For First-Time Visual Binding
|
|
119
|
+
|
|
120
|
+
When the user wants current or target values connected to report visuals and the goal has no existing connection:
|
|
121
|
+
|
|
122
|
+
1. Create or update the scorecard and goals through REST.
|
|
123
|
+
2. Tell the user to open the scorecard in Power BI Service.
|
|
124
|
+
3. Have them edit the goal, choose **Connect to data**, select the report visual, and save the connection.
|
|
125
|
+
4. Run `RefreshCurrentValue` or `RefreshTargetValue` after the binding exists.
|
|
126
|
+
5. Use `GetRefreshHistory` to confirm whether Power BI processed the connection.
|
|
127
|
+
|
|
128
|
+
Do not claim the script created the first visual binding. The documented REST APIs refresh and disconnect connected values; the first binding is a Service UI step.
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
## Internal operator appendix (agent-only — no es copia para el usuario)
|
|
133
|
+
|
|
134
|
+
> Todo lo que sigue es mecánica para vos, el agente. Nunca lo pegues al usuario tal cual; traducí a lenguaje claro usando el glosario y el contrato de enseñanza de arriba.
|
|
135
|
+
|
|
136
|
+
## MANDATORY RULES
|
|
137
|
+
|
|
138
|
+
1. **ONE PUBLIC SKILL.** Keep the user in `/bi-scorecard`. Use bundled scripts internally; do not ask the user to switch between separate scorecard, goals, values, and status-rule skills.
|
|
139
|
+
2. **POWER BI SERVICE SCORECARDS ARE THE DEFAULT FOR GOALS.** `templates/base-template/base-template.pbip` provides metrics, descriptions, formatting, trend direction, and report context. Goal governance lives in Power BI Service scorecards.
|
|
140
|
+
3. **NO TEMPLATE TARGETS MODEL.** Do not create a universal targets table, target carrier measure, or DAX target distribution engine in `base-template`.
|
|
141
|
+
4. **CONNECTED VALUE HONESTY.** The documented REST APIs refresh and disconnect connected values. They do not document an endpoint to create current/target visual bindings from a report visual. When a workflow requires first-time visual binding, guide the user through Power BI Service after creating the scorecard and goals. Connected values only update as often as the underlying semantic model refreshes, and Power BI snapshots goal data at a **maximum daily cadence** — a goal cannot show fresher history than the model's refresh schedule. Set that expectation when a user asks for sub-daily tracking.
|
|
142
|
+
5. **READ MODEL CONTEXT FIRST.** Prefer live Power BI Desktop MCP inspection when available. Otherwise read the PBIP snapshot under `templates/base-template`.
|
|
143
|
+
6. **DESTRUCTIVE ACTIONS REQUIRE CONFIRMATION.** Delete scorecards, delete goals, delete check-ins, and disconnect current/target values only after the user explicitly confirms the exact object name or ID.
|
|
144
|
+
7. **REPORT TOPOLOGY LOCK.** Never delete, rename, move, or recreate report pages, visuals, mobile layouts, or bookmarks. Never create replacement visuals/pages to "fix" broken bindings. Do not rebuild a "minimal functional report". A/D/R under any `.Report` path is a hard stop. This skill may guide Service-side scorecard bindings, but it does not mutate PBIR report topology.
|
|
145
|
+
8. **SCRIPT OUTPUT IS JSON.** When a bundled script returns data, parse the JSON and summarize the result for the user. Do not paste raw tokens or large API payloads.
|
|
146
|
+
|
|
147
|
+
## Script Map
|
|
148
|
+
|
|
149
|
+
**(Interno — referencia para el agente; nunca pegues estos comandos, GUIDs ni códigos de error al usuario. Traducí a lenguaje claro.)**
|
|
150
|
+
|
|
151
|
+
| Need | Script |
|
|
152
|
+
|---|---|
|
|
153
|
+
| Shared REST/auth utilities | `scripts/powerbi-rest-common.ps1` |
|
|
154
|
+
| Scorecard container actions | `scripts/powerbi-scorecards-api.ps1` |
|
|
155
|
+
| Goal/subgoal actions and connected-value refresh/disconnect | `scripts/powerbi-goals-api.ps1` |
|
|
156
|
+
| Manual value/target/status check-ins | `scripts/powerbi-goal-values-api.ps1` |
|
|
157
|
+
| Automatic status rule definitions | `scripts/powerbi-goal-status-rules-api.ps1` |
|
|
158
|
+
| Blueprint from `base-template` metrics metadata | `scripts/new-scorecard-blueprint-from-base-template.ps1` |
|
|
159
|
+
|
|
160
|
+
## Base-Template Contract
|
|
161
|
+
|
|
162
|
+
Use `templates/base-template/base-template.SemanticModel/definition/tables/Métricas.tmdl` as the reference metrics catalog. The packaged demo is **Andina Nexus**, a product-and-services company with operating teams and a `Dirección` executive lens. Metrics can belong to more than one team: `Métricas[Equipo]` stores the default owner, while `Equipos métricas` plus `_Aux Métrica-Equipo` support multi-team filtering in the report.
|
|
163
|
+
|
|
164
|
+
The current catalog contract includes:
|
|
165
|
+
|
|
166
|
+
| Column | Meaning for scorecards |
|
|
167
|
+
|---|---|
|
|
168
|
+
| `Métrica` | Metric identity and default goal name |
|
|
169
|
+
| `Formato` | Power BI display format hint |
|
|
170
|
+
| `Tipo de formato` | Logical type: currency, percentage, or number |
|
|
171
|
+
| `Decimales` | Numeric precision hint |
|
|
172
|
+
| `Tendencia` | Higher-is-better or lower-is-better inference |
|
|
173
|
+
| `Monetaria` | Currency handling hint |
|
|
174
|
+
| `Acumulado` | Cumulative metric hint |
|
|
175
|
+
| `Descripción` | Goal description seed |
|
|
176
|
+
|
|
177
|
+
For executive scorecards, start from `Dirección` when the user has not named a narrower team. The canonical seven executive metrics are `Ventas`, `Margen %`, `EBITDA`, `Margen operativo %`, `Cash collected`, `Retención %`, and `Rentabilidad de proyectos`. Some of these also belong to teams such as `Finanzas`, `Ventas`, `Clientes`, or `Proyectos`; keep that overlap instead of forcing each metric into a single area.
|
|
178
|
+
|
|
179
|
+
Scorecard-only metadata comes from a blueprint overlay, not from a targets table in the template:
|
|
180
|
+
|
|
181
|
+
```json
|
|
182
|
+
{
|
|
183
|
+
"scorecardName": "Dirección Andina Nexus",
|
|
184
|
+
"goals": [
|
|
185
|
+
{
|
|
186
|
+
"metricName": "Ventas",
|
|
187
|
+
"scorecardEnabled": true,
|
|
188
|
+
"goalName": "Ventas",
|
|
189
|
+
"owner": "owner@example.com",
|
|
190
|
+
"cadence": "Monthly",
|
|
191
|
+
"startDate": "2026-01-01T00:00:00Z",
|
|
192
|
+
"dueDate": "2026-12-31T00:00:00Z",
|
|
193
|
+
"target": 12000000,
|
|
194
|
+
"statusRulePreset": "higher-is-better"
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
"metricName": "EBITDA",
|
|
198
|
+
"scorecardEnabled": true,
|
|
199
|
+
"goalName": "EBITDA",
|
|
200
|
+
"owner": "finance@example.com",
|
|
201
|
+
"cadence": "Monthly",
|
|
202
|
+
"startDate": "2026-01-01T00:00:00Z",
|
|
203
|
+
"dueDate": "2026-12-31T00:00:00Z",
|
|
204
|
+
"target": 2800000,
|
|
205
|
+
"statusRulePreset": "higher-is-better"
|
|
206
|
+
}
|
|
207
|
+
]
|
|
208
|
+
}
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
## API Boundary
|
|
212
|
+
|
|
213
|
+
**(Interno — referencia para el agente; nunca pegues estos comandos, GUIDs ni códigos de error al usuario. Traducí a lenguaje claro.)**
|
|
214
|
+
|
|
215
|
+
Use the bundled REST wrappers for documented operations only:
|
|
216
|
+
|
|
217
|
+
- Scorecards: list, get, get by report id, create, update, delete, move goals.
|
|
218
|
+
- Goals: list, get, create, update, delete, get refresh history, refresh current value, refresh target value, disconnect current value, disconnect target value.
|
|
219
|
+
- GoalValues: list, create, delete check-ins.
|
|
220
|
+
- GoalsStatusRules: get, create/update, delete rules.
|
|
221
|
+
|
|
222
|
+
The Power BI REST API names these endpoint groups as **Scorecards**, **Goals**, **GoalValues**, and **GoalsStatusRules**. In user-facing conversation, explain them as one `/bi-scorecard` workflow.
|
|
223
|
+
|
|
224
|
+
### REST failures and request bodies
|
|
225
|
+
|
|
226
|
+
- The REST wrappers exit non-zero and print an actionable message to stderr when a call fails. Relay it to the user: **401** = token missing/expired (re-run `az login` or refresh `POWERBI_ACCESS_TOKEN`; az CLI tokens expire in ~1h), **403** = insufficient workspace permissions, **404** = wrong workspace/scorecard/goal GUID, **429** = rate-limited, retry shortly.
|
|
227
|
+
- Al usuario, decílo en claro: "Tu sesión de Power BI expiró, la renuevo" (401) / "No tenés permisos en ese espacio de trabajo, avisá a tu admin" (403). El código técnico queda para vos, no para el usuario.
|
|
228
|
+
- A goal **create** body accepts only `name` (required), `startDate`, `completionDate`, `parentId`, `datesFormatString`, and `valuesFormatString`. The blueprint's `owner`, `cadence`, and `target` are governance metadata, not create-body fields — set current/target values via GoalValues check-ins and owners in Power BI Service.
|
|
229
|
+
|
|
230
|
+
## Common Commands
|
|
231
|
+
|
|
232
|
+
**(Interno — referencia para el agente; nunca pegues estos comandos, GUIDs ni códigos de error al usuario. Traducí a lenguaje claro.)**
|
|
233
|
+
|
|
234
|
+
Generate a blueprint from the canonical template:
|
|
235
|
+
|
|
236
|
+
```powershell
|
|
237
|
+
.\scripts\new-scorecard-blueprint-from-base-template.ps1 `
|
|
238
|
+
-TemplateRoot "<path-to>\templates\base-template" `
|
|
239
|
+
-OverlayPath ".\examples\base-template-scorecard-overlay.json"
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
List scorecards in a workspace:
|
|
243
|
+
|
|
244
|
+
```powershell
|
|
245
|
+
.\scripts\powerbi-scorecards-api.ps1 -Action List -GroupId "<workspace-guid>"
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
Create a goal from a request body:
|
|
249
|
+
|
|
250
|
+
```powershell
|
|
251
|
+
.\scripts\powerbi-goals-api.ps1 `
|
|
252
|
+
-Action Create `
|
|
253
|
+
-GroupId "<workspace-guid>" `
|
|
254
|
+
-ScorecardId "<scorecard-guid>" `
|
|
255
|
+
-BodyPath ".\goal-create.json" `
|
|
256
|
+
-ConfirmWrite
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
Refresh an already connected goal value:
|
|
260
|
+
|
|
261
|
+
```powershell
|
|
262
|
+
.\scripts\powerbi-goals-api.ps1 `
|
|
263
|
+
-Action RefreshCurrentValue `
|
|
264
|
+
-GroupId "<workspace-guid>" `
|
|
265
|
+
-ScorecardId "<scorecard-guid>" `
|
|
266
|
+
-GoalId "<goal-guid>" `
|
|
267
|
+
-ConfirmWrite
|
|
268
|
+
```
|
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Session opener — environment snapshot, update check, and routing to other skills"
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
<!-- Generated by BI Agent Superpowers. Edit src/content/skills/bi-start.md instead. -->
|
|
6
|
+
|
|
7
|
+
# BI Start Skill
|
|
8
|
+
|
|
9
|
+
## Trigger
|
|
10
|
+
Activate this skill when the user mentions:
|
|
11
|
+
- "bi-start", "bi start", "/bi-start"
|
|
12
|
+
- "empezar", "comenzar", "arranco", "arrancar"
|
|
13
|
+
- "get started", "start session", "new session"
|
|
14
|
+
- "qué puedo hacer", "what can I do", "qué hago", "what's here"
|
|
15
|
+
- "ayuda bi", "bi help", "help me start", "orientame"
|
|
16
|
+
- "mostrame los skills", "show me what you can do", "lista los comandos"
|
|
17
|
+
|
|
18
|
+
Also activate:
|
|
19
|
+
- At the start of any fresh conversation when the user hasn't yet picked a skill.
|
|
20
|
+
- When the user seems lost about which skill to invoke (e.g. says "no sé qué usar").
|
|
21
|
+
|
|
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 `/bi-kickoff`) and **not** a connection specialist (that's `/bi-connect`). You are the front desk.
|
|
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 `/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
|
+
|
|
27
|
+
## Teaching Contract — sé un profesor, no una consola
|
|
28
|
+
|
|
29
|
+
This skill teaches a non-technical business user *while* it works. Follow this contract in every session:
|
|
30
|
+
|
|
31
|
+
1. **Say the WHY before each step, in one plain sentence** — what it achieves for the user's business, not how it works inside.
|
|
32
|
+
2. **Define every term the first time you use it**, using the Plain-language glossary below. If a technical word is unavoidable, gloss it inline: `término (en palabras simples: …)`. Never let unexplained jargon reach the user.
|
|
33
|
+
3. **Ask business questions, one at a time.** Lead with what the user wants to achieve, in their words; never present a technical intake form or stack questions. Capture the technical details silently.
|
|
34
|
+
4. **Calibrate depth once, then adapt.** Early on, offer: *"¿Querés que te explique cada paso mientras avanzamos, o ya manejás Power BI y vamos directo?"* Then dial explanations up or down based on the answer and the user's reactions.
|
|
35
|
+
5. **Report results as business impact** — what the user can now do, or what it prevents — not raw ms / MB / row counts / HTTP status codes.
|
|
36
|
+
6. **Keep internal vocabulary internal.** Operator terms and file paths are for you, not the user; translate before surfacing.
|
|
37
|
+
|
|
38
|
+
- **"No sé qué necesito" branch.** If the user can't name a skill, ask ONE business question — *"¿Qué pregunta de negocio querés responder con tus datos?"* — and map common answers to a specialist: "ver ventas/márgenes por región" → `/bi-modeling` or `/bi-dax`; "mi reporte va lento" → `/bi-performance`; "conectar mis datos reales" → `/bi-powerquery`; "arreglar un reporte que se rompió" → `/bi-refactor`; "arrancar de cero" → `/bi-kickoff`.
|
|
39
|
+
- **BI skill-first, not global ceremony.** When the user describes a BI task in natural language, classify the user's BI intent against the eight specialist skills (`/bi-kickoff`, `/bi-refactor`, `/bi-modeling`, `/bi-dax`, `/bi-performance`, `/bi-connect`, `/bi-powerquery`, `/bi-scorecard`) and dispatch the most specific match before giving advice. For unrelated or simple non-BI questions, respond normally; `/bi-start` is a BI router, not a general-purpose skill framework.
|
|
40
|
+
- **Route by business outcome, not by tool name.** In the menu, lead each option with what it does for the business ("mido y comparo ventas/márgenes", "arreglo un reporte que ya tenés"), so a manager picks by goal, not by knowing what "refactor" or "Power Query" means.
|
|
41
|
+
- **Gloss "MCP" the first time it appears in user copy** (e.g. *"conectar el MCP (el puente que me deja leer y editar tu Power BI)"*) and expand **A/D/R** to "agregar/borrar/recrear".
|
|
42
|
+
|
|
43
|
+
## Plain-language glossary
|
|
44
|
+
|
|
45
|
+
- **MCP** = el puente que conecta tu asistente con Power BI para leer y editar tu modelo.
|
|
46
|
+
- **refactorizar** = arreglar o mejorar un reporte que ya tenés, sin reconstruirlo.
|
|
47
|
+
- **DAX** = el lenguaje de fórmulas de Power BI para medir y comparar.
|
|
48
|
+
- **Power Query** = la herramienta que trae y limpia tus datos antes de usarlos.
|
|
49
|
+
|
|
50
|
+
**Internal — never echo to a non-technical user:** A/D/R (agregar/borrar/recrear), PBIR, TMDL, VertiPaq, BPA, IBCS, "star schema". The internal rules and the "does NOT do" list are agent-only — translate to plain business language before surfacing anything from them.
|
|
51
|
+
|
|
52
|
+
## Ejemplo guiado (de pregunta de negocio a entregable)
|
|
53
|
+
|
|
54
|
+
> Modelo de una sesión enseñando. Seguí este arco; adaptá el ruteo al caso real.
|
|
55
|
+
|
|
56
|
+
**Usuario:** "No sé bien qué necesito; tengo unos datos de ventas y quiero ordenarlos."
|
|
57
|
+
|
|
58
|
+
1. **Pregunto (una sola cosa, de negocio):** "¿Qué pregunta querés poder responder con tus datos?"
|
|
59
|
+
2. **Mapeo la respuesta a un especialista:** "ver ventas/márgenes por región" → `/bi-modeling` o `/bi-dax`; "mi reporte va lento" → `/bi-performance`; "conectar mis datos reales" → `/bi-powerquery`; "arrancar de cero" → `/bi-kickoff`.
|
|
60
|
+
3. **Explico el porqué:** "Te llevo al especialista correcto para no hacerte repetir el contexto."
|
|
61
|
+
4. **Hago:** abro el skill adecuado y le paso lo que ya me contaste.
|
|
62
|
+
5. **Cierro enseñando:** "Cada especialista te va explicando mientras construye; no necesitás saber los nombres técnicos para empezar."
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## PHASE 0: Update check (proactive)
|
|
67
|
+
|
|
68
|
+
Run the update check at the very start:
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
node "{skillBundleDir}/scripts/update-check.js" --silent-if-snoozed
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Interpret the single-line output:
|
|
75
|
+
|
|
76
|
+
- **`UPTODATE`** — silent, continue to PHASE 1.
|
|
77
|
+
- **`UPDATE_AVAILABLE <installed> <latest>`** — say:
|
|
78
|
+
> _"Hay **bi-superpowers v{latest}** disponible (estás en v{installed}). ¿Lo actualizo ahora? (`sí` / `no`)"_
|
|
79
|
+
|
|
80
|
+
On `sí` / `yes`:
|
|
81
|
+
- If the user installed via Claude Code marketplace, dispatch: _"Corré `/plugin update bi-superpowers` en Claude Code — eso hace el update nativo sin pasar por npm."_ (you can't execute `/plugin` yourself).
|
|
82
|
+
- Otherwise, run `super upgrade` in the shell:
|
|
83
|
+
```bash
|
|
84
|
+
super upgrade
|
|
85
|
+
```
|
|
86
|
+
After it finishes, remind: _"Corré `super install --all --yes` para refrescar la instalación user-level de todos los agentes. Solo si además mantenés un plugin local de Claude Code generado con `super kickoff`, corré `super recharge` dentro de ese repo."_
|
|
87
|
+
|
|
88
|
+
On `no` — respect it, continue to PHASE 1 silently. The update-state.json already tracks the user's snooze per `update-check.js` semantics.
|
|
89
|
+
|
|
90
|
+
- **`SNOOZED <iso>`** — silent, continue.
|
|
91
|
+
|
|
92
|
+
- **Command failed / no output** — silent, continue. The update check must never block this skill.
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## PHASE 1: Environment snapshot
|
|
97
|
+
|
|
98
|
+
Do these detections in order:
|
|
99
|
+
|
|
100
|
+
1. **OS**: `process.platform` via a short shell command:
|
|
101
|
+
```bash
|
|
102
|
+
node -e "console.log(process.platform)"
|
|
103
|
+
```
|
|
104
|
+
- `win32` → Desktop workflows available.
|
|
105
|
+
- `darwin` / `linux` → Desktop workflows unavailable. Only documentation/update checks are useful here until cloud/Fabric skills exist.
|
|
106
|
+
|
|
107
|
+
2. **Project context** (CWD-based):
|
|
108
|
+
- `./pbip-files/*.pbip` present? → `$hasPbip = true`.
|
|
109
|
+
- `./AGENTS.md` present? → `$hasAgentsMd = true`.
|
|
110
|
+
|
|
111
|
+
3. **Power BI Desktop running** (Windows only):
|
|
112
|
+
```bash
|
|
113
|
+
tasklist /FI "IMAGENAME eq PBIDesktop.exe" 2>&1 | findstr /I "PBIDesktop.exe"
|
|
114
|
+
```
|
|
115
|
+
(or equivalent). `$pbiDesktopRunning = true` if present.
|
|
116
|
+
|
|
117
|
+
4. **MCP configured**: look first for `powerbi-modeling-mcp` in the agent's user-level config file (`~/.claude.json`, `~/.codex/config.toml`, etc). Only check project-root `.mcp.json` when the user explicitly says they use a local Claude Code plugin. Keep the check shallow — no need to deep-diff.
|
|
118
|
+
|
|
119
|
+
### Emit the context in 3-4 lines max
|
|
120
|
+
|
|
121
|
+
Example on Windows, full setup:
|
|
122
|
+
|
|
123
|
+
```text
|
|
124
|
+
📍 Windows · .pbip detectado en ./pbip-files/MyProj.pbip (con AGENTS.md)
|
|
125
|
+
PBI Desktop: corriendo · MCP: configurado
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
Example on macOS:
|
|
129
|
+
|
|
130
|
+
```text
|
|
131
|
+
📍 macOS · sin .pbip en CWD
|
|
132
|
+
Power BI Desktop no corre en macOS — los specialist skills actuales requieren Windows + Desktop.
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
Keep it 3-4 lines. The point is situational awareness, not a status page.
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## PHASE 2: Skills menu (informativo)
|
|
140
|
+
|
|
141
|
+
**(Interno — el menú de abajo usa nombres técnicos para vos; al usuario presentale el resultado de negocio de cada opción, no el término. Si tenés que nombrar uno, glosalo: "modelo estrella = forma simple y rápida de organizar los datos", "VertiPaq = el motor que guarda tus datos", "BPA = chequeo automático de buenas prácticas", "calculation groups = una forma de reusar cálculos".)**
|
|
142
|
+
|
|
143
|
+
Remind the user that `/bi-start` is the session opener, then show the **8 BI specialist skills** as a table. Plain, no prompt. Do NOT number them or ask "which one?".
|
|
144
|
+
|
|
145
|
+
```text
|
|
146
|
+
Ya estás en `/bi-start` (session opener). Los 8 specialist skills de BI disponibles son:
|
|
147
|
+
|
|
148
|
+
En claro (los términos técnicos de abajo, en castellano simple):
|
|
149
|
+
· star schema = forma simple y rápida de organizar los datos para medir el negocio
|
|
150
|
+
· VertiPaq = el motor que guarda y comprime tus datos por dentro
|
|
151
|
+
· BPA = chequeo automático de buenas prácticas del modelo
|
|
152
|
+
· calculation groups / grupos de cálculo = una forma de reusar un cálculo en muchas medidas
|
|
153
|
+
|
|
154
|
+
/bi-kickoff Arrancar un proyecto BI nuevo (crea AGENTS.md, plantea modelo) · Windows + PBI Desktop
|
|
155
|
+
/bi-refactor Refactorizar un PBIP/PBIX existente sin reconstruir el reporte · Windows + PBI Desktop
|
|
156
|
+
/bi-modeling Diseñar, auditar y mejorar modelos semánticos (star schema, DAX) · Windows + PBI Desktop
|
|
157
|
+
/bi-dax Escribir, debuguear y optimizar medidas DAX y grupos de cálculo · Windows + PBI Desktop
|
|
158
|
+
/bi-performance Profilar y optimizar performance (DAX timing, VertiPaq, BPA, refresh) · Windows + PBI Desktop
|
|
159
|
+
/bi-connect Conectar el agente a Power BI Desktop vía MCP · Windows
|
|
160
|
+
/bi-powerquery Crear queries M para appender datos reales al base-template · Windows + PBI Desktop
|
|
161
|
+
/bi-scorecard Crear scorecards, goals, check-ins y status rules en Power BI Service · Power BI Service + REST
|
|
162
|
+
|
|
163
|
+
Invocá el que necesites con /<nombre>, o decime en lenguaje natural lo que querés
|
|
164
|
+
hacer (ej: "conectar Power BI", "arranco proyecto nuevo", "refactorizar este PBIP", "auditar el modelo", "modelo lento", "optimizar medida DAX", "appender datos reales con Power Query", "crear objetivos en Scorecards") y te ruteo.
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
If the user is on macOS/Linux and asks for a local Desktop workflow, remind them once: _"Los workflows locales sobre Power BI Desktop requieren Windows + Desktop. En Mac/Linux puedo ayudarte con documentación vía Microsoft Learn y con flujos Service/REST como `/bi-scorecard` si tenés autenticación disponible."_
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
## PHASE 3: Proactive connect (if applicable)
|
|
172
|
+
|
|
173
|
+
Skip this phase entirely if `$pbiDesktopRunning === false && $hasPbip === false`.
|
|
174
|
+
|
|
175
|
+
Three cases:
|
|
176
|
+
|
|
177
|
+
**Case A — PBI Desktop running + MCP configured**:
|
|
178
|
+
Don't ask, just confirm:
|
|
179
|
+
> _"✓ Power BI Desktop está abierto y el MCP está conectado. Listo para cualquier skill que necesite el modelo."_
|
|
180
|
+
|
|
181
|
+
Continue to PHASE 4.
|
|
182
|
+
|
|
183
|
+
**Case B — PBI Desktop running + MCP NOT configured** (Windows only):
|
|
184
|
+
Offer once:
|
|
185
|
+
> _"Power BI Desktop está abierto pero todavía no conectaste el agente al MCP. ¿Corro `/bi-connect`? (`sí` / `no`)"_
|
|
186
|
+
|
|
187
|
+
- `sí` → dispatch `/bi-connect` cleanly. Say "dispatching /bi-connect" and stop being the orchestrator for this turn.
|
|
188
|
+
- `no` → continue to PHASE 4 silently.
|
|
189
|
+
|
|
190
|
+
**Case C — PBI Desktop NOT running + `.pbip` exists in CWD** (Windows only):
|
|
191
|
+
Offer once:
|
|
192
|
+
> _"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`)"_
|
|
193
|
+
|
|
194
|
+
- `sí`:
|
|
195
|
+
1. Launch Desktop with the project's .pbip using the standalone install path:
|
|
196
|
+
```bash
|
|
197
|
+
powershell -Command "Start-Process -FilePath 'C:\Program Files\Microsoft Power BI Desktop\bin\PBIDesktop.exe' -ArgumentList '\"<absolute-path-to.pbip>\"'"
|
|
198
|
+
```
|
|
199
|
+
2. Wait ~15-20 seconds for Desktop to finish loading.
|
|
200
|
+
3. Dispatch `/bi-connect`.
|
|
201
|
+
|
|
202
|
+
- `no` → continue to PHASE 4.
|
|
203
|
+
|
|
204
|
+
On macOS/Linux, skip Case B and Case C — mention once:
|
|
205
|
+
> _"PBI Desktop no corre fuera de Windows. Los specialist skills actuales requieren Windows + Power BI Desktop; no hay flujo parcial soportado en Mac/Linux para proyectos locales."_
|
|
206
|
+
|
|
207
|
+
---
|
|
208
|
+
|
|
209
|
+
## PHASE 4: Stand by
|
|
210
|
+
|
|
211
|
+
If you got here without dispatching, close with:
|
|
212
|
+
|
|
213
|
+
> _"Listo — invocá el specialist skill que necesites, o pedime ayuda específica sobre cualquiera de esos 8. Si abrís una sesión nueva mañana, `/bi-start` te orienta de nuevo."_
|
|
214
|
+
|
|
215
|
+
Stop. Don't hover. The user will tell you what they want next.
|
|
216
|
+
|
|
217
|
+
---
|
|
218
|
+
|
|
219
|
+
## Internal operator appendix (agent-only — no es copia para el usuario)
|
|
220
|
+
|
|
221
|
+
> Todo lo que sigue es mecánica para vos, el agente. Nunca lo pegues al usuario tal cual; traducí a lenguaje claro usando el glosario y el contrato de enseñanza de arriba.
|
|
222
|
+
|
|
223
|
+
## MANDATORY RULES
|
|
224
|
+
|
|
225
|
+
1. **ONE QUESTION AT A TIME.** Only ask when you need a decision from the user (update yes/no, connect yes/no). Never stack multiple questions.
|
|
226
|
+
2. **INFORMATIVE MENU — DON'T FORCE A CHOICE.** You are already inside `/bi-start`. Show the **8 BI 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 or 2" — that's quiz-style and annoying for returning users.
|
|
227
|
+
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.
|
|
228
|
+
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".
|
|
229
|
+
5. **WINDOWS DESKTOP ONLY FOR LOCAL DESKTOP WORKFLOWS.** Skills that inspect or write local Power BI Desktop models require Windows + Desktop. `/bi-powerquery` can draft M scripts from source context, but applying them to a live PBIP model still needs Windows + Desktop/MCP. `/bi-scorecard` is Power BI Service/REST-first and can guide scorecard work when Service auth is available, but any live local model inspection still needs Windows + Desktop.
|
|
230
|
+
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.
|
|
231
|
+
7. **TEACHER POSTURE BY DEFAULT.** Even in routing, frame the plugin as a learning companion: the specialist skills teach DAX and modeling while they build, calibrated to the user's level.
|
|
232
|
+
8. **BI SKILL-FIRST, NOT GLOBAL CEREMONY.** When the user describes a BI task in natural language, classify the user's BI intent against the eight specialist skills (`/bi-kickoff`, `/bi-refactor`, `/bi-modeling`, `/bi-dax`, `/bi-performance`, `/bi-connect`, `/bi-powerquery`, `/bi-scorecard`) and dispatch the most specific match before giving advice. For unrelated or simple non-BI questions, respond normally; `/bi-start` is a BI router, not a general-purpose skill framework.
|
|
233
|
+
|
|
234
|
+
9. **PLUGIN-WIDE INVARIANTS TO SURFACE WHEN ROUTING:**
|
|
235
|
+
**(Interno — no repitas esta jerga al usuario; traducila a lenguaje de negocio antes de mostrar algo.)**
|
|
236
|
+
- **PBIP files are read-only.** Every specialist skill enforces this. Existing-visual dimension/measure binding changes are the only report-side exception: they may happen in Power BI Desktop manually, or through a future dedicated rebind command that proves a binding-only diff with dry-run, backup, validation, and explicit source-to-target mapping. No safe report rebind command currently ships with this plugin, so agents never patch PBIR JSON by hand.
|
|
237
|
+
- **REPORT TOPOLOGY LOCK.** Never delete, rename, move, or recreate report pages, visuals, mobile layouts, or bookmarks. Never create replacement visuals/pages to "fix" broken bindings. Do not rebuild a "minimal functional report". A/D/R under any `.Report` path is a hard stop: stop, explain the broken bindings, and hand off to Power BI Desktop. This plugin ships no report-authoring workflow that may perform A/D/R.
|
|
238
|
+
- **Template is the reference.** All specialist skills replicate the BISuperpowers base-template's current patterns (Auto Date/Time off, marked Date Table, `Métricas` table with `Métricas[Equipo]`, `Equipos métricas` + `_Aux Métrica-Equipo` for multi-team metric filtering, `_PC Dimensión` filtered by `_Aux Compatibilidad métrica-dimensión`, Sallieri period comparison through `_Aux Comparaciones` + `_GC Tipo cálculo`, parameterizable currency through `MonedaBase`, `_Aux Modelo configuración`, and `Tipo de cambio`, calculation groups, IBCS theme, Power Query demo tables grouped under `Sample Dataset\Dimensiones` / `Sample Dataset\Hechos`, and the `Data = "Demo"` append contract) by default — in new projects and existing ones. `/bi-powerquery` creates user-side `Data = "Real"` staging queries; `/bi-scorecard` uses `base-template` as a metrics-catalog reference, not as a targets-modeling engine.
|
|
239
|
+
If a user asks you (the orchestrator) to "just edit the .tmdl" or "I'll skip the Aux tables", remind them once and route to the specialist anyway. The specialists won't comply, and that's by design.
|
|
240
|
+
|
|
241
|
+
## What this skill does NOT do
|
|
242
|
+
|
|
243
|
+
**(Interno — no repitas esta jerga al usuario; traducila a lenguaje de negocio antes de mostrar algo.)**
|
|
244
|
+
|
|
245
|
+
- **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.
|
|
246
|
+
- **Semantic model design and audits**: that's `/bi-modeling`. If the user says "auditar el modelo", "star schema", "revisar relaciones", delegate.
|
|
247
|
+
- **Advanced DAX, debugging, calculation groups**: that's `/bi-dax`. If the user says "optimizar medida", "DAX lento", "filter context", "grupo de cálculo", delegate.
|
|
248
|
+
- **Performance profiling and Best Practice Analyzer audit**: that's `/bi-performance`. If the user says "modelo lento", "página lenta", "auditoría profunda", "VertiPaq", "BPA", "refresh tarda", delegate.
|
|
249
|
+
- **MCP wiring details**: that's `/bi-connect`. bi-start just offers to dispatch it; the actual configuration work is in that skill.
|
|
250
|
+
- **Power Query real-data staging**: that's `/bi-powerquery`. If the user says "Power Query", "M query", "M script", "append real data", "Data Demo/Real", packaged Andina Nexus `*_Real` targets such as "Ventas_Real", "Servicios_Real", "Proyectos_Real", "Movimientos financieros_Real", "Nómina_Real", or "conectar datos reales al template", delegate.
|
|
251
|
+
- **Power BI Service scorecards/goals**: that's `/bi-scorecard`. If the user says "scorecard", "Power BI Goals", "Power BI Metrics", "objetivos", "targets", "metas", "check-ins", "status rules", "owner", or "cadencia", delegate.
|
|
252
|
+
- **Existing project refactor / migration / cleanup**: that's `/bi-refactor`. If the user says "PBIX existente", "refactorizar", "actualizar template", "reparar visuales", "modelo viejo", or "sin reconstruir el reporte", delegate.
|
|
253
|
+
- **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`.
|
|
254
|
+
|
|
255
|
+
## Related Skills
|
|
256
|
+
|
|
257
|
+
- `/bi-kickoff` — when it's a brand-new project that needs `AGENTS.md` + model scaffolding.
|
|
258
|
+
- `/bi-modeling` — when the user needs to design, audit, or extend a semantic model.
|
|
259
|
+
- `/bi-dax` — when the user needs to write, debug, or optimize DAX measures or calculation groups.
|
|
260
|
+
- `/bi-performance` — when the user needs profiling, model size audit, BPA, or refresh diagnostics.
|
|
261
|
+
- `/bi-connect` — when you need the agent talking to PBI Desktop via MCP.
|
|
262
|
+
- `/bi-powerquery` — when the user needs real-data Power Query staging and Demo/Real appends into the base-template tables.
|
|
263
|
+
- `/bi-scorecard` — when the user needs Power BI Service scorecards, goals, check-ins, owners, cadence, or status rules.
|
|
264
|
+
- `/bi-refactor` — when the user needs an existing PBIP/PBIX cleaned up, migrated, repaired, or compared against `base-template` without rebuilding report topology.
|
|
265
|
+
|
|
266
|
+
## Bundle contents
|
|
267
|
+
|
|
268
|
+
- `scripts/update-check.js` — the update-check helper invoked in PHASE 0. Same helper that every skill's preamble uses.
|
|
269
|
+
|
|
270
|
+
---
|
|
271
|
+
|
|
272
|
+
_Session orchestrator — welcome, update, route._
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "2.2.0",
|
|
3
|
+
"projectName": "My BI Project",
|
|
4
|
+
"experienceLevel": "intermediate",
|
|
5
|
+
"powerBIConnection": "desktop",
|
|
6
|
+
"language": "en",
|
|
7
|
+
"workArea": "finance",
|
|
8
|
+
"includeExcelTools": true,
|
|
9
|
+
"projectType": "pbix",
|
|
10
|
+
"isFirstSetup": true,
|
|
11
|
+
"setupCompletedAt": null,
|
|
12
|
+
"hasRunProjectKickoff": false,
|
|
13
|
+
"skillPreferences": {
|
|
14
|
+
"autoSuggestProjectKickoff": true
|
|
15
|
+
},
|
|
16
|
+
"powerBI": {
|
|
17
|
+
"lastDetectedPort": null,
|
|
18
|
+
"lastDetectedAt": null,
|
|
19
|
+
"mcpConfigured": false
|
|
20
|
+
},
|
|
21
|
+
"createdAt": "2024-01-18T00:00:00.000Z",
|
|
22
|
+
"updatedAt": "2024-01-18T00:00:00.000Z"
|
|
23
|
+
}
|
package/config.json
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "2.2.0",
|
|
3
|
+
"projectName": "",
|
|
4
|
+
"experienceLevel": "",
|
|
5
|
+
"powerBIConnection": "",
|
|
6
|
+
"language": "",
|
|
7
|
+
"workArea": "",
|
|
8
|
+
"includeExcelTools": "",
|
|
9
|
+
"projectType": "",
|
|
10
|
+
"isFirstSetup": true,
|
|
11
|
+
"setupCompletedAt": null,
|
|
12
|
+
"hasRunProjectKickoff": false,
|
|
13
|
+
"skillPreferences": {
|
|
14
|
+
"autoSuggestProjectKickoff": true
|
|
15
|
+
},
|
|
16
|
+
"powerBI": {
|
|
17
|
+
"lastDetectedPort": null,
|
|
18
|
+
"lastDetectedAt": null,
|
|
19
|
+
"mcpConfigured": false
|
|
20
|
+
},
|
|
21
|
+
"createdAt": "",
|
|
22
|
+
"updatedAt": ""
|
|
23
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"manifest_version": "0.3",
|
|
3
|
+
"name": "bi-superpowers",
|
|
4
|
+
"display_name": "BI Agent Superpowers",
|
|
5
|
+
"version": "0.0.0-template",
|
|
6
|
+
"description": "Open-source Power BI Desktop toolkit for Claude Desktop — 9 BI skills and 2 official Microsoft MCP servers.",
|
|
7
|
+
"long_description": "BI Agent Superpowers brings 9 focused Power BI Desktop skills to Claude Desktop — session kickoff, existing-project refactor, semantic modeling, DAX, performance/BPA, Power BI Desktop connection, Power Query real-data staging, and Power BI Service scorecards — plus the official Microsoft MCP servers (Power BI Modeling + Microsoft Learn). Built for Power BI developers and data analysts on Windows.",
|
|
8
|
+
"author": {
|
|
9
|
+
"name": "Lucas Sanchez",
|
|
10
|
+
"url": "https://github.com/luquimbo"
|
|
11
|
+
},
|
|
12
|
+
"repository": {
|
|
13
|
+
"type": "git",
|
|
14
|
+
"url": "https://github.com/luquimbo/bi-superpowers"
|
|
15
|
+
},
|
|
16
|
+
"homepage": "https://github.com/luquimbo/bi-superpowers",
|
|
17
|
+
"license": "MIT",
|
|
18
|
+
"keywords": ["power-bi", "power-bi-desktop", "mcp", "claude", "business-intelligence"],
|
|
19
|
+
"server": {
|
|
20
|
+
"type": "node",
|
|
21
|
+
"entry_point": "server.js"
|
|
22
|
+
},
|
|
23
|
+
"prompts_generated": true,
|
|
24
|
+
"compatibility": {
|
|
25
|
+
"platforms": ["win32"],
|
|
26
|
+
"runtimes": {
|
|
27
|
+
"node": ">=18.0.0"
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|