@luquimbo/bi-superpowers 4.1.2 → 4.1.4

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 (44) 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 +9 -7
  6. package/CHANGELOG.md +40 -0
  7. package/README.md +637 -96
  8. package/bin/cli.js +76 -61
  9. package/bin/commands/build-desktop.js +60 -6
  10. package/bin/commands/diff.js +86 -1
  11. package/bin/commands/mcp-setup.js +26 -3
  12. package/bin/commands/watch.js +50 -5
  13. package/bin/postinstall.js +1 -1
  14. package/bin/utils/mcp-detect.js +1 -1
  15. package/commands/bi-start.md +3 -3
  16. package/commands/pbi-connect.md +60 -24
  17. package/commands/report-design.md +1 -1
  18. package/desktop-extension/server.js +43 -10
  19. package/package.json +3 -4
  20. package/skills/bi-start/SKILL.md +4 -4
  21. package/skills/bi-start/scripts/update-check.js +1 -1
  22. package/skills/pbi-connect/SKILL.md +61 -25
  23. package/skills/pbi-connect/scripts/update-check.js +1 -1
  24. package/skills/project-kickoff/SKILL.md +1 -1
  25. package/skills/project-kickoff/scripts/update-check.js +1 -1
  26. package/skills/report-design/SKILL.md +2 -2
  27. package/skills/report-design/references/layouts/finance.md +2 -2
  28. package/skills/report-design/references/native-visuals.md +2 -2
  29. package/skills/report-design/references/slicer.md +1 -1
  30. package/skills/report-design/references/textbox.md +1 -1
  31. package/skills/report-design/scripts/create-visual.js +65 -1
  32. package/skills/report-design/scripts/update-check.js +1 -1
  33. package/skills/report-design/scripts/validate-pbir.js +29 -0
  34. package/src/content/base.md +1 -1
  35. package/src/content/routing.md +1 -1
  36. package/src/content/skills/bi-start.md +3 -3
  37. package/src/content/skills/pbi-connect.md +60 -24
  38. package/src/content/skills/report-design/SKILL.md +1 -1
  39. package/src/content/skills/report-design/references/layouts/finance.md +2 -2
  40. package/src/content/skills/report-design/references/native-visuals.md +2 -2
  41. package/src/content/skills/report-design/references/slicer.md +1 -1
  42. package/src/content/skills/report-design/references/textbox.md +1 -1
  43. package/src/content/skills/report-design/scripts/create-visual.js +65 -1
  44. package/src/content/skills/report-design/scripts/validate-pbir.js +29 -0
@@ -36,10 +36,10 @@ Activate this skill when user mentions:
36
36
  - "can't connect to Power BI", "connection error", "MCP not working"
37
37
 
38
38
  ## Identity
39
- You are a **Power BI MCP Connection Specialist**. Your job is to help the user connect their AI agent to Power BI Desktop using the official Microsoft MCP servers shipped with bi-superpowers, with a plugin-first workflow.
39
+ You are a **Power BI MCP Connection Specialist**. Your job is to help the user connect their AI agent to Power BI Desktop using the official Microsoft MCP servers shipped with bi-superpowers, with a user-level install workflow that works across projects.
40
40
 
41
41
  ## MANDATORY RULES
42
- 1. **PLUGIN-FIRST.** Prefer `.mcp.json` in the Claude Code plugin root.
42
+ 1. **USER-LEVEL FIRST.** Prefer `super install --all --yes` or `super install --agent <agent> --yes`; this installs skills and MCP config under the user's home directory and applies across projects. `.mcp.json` is only for an optional repo-local Claude Code plugin.
43
43
  2. **OFFICIAL SERVERS ONLY.** Use `powerbi-modeling-mcp` (local) and `microsoft-learn` (HTTP). Do not invent or recommend unofficial MCPs.
44
44
  3. **WINDOWS LIMITATION.** Explain clearly that the local Modeling MCP is only available on Windows.
45
45
  4. **NO PORT INVENTION.** Do not suggest local port-based setups for the official Modeling MCP flow.
@@ -60,7 +60,8 @@ I'll help you connect your AI agent using the official Microsoft MCP servers.
60
60
  What do you need?
61
61
 
62
62
  1. Connect to Power BI Desktop on this machine (Windows)
