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
Mantenha as habilidades de IA recomendadas pela sua equipe em um só lugar, para que todos saibam onde encontrá-las e usá-las.
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
- Crie uma biblioteca da equipe e adicione uma habilidade do repositório GitHub dela.
- O Skills Board mantém a fonte original visível e registra a recomendação para a equipe.
- Os membros da equipe pesquisam por tarefa, descrição, repositório ou tag.
- 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ável | Obrigatória | Finalidade |
|---|---|---|
DATABASE_URL | Sim | String de conexão do PostgreSQL usada pelo aplicativo; a Neon pode usar a URL agrupada aqui. |
DATABASE_URL_UNPOOLED | Para migrações na Neon | Conexão direta do PostgreSQL usada pelas migrações Drizzle. Pode corresponder a DATABASE_URL para Postgres local sem pool. |
BETTER_AUTH_SECRET | Sim | Segredo usado para assinar e criptografar dados de autenticação. |
BETTER_AUTH_URL | Recomendada | Origem pública do aplicativo; use http://localhost:3000 localmente. |
CRON_SECRET | Sim para limpeza de versões hospedadas | Segredo aleatório dedicado usado para autenticar a limpeza diária de versões de coleções expiradas configurada em vercel.json. |
RESEND_API_KEY | Sim fora do desenvolvimento | Envia e-mails de OTP de login e convites de equipe por meio do Resend. |
EMAIL_FROM | Sim fora do desenvolvimento | Remetente verificado do Resend para e-mails de OTP e convites (por exemplo, Skills Board <login@your-verified-domain.com>). |
RESEND_WEBHOOK_SECRET | Sim para entrega de e-mail hospedada | Verifica webhooks de rejeição, reclamação, supressão e cancelamento de inscrição do Resend. |
EMAIL_PRIVACY_SECRET | Sim na Produção da Vercel | Pelo 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_PREVIOUS | Somente durante a rotação de chaves | Matriz 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_URL | Sim fora do desenvolvimento | Endpoint 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_TOKEN | Sim fora do desenvolvimento | Token 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_URL | Alternativa auto-hospedada | Mesmo 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_TOKEN | Alternativa auto-hospedada | Mesmo 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_TOKEN | Não | Aumenta os limites de taxa da API do GitHub para metadados e downloads de ZIP. |
VERCEL_OIDC_TOKEN | Não | Fornecido 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
| Camada | Tecnologia |
|---|---|
| Aplicação | Next.js 16 App Router, React 19, TypeScript |
| Interface | Tailwind CSS 4, shadcn/ui, Base UI |
| Autenticação | Better Auth (OTP por e-mail) com suporte a organizações e provedores OAuth |
| Dados | PostgreSQL, Drizzle ORM |
| Resend e React Email | |
| Acesso de agente | Model Context Protocol via mcp-handler |
| Hospedagem | Vercel e Neon na implantação hospedada; auto-hospedagem é suportada |
Comandos do projeto
| Comando | O que faz |
|---|---|
pnpm dev | Inicia o servidor de desenvolvimento Turbopack. |
pnpm typecheck | Executa o compilador TypeScript sem emitir arquivos. |
pnpm check | Executa 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:check | Verifica se o esquema e os snapshots de migração commitados correspondem. |
pnpm db:migrate | Aplica migrações pendentes ao banco de dados configurado. |
pnpm db:push | Envia o esquema apenas para um banco de dados descartável usado para prototipagem. |
pnpm build | Cria um build de produção. |
pnpm start | Inicia o servidor de produção. |
pnpm email | Visualiza 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.