Skip to content

[FEATURE] Refactorizar skills-map a arquitectura de plugins autosuficientes #89

@Angelito91

Description

@Angelito91

Is your feature request related to a problem? Please describe.

📌 Problema

El archivo skills-map.ts (1300 líneas) mezcla todo en un monolito:

  • Tecnologías frontend, backend, mobile, cloud
  • Lógica de detección
  • Skills y configuraciones

Dificulta:

  • ❌ Agregar nuevas tecnologías
  • ❌ Conflictos de merge en equipo
  • ❌ Mantener código escalable

Describe the solution you'd like

✅ Solución: Plugins Autosuficientes

Dividir en módulos independientes donde cada categoría tiene todo integrado: detección, skills y configuración.

Estructura Nueva

skills-map/
├── types.ts                    (interfaces compartidas)
├── loader.ts                   (orquestador)
├── categories/
│   ├── frontend/
│   │   ├── config.ts          (FRONTEND_PACKAGES, patrones)
│   │   ├── detect.ts          (detectFrontend())
│   │   ├── skills.ts          (FRONTEND_TECHNOLOGIES)
│   │   └── index.ts
│   ├── backend/
│   │   ├── config.ts
│   │   ├── detect.ts
│   │   ├── skills.ts
│   │   └── index.ts
│   ├── mobile/, cloud/, data/, auth/, testing/, other/
│   │   └── (misma estructura)
└── combos/
    └── index.ts               (combos de skills)

🎯 Cómo Funciona

Cada categoría es completamente independiente:

frontend/config.ts
├─ PACKAGES: ["react", "vue", "svelte"]
├─ CONFIG_FILES: ["react.config.js"]
└─ EXTENSIONS: [".jsx", ".tsx"]

frontend/detect.ts
└─ detectFrontend(projectDir, pkg)
   Busca en: packages → config files → extensiones

frontend/skills.ts
└─ FRONTEND_TECHNOLOGIES: [
     { id: "react", skills: [...] },
     { id: "vue", skills: [...] }
   ]

El loader.ts orquesta todo:

detectAllTechnologies()  ejecuta todos los detectores en paralelo

✨ Ventajas

Aspecto Beneficio
Independencia Cada módulo = su lógica completa
Escalabilidad Agregar React Native = nueva carpeta, sin tocar nada
Paralelismo Equipos pueden trabajar en categorías diferentes
Mantenibilidad Cambiar detección de React = solo frontend/detect.ts
Testing Testear detectFrontend() sin tocar backend

📋 Plan de Trabajo

  • Crear skills-map/ con estructura base
  • Mover types.ts y constants.ts
  • Crear categories/frontend/, backend/, mobile/, etc.
  • Implementar detect.ts, skills.ts, config.ts en cada categoría
  • Crear loader.ts con orquestación
  • Actualizar lib.ts para usar nuevo sistema
  • Eliminar skills-map.ts antiguo
  • Tests & validación

🚀 Resultado

  • Modularidad: 8 carpetas pequeñas en lugar de 1 archivo de 1300 líneas
  • Crecimiento: Escalable a miles de skills sin problemas
  • Colaboración: Equipos pueden agregar skills sin conflictos

Describe alternatives you've considered

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions