SkillsBoard
Una biblioteca compartida de habilidades de IA para equipos, con un endpoint MCP autenticado para que los agentes puedan buscar y obtener las habilidades que tu equipo ya ha aprobado.
Documentación
Mantén las habilidades de IA recomendadas por tu equipo en un solo lugar, para que todos sepan dónde encontrarlas y usarlas.
Prueba la aplicación alojada · Ejecútala localmente · Contribuye
Por qué Skills Board
Las recomendaciones útiles de habilidades tienden a perderse en chats, marcadores y configuraciones personales de agentes. Skills Board ofrece al equipo un único lugar buscable para recopilar las habilidades que recomienda y permite que cada miembro elija cómo usarlas.
- Una biblioteca de equipo. Guarda habilidades útiles una sola vez, organízalas con etiquetas específicas del equipo y haz que sea fácil volver a encontrarlas.
- Diferentes agentes son bienvenidos. Comparte la misma recomendación entre Claude, Codex, Cursor y otras configuraciones de agentes.
- Una opción de transferencia. Abre la fuente original, copia un comando de instalación compatible o descarga los archivos de habilidad más recientes como ZIP.
- Acceso limitado a la organización. Crea un equipo, invita miembros y mantén cada biblioteca disponible para sus miembros.
- Acceso MCP opcional. Conecta agentes compatibles a herramientas autenticadas y controladas por alcance para encontrar y organizar habilidades y colecciones del equipo.
[!IMPORTANT] Una habilidad guardada es una recomendación del equipo, no una revisión de seguridad, una certificación de compatibilidad ni una versión fijada. Skills Board lee la fuente más reciente disponible; inspecciona esa fuente antes de usarla en un agente.
Cómo funciona
- Crea una biblioteca de equipo y añade una habilidad desde su repositorio de GitHub.
- Skills Board mantiene visible la fuente original y registra la recomendación para el equipo.
- Los miembros del equipo buscan por tarea, descripción, repositorio o etiqueta.
- Cada miembro abre la fuente, copia un comando compatible o descarga los archivos más recientes como ZIP.
El catálogo público puede ayudar con el descubrimiento cuando el despliegue tiene Vercel OIDC disponible. La biblioteca del equipo y el flujo directo de GitHub siguen siendo el producto principal.
Ejecutar localmente
Requisitos previos
- Node.js 20.9 o más reciente
- pnpm 10
- PostgreSQL 15 o más reciente
1. Instala la aplicación
git clone https://github.com/TommyBez/skillsboard.git
cd skillsboard
corepack enable
pnpm install
cp .env.example .env.local
Genera un secreto de Better Auth con openssl rand -base64 32 y luego añádelo junto con tu cadena de conexión de PostgreSQL a .env.local.
2. Prepara la base de datos
Aplica las migraciones de Drizzle confirmadas a una base de datos nueva. Esto crea tanto las tablas de Better Auth como las tablas específicas de la aplicación a partir del SQL versionado en drizzle/.
pnpm db:migrate
3. Comienza a desarrollar
pnpm dev
Abre http://localhost:3000. Reinicia el servidor después de cambiar DATABASE_URL, porque el grupo de conexiones de PostgreSQL se crea cuando se carga el módulo.
Variables de entorno
| Variable | Obligatoria | Propósito |
|---|---|---|
DATABASE_URL | Sí | Cadena de conexión de PostgreSQL utilizada por la aplicación; Neon puede usar la URL agrupada aquí. |
DATABASE_URL_UNPOOLED | Para migraciones en Neon | Conexión directa de PostgreSQL utilizada por las migraciones de Drizzle. Puede coincidir con DATABASE_URL para Postgres local sin agrupación. |
BETTER_AUTH_SECRET | Sí | Secreto utilizado para firmar y cifrar los datos de autenticación. |
BETTER_AUTH_URL | Recomendada | Origen público de la aplicación; usa http://localhost:3000 localmente. |
CRON_SECRET | Sí para la limpieza del lanzamiento alojado | Secreto aleatorio dedicado utilizado para autenticar la limpieza diaria de lanzamientos de colecciones caducadas configurada en vercel.json. |
RESEND_API_KEY | Sí fuera del desarrollo | Envía el código de un solo uso de inicio de sesión y los correos de invitación al equipo a través de Resend. |
EMAIL_FROM | Sí fuera del desarrollo | Remitente verificado de Resend para los correos de código de un solo uso e invitaciones (p. ej., Skills Board <login@your-verified-domain.com>). |
RESEND_WEBHOOK_SECRET | Sí para la entrega de correo alojada | Verifica los webhooks de rebote, queja, supresión y cancelación de suscripción de Resend. |
EMAIL_PRIVACY_SECRET | Sí en Vercel Production | Al menos 32 bytes aleatorios codificados en base64 o hexadecimal; la raíz dedicada para hashes de correo y enlaces de cancelación de suscripción cifrados. Los entornos locales o autoalojados pueden recurrir a una clave separada por dominio derivada de BETTER_AUTH_SECRET. |
EMAIL_PRIVACY_SECRET_PREVIOUS | Solo durante la rotación de claves | Matriz JSON de raíces base64/hexadecimal retenidas utilizadas para la búsqueda de supresión con doble hash y el descifrado de tokens de cancelación de suscripción. Una raíz anterior no se puede eliminar mientras los registros retenidos sigan dependiendo de ella. |
KV_REST_API_URL | Sí fuera del desarrollo | Punto de conexión REST de la base de datos Upstash Redis que cuenta los envíos de captura de correo por dirección de cliente. En Vercel, la integración de Marketplace la escribe en el proyecto automáticamente. |
KV_REST_API_TOKEN | Sí fuera del desarrollo | Token REST para esa base de datos, escrito por la misma integración. El token de solo lectura que también escribe no se utiliza. |
UPSTASH_REDIS_REST_URL | Alternativa autoalojada | Mismo punto de conexión con el nombre canónico de Upstash, para una base de datos creada manualmente. El cliente de Upstash lo lee antes que KV_REST_API_URL, por lo que un proyecto de Vercel lo deja sin configurar. |
UPSTASH_REDIS_REST_TOKEN | Alternativa autoalojada | Mismo token con el nombre canónico de Upstash, leído antes que KV_REST_API_TOKEN. Si ningún par está completo, el formulario de captura sigue funcionando y no tiene límite de frecuencia. |
GITHUB_TOKEN | No | Aumenta los límites de frecuencia de la API de GitHub para metadatos y descargas ZIP. |
VERCEL_OIDC_TOKEN | No | Se suministra automáticamente por Vercel para el catálogo opcional de skills.sh. |
El inicio y el registro de sesión usan códigos de un solo uso por correo (sin contraseñas). Fuera del desarrollo, configura tanto RESEND_API_KEY como un EMAIL_FROM verificado por dominio; el remitente de prueba de Resend solo funciona para los destinatarios de prueba de Resend. En desarrollo, los correos con el código de un solo uso se omiten y cualquier código de 6 dígitos funciona. Sin Vercel OIDC, el catálogo Discover se degrada correctamente mientras las bibliotecas del equipo siguen funcionando.
Los despliegues alojados ejecutan la limpieza de retención de lanzamientos de colecciones caducadas una vez al día. Configura CRON_SECRET en el entorno de Vercel Production antes de desplegar; el punto de conexión falla de forma segura cuando el secreto está ausente. Los despliegues autoalojados pueden invocar /api/cron/collection-release-retention desde su programador con Authorization: Bearer <CRON_SECRET>.
El formulario público de captura de correo tiene un límite de cinco envíos por hora y dirección de cliente, contados en Upstash Redis bajo direcciones con hash. En Vercel, añade una base de datos Upstash Redis desde el Marketplace en una región cercana al despliegue y conéctala al proyecto: la integración escribe KV_REST_API_URL y KV_REST_API_TOKEN en Production y Preview, y no hay que configurar nada más. Los despliegues autoalojados apuntan a una base de datos creada en console.upstash.com y configuran UPSTASH_REDIS_REST_URL y UPSTASH_REDIS_REST_TOKEN en su lugar. El cliente de Upstash lee primero el par canónico y recurre al par KV_REST_API_, por lo que cuando ambos están presentes, el par canónico es el que cuenta. En cualquier caso, el formulario falla de forma abierta: sin credenciales, o con Redis inaccesible, los envíos se aceptan sin contarse y la brecha se registra.
Las comunicaciones de producto son independientes del correo transaccional de códigos de un solo uso e invitaciones. El consentimiento de registro es opcional y está desactivado por defecto, se puede cambiar en Configuración → Correo, y se aplica con historial de consentimiento local, registros de supresión, enlaces de cancelación de suscripción firmados y webhooks de entrega verificados de Resend. Consulta docs/email-compliance.md antes de configurar una transmisión de producto.
Acceso MCP
Skills Board expone un punto de conexión MCP protegido por OAuth en /api/mcp. Después de iniciar sesión, abre Configuración → MCP para conectarlo. Las herramientas pueden buscar habilidades y colecciones del equipo, recuperar comandos de instalación y descubrir habilidades públicas o de repositorio. Con skills:write, pueden guardar nuevas habilidades y organizar colecciones. No pueden editar ni eliminar habilidades guardadas del equipo, instalarlas en un agente ni ejecutarlas.
Pila tecnológica
| Capa | Tecnología |
|---|---|
| Aplicación | Next.js 16 App Router, React 19, TypeScript |
| Interfaz de usuario | Tailwind CSS 4, shadcn/ui, Base UI |
| Autenticación | Better Auth (código de un solo uso por correo) con soporte de organizaciones y proveedores OAuth |
| Datos | PostgreSQL, Drizzle ORM |
| Correo | Resend y React Email |
| Acceso de agentes | Model Context Protocol a través de mcp-handler |
| Alojamiento | Vercel y Neon en el despliegue alojado; se admite el autoalojamiento |
Comandos del proyecto
| Comando | Qué hace |
|---|---|
pnpm dev | Inicia el servidor de desarrollo de Turbopack. |
pnpm typecheck | Ejecuta el compilador de TypeScript sin emitir archivos. |
pnpm check | Ejecuta las comprobaciones locales obligatorias del repositorio. |
pnpm db:generate --name <description> | Genera una migración versionada después de cambiar el esquema. |
pnpm db:check | Comprueba que el esquema y las instantáneas de migración confirmadas coinciden. |
pnpm db:migrate | Aplica las migraciones pendientes a la base de datos configurada. |
pnpm db:push | Envía el esquema solo a una base de datos desechable utilizada para prototipos. |
pnpm build | Crea una compilación de producción. |
pnpm start | Inicia el servidor de producción. |
pnpm email | Previsualiza las plantillas de React Email en el puerto 3001. |
Contribuciones
Las incidencias y las solicitudes de extracción son bienvenidas. Lee CONTRIBUTING.md antes de hacer un cambio sustancial, sigue el Código de conducta y notifica las vulnerabilidades a través del proceso descrito en SECURITY.md.
Consulta las personas que han ayudado a construir Skills Board en la página de contribuyentes.
Licencia
Skills Board está disponible bajo la Licencia MIT.