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.

Mantenha as habilidades de IA recomendadas pela 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

Recomendações úteis de habilidades tendem a desaparecer em chats, favoritos e configurações pessoais de agentes. O Skills Board oferece à equipe um lugar pesquisável para reunir as habilidades que recomenda e permite que cada membro escolha como usá-las.

  • Uma biblioteca da 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 recomendação entre Claude, Codex, Cursor e outras configurações de agentes.
  • Uma opção de transferência. 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 de 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 recomendação da 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 do repositório GitHub dela.
  2. O Skills Board mantém a fonte original visível e registra a recomendação para a equipe.
  3. Os membros da equipe pesquisam por tarefa, descrição, repositório ou tag.
  4. Cada membro 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.

Executar localmente

Pré-requisitos

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

1. Instalar 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. Preparar o banco de dados

Aplique as migrações Drizzle commitadas 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. Começar a desenvolver

pnpm dev

Abra http://localhost:3000. Reinicie o servidor após alterar 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; a Neon pode usar a URL agrupada aqui.
DATABASE_URL_UNPOOLEDPara migrações na NeonConexão direta do PostgreSQL usada pelas migrações Drizzle. Pode corresponder a 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ções 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 na Produção da VercelPelo menos 32 bytes aleatórios codificados em base64 ou hex; a raiz dedicada para hashes de e-mail e links de cancelamento de inscrição criptografados. Ambientes locais/auto-hospedados podem recorrer a uma chave separada por domínio derivada 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 de 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 de captura de e-mail por endereço de cliente. Na Vercel, a integração do Marketplace o escreve no projeto por conta própria.
KV_REST_API_TOKENSim fora do desenvolvimentoToken REST para esse banco de dados, escrito pela mesma integração. O token somente leitura que ela também escreve 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 da 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. Com nenhum dos pares completo, o formulário de captura continua funcionando e não tem limite de taxa.
GITHUB_TOKENNãoAumenta os limites de taxa da API do GitHub para metadados e downloads de ZIP.
VERCEL_OIDC_TOKENNãoFornecido automaticamente pela Vercel para o catálogo opcional skills.sh.

O login e o 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 como fallback 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.

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

O formulário público de captura de e-mail tem limite de cinco envios por hora por endereço de cliente, contados no Upstash Redis sob endereços com hash. Na 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 escreve KV_REST_API_URL e KV_REST_API_TOKEN em Produção 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 KV_REST_API_; portanto, quando ambos estão presentes, o par canônico é o que conta. De qualquer forma, o formulário falha aberto: 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 do e-mail transacional de OTP e convite. O consentimento de cadastro é opcional e desativado por padrão, pode ser alterado em Configurações → E-mail e é aplicado com histórico de consentimento local, registros de supressão, links de cancelamento de inscrição assinados e webhooks de entrega verificados 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 fazer login, 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 de equipe salvas, instalá-las em um agente ou executá-las.

Stack de tecnologia

CamadaTecnologia
AplicaçãoNext.js 16 App Router, React 19, TypeScript
InterfaceTailwind CSS 4, shadcn/ui, Base UI
AutenticaçãoBetter Auth (OTP por e-mail) com suporte a organizações e 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 commitados 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 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.