@luquimbo/bi-superpowers 1.1.3 → 1.2.1

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 (38) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/AGENTS.md +23 -24
  4. package/bin/build-plugin.js +58 -0
  5. package/bin/cli.js +6 -4
  6. package/bin/commands/install.js +248 -150
  7. package/bin/commands/install.test.js +212 -0
  8. package/bin/lib/agents.js +43 -0
  9. package/bin/lib/generators/claude-plugin.js +40 -2
  10. package/bin/lib/licensing/storage.js +41 -1
  11. package/bin/lib/skills.js +26 -8
  12. package/bin/utils/projects.js +3 -2
  13. package/config.example.json +1 -1
  14. package/package.json +1 -1
  15. package/skills/contributions/SKILL.md +1 -1
  16. package/skills/data-model-design/SKILL.md +1 -1
  17. package/skills/data-modeling/SKILL.md +1 -1
  18. package/skills/data-quality/SKILL.md +1 -1
  19. package/skills/dax/SKILL.md +1 -1
  20. package/skills/dax-doctor/SKILL.md +1 -1
  21. package/skills/dax-udf/SKILL.md +1 -1
  22. package/skills/deployment/SKILL.md +1 -1
  23. package/skills/excel-formulas/SKILL.md +1 -1
  24. package/skills/fabric-scripts/SKILL.md +1 -1
  25. package/skills/fast-standard/SKILL.md +1 -1
  26. package/skills/governance/SKILL.md +1 -1
  27. package/skills/migration-assistant/SKILL.md +1 -1
  28. package/skills/model-documenter/SKILL.md +1 -1
  29. package/skills/pbi-connect/SKILL.md +1 -1
  30. package/skills/power-query/SKILL.md +1 -1
  31. package/skills/project-kickoff/SKILL.md +1 -1
  32. package/skills/query-performance/SKILL.md +1 -1
  33. package/skills/report-design/SKILL.md +1 -1
  34. package/skills/report-layout/SKILL.md +1 -1
  35. package/skills/rls-design/SKILL.md +1 -1
  36. package/skills/semantic-model/SKILL.md +1 -1
  37. package/skills/testing-validation/SKILL.md +1 -1
  38. package/skills/theme-tweaker/SKILL.md +1 -1
@@ -6,7 +6,7 @@
6
6
  },