63
- 2. Verify that my plugin `.mcp.json` is configured correctly
63
+ 2. Verify that my agent MCP config is installed correctly
64
+ 3. Verify an optional local Claude Code plugin `.mcp.json`
64
65
  ```
65
66
 
66
67
  ---
@@ -83,11 +84,21 @@ Before we continue:
83
84
 
84
85
  ### If the user is on Windows and installed the extension
85
86
 
86
- Guide them to:
87
+ Guide them to the user-level install:
87
88
 
88
- 1. Run `bi-superpowers mcp-setup`
89
- 2. Confirm `.mcp.json` contains `powerbi-modeling-mcp`
90
- 3. Restart or refresh Claude Code
89
+ 1. Run `super install --all --yes`, or for one agent run `super install --agent codex --yes` / `super install --agent claude-code --yes` / etc.
90
+ 2. Confirm the agent config contains `powerbi-modeling-mcp` and `microsoft-learn`.
91
+ 3. Restart or refresh the AI agent so it reloads skills and MCP servers.
92
+
93
+ Use these config locations:
94
+
95
+ | Agent | Skill path | MCP config |
96
+ | --- | --- | --- |
97
+ | Claude Code | `~/.claude/skills` or `~/.agents/skills` | `~/.claude.json` |
98
+ | GitHub Copilot | `~/.copilot/skills` | `~/.copilot/mcp-config.json` |
99
+ | Codex | `~/.agents/skills` | `~/.codex/config.toml` |
100
+ | Gemini CLI | `~/.gemini/skills` | `~/.gemini/settings.json` |
101
+ | Kilo Code | `~/.kilo/skills` | `~/.kilo/mcp_settings.json` |
91
102
 
92
103
  Use this explanation:
93
104
 
@@ -99,18 +110,13 @@ and starts it with `--start`.
99
110
 
100
111
  If the user wants a config example, show:
101
112
 
102
- ```json
103
- {
104
- "powerbi-modeling-mcp": {
105
- "type": "stdio",
106
- "command": "node",
107
- "args": ["${CLAUDE_PLUGIN_ROOT}/bin/mcp/powerbi-modeling-launcher.js"]
108
- },
109
- "microsoft-learn": {
110
- "type": "http",
111
- "url": "https://learn.microsoft.com/api/mcp"
112
- }
113
- }
113
+ ```toml
114
+ [mcp_servers.powerbi-modeling-mcp]
115
+ command = "node"
116
+ args = ["<package-dir>/bin/mcp/powerbi-modeling-launcher.js"]
117
+
118
+ [mcp_servers.microsoft-learn]
119
+ url = "https://learn.microsoft.com/api/mcp"
114
120
  ```
115
121
 
116
122
  ### If the user installed the executable manually
@@ -124,9 +130,11 @@ BI_SUPERPOWERS_POWERBI_MODELING_MCP_PATH
124
130
  Then re-run:
125
131
 
126
132
  ```bash
127
- super mcp-setup
133
+ super install --all --yes
128
134
  ```
129
135
 
136
+ If they are intentionally maintaining a repo-local Claude Code plugin, they can run `super mcp-setup` inside that plugin project instead.
137
+
130
138
  ### If the user is on macOS or Linux
131
139
 
132
140
  Say:
@@ -141,15 +149,41 @@ For live editing of a local semantic model, you need a Windows environment.
141
149
 
142
150
  ---
143
151
 
144
- ## PHASE 2: Verify Plugin Config
152
+ ## PHASE 2: Verify Agent MCP Config
145
153
 
146
154
  If the user chooses option 2:
147
155
 
156
+ Check the config for the agent they use:
157
+
158
+ - Claude Code: `~/.claude.json`
159
+ - GitHub Copilot: `~/.copilot/mcp-config.json`
160
+ - Codex: `~/.codex/config.toml`
161
+ - Gemini CLI: `~/.gemini/settings.json`
162
+ - Kilo Code: `~/.kilo/mcp_settings.json`
163
+
164
+ Confirm:
165
+
166
+ - skills are installed under the agent's user-level skill directory
167
+ - config includes `powerbi-modeling-mcp`
168
+ - config includes `microsoft-learn`
169
+
170
+ If anything is missing, recommend:
171
+
172
+ ```bash
173
+ super install --agent <agent-id> --yes
174
+ ```
175
+
176
+ Then restart or refresh the agent.
177
+
178
+ ## PHASE 3: Verify Optional Local Claude Code Plugin Config
179
+
180
+ If the user chooses option 3, or explicitly says they use `super kickoff` / `claude --plugin-dir`:
181
+
148
182
  Check these files in order:
149
183
 
150
184
  1. `.claude-plugin/plugin.json`
151
185
  2. `.mcp.json`
152
- 3. `.bi-superpowers.json` if present
186
+ 3. `.bi-superpowers.json`
153
187
 
154
188
  Confirm:
155
189
 
@@ -178,7 +212,8 @@ claude --plugin-dir .
178
212
  | --- | --- |
179
213
  | Modeling MCP missing on Windows | Install the Microsoft extension in VS Code or Cursor |
