SkillsBoard

Uma biblioteca compartilhada de habilidades de IA para equipes, com um endpoint MCP autenticado para que agentes possam buscar e puxar as habilidades que sua equipe já aprovou.

Documentação

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

Skills Board, o registro de habilidades nativo para agentes, feito para equipes. Mantenha as habilidades de IA da sua equipe em um só lugar, para que todos saibam onde encontrá-las e usá-las.

GitHub stars MIT license CI status

Experimente o aplicativo hospedado · Execute localmente · Contribua

Por que Skills Board

Habilidades úteis tendem a desaparecer em conversas, favoritos e configurações pessoais de agentes. O Skills Board dá à equipe um lugar pesquisável para reuni-las e permite que cada colega escolha como usá-las.

  • Uma biblioteca para a equipe. Salve habilidades úteis uma vez, organize-as com tags específicas da equipe e facilite encontrá-las novamente.
  • Diferentes agentes são bem-vindos. Compartilhe a mesma entrada entre Claude, Codex, Cursor e outras configurações de agentes.
  • Uma escolha de entrega. Abra a fonte original, copie um comando de instalação compatível ou baixe os arquivos de habilidade mais recentes como ZIP.
  • Acesso com escopo da organização. Crie uma equipe, convide membros e mantenha cada biblioteca disponível para seus membros.
  • Acesso MCP opcional. Conecte agentes compatíveis a ferramentas autenticadas e com controle de escopo para encontrar e organizar habilidades e coleções da equipe.

[!IMPORTANT] Uma habilidade salva é uma escolha da própria equipe, não uma revisão de segurança, certificação de compatibilidade ou versão fixada. O Skills Board lê a fonte mais recente disponível; inspecione essa fonte antes de usá-la em um agente.

Como funciona

  1. Crie uma biblioteca da equipe e adicione uma habilidade a partir do repositório GitHub dela.
  2. O Skills Board mantém a fonte original visível e registra a entrada para a equipe.
  3. Os colegas pesquisam por tarefa, descrição, repositório ou tag.
  4. Cada colega abre a fonte, copia um comando compatível ou baixa os arquivos mais recentes como ZIP.

O catálogo público pode ajudar na descoberta quando a implantação tiver Vercel OIDC disponível. A biblioteca da equipe e o fluxo direto do GitHub continuam sendo o produto principal.

Execute localmente

Pré-requisitos

  • Node.js 20.9 ou mais recente
  • pnpm 10
  • PostgreSQL 15 ou mais recente

1. Instale o aplicativo

git clone https://github.com/TommyBez/skillsboard.git
cd skillsboard
corepack enable
pnpm install
cp .env.example .env.local

Gere um segredo do Better Auth com openssl rand -base64 32 e adicione-o, junto com sua string de conexão do PostgreSQL, ao .env.local.

2. Prepare o banco de dados

Aplique as migrações Drizzle confirmadas a um novo banco de dados. Isso cria tanto as tabelas do Better Auth quanto as tabelas específicas do aplicativo a partir do SQL versionado em drizzle/.

pnpm db:migrate

3. Comece a desenvolver

pnpm dev

Abra http://localhost:3000. Reinicie o servidor após alterar o DATABASE_URL, porque o pool do PostgreSQL é criado quando o módulo é carregado.

Variáveis de ambiente

