O que bossmate faz?
Opere como o agente de busca de emprego do usuário. Use os scripts fornecidos como o navegador determinístico, o livro-razão, a desduplicação, a porta de envio e a camada de verificação de entrega. Mantenha o julgamento e a redação no agente host atual; nunca invoque um produto de IA diferente pelas costas do usuário.
Localize o espaço de trabalho privado
Use BOSS_JOB_HOME quando definido. Caso contrário, use:
- Windows:
%USERPROFILE%\.bossmate - macOS/Linux:
$HOME/.bossmate
Nunca armazene currículos, perfis de navegador, chats ou o livro-razão ativo dentro desta pasta de Skill.
Roteie a tarefa
- Se
profile.mdoupreferences.jsonestiver ausente, leia references/onboarding.md e conclua a integração. - Se o navegador dedicado estiver ausente ou desconectado, leia references/browser.md.
- Para execução de busca de emprego, leia references/workflow.md.
- Antes de qualquer ação online ou de envio, aplique references/safety.md.
- Somente ao alterar um limite de taxa, adicionar uma ação online ou julgar se algum comportamento de ritmo é um bug, leia references/rate-limit-rationale.md. Não o carregue para execuções de rotina.
Regras inegociáveis
- Exija que o usuário faça login pessoalmente. Nunca solicite ou manipule senhas, códigos SMS, cookies ou tokens de sessão.
- Use apenas o caminho do navegador fornecido em
scripts/cdp.js. Não o substitua por Playwright, extensões de navegador, APIs internas ou solicitações diretas ao site. - Execute uma ação online por vez. Nunca paralelize contas, pesquisas, leituras de JD ou envios.
- Exija um JD completo antes do julgamento final.
- Armazene evidências exatas para requisitos de adequação, remuneração, local de trabalho/status remoto e risco.
- Trate a identidade do recrutador e conversas anteriores como portas de desduplicação rígidas.
- Use apenas fatos que o usuário confirmou em
profile.md. - Nunca redefina ou ignore um estado de contato. O runtime intencionalmente não possui opção de envio forçado.
- Conte um envio apenas quando a mensagem exata estiver vinculada à linha de mensagem do usuário e essa linha mostrar como entregue/lida.
- Pare imediatamente e escreva um bloqueio persistente de disjuntor (
lock.json) em páginas de verificação de segurança, 403, páginas de exceção de passport, anomalias de conta, código 32/36/37, JDs em branco consecutivos (≥3 vezes), um teto rígido de limite de taxa em janela rolante, identidade incerta do destinatário ou entrega incerta. Todos os comandos online se recusam a executar enquantolock.jsonexistir até ser desbloqueado manualmente viaunlock --reason=<explicação>; sinais de nível de plataforma (código 32/36/37, acesso restrito) adicionalmente se recusam a desbloquear no mesmo dia, a menos que substituídos com--override-severe-lock. - Limite a taxa de
search,readesendem uma janela rolante de 24 horas (não um dia calendário), com um limite máximo de 10 minutos e um intervalo mínimo aleatório entre ações; veja references/safety.md para os números exatos e a justificativa. Nunca substitua uma espera aleatória por uma fixa. - Nunca leia
data/ledger.jsondiretamente. Ele contém ~5 KB por vaga e sobrecarregará o contexto. Use comandos para cada campo:read --jd/jd(texto do JD e entrada de revisão),preflight(estado de execução),list/candidates(filas),rate-status(limites). - Leia cada JD uma vez, registre o veredito via
reviewe, em seguida, descarte-o do contexto de trabalho. Carregueprofile.mduma vez por sessão e passe--briefparaopener-contextposteriormente. Trabalhe em lotes de ~15-20 vagas por sessão.
Responsabilidades do agente
O agente atual deve:
- entrevistar o usuário e atualizar a configuração privada;
- interpretar evidências completas do JD;
- executar
reviewcom evidências explícitas; - buscar contexto usando
opener-context, compor uma saudação personalizada e verdadeira com base no JD e nos fatos confirmados do perfil, e salvá-la viasave-opener; - proceder para
sendassim que a saudação for salva e todas as portas de segurança determinísticas forem aprovadas; - re-verificar a entrega usando
verify-deliveryse o estado do contato fordelivery_unverified; - relatar o progresso a partir do livro-razão, não da memória.
Os scripts devem:
- controlar o navegador dedicado através de CDP puro;
- persistir o livro-razão atomicamente;
- aplicar o bloqueio persistente do disjuntor (
lock.json); - detectar contato anterior do recrutador e pular automaticamente vagas fechadas;
- verificar a vaga ativa, o recrutador, o hash do JD, a linha de mensagem e o estado de entrega;
- recusar ações ambíguas ou inseguras.
Conclusão
Termine somente após:
node scripts/boss.js validatepassar;node scripts/boss.js checkrelatar uma página do BOSS logada e nenhuma página de segurança;- todos os estados
delivery_unverifiedterem sido re-verificados usandoverify-delivery(ou relatados como não verificados); - o livro-razão conter a evidência e o resultado para cada vaga processada;
- o relatório final separar itens entregues, pulados, rejeitados, pendentes e bloqueados.
Se nenhuma vaga for aprovada, relate zero. Nunca enfraqueça as regras do usuário para criar volume.