180
214
  | Modeling MCP installed manually | Set `BI_SUPERPOWERS_POWERBI_MODELING_MCP_PATH` |
181
- | Plugin not loading MCPs | Re-run `bi-superpowers mcp-setup` and restart Claude Code |
215
+ | Agent not loading MCPs | Re-run `super install --agent <agent-id> --yes` and restart the agent |
216
+ | Local Claude Code plugin not loading MCPs | Re-run `super mcp-setup` inside the plugin project and restart Claude Code |
182
217
  | macOS/Linux local modeling request | Use `microsoft-learn` for docs; live editing requires Windows |
183
218
  | User asks about Excel MCP | Explain Excel remains supported through skills and library content, not a default MCP |
184
219
 
@@ -190,7 +225,8 @@ claude --plugin-dir .
190
225
  | --- | --- | --- |
191
226
  | Recommend `uvx` for Modeling MCP | Not the official Microsoft installation path | Use the official executable via the local launcher |
192
227
  | Ask the user to find a localhost port | Not required in the new flow | Use the official Modeling MCP launcher |
193
- | Put plugin MCP config in `.claude/settings.json` first | Plugin-first flow uses `.mcp.json` | Prefer `.mcp.json` at the plugin root |
228
+ | Run `super kickoff` for Codex/GitHub Copilot/Gemini/Kilo setup | `kickoff` creates repo-local Claude Code plugin files | Use `super install --agent <agent-id> --yes` |
229
+ | Treat `.mcp.json` as the default install target | It is only for optional local Claude Code plugins | Use the agent's user-level MCP config |
194
230
  | Invent unofficial MCPs (remote, fabric, etc.) | This plugin only ships 2 official MCPs | Only use the 2 official MCPs we ship (`powerbi-modeling-mcp` and `microsoft-learn`) |
195
231
 
196
232
  ---
