@luquimbo/bi-superpowers 1.2.2 → 2.0.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 (48) 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 -2
  4. package/.plugin/plugin.json +1 -1
  5. package/AGENTS.md +2 -3
  6. package/CHANGELOG.md +25 -0
  7. package/README.md +14 -5
  8. package/bin/cli.js +26 -246
  9. package/bin/commands/build-desktop.js +3 -1
  10. package/bin/commands/diff.js +3 -1
  11. package/bin/commands/install.js +4 -6
  12. package/bin/commands/lint.js +3 -1
  13. package/bin/commands/search.js +1 -1
  14. package/bin/commands/watch.js +3 -1
  15. package/bin/lib/generators/claude-plugin.js +2 -1
  16. package/bin/lib/generators/shared.js +0 -31
  17. package/bin/lib/skills.js +8 -34
  18. package/bin/postinstall.js +20 -18
  19. package/package.json +1 -1
  20. package/skills/contributions/SKILL.md +1 -1
  21. package/skills/data-model-design/SKILL.md +1 -1
  22. package/skills/data-modeling/SKILL.md +1 -1
  23. package/skills/data-quality/SKILL.md +1 -1
  24. package/skills/dax/SKILL.md +1 -1
  25. package/skills/dax-doctor/SKILL.md +1 -1
  26. package/skills/dax-udf/SKILL.md +1 -1
  27. package/skills/deployment/SKILL.md +1 -1
  28. package/skills/excel-formulas/SKILL.md +1 -1
  29. package/skills/fabric-scripts/SKILL.md +1 -1
  30. package/skills/fast-standard/SKILL.md +1 -1
  31. package/skills/governance/SKILL.md +1 -1
  32. package/skills/migration-assistant/SKILL.md +1 -1
  33. package/skills/model-documenter/SKILL.md +1 -1
  34. package/skills/pbi-connect/SKILL.md +1 -1
  35. package/skills/power-query/SKILL.md +1 -1
  36. package/skills/project-kickoff/SKILL.md +1 -1
  37. package/skills/query-performance/SKILL.md +1 -1
  38. package/skills/report-design/SKILL.md +1 -1
  39. package/skills/report-layout/SKILL.md +1 -1
  40. package/skills/rls-design/SKILL.md +1 -1
  41. package/skills/semantic-model/SKILL.md +1 -1
  42. package/skills/testing-validation/SKILL.md +1 -1
  43. package/skills/theme-tweaker/SKILL.md +1 -1
  44. package/bin/lib/licensing/index.js +0 -35
  45. package/bin/lib/licensing/storage.js +0 -404
  46. package/bin/lib/licensing/storage.test.js +0 -55
  47. package/bin/lib/licensing/validator.js +0 -213
  48. package/bin/lib/licensing/validator.test.js +0 -137
