@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.
- package/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/AGENTS.md +23 -24
- package/bin/build-plugin.js +58 -0
- package/bin/cli.js +6 -4
- package/bin/commands/install.js +248 -150
- package/bin/commands/install.test.js +212 -0
- package/bin/lib/agents.js +43 -0
- package/bin/lib/generators/claude-plugin.js +40 -2
- package/bin/lib/licensing/storage.js +41 -1
- package/bin/lib/skills.js +26 -8
- package/bin/utils/projects.js +3 -2
- package/config.example.json +1 -1
- package/package.json +1 -1
- package/skills/contributions/SKILL.md +1 -1
- package/skills/data-model-design/SKILL.md +1 -1
- package/skills/data-modeling/SKILL.md +1 -1
- package/skills/data-quality/SKILL.md +1 -1
- package/skills/dax/SKILL.md +1 -1
- package/skills/dax-doctor/SKILL.md +1 -1
- package/skills/dax-udf/SKILL.md +1 -1
- package/skills/deployment/SKILL.md +1 -1
- package/skills/excel-formulas/SKILL.md +1 -1
- package/skills/fabric-scripts/SKILL.md +1 -1
- package/skills/fast-standard/SKILL.md +1 -1
- package/skills/governance/SKILL.md +1 -1
- package/skills/migration-assistant/SKILL.md +1 -1
- package/skills/model-documenter/SKILL.md +1 -1
- package/skills/pbi-connect/SKILL.md +1 -1
- package/skills/power-query/SKILL.md +1 -1
- package/skills/project-kickoff/SKILL.md +1 -1
- package/skills/query-performance/SKILL.md +1 -1
- package/skills/report-design/SKILL.md +1 -1
- package/skills/report-layout/SKILL.md +1 -1
- package/skills/rls-design/SKILL.md +1 -1
- package/skills/semantic-model/SKILL.md +1 -1
- package/skills/testing-validation/SKILL.md +1 -1
- 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.
|
|
9
|
+
"version": "1.2.1",
|
|
10
10
|
"repository": "https://github.com/luquimbo/bi-superpowers"
|
|
11
11
|
},
|
|
12
12
|
"plugins": [
|
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:
|
|
90
|
+
### Option 1: Multi-agent installer (recommended)
|
|
91
91
|
|
|
92
92
|
```bash
|
|
93
|
-
npx
|
|
93
|
+
npx @luquimbo/bi-superpowers install
|
|
94
94
|
```
|
|
95
95
|
|
|
96
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
124
|
-
|
|
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** —
|
|
129
|
-
- **GitHub Copilot** — Agent skills
|
|
130
|
-
- **Codex (OpenAI)** — Agent skills
|
|
131
|
-
- **
|
|
132
|
-
- **
|
|
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
|
---
|
package/bin/build-plugin.js
CHANGED
|
@@ -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
|
|
131
|
-
//
|
|
132
|
-
//
|
|
133
|
-
//
|
|
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,
|