VariávelObrigatóriaFinalidade
DATABASE_URLSimString de conexão do PostgreSQL usada pelo aplicativo; o Neon pode usar a URL do pool aqui.
DATABASE_URL_UNPOOLEDPara migrações no NeonConexão PostgreSQL direta usada pelas migrações Drizzle. Pode corresponder ao DATABASE_URL para Postgres local sem pool.
BETTER_AUTH_SECRETSimSegredo usado para assinar e criptografar dados de autenticação.
BETTER_AUTH_URLRecomendadaOrigem pública do aplicativo; use http://localhost:3000 localmente.
CRON_SECRETSim para limpeza de versões hospedadasSegredo aleatório dedicado usado para autenticar a limpeza diária de versões de coleção expiradas configurada em vercel.json.
RESEND_API_KEYSim fora do desenvolvimentoEnvia e-mails de OTP de login e convites de equipe por meio do Resend.
EMAIL_FROMSim fora do desenvolvimentoRemetente verificado do Resend para e-mails de OTP e convites (por exemplo, Skills Board <login@your-verified-domain.com>).
RESEND_WEBHOOK_SECRETSim para entrega de e-mail hospedadaVerifica webhooks de rejeição, reclamação, supressão e cancelamento de inscrição do Resend.
EMAIL_PRIVACY_SECRETSim no Vercel ProductionPelo menos 32 bytes aleatórios codificados em base64 ou hex; a raiz dedicada para hashes de e-mail e links de cancelamento criptografados. Ambientes locais/auto-hospedados podem usar uma chave derivada de domínio separado a partir de BETTER_AUTH_SECRET.
EMAIL_PRIVACY_SECRET_PREVIOUSSomente durante a rotação de chavesMatriz JSON de raízes base64/hex retidas usadas para consulta de supressão com hash duplo e descriptografia de token de cancelamento. Uma raiz anterior não pode ser removida enquanto registros retidos ainda dependerem dela.
KV_REST_API_URLSim fora do desenvolvimentoEndpoint REST do banco de dados Upstash Redis que conta envios do formulário de captura de e-mail por endereço de cliente. No Vercel, a integração do Marketplace o grava no projeto automaticamente.
KV_REST_API_TOKENSim fora do desenvolvimentoToken REST para esse banco de dados, gravado pela mesma integração. O token somente leitura que ela também grava não é usado.
UPSTASH_REDIS_REST_URLAlternativa auto-hospedadaMesmo endpoint sob o nome canônico do Upstash, para um banco de dados criado manualmente. O cliente Upstash o lê antes de KV_REST_API_URL, então um projeto Vercel o deixa não definido.
UPSTASH_REDIS_REST_TOKENAlternativa auto-hospedadaMesmo token sob o nome canônico do Upstash, lido antes de KV_REST_API_TOKEN. Sem nenhum par completo, o formulário de captura continua funcionando e não é limitado por taxa.
GITHUB_TOKENNãoAumenta os limites de taxa da API do GitHub para metadados e downloads de ZIP.
VERCEL_OIDC_TOKENNãoFornecido automaticamente pelo Vercel para o catálogo opcional skills.sh.

Login e cadastro usam códigos de uso único por e-mail (sem senhas). Fora do desenvolvimento, configure tanto RESEND_API_KEY quanto um EMAIL_FROM verificado por domínio; o remetente de teste do Resend só funciona para os próprios destinatários de teste do Resend. No desenvolvimento, os e-mails de OTP são ignorados e qualquer código de 6 dígitos funciona. Sem Vercel OIDC, o catálogo Discover degrada graciosamente enquanto as bibliotecas da equipe continuam funcionando.

As implantações hospedadas executam a limpeza de retenção de versões de coleção uma vez por dia. Defina CRON_SECRET no ambiente Vercel Production antes de implantar; o endpoint falha de forma segura quando o segredo está ausente. Implantações auto-hospedadas podem invocar /api/cron/collection-release-retention a partir do agendador com Authorization: Bearer <CRON_SECRET>.

O formulário público de captura de e-mail é limitado a cinco envios por hora por endereço de cliente, contados no Upstash Redis sob endereços com hash. No Vercel, adicione um banco de dados Upstash Redis do Marketplace em uma região próxima à implantação e conecte-o ao projeto: a integração grava KV_REST_API_URL e KV_REST_API_TOKEN em Production e Preview, e nada mais precisa ser definido. Implantações auto-hospedadas apontam para um banco de dados criado em console.upstash.com e definem UPSTASH_REDIS_REST_URL e UPSTASH_REDIS_REST_TOKEN em vez disso. O cliente Upstash lê o par canônico primeiro e recorre ao par KV_REST_API_; portanto, quando ambos estão presentes, o par canônico é o que conta. De qualquer forma, o formulário falha de forma aberta: sem credenciais ou com Redis inacessível, os envios são aceitos sem contagem e a lacuna é registrada.