@@ -251,10 +251,11 @@ async function generate(targetDir, skills, options = {}) {
251
251
  // Generate skill-manifest.json — a compact summary of all skills with
252
252
  // frontmatter metadata (name, title, description, category). Used by
253
253
  // internal tooling (xray, powers, checkup) and as a CI consistency check.
254
+ // Intentionally omits timestamps so the file is deterministic and doesn't
255
+ // show as dirty in git on every build.
254
256
  const skillManifest = {
255
257
  name: 'bi-superpowers',
256
258
  version,
257
- generatedAt: new Date().toISOString(),
258
259
  skillCount: skills.length,
259
260
  skills: skills.map((skill) => {
260
261
  const metadata = parseSkillMetadata(skill.content);
@@ -7,9 +7,6 @@
7
7
  * @module lib/generators/shared
8
8
  */
9
9
 
10
- const fs = require('fs');
11
- const path = require('path');
12
-
13
10
  /**
14
11
  * Extract skill metadata from markdown content
15
12
  *
@@ -243,33 +240,6 @@ ${codeStandards}
243
240
  ${footer}`;
244
241
  }
245
242
 
246
- /**
247
- * Create symlink to content cache directory for easy access to library
248
- * @param {string} targetDir - Project directory path
249
- * @param {string} contentCacheDir - Content cache directory path
250
- * @param {string} symlinkName - Name of the symlink to create
251
- */
252
- function createSymlink(targetDir, contentCacheDir, symlinkName) {
253
- const linkPath = path.join(targetDir, symlinkName);
254
- // Remove existing symlink if it exists
255
- if (fs.existsSync(linkPath)) {
256
- try {
257
- fs.unlinkSync(linkPath);
258
- } catch (e) {
259
- // Ignore errors
260
- }
261
- }
262
- try {
263
- fs.symlinkSync(contentCacheDir, linkPath, 'dir');
264
- console.log(` ✓ Created ${symlinkName} symlink`);
265
- } catch (e) {
266
- // Symlink may fail on Windows without admin rights
267
- if (process.env.DEBUG === 'true') {
268
- console.error(`[DEBUG] Failed to create symlink: ${e.message}`);
269
- }
270
- }
271
- }
272
-
273
243
  module.exports = {
274
244
  parseSkillMetadata,
275
245
  getSkillPurpose,
@@ -278,5 +248,4 @@ module.exports = {
278
248
  getFormatHeader,
279
249
  getFormatFooter,
280
250
  generateCombinedConfig,
281
- createSymlink,
282
251
  };
package/bin/lib/skills.js CHANGED
@@ -2,9 +2,8 @@
2
2
  * Skill Loading Utilities
3
3
  * =======================
4
4
  *
5
- * Centralizes how BI Agent Superpowers loads skill source files.
6
- * During local development we prefer the repository sources, while
7
- * installed package usage can fall back to the premium content cache.
5
+ * Centralizes how BI Agent Superpowers loads skill source files from
6
+ * the installed npm package. Everything ships with the package.
8
7
  *
9
8
  * @module lib/skills
10
9
  */
@@ -56,47 +55,22 @@ function readSkillDirectory(directory) {
56
55
  }
57
56
 
58
57
  /**
59
- * Resolve candidate skill directories in preferred order.
58
+ * Load skills from the package source directory.
60
59
  *
61
60
  * @param {Object} options - Resolution options
62
61
  * @param {string} options.packageDir - Package installation directory
63
- * @param {string} [options.contentCacheDir] - Premium content cache directory
64
- * @param {boolean} [options.preferLocal] - Prefer repository-local sources first
65
- * @returns {string[]} Ordered list of candidate directories
66
- */
67
- function getSkillDirectories(options = {}) {
68
- const { packageDir, contentCacheDir, preferLocal = false } = options;
69
- const localDir = packageDir ? path.join(packageDir, 'src', 'content', 'skills') : null;
70
- const cacheDir = contentCacheDir ? path.join(contentCacheDir, 'src', 'content', 'skills') : null;
71
-
72
- const ordered = preferLocal ? [localDir, cacheDir] : [cacheDir, localDir];
73
- return ordered.filter(Boolean);
74
- }
75
-
76
- /**
77
- * Load skills from the first directory that contains them.
78
- *
79
- * @param {Object} options - Resolution options
80
- * @param {string} options.packageDir - Package installation directory
81
- * @param {string} [options.contentCacheDir] - Premium content cache directory
82
- * @param {boolean} [options.preferLocal] - Prefer repository-local sources first
83
62
  * @returns {Array<{name: string, path: string, content: string}>}
84
63
  */
85
64
  function loadSkills(options = {}) {
86
- const directories = getSkillDirectories(options);
87
-
88
- for (const directory of directories) {
89
- const skills = readSkillDirectory(directory);
90
- if (skills.length > 0) {
91
- return skills;
92
- }
65
+ const { packageDir } = options;
66
+ if (!packageDir) {
67
+ return [];
93
68
  }
94
-
95
- return [];
69
+ const skillsDir = path.join(packageDir, 'src', 'content', 'skills');
70
+ return readSkillDirectory(skillsDir);
96
71
  }
97
72
 
98
73
  module.exports = {
99
74
  readSkillDirectory,
100
- getSkillDirectories,
101
75
  loadSkills,
102
76
  };
@@ -14,31 +14,33 @@ console.log(`
14
14
  ║ BI Agent Superpowers v${VERSION.padEnd(34)}║
15
15
  ║ AI-powered toolkit for Power BI, Fabric & Excel ║
16
16
  ║ Developed by Lucas Sanchez (@luquimbo) ║
17
+ ║ Open source — MIT licensed ║
17
18
  ║ ║
18
19
  ╚═══════════════════════════════════════════════════════════╝
19
20
 
20
- Installed successfully!
21
+ Instalado correctamente!
21
22
 
22
23
  Quick Start:
23
- 1. super unlock Activate your license key
24
- 2. super kickoff Configure for your AI tool(s)
25
- 3. super powers List available skills & resources
26
-
27
- Get your license at: https://acadevor.com/bi-superpowers
24
+ 1. super install Instalá los 24 skills en tus agentes AI
25
+ 2. super kickoff Inicializá el plugin en un proyecto
26
+ 3. super powers Ver todos los skills disponibles
28
27
 
29
28
  Works with:
30
- • Claude Code Native plugin (skills + commands + MCP)
31
- 1code.dev Uses Claude Code SDK (full plugin support)
32
- Claude Desktop Via MCPB extension (super build-desktop)
33
-
34
- After activation, you'll have access to 20+ skills including:
35
- /project-kickoff Analyze and plan BI projects
36
- /data-model-design Design star schema data models
37
- /dax-doctor Debug and optimize DAX measures
38
- /dax DAX writing best practices
39
- /power-query Power Query patterns
40
- /report-design Report design and visualization
41
- ... and more!
29
+ • Claude Code Plugin nativo (skills + commands + MCP)
30
+ GitHub Copilot Agent skills
31
+ Codex (OpenAI) Agent skills
32
+ • Gemini CLI Agent skills
33
+ Kilo Code Agent skills
34
+ Claude Desktop MCPB extension (super build-desktop)
35
+
36
+ 24 skills incluidos:
37
+ /project-kickoff Analizá y planificá proyectos BI
38
+ /data-model-design Diseñá modelos estrella
39
+ /dax-doctor Debuggeá y optimizá medidas DAX
40
+ /dax Mejores prácticas de DAX
41
+ /power-query Patrones de Power Query
42
+ /report-design Diseño y visualización de reportes
43
+ ... y 18 más
42
44
 
43
45
  Documentation: https://github.com/luquimbo/bi-superpowers
44
46
  `);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@luquimbo/bi-superpowers",
3
- "version": "1.2.2",
3
+ "version": "2.0.1",
4
4
  "description": "Plugin-first Claude Code toolkit for Power BI, Microsoft Fabric, and Excel workflows powered by official Microsoft MCP servers.",
5
5
  "main": "bin/cli.js",
6
6
  "bin": {
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: "contributions"
3
3
  description: "Contributions Validation Skill: Contribution validation."
4
- version: "1.2.2"
4
+ version: "2.0.1"
5
5
  ---
6
6
 
7
7
  <!-- Generated by BI Agent Superpowers. Edit src/content/skills/contributions.md instead. -->
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: "data-model-design"
3
3
  description: "Use when the user asks about Data Model Design Skill, especially phrases like \"diseñar modelo de datos\", \"crear modelo Power BI\", \"arquitectura de datos\", \"empezar proyecto BI\", \"nuevo modelo semántico\"."
4
- version: "1.2.2"
4
+ version: "2.0.1"
5
5
  ---
6
6
 
7
7
  <!-- Generated by BI Agent Superpowers. Edit src/content/skills/data-model-design.md instead. -->
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: "data-modeling"
3
3
  description: "Use when the user asks about Data Modeling Skill, especially phrases like \"data model\", \"star schema\", \"fact table\", \"relationship\", \"surrogate key\", \"SCD\"."
4
- version: "1.2.2"
4
+ version: "2.0.1"
5
5
  ---
6
6
 
7
7
  <!-- Generated by BI Agent Superpowers. Edit src/content/skills/data-modeling.md instead. -->
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: "data-quality"
3
3
  description: "Use when the user asks about Data Quality Skill, especially phrases like \"data quality\", \"check for errors\", \"data profiling\", \"clean data\", \"calidad de datos\"."
4
- version: "1.2.2"
4
+ version: "2.0.1"
5
5
  ---
6
6
 
7
7
  <!-- Generated by BI Agent Superpowers. Edit src/content/skills/data-quality.md instead. -->
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: "dax"
3
3
  description: "Use when the user asks about DAX Skill, especially phrases like \"DAX\", \"CALCULATE\", \"time intelligence\", \"SUMX\", \"context transition\", \"Power BI formula\"."
4
- version: "1.2.2"
4
+ version: "2.0.1"
5
5
  ---
6
6
 
7
7
  <!-- Generated by BI Agent Superpowers. Edit src/content/skills/dax.md instead. -->
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: "dax-doctor"
3
3
  description: "Use when the user asks about DAX Doctor Skill, especially phrases like \"debug DAX\", \"wrong result\", \"DAX error\", \"slow measure\", \"context issue\", \"depurar DAX\"."
4
- version: "1.2.2"
4
+ version: "2.0.1"
5
5
  ---
6
6
 
7
7
  <!-- Generated by BI Agent Superpowers. Edit src/content/skills/dax-doctor.md instead. -->
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: "dax-udf"
3
3
  description: "Use when the user asks about DAX User-Defined Functions (UDFs), especially phrases like \"UDF\", \"DEFINE FUNCTION\", \"DAX Lib\", \"NAMEOF\", \"reusable DAX\", \"VAL parameter\"."
4
- version: "1.2.2"
4
+ version: "2.0.1"
5
5
  ---
6
6
 
7
7
  <!-- Generated by BI Agent Superpowers. Edit src/content/skills/dax-udf.md instead. -->
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: "deployment"
3
3
  description: "Use when the user asks about Deployment Skill, especially phrases like \"deploy\", \"CI/CD\", \"ALM\", \"git integration\", \"environment\", \"desplegar\"."
4
- version: "1.2.2"
4
+ version: "2.0.1"
5
5
  ---
6
6
 
7
7
  <!-- Generated by BI Agent Superpowers. Edit src/content/skills/deployment.md instead. -->
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: "excel-formulas"
3
3
  description: "Use when the user asks about Excel Formulas Skill, especially phrases like \"Excel formula\", \"XLOOKUP\", \"dynamic array\", \"LET formula\", \"named range\", \"conditional formatting formula\"."
4
- version: "1.2.2"
4
+ version: "2.0.1"
5
5
  ---
6
6
 
7
7
  <!-- Generated by BI Agent Superpowers. Edit src/content/skills/excel-formulas.md instead. -->
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: "fabric-scripts"
3
3
  description: "Use when the user asks about Fabric Scripts Skill, especially phrases like \"Fabric scripts\", \"download dataflows\", \"diagnose connection\", \"TMDL sync\", \"scripts de Fabric\"."
4
- version: "1.2.2"
4
+ version: "2.0.1"
5
5
  ---
6
6
 
7
7
  <!-- Generated by BI Agent Superpowers. Edit src/content/skills/fabric-scripts.md instead. -->
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: "fast-standard"
3
3
  description: "Use when the user asks about FAST Standard Skill, especially phrases like \"FAST Standard\", \"financial model\", \"spreadsheet modeling best practices\", \"model audit\", \"calculation block\", \"modelo financiero\"."
4
- version: "1.2.2"
4
+ version: "2.0.1"
5
5
  ---
6
6
 
7
7
  <!-- Generated by BI Agent Superpowers. Edit src/content/skills/fast-standard.md instead. -->
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: "governance"
3
3
  description: "Use when the user asks about Governance Skill, especially phrases like \"naming convention\", \"governance\", \"documentation standard\", \"display folder\", \"convención de nombres\"."
4
- version: "1.2.2"
4
+ version: "2.0.1"
5
5
  ---
6
6
 
7
7
  <!-- Generated by BI Agent Superpowers. Edit src/content/skills/governance.md instead. -->
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: "migration-assistant"
3
3
  description: "Use when the user asks about Migration Assistant Skill, especially phrases like \"migrate\", \"move to Fabric\", \"Desktop to PBIP\", \"deprecated feature\", \"migrar\"."
4
- version: "1.2.2"
4
+ version: "2.0.1"
5
5
  ---
6
6
 
7
7
  <!-- Generated by BI Agent Superpowers. Edit src/content/skills/migration-assistant.md instead. -->
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: "model-documenter"
3
3
  description: "Use when the user asks about Model Documenter Skill, especially phrases like \"document model\", \"document measures\", \"generate documentation\", \"describe tables\", \"documentar modelo\"."
4
- version: "1.2.2"
4
+ version: "2.0.1"
5
5
  ---
6
6
 
7
7
  <!-- Generated by BI Agent Superpowers. Edit src/content/skills/model-documenter.md instead. -->
@@ -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\", \"modeling mcp\", \"Power BI Desktop\", \"conectar Power BI\", \"can't connect to Power BI\"."
4
- version: "1.2.2"
4
+ version: "2.0.1"
5
5
  ---
6
6
 
7
7
  <!-- Generated by BI Agent Superpowers. Edit src/content/skills/pbi-connect.md instead. -->
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: "power-query"
3
3
  description: "Use when the user asks about Power Query Skill, especially phrases like \"Power Query\", \"query folding\", \"ETL\", \"source connection\", \"refresh\", \"parameters\"."
4
- version: "1.2.2"
4
+ version: "2.0.1"
5
5
  ---
6
6
 
7
7
  <!-- Generated by BI Agent Superpowers. Edit src/content/skills/power-query.md instead. -->
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: "project-kickoff"
3
3
  description: "Project Kickoff Skill: Project analysis and planning."
4
- version: "1.2.2"
4
+ version: "2.0.1"
5
5
  ---
6
6
 
7
7
  <!-- Generated by BI Agent Superpowers. Edit src/content/skills/project-kickoff.md instead. -->
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: "query-performance"
3
3
  description: "Use when the user asks about Query Performance Skill, especially phrases like \"slow\", \"DAX Studio\", \"taking too long\", \"reduce refresh time\", \"rendimiento\"."
4
- version: "1.2.2"
4
+ version: "2.0.1"
5
5
  ---
6
6
 
7
7
  <!-- Generated by BI Agent Superpowers. Edit src/content/skills/query-performance.md instead. -->
@@ -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 \"report design\", \"chart type\", \"IBCS\", \"accessibility\", \"mobile layout\", \"diseño de reporte\"."
4
- version: "1.2.2"
4
+ version: "2.0.1"
5
5
  ---
6
6
 
7
7
  <!-- Generated by BI Agent Superpowers. Edit src/content/skills/report-design.md instead. -->
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: "report-layout"
3
3
  description: "Use when the user asks about Report Layout Skill, especially phrases like \"report layout\", \"visual placement\", \"report wireframe\", \"navigation design\", \"diseño de reporte\"."
4
- version: "1.2.2"
4
+ version: "2.0.1"
5
5
  ---
6
6
 
7
7
  <!-- Generated by BI Agent Superpowers. Edit src/content/skills/report-layout.md instead. -->
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: "rls-design"
3
3
  description: "Use when the user asks about RLS Design Skill, especially phrases like \"RLS\", \"user can only see their data\", \"restrict access\", \"security role\", \"seguridad a nivel de fila\"."
4
- version: "1.2.2"
4
+ version: "2.0.1"
5
5
  ---
6
6
 
7
7
  <!-- Generated by BI Agent Superpowers. Edit src/content/skills/rls-design.md instead. -->
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: "semantic-model"
3
3
  description: "Use when the user asks about Semantic Model Skill, especially phrases like \"semantic model\", \"TMDL\", \"DirectLake\", \"calculation group\", \"storage mode\", \"modelo semántico\"."
4
- version: "1.2.2"
4
+ version: "2.0.1"
5
5
  ---
6
6
 
7
7
  <!-- Generated by BI Agent Superpowers. Edit src/content/skills/semantic-model.md instead. -->
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: "testing-validation"
3
3
  description: "Use when the user asks about Testing & Validation Skill, especially phrases like \"test\", \"unit test DAX\", \"regression test\", \"deployment checklist\", \"data reconciliation\", \"pruebas\"."
4
- version: "1.2.2"
4
+ version: "2.0.1"
5
5
  ---
6
6
 
7
7
  <!-- Generated by BI Agent Superpowers. Edit src/content/skills/testing-validation.md instead. -->
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: "theme-tweaker"
3
3
  description: "Use when the user asks about Theme Tweaker Skill, especially phrases like \"modificar tema\", \"cambiar colores Power BI\", \"personalizar tema\", \"ajustar estilo\", \"theme tweaker\"."
4
- version: "1.2.2"
4
+ version: "2.0.1"
5
5
  ---
6
6
 
7
7
  <!-- Generated by BI Agent Superpowers. Edit src/content/skills/theme-tweaker.md instead. -->
@@ -1,35 +0,0 @@
1
- /**
2
- * Licensing Module
3
- * =================
4
- *
5
- * Unified exports for all licensing-related functionality.
6
- *
7
- * @module lib/licensing
8
- */
9
-
10
- const storage = require('./storage');
11
- const validator = require('./validator');
12
-
13
- module.exports = {
14
- // Storage functions
15
- loadLicense: storage.loadLicense,
16
- saveLicense: storage.saveLicense,
17
- clearLicense: storage.clearLicense,
18
- isContentInstalled: storage.isContentInstalled,
19
- downloadPremiumContent: storage.downloadPremiumContent,
20
- getContentCacheDir: storage.getContentCacheDir,
21
- getSkillsDir: storage.getSkillsDir,
22
- getLicenseFile: storage.getLicenseFile,
23
-
24
- // Validator functions
25
- makeRequest: validator.makeRequest,
26
- validateLicense: validator.validateLicense,
27
- requireLicense: validator.requireLicense,
28
- getApiBaseUrl: validator.getApiBaseUrl,
29
-
30
- // Constants
31
- LICENSE_FILE: storage.LICENSE_FILE,
32
- CONTENT_CACHE_DIR: storage.CONTENT_CACHE_DIR,
33
- SKILLS_DIR: storage.SKILLS_DIR,
34
- API_BASE_URL: validator.API_BASE_URL,
35
- };