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, 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.
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
- Crie uma biblioteca da equipe e adicione uma habilidade a partir do repositório GitHub dela.
- O Skills Board mantém a fonte original visível e registra a entrada para a equipe.
- Os colegas pesquisam por tarefa, descrição, repositório ou tag.
- 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ável | Obrigatória | Finalidade |
|---|---|---|
DATABASE_URL | Sim | String de conexão do PostgreSQL usada pelo aplicativo; o Neon pode usar a URL do pool aqui. |
DATABASE_URL_UNPOOLED | Para migrações no Neon | Conexão PostgreSQL direta usada pelas migrações Drizzle. Pode corresponder ao 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ção 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 no Vercel Production | Pelo 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_PREVIOUS | Somente durante a rotação de chaves | Matriz 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_URL | Sim fora do desenvolvimento | Endpoint 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_TOKEN | Sim fora do desenvolvimento | Token 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_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 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. Sem nenhum par completo, o formulário de captura continua funcionando e não é limitado por 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 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
| Camada | Tecnologia |
|---|---|
| Aplicativo | Next.js 16 App Router, React 19, TypeScript |
| UI | Tailwind CSS 4, shadcn/ui, Base UI |
| Autenticação | Better Auth (OTP por e-mail) com organizações e suporte a 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 confirmados 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 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.