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

Skills Board — Your team's skills. All in one place.

Mantén las habilidades de IA recomendadas por tu equipo en un solo lugar, para que todos sepan dónde encontrarlas y usarlas.

GitHub stars MIT license CI status

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

  1. Crea una biblioteca de equipo y añade una habilidad desde su repositorio de GitHub.
  2. Skills Board mantiene visible la fuente original y registra la recomendación para el equipo.
  3. Los miembros del equipo buscan por tarea, descripción, repositorio o etiqueta.
  4. 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

VariableObligatoriaPropósito
DATABASE_URLCadena de conexión de PostgreSQL utilizada por la aplicación; Neon puede usar la URL agrupada aquí.
DATABASE_URL_UNPOOLEDPara migraciones en NeonConexión directa de PostgreSQL utilizada por las migraciones de Drizzle. Puede coincidir con DATABASE_URL para Postgres local sin agrupación.
BETTER_AUTH_SECRETSecreto utilizado para firmar y cifrar los datos de autenticación.
BETTER_AUTH_URLRecomendadaOrigen público de la aplicación; usa http://localhost:3000 localmente.
CRON_SECRETSí para la limpieza del lanzamiento alojadoSecreto aleatorio dedicado utilizado para autenticar la limpieza diaria de lanzamientos de colecciones caducadas configurada en vercel.json.
RESEND_API_KEYSí fuera del desarrolloEnví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_FROMSí fuera del desarrolloRemitente 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_SECRETSí para la entrega de correo alojadaVerifica los webhooks de rebote, queja, supresión y cancelación de suscripción de Resend.
EMAIL_PRIVACY_SECRETSí en Vercel ProductionAl 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_PREVIOUSSolo durante la rotación de clavesMatriz 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_URLSí fuera del desarrolloPunto 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_TOKENSí fuera del desarrolloToken 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_URLAlternativa autoalojadaMismo 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_TOKENAlternativa autoalojadaMismo 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_TOKENNoAumenta los límites de frecuencia de la API de GitHub para metadatos y descargas ZIP.
VERCEL_OIDC_TOKENNoSe 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

CapaTecnología
AplicaciónNext.js 16 App Router, React 19, TypeScript
Interfaz de usuarioTailwind CSS 4, shadcn/ui, Base UI
AutenticaciónBetter Auth (código de un solo uso por correo) con soporte de organizaciones y proveedores OAuth
DatosPostgreSQL, Drizzle ORM
CorreoResend y React Email
Acceso de agentesModel Context Protocol a través de mcp-handler
AlojamientoVercel y Neon en el despliegue alojado; se admite el autoalojamiento

Comandos del proyecto

ComandoQué hace
pnpm devInicia el servidor de desarrollo de Turbopack.
pnpm typecheckEjecuta el compilador de TypeScript sin emitir archivos.
pnpm checkEjecuta las comprobaciones locales obligatorias del repositorio.
pnpm db:generate --name <description>Genera una migración versionada después de cambiar el esquema.
pnpm db:checkComprueba que el esquema y las instantáneas de migración confirmadas coinciden.
pnpm db:migrateAplica las migraciones pendientes a la base de datos configurada.
pnpm db:pushEnvía el esquema solo a una base de datos desechable utilizada para prototipos.
pnpm buildCrea una compilación de producción.
pnpm startInicia el servidor de producción.
pnpm emailPrevisualiza 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.