Skeleton
¿Que es Skeleton?
Skeleton es una herramienta de línea de comandos (CLI) diseñada para facilitar el desarrollo de widgets en la plataforma de Kommo. Automatiza el proceso de configuración, despliegue y documentación, generando una estructura básica de proyecto (esqueleto) con React, TypeScript y otras tecnologías modernas.
- Permite crear widgets personalizados de forma rápida.
- Incluye tipado, documentación y opciones de localización.
- Mejora la experiencia del desarrollador al reducir errores y tiempos de desarrollo.
¿Por qué utilizarlo?
Skeleton resuelve los principales problemas que enfrentan los desarrolladores al trabajar con widgets en Kommo:
- Falta de documentación clara sobre frameworks modernos.
- Dificultad para configurar entornos de desarrollo y desplegar widgets.
- Necesidad de personalización y escalabilidad.
Ventajas:
- Acelera el desarrollo.
- Mejora la calidad del código.
- Reduce errores.
- Disminuye la carga del equipo de soporte.
Lógica de funcionamiento
Ejecuta px @kommo-crm/create-integration
en tu terminal (añade las banderas --project-name
y --en/
--es/
--pt
para omitir los pasos interactivos).
Paso 2: Si no utilizaste banderas, selecciona un idioma (inglés, español o portugués) cuando se te solicite.
Paso 3: Ingresa el nombre del directorio del proyecto. La CLI creará una carpeta para tu widget.
Paso 4: Elige el/los idioma(s) que necesites; la herramienta creará una carpeta /i18n
con archivos JSON de traducción (en.json, es.json, etc.).
Paso 5: La CLI te guía en la configuración del manifest para cualquier campo adicional requerido.
Lista de ubicaciones
Esta tabla muestra todas las ubicaciones donde un widget puede estar disponible dentro de Kommo.
List of locations
list of locations | Nombres posibles en la lista |
---|---|
lcard-1 | El widget está en el panel derecho del perfil de un lead |
lcard-0 | El widget se inicializa en el perfil de un lead |
ccard-1 | El widget está en el panel derecho del perfil de un contacto |
ccard-0 | El widget está en el panel derecho del perfil de un contacto |
comcard-1 | El widget se inicializa en el perfil de un contacto |
comcard-0 | El widget está en el panel derecho del perfil de una compañía |
llist-1 | El widget está disponible en el menú de la lista de leads |
llist-0 | El widget se inicializa en la lista de leads |
clist-1 | El widget está disponible en el menú de la lista de contactos |
clist-0 | El widget se inicializa en la lista de contactos |
tlist-1 | El widget está disponible en el menú de la lista de tareas |
tlist-0 | El widget se inicializa en la lista de tareas |
settings | Modal de configuración del widget |
advanced_settings | Página del widget en configuraciones avanzadas |
card_sdk | El widget dentro de una tarjeta vía SDK |
catalogs | El widget está en la lista de catálogos |
digital_pipeline | El widget está en las configuraciones de automatización (Pipeline digital) |
lead_sources | El widget está en fuentes de leads |
widget_page | Widget en el menú a la izquierda (integraciones públicas). Más información: Barra de menú izquierda |
sms | SMS |
mobile_card *** | Aplicación móvil |
salesbot_designer | Área de diseño de Salesbot |
website_chat_button | Botón de chat web |
everywhere | En todas partes |
El arreglolocations
en manifest.json
determina dónde — y cómo — los usuarios verán tu widget.
Propiedades adicionales para el manifest.json
Esta tabla asigna cada ubicación especial al bloque JSON que debes añadir en 'manifest.json'
:
Ubicación | Propiedades adicionales en el manifest.json | Descripción |
---|---|---|
Pipeline digital | "dp": { "action_multiple": false,"webhook_url": "https://example.com/webhook" | Controla las acciones de múltiples elementos y establece el endpoint de webhook que Kommo llamará |
Configuración avanzada | "advanced": { "title": "advanced.title"} | Solo necesita el título de la pestaña que aparece en Configuraciones avanzadas |
Aplicación móvil | "mobile": { "frame_url": "https://example.com/","color": "#ffff00"} | URL cargada dentro de la aplicación móvil de Kommo, además del color del encabezado |
SMS | "sms": { "endpoint": "https://example.com/sms_endpoint"} | Endpoint que Kommo utilizará al enviar SMS |
Incluye solo los bloques que coincidan con las ubicaciones que seleccionaste — de lo contrario Kommo rechazará el manifest
Estructura del proyecto

Tipado en TypeScript:
- Métodos del ciclo de vida del widget (
init(), render(), settings()
...) - Métodos internos (
get_settings()
, etc.) - Variable
APP
para interactuar con la API de Kommo
Estructura mínima
📁/images
Required logos in predefined sizes:
logo_main.png
– 400x272logo_medium.png
logo_small.png
logo_min.png
logo_dp.png
– si el digital pipeline está habilitado
📁 /i18n
Archivos de traducción: en.json
, es.json
, pt.json
📄 manifest.json
Describe los idiomas, las ubicaciones seleccionadas y cualquier propiedad adicional requerida.
📄 script.js
Script compilado para inicializar el widget y cargar las bibliotecas.
Activar el modo de desarrollo después de subir el archivo del widget
Paso 1: Configurar el entorno
Antes de comenzar a desarollar o a compilar el widget para producción, completa las variables de entorno necesarias. El proyecto incluye dos archivos de entorno predefinidos:
.dev.env
— se utiliza en el desarrollo.prod.env
— se utiliza durante la compilación para producción
Actualiza estos archivos con los valores correspondientes.
¡Importante Nunca subas estos archivos con secretos reales al control de versiones. Utiliza una gestión de secretos específica por entorno en CI/CD para el despliegue.
Paso 2: Desarrollo
Opción A: Con Docker y Make
Genera un paquete ZIP listo para producción:
make build
Opción B: Localmente con yarn
También puedes compilar sin Docker:
yarn install
yarn run build
Esto creará una carpeta dist con tu script de compilación, el manifest, etc., junto con el archivo ZIP.
Paso 3: Compilar
Opción A: Con Docker
Inicia el servidor de desarrollo con un solo comando:
make run-dev
Opción B: Localmente con Yarn
También puedes ejecutar el servidor de desarrollo sin Docker:
yarn install
yarn run dev
Paso 4: Activar el modo de desarrollo después de subir el archivo del widget
Para activar el modo de desarrollo después de subir el archivo widget.zip, sigue estos pasos:
- Asegúrate de que el puerto y el código del widget estén correctamente configurados en tus variables de entorno. En los archivos
.dev.env
y.prod.env
, verifica que los siguientes valores estén correctamente definidos:LOCALHOST_PORT
— Debe coincidir con el puerto en el que se ejecuta tu servidor local (por ejemplo, 9000).INTEGRATION_CODE
— Debe ser el código específico de tu widget. Puedes encontrarlo en la pestaña “Claves y alcances” después de crear la integración.
- Activa el modo de desarrollo añadiendo lo siguiente en el
localStorage
del navegador del cliente. Puedes hacerlo desde la consola de desarrollador del navegador con el siguiente comando:
localStorage.setItem('your_widget_code_is_dev', '9000');
Utiliza el mismo puerto que LOCALHOST_PORT
y el mismo código de widget definido en INTEGRATION_CODE en los archivos .env.
También, puedes añadir manualmente esta entrada en el localStorage desde las herramientas del navegador si es necesario.
Una vez hecho esto, el widget cargará los recursos desde tu servidor local cuando esté en modo de desarrollo, permitiéndote hacer pruebas sin tener que volver a subir el archivo ZIP del widget cada vez que realices un cambio.
Referencia
Updated 3 minutes ago