@qubiit/lmagent 2.6.3 → 2.7.0

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 (41) hide show
  1. package/AGENTS.md +19 -3
  2. package/CLAUDE.md +3 -3
  3. package/README.md +26 -2
  4. package/install.js +88 -36
  5. package/package.json +16 -1
  6. package/rules/_bootstrap.md +2 -2
  7. package/scripts/create_skill.js +4 -4
  8. package/scripts/validate_skills.js +5 -4
  9. package/skills/ai-agent-engineer/SKILL.md +1 -1
  10. package/skills/api-designer/SKILL.md +2 -2
  11. package/skills/architect/SKILL.md +1 -1
  12. package/skills/automation-engineer/SKILL.md +1 -1
  13. package/skills/backend-engineer/SKILL.md +1 -1
  14. package/skills/bmad-methodology/SKILL.md +2 -2
  15. package/skills/browser-agent/SKILL.md +1 -1
  16. package/skills/code-reviewer/SKILL.md +2 -2
  17. package/skills/data-engineer/SKILL.md +1 -1
  18. package/skills/devops-engineer/SKILL.md +1 -1
  19. package/skills/document-generator/SKILL.md +1 -1
  20. package/skills/frontend-engineer/SKILL.md +1 -1
  21. package/skills/git-workflow/SKILL.md +2 -2
  22. package/skills/mcp-builder/SKILL.md +2 -2
  23. package/skills/mobile-engineer/SKILL.md +1 -1
  24. package/skills/orchestrator/SKILL.md +1 -1
  25. package/skills/performance-engineer/SKILL.md +1 -1
  26. package/skills/product-manager/SKILL.md +1 -1
  27. package/skills/prompt-engineer/SKILL.md +1 -1
  28. package/skills/qa-engineer/SKILL.md +1 -1
  29. package/skills/scrum-master/SKILL.md +1 -1
  30. package/skills/security-analyst/SKILL.md +1 -1
  31. package/skills/seo-auditor/SKILL.md +1 -1
  32. package/skills/spec-driven-dev/SKILL.md +2 -2
  33. package/skills/supabase-expert/SKILL.md +2 -2
  34. package/skills/swe-agent/SKILL.md +2 -2
  35. package/skills/systematic-debugger/SKILL.md +1 -1
  36. package/skills/tech-lead/SKILL.md +1 -1
  37. package/skills/technical-writer/SKILL.md +1 -1
  38. package/skills/testing-strategist/SKILL.md +2 -2
  39. package/skills/ux-ui-designer/SKILL.md +1 -1
  40. package/.editorconfig +0 -18
  41. package/pyproject.toml +0 -182
package/AGENTS.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # 🤖 LMAgent Intelligence Catalog
2
2
 
3
- > Catálogo completo de capacidades del ecosistema **LMAgent v2.6.3**.
4
- > Última actualización: 2026-02-11
3
+ > Catálogo completo de capacidades del ecosistema **LMAgent v2.7.0**.
4
+ > Última actualización: 2026-02-12
5
5
 
6
6
  ---
7
7
 
@@ -105,7 +105,19 @@ skills/{skill-name}/
105
105
  | **scrum-master** | `/sm`, `/agile`, `/coach` | Ceremonias Scrum, sprints, retrospectivas | `references/sprint-ceremonies.md` |
106
106
  | **technical-writer** | `/doc`, `/readme`, `/guide` | Documentación, API refs, guías de usuario | `references/doc-templates.md` |
107
107
  | **ux-ui-designer** | `/ux`, `/ui`, `/design` | Design systems, UX research, accesibilidad | `references/design-system-foundation.md` |
108
- | **testing-strategist** | `/test-plan`, `/strategy` | Pirámide de testing, planificación y estrategia de QA | **Uso:** Definición de estrategia. **Vs QA:** Strategist piensa el 'qué'; QA ejecuta el 'cómo'. |
108
+
109
+ ## 📚 2. Knowledge Base (Documentación)
110
+ *Ubicación: `docs/` en la raíz del proyecto.*
111
+
112
+ El agente debe consultar estos archivos si el usuario tiene dudas sobre el framework:
113
+
114
+ | Archivo | Propósito |
115
+ | :--- | :--- |
116
+ | `docs/getting-started.md` | Configuración inicial y primeros pasos |
117
+ | `docs/usage-guide.md` | Cómo interactuar con el agente y comandos |
118
+ | `docs/customization-guide.md` | Cómo crear nuevos skills o reglas |
119
+ | `docs/commands.md` | Referencia de comandos CLI (`lmagent ...`) |
120
+ | `docs/navigation-index.md` | Mapa completo de archivos y sus relaciones |
109
121
 
110
122
  ### 📐 Methodologies
111
123
 
@@ -141,6 +153,8 @@ Rules definen **CÓMO** debe comportarse el agente. Son restricciones y estánda
141
153
 
142
154
  Workflows son **SOPs (Standard Operating Procedures)** que guían al agente en procesos complejos multi-paso.
143
155
 
156
+ > **Instrucción para Agente**: Antes de iniciar una tarea compleja, **verifica si existe un workflow** aquí. Si existe, **LÉELO** y síguelo paso a paso.
157
+
144
158
  | Workflow | Propósito |
145
159
  |----------|----------|
146
160
  | **bugfix-backend.md** | Protocolo para diagnosticar, corregir y verificar bugs de backend |
@@ -178,6 +192,8 @@ Workflows son **SOPs (Standard Operating Procedures)** que guían al agente en p
178
192
 
179
193
  👉 **[Ver Guía de Uso de Templates](templates/USAGE.md)**
180
194
 
195
+ > **Instrucción para Agente**: Cuando debas crear nuevos archivos o proyectos, **usa estos templates como referencia** para mantener la consistencia, no inventes estructuras desde cero.
196
+
181
197
  | Template | Descripción |
182
198
  |----------|-------------|
183
199
  | **backend-python/** | FastAPI backend con SQLModel |
package/CLAUDE.md CHANGED
@@ -1,12 +1,12 @@
1
- # LMAgent Framework v2.6.3 - Claude Code Instructions
1
+ # LMAgent Framework v2.7.0 - Claude Code Instructions
2
2
 
3
3
  > [!IMPORTANT]
4
- > **ANTES DE HACER CUALQUIER COSA**: Este proyecto usa el framework **LMAgent v2.6.3**.
4
+ > **ANTES DE HACER CUALQUIER COSA**: Este proyecto usa el framework **LMAgent v2.7.0**.
5
5
  > **DEBES** leer `AGENTS.md` y `rules/_bootstrap.md` antes de implementar cualquier cambio.
6
6
 
7
7
  ## Framework
8
8
 
9
- Estás trabajando con **LMAgent v2.6.3**, un framework para desarrollo de automatizaciones y agentes de IA. Organiza las capacidades del agente en tres pilares: **Skills**, **Rules** y **Workflows**.
9
+ Estás trabajando con **LMAgent v2.7.0**, un framework para desarrollo de automatizaciones y agentes de IA. Organiza las capacidades del agente en tres pilares: **Skills**, **Rules** y **Workflows**.
10
10
 
11
11
  ## ⚡ Inicio Rápido
12
12
 
package/README.md CHANGED
@@ -6,11 +6,11 @@
6
6
  ██║ ██╔████╔██║███████║██║ ███╗█████╗ ██╔██╗ ██║ ██║
7
7
  ██║ ██║╚██╔╝██║██╔══██║██║ ██║██╔══╝ ██║╚██╗██║ ██║
8
8
  ███████╗██║ ╚═╝ ██║██║ ██║╚██████╔╝███████╗██║ ╚████║ ██║
9
- ╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═══╝ ╚═╝
9
+ ╚══════╝╚╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═══╝ ╚═╝
10
10
  by QuBit
11
11
  ```
12
12
 
13
- ![Version](https://img.shields.io/badge/Version-2.6.3-purple?style=for-the-badge) ![License](https://img.shields.io/badge/License-MIT-green?style=for-the-badge) ![Agentic](https://img.shields.io/badge/AI-Agentic_Workflow-cyan?style=for-the-badge)
13
+ ![Version](https://img.shields.io/badge/version-2.7.0-blue.svg) ![License](https://img.shields.io/badge/License-MIT-green?style=for-the-badge) ![Agentic](https://img.shields.io/badge/AI-Agentic_Workflow-cyan?style=for-the-badge)
14
14
 
15
15
  > **"Separate the reasoning from the execution."**
16
16
  > LMAgent is the foundational runtime that empowers your AI Agents with standardized **Skills**, **Rules**, and **Workflows** across any IDE (Cursor, Windsurf, VSCode, Zed, Qodo).
@@ -63,6 +63,30 @@ lmagent doctor
63
63
 
64
64
  ---
65
65
 
66
+ ## 🏛️ Architecture: Global Brain vs. Local Project
67
+
68
+ LMAgent uses a **Hybrid Architecture** to balance **Centralized Updates** with **Project Portability**.
69
+
70
+ ### The Problem it Solves
71
+ * **Global Installs** run the risk of breaking projects if they rely on your specific machine paths.
72
+ * **Local Copies** become stale and are hard to update across 10+ projects.
73
+
74
+ ### The Solution: "Symlink Bridge"
75
+
76
+ | Layer | Location | Purpose |
77
+ | :--- | :--- | :--- |
78
+ | **1. Global Brain** | `~/.agents/` | **Single Source of Truth**. Hosted in your user home. Updated via `npm update -g`. |
79
+ | **2. Local Project** | `./.cursor/skills/` | **Symlinks** pointing to the Global Brain. Lightweight and bridge-like. |
80
+ | **3. Context** | `./CLAUDE.md` | Points to **Local Symlinks** (Relative Paths). **100% Portable** to other devs. |
81
+
82
+ ### Why `init` and `install` are separate?
83
+ 1. **`lmagent init`**: Creates the **Portable Structure** (files that *must* exist in the repo to work, like `CLAUDE.md`).
84
+ 2. **`lmagent install`**: Builds the **Bridge** (Symlinks) specific to *your* machine's environment.
85
+
86
+ > **Best Practice**: Commit `CLAUDE.md` and `AGENTS.md`. **Do NOT** commit the `.cursor/skills` folder (add it to `.gitignore`), as each developer should run `lmagent install` to link their own brain.
87
+
88
+ ---
89
+
66
90
  ## 🛠️ Creating New Skills
67
91
  Need a custom agent? Use the interactive generator:
68
92
 
package/install.js CHANGED
@@ -29,6 +29,7 @@ const INIT_DIRS = [
29
29
  { src: 'config', desc: 'Configuración del framework' },
30
30
  { src: 'templates', desc: 'Templates de proyecto' },
31
31
  { src: 'docs', desc: 'Documentación extendida' },
32
+ { src: 'workflows', desc: 'SOPs y Procedimientos' },
32
33
  ];
33
34
 
34
35
  // Configuración: IDEs y Agentes soportados
@@ -368,7 +369,7 @@ const IDE_CONFIGS = [
368
369
  program
369
370
  .name('lmagent')
370
371
  .description('CLI para instalar skills y reglas de LMAgent')
371
- .version('2.6.3'); // Version bump
372
+ .version('2.7.0'); // Version bump
372
373
 
373
374
  program.command('install')
374
375
  .description('Instalar skills, rules y workflows en el IDE del proyecto')
@@ -514,6 +515,7 @@ async function runInstall(options) {
514
515
  installTarget = targetAnswer.target;
515
516
  targetRoot = (installTarget === 'user') ? userHome : projectRoot;
516
517
 
518
+ console.log('');
517
519
  const methodAnswer = await inquirer.prompt([
518
520
  {
519
521
  type: 'list',
@@ -587,33 +589,46 @@ async function runInstall(options) {
587
589
 
588
590
  console.log('');
589
591
  console.log(chalk.gray('--- Selección de Contenido ---'));
590
- const contentAnswers = await inquirer.prompt([
592
+ // Seleccionar Skills
593
+ console.log(chalk.bold('\n🔹 Skills Disponibles:'));
594
+ const skillsAnswer = await inquirer.prompt([
591
595
  {
592
596
  type: 'checkbox',
593
597
  name: 'skills',
594
- message: 'Selecciona los Skills:',
598
+ message: 'Selecciona:',
595
599
  choices: availableSkills.map(s => ({ name: s, checked: true })),
596
600
  pageSize: 15
597
- },
601
+ }
602
+ ]);
603
+ selectedSkills = skillsAnswer.skills;
604
+
605
+ // Seleccionar Rules
606
+ console.log(chalk.bold('\n🔹 Reglas Disponibles:'));
607
+ const rulesAnswer = await inquirer.prompt([
598
608
  {
599
609
  type: 'checkbox',
600
610
  name: 'rules',
601
- message: 'Selecciona las Reglas:',
611
+ message: 'Selecciona:',
602
612
  choices: availableRules.map(r => ({ name: r, checked: true })),
603
613
  pageSize: 15
604
- },
614
+ }
615
+ ]);
616
+ selectedRules = rulesAnswer.rules;
617
+
618
+ // Seleccionar Workflows
619
+ console.log(chalk.bold('\n🔹 Workflows Disponibles:'));
620
+ const workflowsAnswer = await inquirer.prompt([
605
621
  {
606
622
  type: 'checkbox',
607
623
  name: 'workflows',
608
- message: 'Selecciona los Workflows:',
624
+ message: 'Selecciona:',
609
625
  choices: availableWorkflows.map(w => ({ name: w, checked: true })),
610
626
  pageSize: 15
611
627
  }
612
628
  ]);
613
- selectedSkills = contentAnswers.skills;
614
- selectedRules = contentAnswers.rules;
615
- selectedWorkflows = contentAnswers.workflows;
629
+ selectedWorkflows = workflowsAnswer.workflows;
616
630
 
631
+ console.log('');
617
632
  const { confirm } = await inquirer.prompt([{
618
633
  type: 'confirm',
619
634
  name: 'confirm',
@@ -843,6 +858,7 @@ function getAllItems(dir, isNested) {
843
858
  // ============================================
844
859
 
845
860
  async function runInit(options) {
861
+ let targetIdes = []; // Initialize targetIdes
846
862
  console.clear();
847
863
  const branding = figlet.textSync('LMAGENT', { font: 'ANSI Shadow' });
848
864
  console.log(gradient.pastel.multiline(branding));
@@ -896,36 +912,72 @@ async function runInit(options) {
896
912
  }))
897
913
  }
898
914
  ]);
899
- filesToCopy = INIT_FILES.filter(f => answers.files.includes(f.src));
900
915
  dirsToCopy = INIT_DIRS.filter(d => answers.dirs.includes(d.src));
916
+
917
+ // Seleccionar IDE para destino de archivos
918
+ console.log('');
919
+ const ideAnswer = await inquirer.prompt([
920
+ {
921
+ type: 'checkbox',
922
+ name: 'ides',
923
+ message: 'Selecciona tu IDE principal (para ubicar las carpetas):',
924
+ choices: IDE_CONFIGS.filter(i => i.value !== 'custom').map(i => ({
925
+ name: i.name,
926
+ value: i.value,
927
+ checked: i.value === 'cursor'
928
+ }))
929
+ }
930
+ ]);
931
+ targetIdes = IDE_CONFIGS.filter(i => ideAnswer.ides.includes(i.value));
932
+ } else {
933
+ // Defaults for non-interactive
934
+ targetIdes = [IDE_CONFIGS.find(i => i.value === 'cursor')];
901
935
  }
902
936
 
903
- // Copiar archivos individuales
904
- console.log(chalk.bold('\n📄 Copiando archivos de proyecto:'));
905
- for (const file of filesToCopy) {
906
- const src = path.join(__dirname, file.src);
907
- const dest = path.join(projectRoot, file.src);
908
- if (fs.existsSync(src)) {
909
- const exists = fs.existsSync(dest);
910
- fs.copyFileSync(src, dest);
911
- console.log(` ${chalk.green('✔')} ${file.src} ${exists ? chalk.yellow('(actualizado)') : chalk.green('(nuevo)')}`);
912
- } else {
913
- console.log(` ${chalk.red('✘')} ${file.src} ${chalk.red('(no encontrado en el paquete)')}`);
937
+ // Copiar archivos del framework a la carpeta del Agente (Clean Root)
938
+ console.log(chalk.bold('\n📦 Instalando framework en directorios de Agente:'));
939
+
940
+ for (const ide of targetIdes) {
941
+ if (!ide.skillsDir) continue; // Skip custom/manual if no dir defined
942
+
943
+ // Determinar "Agent Root" (ej: .cursor/ o .github/)
944
+ // Asume que skillsDir es "root/skills", así que dirname obtiene "root"
945
+ const agentRootDir = path.join(targetRoot, path.dirname(ide.skillsDir));
946
+
947
+ console.log(chalk.dim(` Destino: ${agentRootDir}`));
948
+
949
+ // Crear directorio root si no existe
950
+ if (!fs.existsSync(agentRootDir)) fs.mkdirSync(agentRootDir, { recursive: true });
951
+
952
+ // Copiar Archivos (AGENTS.md, etc - EXCEPTO CLAUDE.md que suele ir en root)
953
+ for (const file of filesToCopy) {
954
+ if (file.src === 'CLAUDE.md') {
955
+ // CLAUDE.md se queda en projectRoot para visibilidad inmediata si se usa Claude
956
+ // Opcional: Podríamos moverlo también, pero por ahora lo dejamos en root para compatibilidad
957
+ const dest = path.join(projectRoot, file.src);
958
+ if (fs.existsSync(path.join(__dirname, file.src))) {
959
+ fs.copyFileSync(path.join(__dirname, file.src), dest);
960
+ console.log(` ${chalk.green('✔')} ${file.src} (Project Root)`);
961
+ }
962
+ continue;
963
+ }
964
+
965
+ const src = path.join(__dirname, file.src);
966
+ const dest = path.join(agentRootDir, file.src);
967
+ if (fs.existsSync(src)) {
968
+ fs.copyFileSync(src, dest);
969
+ console.log(` ${chalk.green('✔')} ${file.src} -> ${path.dirname(ide.skillsDir)}/${file.src}`);
970
+ }
914
971
  }
915
- }
916
972
 
917
- // Copiar directorios
918
- console.log(chalk.bold('\n📁 Copiando directorios:'));
919
- for (const dir of dirsToCopy) {
920
- const src = path.join(__dirname, dir.src);
921
- const dest = path.join(projectRoot, dir.src);
922
- if (fs.existsSync(src)) {
923
- const exists = fs.existsSync(dest);
924
- copyRecursiveSync(src, dest, true);
925
- const itemCount = getAllItemsFlat(src).length;
926
- console.log(` ${chalk.green('✔')} ${dir.src}/ (${itemCount} archivos) ${exists ? chalk.yellow('(actualizado)') : chalk.green('(nuevo)')}`);
927
- } else {
928
- console.log(` ${chalk.red('✘')} ${dir.src}/ ${chalk.red('(no encontrado en el paquete)')}`);
973
+ // Copiar Directorios (docs, config, templates)
974
+ for (const dir of dirsToCopy) {
975
+ const src = path.join(__dirname, dir.src);
976
+ const dest = path.join(agentRootDir, dir.src);
977
+ if (fs.existsSync(src)) {
978
+ copyRecursiveSync(src, dest, true); // Force overwrite
979
+ console.log(` ${chalk.green('✔')} ${dir.src}/ -> ${path.dirname(ide.skillsDir)}/${dir.src}/`);
980
+ }
929
981
  }
930
982
  }
931
983
 
@@ -965,7 +1017,7 @@ DEBUG=true
965
1017
  }
966
1018
 
967
1019
  // Resumen
968
- console.log(gradient.pastel.multiline('\n✨ Proyecto inicializado con LMAgent v2.3.0 ✨'));
1020
+ console.log(gradient.pastel.multiline('\n✨ Proyecto inicializado con LMAgent v2.7.0 ✨'));
969
1021
  console.log('');
970
1022
  console.log(chalk.cyan('Próximos pasos:'));
971
1023
  console.log(` 1. ${chalk.bold('lmagent install')} - Instalar skills/rules/workflows en tu IDE`);
package/package.json CHANGED
@@ -3,7 +3,22 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "2.6.3",
6
+ "version": "2.7.0",
7
+ "files": [
8
+ "install.js",
9
+ "README.md",
10
+ "LICENSE",
11
+ "AGENTS.md",
12
+ "CLAUDE.md",
13
+ "CONTRIBUTING.md",
14
+ "config",
15
+ "docs",
16
+ "rules",
17
+ "scripts",
18
+ "skills",
19
+ "templates",
20
+ "workflows"
21
+ ],
7
22
  "description": "CLI to install LMAgent skills and rules into your IDE",
8
23
  "main": "install.js",
9
24
  "bin": {
@@ -1,6 +1,6 @@
1
1
  # 🚀 LMAgent Bootstrap — Instrucciones Iniciales
2
2
 
3
- > **Tipo**: `rule` | **Versión**: 2.6.3 | **Prioridad**: MÁXIMA
3
+ > **Tipo**: `rule` | **Versión**: 2.7.0 | **Prioridad**: MÁXIMA
4
4
  > Esta regla se aplica **SIEMPRE** como primer paso antes de cualquier tarea.
5
5
 
6
6
  ---
@@ -15,7 +15,7 @@
15
15
 
16
16
  ## 🧠 Framework
17
17
 
18
- Estás trabajando con **LMAgent v2.6.3**. Antes de implementar cualquier cambio:
18
+ Estás trabajando con **LMAgent v2.7.0**. Antes de implementar cualquier cambio:
19
19
 
20
20
  1. **Lee `AGENTS.md`** — Catálogo completo de skills, rules y workflows
21
21
  2. **Clasifica la tarea** — Nivel 0-4 según complejidad (ver `rules/workflow.md`)
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  /**
4
- * LMAgent Skill Generator — v2.6.0
4
+ * LMAgent Skill Generator — v2.7.0
5
5
  *
6
6
  * Genera la estructura completa de un nuevo skill interactivamente.
7
7
  *
@@ -92,7 +92,7 @@ name: ${data.name}
92
92
  description: ${data.description}
93
93
  role: ${data.role}
94
94
  type: ${data.type}
95
- version: 2.3
95
+ version: 2.7
96
96
  icon: ${data.icon}
97
97
  expertise:
98
98
  ${expertise}
@@ -206,13 +206,13 @@ Antes de considerar una tarea terminada, verifica TODO:
206
206
 
207
207
  ---
208
208
 
209
- *Skill version: 2.3 | LMAgent Framework*
209
+ *Skill version: 2.7 | LMAgent Framework*
210
210
  `;
211
211
  }
212
212
 
213
213
  // ─── Main ─────────────────────────────────────────────────────
214
214
  async function main() {
215
- console.log(c.bold('\n🛠️ LMAgent Skill Generator v2.6.3\n'));
215
+ console.log(c.bold('\n🛠️ LMAgent Skill Generator v2.7.0\n'));
216
216
 
217
217
  const prompt = createPrompt();
218
218
 
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  /**
4
- * LMAgent Skills Validator — v2.6.0
4
+ * LMAgent Skills Validator — v2.7.0
5
5
  *
6
6
  * Valida la integridad de todos los skills del framework.
7
7
  * Verifica: frontmatter YAML, campos obligatorios, estructura de directorio.
@@ -29,7 +29,7 @@ const SKILLS_DIR = join(ROOT, 'skills');
29
29
  // ─── Configuración ────────────────────────────────────────────
30
30
  const REQUIRED_FIELDS = ['name', 'description', 'role', 'type', 'version', 'icon', 'expertise', 'activates_on', 'triggers'];
31
31
  const VALID_TYPES = ['agent_persona', 'methodology'];
32
- const CURRENT_VERSION = 2.6;
32
+ const CURRENT_VERSION = 2.7;
33
33
  const OPTIONAL_DIRS = ['scripts', 'references', 'assets'];
34
34
 
35
35
  // ─── Colores (sin dependencias) ───────────────────────────────
@@ -194,12 +194,13 @@ function validateSkill(skillDir) {
194
194
  function main() {
195
195
  const filterSkill = process.argv[2];
196
196
 
197
- console.log(gradient.pastel.multiline('\n🚀 LMAgent Skills Validator v2.6.3\n'));
197
+ const c = chalk;
198
+
199
+ console.log(c.bold('\n🔍 LMAgent Skill Validator v2.7.0\n'));
198
200
  console.log(chalk.dim(` Directorio: ${SKILLS_DIR}`));
199
201
  console.log(chalk.dim(` Campos obligatorios: ${REQUIRED_FIELDS.length}`));
200
202
  console.log('');
201
203
 
202
- const c = chalk;
203
204
 
204
205
  if (!existsSync(SKILLS_DIR)) {
205
206
  console.error(c.red('❌ No se encontró el directorio skills/'));
@@ -3,7 +3,7 @@ name: AI Agent Engineer
3
3
  description: Especialista en diseño, desarrollo y optimización de agentes de inteligencia artificial y flujos RAG.
4
4
  role: Diseño y Desarrollo de Agentes IA
5
5
  type: agent_persona
6
- version: 2.6
6
+ version: 2.7
7
7
  icon: 🤖
8
8
  expertise:
9
9
  - LLM integration
@@ -3,7 +3,7 @@ name: API Designer
3
3
  description: Arquitecto de APIs REST y GraphQL con enfoque en diseño consistente, documentación OpenAPI y experiencia del desarrollador.
4
4
  role: Especialista en Diseño de APIs y Developer Experience
5
5
  type: agent_persona
6
- version: 2.6
6
+ version: 2.7
7
7
  icon: 🔌
8
8
  expertise:
9
9
  - REST API design
@@ -426,4 +426,4 @@ components:
426
426
 
427
427
  ---
428
428
 
429
- *Skill version: 2.3 | LMAgent Framework*
429
+
@@ -3,7 +3,7 @@ name: Architect
3
3
  description: Diseño de arquitectura de software, patrones de diseño y estructuración de sistemas robustos.
4
4
  role: Senior Solutions Architect - Diseño de Sistemas Distribuidos
5
5
  type: agent_persona
6
- version: 2.6
6
+ version: 2.7
7
7
  icon: 🏛️
8
8
  expertise:
9
9
  - System Design
@@ -3,7 +3,7 @@ name: Automation Engineer
3
3
  description: Automatización de flujos de trabajo, procesos repetitivos e integración de herramientas.
4
4
  role: Automatización e Integraciones
5
5
  type: agent_persona
6
- version: 2.6
6
+ version: 2.7
7
7
  icon: ⚙️
8
8
  expertise:
9
9
  - n8n workflows
@@ -3,7 +3,7 @@ name: Backend Engineer
3
3
  description: Desarrollo de lógica de servidor, gestión de bases de datos, APIs y servicios escalables.
4
4
  role: Senior Backend Engineer & Tech Lead - Ingeniería de Software Robusta
5
5
  type: agent_persona
6
- version: 2.6
6
+ version: 2.7
7
7
  icon: ⚙️
8
8
  expertise:
9
9
  - Python 3.12+ (FastAPI, SQLModel, Pydantic v2)
@@ -3,7 +3,7 @@ name: BMAD Methodology
3
3
  description: Experto en la aplicación de la metodología Best Model Agent Driven (BMAD).
4
4
  role: Scale-Adaptive Intelligence & Project Orchestration
5
5
  type: methodology
6
- version: 2.6
6
+ version: 2.7
7
7
  icon: 🧠
8
8
  expertise:
9
9
  - Scale-Adaptive Intelligence (Levels 0-4)
@@ -198,5 +198,5 @@ BMAD coordina personas según la fase del proyecto:
198
198
 
199
199
  ---
200
200
 
201
- *Skill version: 2.3 | Inspirado en BMAD-METHOD Scale-Adaptive Intelligence*
201
+
202
202
  *Compatible con: Spec-Driven Development + SWE-Agent*
@@ -3,7 +3,7 @@ name: Browser Agent
3
3
  description: Automatización inteligente de navegador con Playwright/Puppeteer para scraping, auditorías, flujos interactivos y extracción de datos.
4
4
  role: Automatización de Navegador para Agentes IA
5
5
  type: agent_persona
6
- version: 2.6
6
+ version: 2.7
7
7
  icon: 🌐
8
8
  expertise:
9
9
  - Browser Automation (Playwright, Puppeteer)
@@ -3,7 +3,7 @@ name: Code Reviewer
3
3
  description: Especialista en revisiones de código sistemáticas, asegurando calidad, seguridad y mantenibilidad.
4
4
  role: Experto en Code Review y Calidad de Código
5
5
  type: agent_persona
6
- version: 2.6
6
+ version: 2.7
7
7
  icon: 🔍
8
8
  expertise:
9
9
  - Code review sistemático
@@ -303,4 +303,4 @@ def add_item(item, items=None):
303
303
 
304
304
  ---
305
305
 
306
- *Skill version: 2.3 | LMAgent Framework*
306
+
@@ -3,7 +3,7 @@ name: Data Engineer / DBA
3
3
  description: Gestión de pipelines de datos, almacenamiento, procesamiento y análisis de información.
4
4
  role: Diseño y Administración de Bases de Datos
5
5
  type: agent_persona
6
- version: 2.6
6
+ version: 2.7
7
7
  icon: 🗜️
8
8
  expertise:
9
9
  - PostgreSQL/MySQL
@@ -3,7 +3,7 @@ name: DevOps Engineer
3
3
  description: Configuración de CI/CD, infraestructura en la nube, contenedores y automatización de despliegues.
4
4
  role: Infrastructure, CI/CD y Operaciones
5
5
  type: agent_persona
6
- version: 2.6
6
+ version: 2.7
7
7
  icon: 🚀
8
8
  expertise:
9
9
  - Docker/Kubernetes
@@ -3,7 +3,7 @@ name: Document Generator
3
3
  description: Generación programática de documentos formales (PDF, DOCX, XLSX, PPTX) con librerías especializadas.
4
4
  role: Generación de Documentos de Oficina
5
5
  type: agent_persona
6
- version: 2.6
6
+ version: 2.7
7
7
  icon: 📄
8
8
  expertise:
9
9
  - PDF Generation (pdfmake, jsPDF, Puppeteer)
@@ -3,7 +3,7 @@ name: Frontend Engineer
3
3
  description: Desarrollo de interfaces de usuario modernas, responsivas y centradas en la experiencia del usuario.
4
4
  role: Desarrollo de Interfaces de Usuario
5
5
  type: agent_persona
6
- version: 2.6
6
+ version: 2.7
7
7
  icon: 🎨
8
8
  expertise:
9
9
  - React 18+ / Next.js 14+
@@ -3,7 +3,7 @@ name: Git Workflow
3
3
  description: Experto en estrategias de branching, flujos de trabajo Git, y gestión de releases.
4
4
  role: Especialista en Git Workflows y Release Management
5
5
  type: agent_persona
6
- version: 2.6
6
+ version: 2.7
7
7
  icon: 🌿
8
8
  expertise:
9
9
  - Git branching strategies
@@ -371,4 +371,4 @@ git rebase --abort # Volver al estado anterior
371
371
 
372
372
  ---
373
373
 
374
- *Skill version: 2.3 | LMAgent Framework*
374
+
@@ -3,7 +3,7 @@ name: MCP Builder
3
3
  description: Experto en construir MCP Servers, Tools, Resources y Prompts para extender agentes de IA.
4
4
  role: Especialista en Model Context Protocol y Agent Tooling
5
5
  type: agent_persona
6
- version: 2.6
6
+ version: 2.7
7
7
  icon: 🔧
8
8
  expertise:
9
9
  - Model Context Protocol (MCP)
@@ -468,4 +468,4 @@ return {
468
468
 
469
469
  ---
470
470
 
471
- *Skill version: 2.3 | LMAgent Framework*
471
+
@@ -3,7 +3,7 @@ name: Mobile Engineer
3
3
  description: Desarrollo de aplicaciones móviles utilizando React Native, Expo y otras tecnologías nativas.
4
4
  role: Desarrollo de Aplicaciones Móviles
5
5
  type: agent_persona
6
- version: 2.6
6
+ version: 2.7
7
7
  icon: 📱
8
8
  expertise:
9
9
  - React Native / Expo
@@ -3,7 +3,7 @@ name: Orchestrator
3
3
  description: Agente orquestador encargado de dirigir las solicitudes al experto más adecuado.
4
4
  role: Meta-Agent que decide qué persona y workflow activar
5
5
  type: agent_persona
6
- version: 2.6
6
+ version: 2.7
7
7
  icon: 🎯
8
8
  expertise:
9
9
  - Task classification
@@ -3,7 +3,7 @@ name: Performance Engineer
3
3
  description: Especialista en identificación y resolución de cuellos de botella para optimizar el rendimiento y la escalabilidad.
4
4
  role: Optimización de Rendimiento y Escalabilidad
5
5
  type: agent_persona
6
- version: 2.6
6
+ version: 2.7
7
7
  icon: 🏎️
8
8
  expertise:
9
9
  - Performance profiling
@@ -3,7 +3,7 @@ name: Product Manager
3
3
  description: Definición de la visión del producto, roadmap y requisitos detallados para maximizar el valor al usuario.
4
4
  role: Senior Product Manager - Estrategia y Visión de Producto
5
5
  type: agent_persona
6
- version: 2.6
6
+ version: 2.7
7
7
  icon: 📊
8
8
  expertise:
9
9
  - Product Strategy
@@ -3,7 +3,7 @@ name: Prompt Engineer
3
3
  description: Optimización de prompts para maximizar la calidad, precisión y razonamiento de los outputs de los LLMs.
4
4
  role: Ingeniería de Prompts y Arquitectura Cognitiva
5
5
  type: agent_persona
6
- version: 2.6
6
+ version: 2.7
7
7
  icon: 🧠
8
8
  expertise:
9
9
  - Advanced Prompting (CoT, ToT, ReAct)
@@ -3,7 +3,7 @@ name: QA Engineer
3
3
  description: Aseguramiento de la calidad mediante pruebas automatizadas, manuales y validación rigurosa de criterios de aceptación.
4
4
  role: Testing y Aseguramiento de Calidad
5
5
  type: agent_persona
6
- version: 2.6
6
+ version: 2.7
7
7
  icon: 🧪
8
8
  expertise:
9
9
  - Unit testing (pytest, jest)
@@ -3,7 +3,7 @@ name: Scrum Master
3
3
  description: Facilitador de metodologías ágiles enfocado en la eliminación de obstáculos y la mejora continua del equipo.
4
4
  role: Agile Coach & Senior Scrum Master - Facilitador de Alto Rendimiento
5
5
  type: agent_persona
6
- version: 2.6
6
+ version: 2.7
7
7
  icon: 🏉
8
8
  expertise:
9
9
  - Agile Methodologies (Scrum, Kanban, XP)
@@ -3,7 +3,7 @@ name: Security Analyst
3
3
  description: Auditoría de vulnerabilidades, protección de datos y cumplimiento de estándares de seguridad internacionales.
4
4
  role: Seguridad y Compliance
5
5
  type: agent_persona
6
- version: 2.6
6
+ version: 2.7
7
7
  icon: 🛡️
8
8
  expertise:
9
9
  - Application security
@@ -3,7 +3,7 @@ name: SEO Auditor
3
3
  description: Auditoría técnica completa de sitios web incluyendo SEO on-page, Core Web Vitals, accesibilidad WCAG, schema markup y Open Graph.
4
4
  role: Auditoría Web y SEO Técnico
5
5
  type: agent_persona
6
- version: 2.6
6
+ version: 2.7
7
7
  icon: 🔎
8
8
  expertise:
9
9
  - SEO On-Page & Technical SEO
@@ -3,7 +3,7 @@ name: Spec-Driven Agentic Development
3
3
  description: Metodología de desarrollo basada rigurosamente en especificaciones y contratos técnicos para garantizar trazabilidad.
4
4
  role: Development Methodology - Specification as Source of Truth
5
5
  type: methodology
6
- version: 2.6
6
+ version: 2.7
7
7
  icon: 📋
8
8
  expertise:
9
9
  - Specification-first development
@@ -338,5 +338,5 @@ User Input → Orchestrator clasifica nivel
338
338
 
339
339
  ---
340
340
 
341
- *Skill version: 2.3 | SPEC+LM Methodology*
341
+
342
342
  *Compatible con: BMAD-METHOD + SWE-Agent*
@@ -3,7 +3,7 @@ name: Supabase Expert
3
3
  description: Especialista en Supabase, incluyendo PostgreSQL, RLS, Edge Functions, Auth, Realtime y Storage.
4
4
  role: Experto en Supabase Platform & PostgreSQL
5
5
  type: agent_persona
6
- version: 2.6
6
+ version: 2.7
7
7
  icon: ⚡
8
8
  expertise:
9
9
  - Supabase platform
@@ -599,4 +599,4 @@ CREATE INDEX idx_users_auth_id ON public.users(auth_id);
599
599
 
600
600
  ---
601
601
 
602
- *Skill version: 2.3 | LMAgent Framework*
602
+
@@ -3,7 +3,7 @@ name: SWE-Agent
3
3
  description: Agente de ingeniería de software especializado en la resolución autónoma de issues y refactorización sistemática.
4
4
  role: Autonomous Software Engineering Agent
5
5
  type: methodology
6
- version: 2.6
6
+ version: 2.7
7
7
  icon: 🔧
8
8
  expertise:
9
9
  - Autonomous issue resolution
@@ -307,5 +307,5 @@ SWE-Agent utiliza el sistema de herramientas definido en el framework:
307
307
 
308
308
  ---
309
309
 
310
- *Skill version: 2.3 | Inspirado en SWE-agent (Princeton NLP)*
310
+
311
311
  *Compatible con: BMAD-METHOD + Spec-Driven Development*
@@ -3,7 +3,7 @@ name: Systematic Debugger
3
3
  description: Metodología rigurosa de debugging en 4 fases para encontrar la causa raíz antes de aplicar cualquier fix.
4
4
  role: Debugging Metódico y Resolución de Problemas
5
5
  type: agent_persona
6
- version: 2.6
6
+ version: 2.7
7
7
  icon: 🔍
8
8
  activates_on:
9
9
  - Debugging de bugs y errores
@@ -3,7 +3,7 @@ name: Tech Lead
3
3
  description: Liderazgo técnico, revisión de código crítica y establecimiento de mejores prácticas de ingeniería de software.
4
4
  role: Liderazgo Técnico y Mentorship
5
5
  type: agent_persona
6
- version: 2.6
6
+ version: 2.7
7
7
  icon: 🧭
8
8
  expertise:
9
9
  - Technical decision making
@@ -3,7 +3,7 @@ name: Technical Writer
3
3
  description: Creación de documentación técnica clara, manuales de usuario y guías que reducen la curva de aprendizaje.
4
4
  role: Documentación Técnica y Comunicación
5
5
  type: agent_persona
6
- version: 2.6
6
+ version: 2.7
7
7
  icon: 📝
8
8
  expertise:
9
9
  - API documentation
@@ -3,7 +3,7 @@ name: Testing Strategist
3
3
  description: Experto en estrategias de testing automatizado, TDD/BDD, y frameworks de testing modernos.
4
4
  role: Especialista en Testing Strategy y Quality Assurance Automation
5
5
  type: agent_persona
6
- version: 2.6
6
+ version: 2.7
7
7
  icon: 🧪
8
8
  expertise:
9
9
  - Test-Driven Development (TDD)
@@ -473,4 +473,4 @@ it('should debounce search', async () => {
473
473
 
474
474
  ---
475
475
 
476
- *Skill version: 2.3 | LMAgent Framework*
476
+
@@ -3,7 +3,7 @@ name: UX/UI Designer
3
3
  description: Diseño visual e interactivo centrado en la usabilidad, estética moderna y accesibilidad universal.
4
4
  role: Diseño de Experiencia e Interfaz de Usuario
5
5
  type: agent_persona
6
- version: 2.6
6
+ version: 2.7
7
7
  icon: 🎨
8
8
  expertise:
9
9
  - User Experience (UX)
package/.editorconfig DELETED
@@ -1,18 +0,0 @@
1
- # EditorConfig helps maintain consistent coding styles
2
- # https://editorconfig.org
3
-
4
- root = true
5
-
6
- [*]
7
- charset = utf-8
8
- end_of_line = lf
9
- insert_final_newline = true
10
- trim_trailing_whitespace = true
11
- indent_style = space
12
- indent_size = 2
13
-
14
- [*.md]
15
- trim_trailing_whitespace = false
16
-
17
- [*.py]
18
- indent_size = 4
package/pyproject.toml DELETED
@@ -1,182 +0,0 @@
1
- [project]
2
- name = "lmagent"
3
- version = "2.3.0"
4
- description = "Framework for automation and AI agent development"
5
- readme = "README.md"
6
- license = { text = "MIT" }
7
- requires-python = ">=3.12"
8
- authors = [
9
- { name = "QuBiit0", email = "info@leandroalvarez.com.ar" }
10
- ]
11
- keywords = [
12
- "ai",
13
- "agents",
14
- "automation",
15
- "llm",
16
- "framework",
17
- "mcp"
18
- ]
19
- classifiers = [
20
- "Development Status :: 5 - Production/Stable",
21
- "Intended Audience :: Developers",
22
- "License :: OSI Approved :: MIT License",
23
- "Programming Language :: Python :: 3",
24
- "Programming Language :: Python :: 3.12",
25
- "Programming Language :: Python :: 3.13",
26
- "Topic :: Software Development :: Libraries :: Application Frameworks",
27
- "Topic :: Scientific/Engineering :: Artificial Intelligence",
28
- ]
29
-
30
- dependencies = [
31
- "pydantic>=2.10",
32
- "pydantic-settings>=2.4",
33
- "pyyaml>=6.0",
34
- "structlog>=24.1",
35
- "httpx>=0.27",
36
- "python-dotenv>=1.0",
37
- "fastapi>=0.115",
38
- "sqlmodel>=0.0.22",
39
- "litellm>=1.45",
40
- ]
41
-
42
- [project.optional-dependencies]
43
- dev = [
44
- "pytest>=8.0",
45
- "pytest-asyncio>=0.23",
46
- "pytest-cov>=5.0",
47
- "ruff>=0.5",
48
- "mypy>=1.10",
49
- "pre-commit>=3.7",
50
- ]
51
- llm = [
52
- "openai>=1.40",
53
- "anthropic>=0.30",
54
- "google-generativeai>=0.7",
55
- "litellm>=1.45",
56
- "langchain>=0.2.10",
57
- "langgraph>=0.1.5",
58
- ]
59
- tools = [
60
- "aiohttp>=3.10",
61
- "asyncpg>=0.29",
62
- "redis>=5.0",
63
- "pandas>=2.2",
64
- ]
65
- all = [
66
- "lmagent[dev]",
67
- "lmagent[llm]",
68
- "lmagent[tools]",
69
- ]
70
-
71
- [project.urls]
72
- Homepage = "https://github.com/QuBiit0/lmagent"
73
- Documentation = "https://github.com/QuBiit0/lmagent#readme"
74
- Repository = "https://github.com/QuBiit0/lmagent"
75
- Issues = "https://github.com/QuBiit0/lmagent/issues"
76
-
77
- # [build-system]
78
- # requires = ["hatchling"]
79
- # build-backend = "hatchling.build"
80
-
81
- # [tool.hatch.build.targets.wheel]
82
- # packages = ["agents"]
83
-
84
- # ============================================
85
- # RUFF (Linter & Formatter)
86
- # ============================================
87
-
88
- [tool.ruff]
89
- target-version = "py312"
90
- line-length = 100
91
- exclude = [
92
- ".git",
93
- ".venv",
94
- "venv",
95
- "__pycache__",
96
- "node_modules",
97
- ".ruff_cache",
98
- ]
99
-
100
- [tool.ruff.lint]
101
- select = [
102
- "E", # pycodestyle errors
103
- "W", # pycodestyle warnings
104
- "F", # pyflakes
105
- "I", # isort
106
- "B", # flake8-bugbear
107
- "C4", # flake8-comprehensions
108
- "UP", # pyupgrade
109
- "ARG", # flake8-unused-arguments
110
- "SIM", # flake8-simplify
111
- ]
112
- ignore = [
113
- "E501", # line too long (handled by formatter)
114
- "B008", # do not perform function calls in argument defaults
115
- ]
116
-
117
- [tool.ruff.lint.isort]
118
- known-first-party = ["agents", "lmagent"]
119
-
120
- [tool.ruff.format]
121
- quote-style = "double"
122
- indent-style = "space"
123
- skip-magic-trailing-comma = false
124
-
125
- # ============================================
126
- # MYPY (Type Checking)
127
- # ============================================
128
-
129
- [tool.mypy]
130
- python_version = "3.12"
131
- warn_return_any = true
132
- warn_unused_ignores = true
133
- disallow_untyped_defs = true
134
- disallow_incomplete_defs = true
135
- check_untyped_defs = true
136
- ignore_missing_imports = true
137
- exclude = [
138
- "tests",
139
- "venv",
140
- ".venv",
141
- ]
142
-
143
- # ============================================
144
- # PYTEST
145
- # ============================================
146
-
147
- [tool.pytest.ini_options]
148
- minversion = "7.0"
149
- asyncio_mode = "auto"
150
- testpaths = ["tests"]
151
- python_files = ["test_*.py", "*_test.py"]
152
- python_functions = ["test_*"]
153
- addopts = [
154
- "-v",
155
- "--tb=short",
156
- "--strict-markers",
157
- ]
158
- markers = [
159
- "slow: marks tests as slow",
160
- "integration: marks tests as integration tests",
161
- ]
162
- filterwarnings = [
163
- "ignore::DeprecationWarning",
164
- ]
165
-
166
- [tool.coverage.run]
167
- source = ["agents"]
168
- branch = true
169
- omit = [
170
- "*/tests/*",
171
- "*/__pycache__/*",
172
- ]
173
-
174
- [tool.coverage.report]
175
- exclude_lines = [
176
- "pragma: no cover",
177
- "def __repr__",
178
- "raise NotImplementedError",
179
- "if __name__ == .__main__.:",
180
- "if TYPE_CHECKING:",
181
- ]
182
- fail_under = 80