As comunicações de produto são separadas dos e-mails transacionais de OTP e convite. O consentimento no cadastro é opcional e desativado por padrão, pode ser alterado em Configurações → E-mail e é aplicado com histórico local de consentimento, registros de supressão, links de cancelamento assinados e webhooks verificados de entrega do Resend. Consulte docs/email-compliance.md antes de configurar uma transmissão de produto.

Acesso MCP

O Skills Board expõe um endpoint MCP protegido por OAuth em /api/mcp. Após entrar, abra Configurações → MCP para conectá-lo. As ferramentas podem pesquisar habilidades e coleções da equipe, recuperar comandos de instalação e descobrir habilidades públicas ou de repositório. Com skills:write, elas podem salvar novas habilidades e organizar coleções. Elas não podem editar ou excluir habilidades salvas da equipe, instalá-las em um agente ou executá-las.

O contrato completo está em skillsboard.sh/developers (Markdown em /developers.md): os endpoints públicos, o fluxo OAuth, cada ferramenta e o escopo que ela precisa, e as convenções de versão, erro e limite de taxa que a superfície HTTP segue. O índice legível por máquina de tudo isso é /llms.txt.

Plugin oficial

Este repositório também é o marketplace do plugin oficial do Skills Board. O plugin inclui a configuração do servidor MCP acima e uma habilidade que explica como usar uma biblioteca da equipe a partir de um agente. Ele não está vinculado a um único cliente: o diretório em plugin/ contém um manifesto Agent Plugins 1.0.0 e um manifesto Claude Code ao lado. Instalá-lo é uma alternativa à configuração manual do MCP acima, não um passo posterior.

No Claude Code:

/plugin marketplace add TommyBez/skillsboard
/plugin install skills-board@skills-board

Em qualquer cliente que o CLI plugins suporte:

npx plugins add TommyBez/skillsboard

Instalar o plugin configura o servidor MCP. Conectá-lo ainda exige entrar no Skills Board e aprovar os escopos solicitados no cliente.

Pilha de tecnologia

CamadaTecnologia
AplicativoNext.js 16 App Router, React 19, TypeScript
UITailwind CSS 4, shadcn/ui, Base UI
AutenticaçãoBetter Auth (OTP por e-mail) com organizações e suporte a provedores OAuth
DadosPostgreSQL, Drizzle ORM
E-mailResend e React Email
Acesso de agenteModel Context Protocol via mcp-handler
HospedagemVercel e Neon na implantação hospedada; auto-hospedagem é suportada

Comandos do projeto

ComandoO que faz
pnpm devInicia o servidor de desenvolvimento Turbopack.
pnpm typecheckExecuta o compilador TypeScript sem emitir arquivos.
pnpm checkExecuta as verificações locais obrigatórias do repositório.
pnpm db:generate --name <description>Gera uma migração versionada após alterar o esquema.
pnpm db:checkVerifica se o esquema e os snapshots de migração confirmados correspondem.
pnpm db:migrateAplica migrações pendentes ao banco de dados configurado.
pnpm db:pushEnvia o esquema apenas para um banco de dados descartável usado para prototipagem.
pnpm buildCria um build de produção.
pnpm startInicia o servidor de produção.
pnpm emailVisualiza modelos de e-mail do React Email na porta 3001.

Contribuindo

Issues e pull requests são bem-vindos. Leia CONTRIBUTING.md antes de fazer uma alteração substancial, siga o Código de Conduta e relate vulnerabilidades pelo processo em SECURITY.md.

Veja as pessoas que ajudaram a construir o Skills Board na página de contribuidores.

Licença

O Skills Board está disponível sob a Licença MIT.