@@ -293,7 +293,7 @@ Do NOT hand-author `report.json` theme metadata. The canonical PBIR shape (for r
293
293
  - `resourcePackages` includes a `{name: "RegisteredResources", type: "RegisteredResources"}` package whose `items[]` has `{name: "<file>.json", path: "<file>.json", type: "CustomTheme"}`
294
294
  - the theme file itself lives at `<reportPath>/StaticResources/RegisteredResources/<file>.json`
295
295
 
296
- **Conditional formatting (variance KPI green/red, diverging matrix gradients, signed-color bars) is DEFERRED to v4.1.** The layouts mention conditional color in design notes; in v4.0.0 the agent renders those visuals with default theme colors and skips the formatting step. Do not call `pbi format` from this skill in v4.0.0 — the `pbi format` syntax is not yet documented or tested for our use cases. Better a plain report that renders than a fancy one that breaks.
296
+ **Conditional formatting note.** Layout notes may describe variance colors, diverging matrix gradients, or signed-color bars as design intent. The current `report-design` flow does not author those formatting rules. Render those visuals with theme/default colors unless you have a tested PBIR formatting implementation. Do not invent `pbi format` calls from this skill.
297
297
 
298
298
  ### 4.4 Validate (two layers)
299
299
 
@@ -25,25 +25,58 @@ const server = new McpServer({
25
25
  version: '0.0.0-template',
26
26
  });
27
27
 
28
- // Load all skill markdown files from the bundled skills/ directory.
29
- const skillFiles = fs.existsSync(skillsDir)
30
- ? fs.readdirSync(skillsDir).filter((f) => f.endsWith('.md'))
31
- : [];
28
+ function loadBundledSkills(directory) {
29
+ if (!fs.existsSync(directory)) {
30
+ return [];
31
+ }
32
+
33
+ const skills = [];
34
+ for (const entry of fs.readdirSync(directory, { withFileTypes: true })) {
35
+ const entryPath = path.join(directory, entry.name);
36
+
37
+ if (entry.isFile() && entry.name.endsWith('.md')) {
38
+ skills.push({
39
+ name: path.basename(entry.name, '.md'),
40
+ bundleDir: directory,
41
+ content: fs.readFileSync(entryPath, 'utf8'),
42
+ });
43
+ continue;
44
+ }
45
+
46
+ if (entry.isDirectory()) {
47
+ const skillPath = path.join(entryPath, 'SKILL.md');
48
+ if (fs.existsSync(skillPath)) {
49
+ skills.push({
50
+ name: entry.name,
51
+ bundleDir: entryPath,
52
+ content: fs.readFileSync(skillPath, 'utf8'),
53
+ });
54
+ }
55
+ }
56
+ }
57
+
58
+ return skills.sort((a, b) => a.name.localeCompare(b.name));
59
+ }
32
60
 
33
61
  // Register each skill as an MCP prompt that Claude Desktop can invoke.
34
- for (const file of skillFiles) {
35
- const name = path.basename(file, '.md');
36
- const content = fs.readFileSync(path.join(skillsDir, file), 'utf8');
62
+ for (const skill of loadBundledSkills(skillsDir)) {
63
+ const { name, bundleDir, content } = skill;
37
64
 
38
65
  // Use the first non-header line as a short description for the prompt.
39
66
  const firstLine = content.split('\n').find((l) => l.trim() && !l.startsWith('#'));
40
67
  const description = firstLine ? firstLine.slice(0, 120).trim() : `BI Superpowers: ${name}`;
68
+ const promptText = [
69
+ `Bundled skill directory: ${bundleDir}`,
70
+ 'Resolve this skill\'s references/ and scripts/ paths relative to that directory.',
71
+ '',
72
+ content,
73
+ ].join('\n');
41
74
 
42
75
  server.prompt(name, { description }, () => ({
43
76
  messages: [
44
77
  {
45
78
  role: 'user',
46
- content: { type: 'text', text: content },
79
+ content: { type: 'text', text: promptText },
47
80
  },
48
81
  ],
49
82
  }));
@@ -73,7 +106,7 @@ into Claude Desktop, add the following to your \`claude_desktop_config.json\`
73
106
  \`\`\`json
74
107
  {
75
108
  "mcpServers": {
76
- "powerbi-modeling": {
109
+ "powerbi-modeling-mcp": {
77
110
  "command": "node",
78
111
  "args": ["<absolute path to powerbi-modeling-launcher.js>"]
79
112
  },
@@ -85,7 +118,7 @@ into Claude Desktop, add the following to your \`claude_desktop_config.json\`
85
118
  }
86
119
  \`\`\`
87
120
 
88
- The \`powerbi-modeling\` server requires Power BI Desktop on Windows
121
+ The \`powerbi-modeling-mcp\` server requires Power BI Desktop on Windows
89
122
  with a model open. If you prefer automated setup, run
90
123
  \`super install\` from the bi-superpowers CLI — it configures both
91
124
  servers across all 5 supported AI agents.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@luquimbo/bi-superpowers",
3
- "version": "4.1.2",
3
+ "version": "4.1.4",
4
4
  "description": "Open-source Power BI Desktop toolkit for Claude Code, GitHub Copilot, Codex, Gemini CLI, and Kilo Code. Ships 4 skills and 2 official Microsoft MCP servers.",
5
5
  "main": "bin/cli.js",
6
6
  "bin": {
@@ -24,10 +24,9 @@
24
24
  "adm-zip": "^0.5.17",
25
25
  "boxen": "^5.1.2",
26
26
  "chalk": "^4.1.2",
27
- "chokidar": "^3.6.0",
27
+ "chokidar": "^4.0.3",
28
28
  "cli-table3": "^0.6.5",
29
- "ora": "^5.4.1",
30
- "update-notifier": "^5.1.0"
29
+ "ora": "^5.4.1"
31
30
  },
32
31
  "devDependencies": {
33
32
  "@eslint/js": "^9.39.2",
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: "bi-start"
3
3
  description: "Use when the user asks about BI Start Skill, especially phrases like \"bi-start\", \"bi start\", \"/bi-start\", \"empezar\", \"comenzar\", \"arranco\"."
4
- version: "4.1.2"
4
+ version: "4.1.4"
5
5
  ---
6
6
 
7
7
  <!-- Generated by BI Agent Superpowers. Edit src/content/skills/bi-start.md instead. -->
@@ -57,7 +57,7 @@ Interpret the single-line output:
57
57
  ```bash
58
58
  super upgrade
59
59
  ```
60
- After it finishes, remind: _"Si instalaste skills en el perfil del agente, corré `super install --yes`. Si además usás un plugin local generado con `super kickoff`, corré `super recharge` dentro de ese repo."_
60
+ 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."_
61
61
 
62
62
  On `no` — respect it, continue to PHASE 1 silently. The update-state.json already tracks the user's snooze per `update-check.js` semantics.
63
63
 
@@ -88,7 +88,7 @@ Do these detections in order:
88
88
  ```
89
89
  (or equivalent). `$pbiDesktopRunning = true` if present.
90
90
 
91
- 4. **MCP configured**: look for `.mcp.json` in project root OR `powerbi-modeling-mcp` entry in the agent's config file (`~/.claude.json`, `~/.codex/config.toml`, etc). Keep the check shallow — no need to deep-diff.
91
+ 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.
92
92
 
93
93
  ### Emit the context in 3-4 lines max
94
94
 
@@ -182,7 +182,7 @@ Stop. Don't hover. The user will tell you what they want next.
182
182
  - **Project analysis or setup**: that's `/project-kickoff`. If the user says "analizar mi proyecto", "armar el modelo base", "arrancar uno nuevo desde cero", delegate.
183
183
  - **MCP wiring details**: that's `/pbi-connect`. bi-start just offers to dispatch it; the actual configuration work is in that skill.
184
184
  - **Report authoring**: that's `/report-design`. Same pattern.
185
- - **Running the update**: bi-start offers + dispatches `super upgrade`; the actual refresh path after eso (`/plugin update bi-superpowers`, `super install --yes`, o `super recharge`) is owned by `/bin/cli.js`.
185
+ - **Running the update**: bi-start offers + dispatches `super upgrade`; the actual refresh path after eso (`/plugin update bi-superpowers`, `super install --all --yes`, o `super recharge` only for local Claude Code plugins) is owned by `/bin/cli.js`.
186
186
 
187
187
  ## Related Skills
188
188
 
@@ -47,7 +47,7 @@ const HTTPS_TIMEOUT_MS = 5000;
47
47
  // Rewritten at generation time when this helper is copied into
48
48
  // `skills/<name>/scripts/update-check.js`. In the canonical source under
49
49
  // `bin/commands/`, it stays null and we fall back to package.json.
50
- const BUNDLED_INSTALLED_VERSION = "4.1.2";
50
+ const BUNDLED_INSTALLED_VERSION = "4.1.4";
51
51
 
52
52
  // ---------------------------------------------------------------------------
53
53
  // Argument parsing
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: "pbi-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\", \"modeling mcp\", \"Power BI Modeling MCP\"."
4
- version: "4.1.2"
4
+ version: "4.1.4"
5
5
  ---
6
6
 
7
7
  <!-- Generated by BI Agent Superpowers. Edit src/content/skills/pbi-connect.md instead. -->
@@ -38,10 +38,10 @@ Activate this skill when user mentions:
38
38
  - "can't connect to Power BI", "connection error", "MCP not working"
39
39
 
40
40
  ## Identity
41
- You are a **Power BI MCP Connection Specialist**. Your job is to help the user connect their AI agent to Power BI Desktop using the official Microsoft MCP servers shipped with bi-superpowers, with a plugin-first workflow.
41
+ You are a **Power BI MCP Connection Specialist**. Your job is to help the user connect their AI agent to Power BI Desktop using the official Microsoft MCP servers shipped with bi-superpowers, with a user-level install workflow that works across projects.
42
42
 
43
43
  ## MANDATORY RULES
44
- 1. **PLUGIN-FIRST.** Prefer `.mcp.json` in the Claude Code plugin root.
44
+ 1. **USER-LEVEL FIRST.** Prefer `super install --all --yes` or `super install --agent <agent> --yes`; this installs skills and MCP config under the user's home directory and applies across projects. `.mcp.json` is only for an optional repo-local Claude Code plugin.
45
45
  2. **OFFICIAL SERVERS ONLY.** Use `powerbi-modeling-mcp` (local) and `microsoft-learn` (HTTP). Do not invent or recommend unofficial MCPs.
46
46
  3. **WINDOWS LIMITATION.** Explain clearly that the local Modeling MCP is only available on Windows.
47
47
  4. **NO PORT INVENTION.** Do not suggest local port-based setups for the official Modeling MCP flow.
@@ -62,7 +62,8 @@ I'll help you connect your AI agent using the official Microsoft MCP servers.
62
62
  What do you need?
63
63
 
64
64
  1. Connect to Power BI Desktop on this machine (Windows)
65
- 2. Verify that my plugin `.mcp.json` is configured correctly
65
+ 2. Verify that my agent MCP config is installed correctly
66
+ 3. Verify an optional local Claude Code plugin `.mcp.json`
66
67
  ```
67
68
 
68
69
  ---
@@ -85,11 +86,21 @@ Before we continue:
85
86
 
86
87
  ### If the user is on Windows and installed the extension
87
88
 
88
- Guide them to:
89
+ Guide them to the user-level install:
89
90
 
90
- 1. Run `bi-superpowers mcp-setup`
91
- 2. Confirm `.mcp.json` contains `powerbi-modeling-mcp`
92
- 3. Restart or refresh Claude Code
91
+ 1. Run `super install --all --yes`, or for one agent run `super install --agent codex --yes` / `super install --agent claude-code --yes` / etc.
92
+ 2. Confirm the agent config contains `powerbi-modeling-mcp` and `microsoft-learn`.
93
+ 3. Restart or refresh the AI agent so it reloads skills and MCP servers.
94
+
95
+ Use these config locations:
96
+
97
+ | Agent | Skill path | MCP config |
98
+ | --- | --- | --- |
99
+ | Claude Code | `~/.claude/skills` or `~/.agents/skills` | `~/.claude.json` |
100
+ | GitHub Copilot | `~/.copilot/skills` | `~/.copilot/mcp-config.json` |
101
+ | Codex | `~/.agents/skills` | `~/.codex/config.toml` |
102
+ | Gemini CLI | `~/.gemini/skills` | `~/.gemini/settings.json` |
103
+ | Kilo Code | `~/.kilo/skills` | `~/.kilo/mcp_settings.json` |
93
104
 
94
105
  Use this explanation:
95
106
 
@@ -101,18 +112,13 @@ and starts it with `--start`.
101
112
 
102
113
  If the user wants a config example, show:
103
114
 
104
- ```json
105
- {
106
- "powerbi-modeling-mcp": {
107
- "type": "stdio",
108
- "command": "node",
109
- "args": ["${CLAUDE_PLUGIN_ROOT}/bin/mcp/powerbi-modeling-launcher.js"]
110
- },
111
- "microsoft-learn": {
112
- "type": "http",
113
- "url": "https://learn.microsoft.com/api/mcp"
114
- }
115
- }
115
+ ```toml
116
+ [mcp_servers.powerbi-modeling-mcp]
117
+ command = "node"
118
+ args = ["<package-dir>/bin/mcp/powerbi-modeling-launcher.js"]
119
+
120
+ [mcp_servers.microsoft-learn]
121
+ url = "https://learn.microsoft.com/api/mcp"
116
122
  ```
117
123
 
118
124
  ### If the user installed the executable manually
@@ -126,9 +132,11 @@ BI_SUPERPOWERS_POWERBI_MODELING_MCP_PATH
126
132
  Then re-run:
127
133
 
128
134
  ```bash
129
- super mcp-setup
135
+ super install --all --yes
130
136
  ```
131
137
 
138
+ If they are intentionally maintaining a repo-local Claude Code plugin, they can run `super mcp-setup` inside that plugin project instead.
139
+
132
140
  ### If the user is on macOS or Linux
133
141
 
134
142
  Say:
@@ -143,15 +151,41 @@ For live editing of a local semantic model, you need a Windows environment.
143
151
 
144
152
  ---
145
153
 
146
- ## PHASE 2: Verify Plugin Config
154
+ ## PHASE 2: Verify Agent MCP Config
147
155
 
148
156
  If the user chooses option 2:
149
157
 
158
+ Check the config for the agent they use:
159
+
160
+ - Claude Code: `~/.claude.json`
161
+ - GitHub Copilot: `~/.copilot/mcp-config.json`
162
+ - Codex: `~/.codex/config.toml`
163
+ - Gemini CLI: `~/.gemini/settings.json`
164
+ - Kilo Code: `~/.kilo/mcp_settings.json`
165
+
166
+ Confirm:
167
+
168
+ - skills are installed under the agent's user-level skill directory
169
+ - config includes `powerbi-modeling-mcp`
170
+ - config includes `microsoft-learn`
171
+
172
+ If anything is missing, recommend:
173
+
174
+ ```bash
175
+ super install --agent <agent-id> --yes
176
+ ```
177
+
178
+ Then restart or refresh the agent.
179
+
180
+ ## PHASE 3: Verify Optional Local Claude Code Plugin Config
181
+
182
+ If the user chooses option 3, or explicitly says they use `super kickoff` / `claude --plugin-dir`:
183
+
150
184
  Check these files in order:
151
185
 
152
186
  1. `.claude-plugin/plugin.json`
153
187
  2. `.mcp.json`
154
- 3. `.bi-superpowers.json` if present
188
+ 3. `.bi-superpowers.json`
155
189
 
156
190
  Confirm:
157
191
 
@@ -180,7 +214,8 @@ claude --plugin-dir .
180
214
  | --- | --- |
181
215
  | Modeling MCP missing on Windows | Install the Microsoft extension in VS Code or Cursor |
182
216
  | Modeling MCP installed manually | Set `BI_SUPERPOWERS_POWERBI_MODELING_MCP_PATH` |
183
- | Plugin not loading MCPs | Re-run `bi-superpowers mcp-setup` and restart Claude Code |
217
+ | Agent not loading MCPs | Re-run `super install --agent <agent-id> --yes` and restart the agent |
218
+ | Local Claude Code plugin not loading MCPs | Re-run `super mcp-setup` inside the plugin project and restart Claude Code |
184
219
  | macOS/Linux local modeling request | Use `microsoft-learn` for docs; live editing requires Windows |
185
220
  | User asks about Excel MCP | Explain Excel remains supported through skills and library content, not a default MCP |
186
221
 
@@ -192,7 +227,8 @@ claude --plugin-dir .
192
227
  | --- | --- | --- |
193
228
  | Recommend `uvx` for Modeling MCP | Not the official Microsoft installation path | Use the official executable via the local launcher |
194
229
  | Ask the user to find a localhost port | Not required in the new flow | Use the official Modeling MCP launcher |
195
- | Put plugin MCP config in `.claude/settings.json` first | Plugin-first flow uses `.mcp.json` | Prefer `.mcp.json` at the plugin root |
230
+ | Run `super kickoff` for Codex/GitHub Copilot/Gemini/Kilo setup | `kickoff` creates repo-local Claude Code plugin files | Use `super install --agent <agent-id> --yes` |
231
+ | Treat `.mcp.json` as the default install target | It is only for optional local Claude Code plugins | Use the agent's user-level MCP config |
196
232
  | Invent unofficial MCPs (remote, fabric, etc.) | This plugin only ships 2 official MCPs | Only use the 2 official MCPs we ship (`powerbi-modeling-mcp` and `microsoft-learn`) |
197
233
 
198
234
  ---
@@ -47,7 +47,7 @@ const HTTPS_TIMEOUT_MS = 5000;
47
47
  // Rewritten at generation time when this helper is copied into
48
48
  // `skills/<name>/scripts/update-check.js`. In the canonical source under
49
49
  // `bin/commands/`, it stays null and we fall back to package.json.
50
- const BUNDLED_INSTALLED_VERSION = "4.1.2";
50
+ const BUNDLED_INSTALLED_VERSION = "4.1.4";
51
51
 
52
52
  // ---------------------------------------------------------------------------
53
53
  // Argument parsing
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: "project-kickoff"
3
3
  description: "Use when the user asks about Project Kickoff Skill, especially phrases like \"I'm starting a brand-new BI project from scratch\", \"analizar proyecto\", \"analyze project\", \"project kickoff\", \"nuevo proyecto\", \"new project\"."
4
- version: "4.1.2"
4
+ version: "4.1.4"
5
5
  ---
6
6
 
7
7
  <!-- Generated by BI Agent Superpowers. Edit src/content/skills/project-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 = "4.1.2";
50
+ const BUNDLED_INSTALLED_VERSION = "4.1.4";
51
51
 
52
52
  // ---------------------------------------------------------------------------
53
53
  // Argument parsing
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: "report-design"
3
3
  description: "Use when the user asks about Report Design Skill, especially phrases like \"crear reportes\", \"armar el reporte\", \"diseñar reporte\", \"report design\", \"create reports\", \"build dashboard\"."
4
- version: "4.1.2"
4
+ version: "4.1.4"
5
5
  ---
6
6
 
7
7
  <!-- Generated by BI Agent Superpowers. Edit src/content/skills/report-design.md instead. -->
@@ -295,7 +295,7 @@ Do NOT hand-author `report.json` theme metadata. The canonical PBIR shape (for r
295
295
  - `resourcePackages` includes a `{name: "RegisteredResources", type: "RegisteredResources"}` package whose `items[]` has `{name: "<file>.json", path: "<file>.json", type: "CustomTheme"}`
296
296
  - the theme file itself lives at `<reportPath>/StaticResources/RegisteredResources/<file>.json`
297
297
 
298
- **Conditional formatting (variance KPI green/red, diverging matrix gradients, signed-color bars) is DEFERRED to v4.1.** The layouts mention conditional color in design notes; in v4.0.0 the agent renders those visuals with default theme colors and skips the formatting step. Do not call `pbi format` from this skill in v4.0.0 — the `pbi format` syntax is not yet documented or tested for our use cases. Better a plain report that renders than a fancy one that breaks.
298
+ **Conditional formatting note.** Layout notes may describe variance colors, diverging matrix gradients, or signed-color bars as design intent. The current `report-design` flow does not author those formatting rules. Render those visuals with theme/default colors unless you have a tested PBIR formatting implementation. Do not invent `pbi format` calls from this skill.
299
299
 
300
300
  ### 4.4 Validate (two layers)
301
301
 
@@ -28,7 +28,7 @@ Roles used below (to be resolved via the MCP):
28
28
  | Scenario slicer | slicer (manual JSON — see `references/slicer.md`) | 848, 312, 336, 80 | `Scenario[Scenario]` |
29
29
 
30
30
  **Design notes:**
31
- - Variance KPI: conditional formatting (green positive, red negative) is deferred to v4.1 render as plain card for v4.0.0.
31
+ - Variance KPI: green/red conditional coloring is design intent only. Render as a plain card with theme/default colors unless a tested PBIR formatting implementation is available.
32
32
  - Year slicer default: current year (single-select).
33
33
 
34
34
  ---
@@ -61,5 +61,5 @@ Roles used below (to be resolved via the MCP):
61
61
  | Account × Month matrix | matrix | 16, 512, 1168, 144 | rows: `account-dim-column`, cols: `'Date'[Month]`, values: `variance-measure` with diverging gradient |
62
62
 
63
63
  **Design notes:**
64
- - Variance-sign coloring (diverging palette) is deferred to v4.1 render bars/matrix with default theme colors for v4.0.0.
64
+ - Variance-sign coloring (diverging palette) is design intent only. Render bars/matrix with theme/default colors unless a tested PBIR formatting implementation is available.
65
65
  - The bottom matrix is short (144px) so it acts as a "heatmap strip" rather than a scrollable table.
@@ -311,7 +311,7 @@ Si PBI Desktop introduce un visualType nuevo (o encontrás uno nativo que falta
311
311
 
312
312
  ## Features de `visual.json` que `create-visual.js` NO soporta todavía
313
313
 
314
- Descubiertos al regenerar la smoke-test "Galería de Visuales" end-to-end con el script (backlog item 2, cycle v4.1). No bloquean el authoring — la shape que emite el script pasa `pbi report validate` y `validate-pbir.js` — pero sí dejan regresiones visuales si el `visual.json` hand-written aprovechaba alguno de estos features:
314
+ Descubiertos al regenerar la smoke-test "Galería de Visuales" end-to-end con el script. No bloquean el authoring — la shape que emite el script pasa `pbi report validate` y `validate-pbir.js` — pero sí dejan regresiones visuales si el `visual.json` hand-written aprovechaba alguno de estos features:
315
315
 
316
316
  1. **`query.sortDefinition`** — sort explícito por medida/columna con dirección. `create-visual.js` no lo emite, así que un visual "ranking" tipo barChart ordenado descendente por una medida pierde el orden en la regeneración. **Workaround**: ordenar en Desktop manualmente después del `.pbip` abrir, o hand-extender el `visual.json` con `sortDefinition` post-creación. **Fix futuro**: `--sort-by "Role:Field" --sort-dir descending` en `create-visual.js`.
317
317
 
@@ -319,7 +319,7 @@ Descubiertos al regenerar la smoke-test "Galería de Visuales" end-to-end con el
319
319
 
320
320
  3. **`queryState.<Role>.projections[].active`** — las columnas siempre salen con `active: true`, las medidas nunca. Si un visual hand-written tenía `active: true` en una medida (para indicar que la medida es la "default Y") o `active: false` en una columna (hidden projection), el script normaliza. Rara vez significativo para el render pero cambia el shape JSON.
321
321
 
322
- 4. **Formato condicional**: colores signados (positivo verde / negativo rojo), gradientes en matriz, data bars en tabla. Ninguno de estos expresa shape via `create-visual.js`. Quedó deferido a v4.1+ en `SKILL.md` PHASE 4.3.
322
+ 4. **Formato condicional**: colores signados (positivo verde / negativo rojo), gradientes en matriz, data bars en tabla. Ninguno de estos expresa shape via `create-visual.js`; tratarlos como diseño previsto hasta que exista una implementación PBIR testeada.
323
323
 
324
324
  Cualquier cambio en el script que cubra estos gaps debe: (a) agregar el flag a `parseArgs`, (b) cubrirlo con tests en `create-visual.test.js`, (c) documentarlo en este archivo, (d) regenerar la Galería para que ejercite el feature.
325
325
 
@@ -86,4 +86,4 @@ cat > "<reportPath>/definition/pages/<pageName>/visuals/<visualName>/visual.json
86
86
  EOF
87
87
  ```
88
88
 
89
- A reusable helper script (`scripts/write-slicer.sh`) is a v4.1 candidate; v4.0.0 ships with the heredoc pattern.
89
+ Prefer `scripts/create-visual.js --type slicer` for new slicers. Keep the heredoc pattern above only as a fallback when the helper script is unavailable.
@@ -98,4 +98,4 @@ cat > "<reportPath>/definition/pages/<pageName>/visuals/<visualName>/visual.json
98
98
  EOF
99
99
  ```
100
100
 
101
- A reusable helper script (`scripts/write-textbox.sh`) is a v4.1 candidate; v4.0.0 ships with the heredoc pattern.
101
+ Prefer `scripts/create-visual.js --type textbox` for new textboxes. Keep the heredoc pattern above only as a fallback when the helper script is unavailable.