@luquimbo/bi-superpowers 4.1.4 → 4.1.5

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.
@@ -6,7 +6,7 @@
6
6
  },
7
7
  "metadata": {
8
8
  "description": "AI-powered skills for Power BI Desktop development. Works with Claude Code, GitHub Copilot, Codex, Gemini CLI, and Kilo Code.",
9
- "version": "4.1.4",
9
+ "version": "4.1.5",
10
10
  "repository": "https://github.com/luquimbo/bi-superpowers"
11
11
  },
12
12
  "plugins": [
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "bi-superpowers",
3
3
  "description": "Claude Code plugin for Power BI, Microsoft Fabric, and semantic model workflows powered by the official Microsoft MCP servers.",
4
- "version": "4.1.4",
4
+ "version": "4.1.5",
5
5
  "author": {
6
6
  "name": "Lucas Sanchez"
7
7
  },
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bi-superpowers",
3
- "version": "4.1.4",
3
+ "version": "4.1.5",
4
4
  "skillCount": 4,
5
5
  "skills": [
6
6
  {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "spec": "open-plugin-spec@1",
3
3
  "name": "bi-superpowers",
4
- "version": "4.1.4",
4
+ "version": "4.1.5",
5
5
  "description": "Claude Code plugin for Power BI, Microsoft Fabric, and semantic model workflows powered by the official Microsoft MCP servers.",
6
6
  "author": {
7
7
  "name": "Lucas Sanchez"
package/AGENTS.md CHANGED
@@ -15,38 +15,6 @@
15
15
  - `library/`
16
16
  - `config.json`
17
17
 
18
- ---
19
-
20
- ## QA Codex Shortcut
21
-
22
- When the user says `qa codex` in a new session for this repo, treat it as activating the external QA review workflow.
23
-
24
- Role split:
25
- - **Codex** — external QA / code reviewer
26
- - **Claude Code** — primary implementer
27
- - **Lucas** — bridge between both agents
28
-
29
- Default review protocol:
30
- 1. Read `coordination/ACTIVE_PLAN.md` first.
31
- 2. Read `coordination/TO_CODEX_REVIEW.md` second.
32
- 3. If `TO_CODEX_REVIEW.md` references an audit or follow-up review file, read that too.
33
- 4. Review commits or staged diffs with focus on:
34
- - functional bugs
35
- - regressions
36
- - reasonable missing tests
37
- - drift between `src/content/...` and generated artifacts
38
- - build/release risks
39
- - Windows + Power BI Desktop risks
40
- 5. Return prioritized findings first and a short summary second.
41
-
42
- Working rules:
43
- - Codex is a second opinion, not the implementation owner and not a release gate.
44
- - Do not assume you saw the whole previous session; rely on the coordination `.md` files.
45
- - If the user asks for a prompt for Claude, provide a copy-paste-ready prompt that explicitly references the coordination files above.
46
- - This shortcut is a repo convention for future sessions, not implicit model memory.
47
-
48
- ---
49
-
50
18
  ## Publishing to npm (for AI agents)
51
19
 
52
20
  When the user asks for things like **"publica una nueva versión"**, **"publish a patch"**, **"sube esto a npm"**, **"release v1.2.0"**, follow this flow.
package/CHANGELOG.md CHANGED
@@ -114,10 +114,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
114
114
  - **README rewrite**: dual install paths clearly segmented by audience
115
115
  (Claude Code users → marketplace, everyone else → npm + `super install`),
116
116
  mirrored update instructions, and OQ-1 resolution explained inline.
117
- - **Opus 4.7 1M code review report** at
118
- `coordination/CODE_REVIEW_OPUS_2026-04-21.md` 3 blockers + 5 high +
119
- 8 medium + 7 low findings across the whole repo (all resolved in this
120
- release, except 4 mediums/3 lows explicitly deferred as product calls).
117
+ - **Opus 4.7 1M code review pass** — 3 blockers + 5 high + 8 medium +
118
+ 7 low findings across the whole repo (all resolved in this release,
119
+ except 4 mediums/3 lows explicitly deferred as product calls).
121
120
 
122
121
  ### Changed
123
122
 
@@ -200,7 +199,7 @@ changes required. Recommended sequence:
200
199
 
201
200
  # Users on npm:
202
201
  super upgrade
203
- super install --yes # propagate the new skills to all agents
202
+ super install --all --yes # propagate the new skills to all agents
204
203
  ```
205
204
 
206
205
  Session-opener users: when you previously said "empezar" / "arranco" /
@@ -388,7 +387,7 @@ The plugin has been simplified to its core: **Power BI Desktop local development
388
387
  - GitHub Copilot → `~/.copilot/mcp-config.json` (`servers` JSON)
389
388
  - Codex → `~/.codex/config.toml` (TOML `[mcp_servers.*]`)
390
389
  - Gemini CLI → `~/.gemini/settings.json` (`mcpServers` with `httpUrl`)
391
- - Kilo Code → `~/.kilocode/mcp_settings.json` (`mcpServers` JSON)
390
+ - Kilo Code → `~/.kilo/mcp_settings.json` (`mcpServers` JSON)
392
391
 
393
392
  New module: `bin/lib/mcp-config.js` with per-agent writers and tests.
394
393
 
package/README.md CHANGED
@@ -567,7 +567,6 @@ The npm package does not include:
567
567
 
568
568
  ```text
569
569
  examples/smoke-test/
570
- coordination/
571
570
  node_modules/
572
571
  *.test.js
573
572
  ```
package/bin/cli.js CHANGED
@@ -657,7 +657,7 @@ function getUpgradeRefreshSteps() {
657
657
  },
658
658
  {
659
659
  label: 'Skills installed in your user profile (npm + super install):',
660
- command: 'super install --yes',
660
+ command: 'super install --all --yes',
661
661
  },
662
662
  {
663
663
  label:
@@ -168,7 +168,13 @@ function mcpSetupCommand(args, config) {
168
168
  );
169
169
  }
170
170
 
171
- if (!options.tool && !hasLocalPluginMarker(targetDir)) {
171
+ if (options.tool && !MCP_CONFIGS[options.tool]) {
172
+ tui.error(`Unknown tool: ${options.tool}`);
173
+ tui.info(`Available tools: ${Object.keys(MCP_CONFIGS).join(', ')}`);
174
+ process.exit(1);
175
+ }
176
+
177
+ if ((!options.tool || options.tool === 'claude-plugin') && !hasLocalPluginMarker(targetDir)) {
172
178
  tui.warning('mcp-setup is only for project-local Claude Code plugin configs.');
173
179
  tui.info(
174
180
  'For Codex, GitHub Copilot, Gemini CLI, Kilo Code, and Claude Code user-level installs, run:'
@@ -187,12 +193,6 @@ function mcpSetupCommand(args, config) {
187
193
  let configuredTools = loadConfiguredTools(targetDir);
188
194
 
189
195
  if (options.tool) {
190
- if (!MCP_CONFIGS[options.tool]) {
191
- tui.error(`Unknown tool: ${options.tool}`);
192
- tui.info(`Available tools: ${Object.keys(MCP_CONFIGS).join(', ')}`);
193
- process.exit(1);
194
- }
195
-
196
196
  configuredTools = [options.tool];
197
197
  }
198
198
 
@@ -15,7 +15,7 @@
15
15
  * | GitHub Copilot | ~/.copilot/mcp-config.json | JSON servers |
16
16
  * | Codex | ~/.codex/config.toml | TOML mcp_servers |
17
17
  * | Gemini CLI | ~/.gemini/settings.json | JSON mcpServers |
18
- * | Kilo Code | ~/.kilocode/mcp_settings.json | JSON mcpServers |
18
+ * | Kilo Code | ~/.kilo/mcp_settings.json | JSON mcpServers |
19
19
  *
20
20
  * The launcher path for the Power BI Modeling MCP is resolved to an
21
21
  * absolute path at install time so it works in agents that don't
@@ -121,10 +121,9 @@ function assertNotSymlink(filePath) {
121
121
  *
122
122
  * Known Windows gap: this uses `lstatSync().isSymbolicLink()`. NTFS
123
123
  * junctions are NOT classified as symlinks by Node, so a junction at
124
- * `~/.copilot` would pass this check. Documented as a residual risk
125
- * in `coordination/TO_CODEX_REVIEW.md`; addressing it needs
126
- * `fs.readlinkSync` with reparse-point inspection and is out of scope
127
- * for this commit.
124
+ * `~/.copilot` would pass this check. Addressing that needs
125
+ * `fs.readlinkSync` with reparse-point inspection and is tracked as
126
+ * a separate hardening task.
128
127
  *
129
128
  * @throws {Error} if any ancestor of filePath (up to home) is a symlink
130
129
  */
@@ -194,6 +193,11 @@ function assertPathSafeForWrite(filePath) {
194
193
  */
195
194
  function writeFileAtomic(filePath, content) {
196
195
  assertPathSafeForWrite(filePath);
196
+ const tmpPath = `${filePath}.tmp`;
197
+ const backupPath = `${filePath}.bak`;
198
+ assertPathSafeForWrite(tmpPath);
199
+ assertPathSafeForWrite(backupPath);
200
+
197
201
  const dir = path.dirname(filePath);
198
202
  if (!fs.existsSync(dir)) {
199
203
  fs.mkdirSync(dir, { recursive: true });
@@ -201,7 +205,7 @@ function writeFileAtomic(filePath, content) {
201
205
 
202
206
  if (fs.existsSync(filePath)) {
203
207
  try {
204
- fs.copyFileSync(filePath, `${filePath}.bak`);
208
+ fs.copyFileSync(filePath, backupPath);
205
209
  } catch (err) {
206
210
  throw new Error(
207
211
  `Could not back up ${filePath} before writing: ${err.message}. ` +
@@ -210,7 +214,6 @@ function writeFileAtomic(filePath, content) {
210
214
  }
211
215
  }
212
216
 
213
- const tmpPath = `${filePath}.tmp`;
214
217
  try {
215
218
  fs.writeFileSync(tmpPath, content);
216
219
  fs.renameSync(tmpPath, filePath);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@luquimbo/bi-superpowers",
3
- "version": "4.1.4",
3
+ "version": "4.1.5",
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": {
@@ -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.4"
4
+ version: "4.1.5"
5
5
  ---
6
6
 
7
7
  <!-- Generated by BI Agent Superpowers. Edit src/content/skills/bi-start.md instead. -->
@@ -47,7 +47,7 @@ const HTTPS_TIMEOUT_MS = 5000;
47
47
  // Rewritten at generation time when this helper is copied into
48
48
  // `skills/<name>/scripts/update-check.js`. In the canonical source under
49
49
  // `bin/commands/`, it stays null and we fall back to package.json.
50
- const BUNDLED_INSTALLED_VERSION = "4.1.4";
50
+ const BUNDLED_INSTALLED_VERSION = "4.1.5";
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.4"
4
+ version: "4.1.5"
5
5
  ---
6
6
 
7
7
  <!-- Generated by BI Agent Superpowers. Edit src/content/skills/pbi-connect.md instead. -->
@@ -47,7 +47,7 @@ const HTTPS_TIMEOUT_MS = 5000;
47
47
  // Rewritten at generation time when this helper is copied into
48
48
  // `skills/<name>/scripts/update-check.js`. In the canonical source under
49
49
  // `bin/commands/`, it stays null and we fall back to package.json.
50
- const BUNDLED_INSTALLED_VERSION = "4.1.4";
50
+ const BUNDLED_INSTALLED_VERSION = "4.1.5";
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.4"
4
+ version: "4.1.5"
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.4";
50
+ const BUNDLED_INSTALLED_VERSION = "4.1.5";
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.4"
4
+ version: "4.1.5"
5
5
  ---
6
6
 
7
7
  <!-- Generated by BI Agent Superpowers. Edit src/content/skills/report-design.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.4";
50
+ const BUNDLED_INSTALLED_VERSION = "4.1.5";
51
51
 
52
52
  // ---------------------------------------------------------------------------
53
53
  // Argument parsing