7
7
  "metadata": {
8
8
  "description": "AI-powered skills for Power BI, Microsoft Fabric, and Excel development. 24 skills covering DAX, Power Query, data modeling, report design, governance, and more.",
9
- "version": "1.0.1",
9
+ "version": "1.2.1",
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": "1.1.3",
4
+ "version": "1.2.1",
5
5
  "author": {
6
6
  "name": "Lucas Sanchez"
7
7
  }
package/AGENTS.md CHANGED
@@ -87,22 +87,22 @@ Developed by **Lucas Sanchez** ([@luquimbo](https://github.com/luquimbo))
87
87
 
88
88
  ## Installation
89
89
 
90
- ### Option 1: Skills CLI (recommended — works everywhere)
90
+ ### Option 1: Multi-agent installer (recommended)
91
91
 
92
92
  ```bash
93
- npx skills add luquimbo/bi-superpowers
93
+ npx @luquimbo/bi-superpowers install
94
94
  ```
95
95
 
96
- Installs all 24 skills into `.agents/skills/`. Works with **Claude Code, GitHub Copilot, Codex, Cursor**, and any agent supporting the Agent Skills specification.
96
+ Instala los 24 skills en `~/.agents/skills/` (nivel usuario) con symlinks
97
+ para cada agente seleccionado. Funciona con **Claude Code, GitHub Copilot,
98
+ Codex, Gemini CLI** y **Kilo Code**.
97
99
 
98
- ### Option 2: Claude Code Plugin
100
+ Opciones:
101
+ - `--all --yes` — instala para los 5 agentes sin prompts
102
+ - `--agent claude-code --agent codex` — agentes específicos
103
+ - Sin flags → modo interactivo (detecta agentes instalados)
99
104
 
100
- ```bash
101
- /plugin marketplace add luquimbo/bi-superpowers
102
- /plugin install bi-superpowers
103
- ```
104
-
105
- ### Option 3: Full CLI (premium — includes MCP, library, themes)
105
+ ### Option 2: Full CLI (premium — includes MCP, library, themes)
106
106
 
107
107
  ```bash
108
108
  npm install -g @luquimbo/bi-superpowers
@@ -110,26 +110,25 @@ super unlock
110
110
  super kickoff
111
111
  ```
112
112
 
113
- ### Option 4: Clone and copy
113
+ Incluye generación del plugin Claude Code con MCP servers, biblioteca de
114
+ snippets, temas de Power BI y toda la CLI `super`.
114
115
 
115
- ```bash
116
- git clone https://github.com/luquimbo/bi-superpowers.git
117
- cp -r bi-superpowers/skills/ .agents/skills/
118
- ```
119
-
120
- ### Option 5: Git submodule
116
+ ### Option 3: Claude Code Plugin marketplace
121
117
 
122
118
  ```bash
123
- git submodule add https://github.com/luquimbo/bi-superpowers.git .bi-superpowers
124
- ln -s .bi-superpowers/skills skills
119
+ /plugin marketplace add luquimbo/bi-superpowers
120
+ /plugin install bi-superpowers
125
121
  ```
126
122
 
123
+ > Nota: requiere acceso al repo GitHub. Si el repo es privado, usá la
124
+ > **Opción 1** o **Opción 2** que instalan desde el paquete npm público.
125
+
127
126
  Works with:
128
- - **Claude Code** — Native plugin (skills + commands + MCP)
129
- - **GitHub Copilot** — Agent skills + plugin (VS Code & CLI)
130
- - **Codex (OpenAI)** — Agent skills + plugin
131
- - **Cursor / Windsurf** — Agent skills
132
- - **1code.dev** — Uses Claude Code SDK (full plugin support)
127
+ - **Claude Code** — Plugin nativo (skills + commands + MCP)
128
+ - **GitHub Copilot** — Agent skills (VS Code & CLI)
129
+ - **Codex (OpenAI)** — Agent skills via `.agents/skills/`
130
+ - **Gemini CLI** — Agent skills via `.gemini/skills/`
131
+ - **Kilo Code** — Agent skills via `.kilocode/skills/`
133
132
  - **Claude Desktop** — Via MCPB extension (`super build-desktop`)
134
133
 
135
134
  ---
@@ -2,13 +2,63 @@
2
2
 
3
3
  /**
4
4
  * Build the repository-root Claude Code plugin artifacts.
5
+ *
6
+ * Genera los archivos del plugin desde las fuentes en src/content/skills/
7
+ * y valida que los outputs críticos hayan sido creados correctamente.
8
+ * Este script corre en el prepack de npm publish.
5
9
  */
6
10
 
11
+ const fs = require('fs');
7
12
  const path = require('path');
8
13
  const pluginGenerator = require('./lib/generators/claude-plugin');
9
14
  const { loadSkills } = require('./lib/skills');
10
15
  const pkg = require('../package.json');
11
16
 
17
+ /**
18
+ * Verifica que todos los archivos críticos del plugin hayan sido generados.
19
+ * @param {string} packageDir - Directorio raíz del paquete
20
+ * @throws {Error} Si falta cualquier archivo crítico
21
+ */
22
+ function verifyPluginOutputs(packageDir) {
23
+ const criticalFiles = [
24
+ '.claude-plugin/plugin.json',
25
+ '.claude-plugin/marketplace.json',
26
+ '.mcp.json',
27
+ 'commands',
28
+ 'skills',
29
+ ];
30
+
31
+ const missing = [];
32
+ for (const relPath of criticalFiles) {
33
+ const fullPath = path.join(packageDir, relPath);
34
+ if (!fs.existsSync(fullPath)) {
35
+ missing.push(relPath);
36
+ }
37
+ }
38
+
39
+ if (missing.length > 0) {
40
+ throw new Error(
41
+ `Plugin generation completed but outputs are missing: ${missing.join(', ')}. ` +
42
+ 'Check src/content/skills/ and the generator logic.'
43
+ );
44
+ }
45
+
46
+ // Verify the skills/ directory has at least one SKILL.md (sanity check)
47
+ const skillsDir = path.join(packageDir, 'skills');
48
+ const skillSubdirs = fs
49
+ .readdirSync(skillsDir, { withFileTypes: true })
50
+ .filter((d) => d.isDirectory());
51
+ const skillsWithMd = skillSubdirs.filter((d) =>
52
+ fs.existsSync(path.join(skillsDir, d.name, 'SKILL.md'))
53
+ );
54
+
55
+ if (skillsWithMd.length === 0) {
56
+ throw new Error(
57
+ `Plugin generation completed but no SKILL.md files were created in ${skillsDir}/`
58
+ );
59
+ }
60
+ }
61
+
12
62
  async function main() {
13
63
  const packageDir = path.dirname(__dirname);
14
64
  const skills = loadSkills({
@@ -16,12 +66,20 @@ async function main() {
16
66
  preferLocal: true,
17
67
  });
18
68
 
69
+ if (skills.length === 0) {
70
+ throw new Error(
71
+ `No skills found in ${packageDir}/src/content/skills/. Cannot build plugin without sources.`
72
+ );
73
+ }
74
+
19
75
  await pluginGenerator.generate(packageDir, skills, {
20
76
  packageDir,
21
77
  version: pkg.version,
22
78
  usePluginRootLauncher: true,
23
79
  libraryPrefix: 'library',
24
80
  });
81
+
82
+ verifyPluginOutputs(packageDir);
25
83
  }
26
84
 
27
85
  main().catch((error) => {
package/bin/cli.js CHANGED
@@ -127,10 +127,12 @@ const AI_TOOLS = generators ? generators.AI_TOOLS : {};
127
127
  * - Developer: Advanced tools for content management (xray, checkup, scan, sentinel, powers)
128
128
  * - Legacy: Old command names maintained for backward compatibility
129
129
  */
130
- // Commands are registered lazily to avoid TDZ issues with const wrappers.
131
- // Core commands use hoisted function declarations; developer commands use
132
- // createCommandWrapper which is defined later. We populate the map in
133
- // registerCommands() which runs before main().
130
+ // Commands are registered in two phases to avoid TDZ (temporal dead zone) errors.
131
+ // Phase 1: hoisted function declarations (showHelp, initProject, etc.) go directly
132
+ // into the object literal below safe because `function` declarations hoist.
133
+ // Phase 2: wrapper-based commands that depend on `createCommandWrapper` (defined
134
+ // further down in the file) are attached imperatively after that function exists.
135
+ // See the `commands.xray = runSearch;` block after the wrapper `const`s.
134
136
  const commands = {
135
137
  // Core commands - basic info and status (hoisted functions, safe here)
136
138
  help: showHelp,