ooligo
claude-skill

Avaliador de take-home com o Claude

Dificuldade
intermediário
Tempo de setup
40min
Para
recruiter · hiring-manager · technical-screener
Recrutamento e TA

Stack

Um Claude Skill que pontua a submissão take-home de um candidato contra uma rubrica que o time de contratação escreveu, com citações linha por linha do código ou documentos submetidos, e produz um relatório de avaliação estruturado — nunca passa ou reprova automaticamente. O painel de hiring usa o relatório para ancorar o debrief ao vivo; a decisão real de contratar/não contratar acontece na discussão do painel, não no relatório. Substitui os 60-90 minutos por painelista de “li isso no sábado de manhã e acho que estava ok?” desorganizados por uma revisão estruturada de 15 minutos por painelista mais um debrief calibrado de 30 minutos.

Quando usar

  • O cargo usa um take-home como etapa no loop (entrevistas estruturadas são pré-requisito — sem uma rubrica escrita o skill não tem nada para pontuar).
  • Você quer pontuação consistente entre painelistas. Revisões de take-home são notoriamente inconsistentes porque cada painelista lê em horários diferentes com níveis de atenção diferentes; o relatório ancorado na rubrica é o artefato de nivelamento.
  • O take-home é um exercício de código, um write-up de design de sistema, um exercício escrito (rascunho de PRD, mock de chamada de vendas escrito) ou uma integração construída que produz artefatos inspecionáveis.

Quando NÃO usar

  • Passa / reprova automático no loop. O skill produz um relatório pontuado. A decisão de contratar acontece no debrief do painel. Conectar o score agregado do relatório a uma transição de stage dispara a mesma exposição ao NYC LL 144 / EU AI Act que a rejeição automática no screening.
  • Entrevistas de código ao vivo. Workflow diferente (observação ao vivo do processo, não avaliação de artefato). O workflow de debrief de entrevista lida com esse caso.
  • Take-homes de mais de 4 horas de trabalho do candidato. Take-homes longos são em si um anti-padrão de experiência do candidato; o skill não vai corrigir isso.
  • Submissões onde o candidato não assinou a divulgação de uso de IA. A pontuação da rubrica é calibrada contra uma política específica de uso de IA (ex.: “ferramentas de IA permitidas para ajuda com sintaxe, não para geração de solução”); sem a divulgação, o skill não consegue calibrar a detecção de “sinal somente de IA”.
  • Detecção de plágio como uso primário. O skill sinaliza padrões suspeitos (correspondências verbatim de repositórios públicos, boilerplate genérico gerado por IA), mas não é uma ferramenta forense de detecção de plágio. Use uma ferramenta dedicada para isso se precisar de achados defensáveis.

Setup

  1. Faça o drop do bundle. Coloque apps/web/public/artifacts/take-home-evaluator-claude-skill/SKILL.md no seu diretório de skills do Claude Code.
  2. Crie a rubrica. Por take-home, escreva uma rubrica JSON com as dimensões em que você realmente pontua (correção, qualidade de código, tomada de decisão documentada em comentários / README, tratamento de erros, cobertura de testes). Âncoras por dimensão de 1-5. O template fica em references/1-take-home-rubric-template.md.
  3. Configure a política de uso de IA. O prompt do skill diz explicitamente ao Claude qual uso de IA foi permitido (“apenas ajuda com sintaxe”, “ferramentas de IA permitidas em todo momento”, “sem ferramentas de IA”, etc.). A configuração mapeia para a linguagem de divulgação no brief do take-home — devem corresponder.
  4. Configure o modo de distribuição de painelistas. Ou modo de painelista único (um relatório por submissão) ou modo por painelista (cada painelista recebe a mesma submissão, gera sua própria avaliação e o skill agrega os deltas entre painelistas). O modo por painelista captura drift de pontuação mas dobra o custo de modelo.
  5. Execute em seco num take-home fechado. Pontue um take-home de um candidato contratado (ou não) no trimestre passado. Compare os scores por dimensão do skill com os scores reais do painel. Ajuste as âncoras da rubrica se o skill ponder dimensões de forma diferente.

O que o skill realmente faz

Seis passos. A ordem importa: verificações determinísticas (compilar, rodar, estrutura de arquivo) acontecem antes de o LLM pontuar qualquer coisa, porque deixar o modelo pontuar uma submissão que não roda produz um relatório confiante sobre um artefato quebrado.

  1. Valide a forma da submissão. Verifique que todos os entregáveis nomeados no brief do take-home existem (ex.: README.md, arquivos de código, arquivos de teste). Entregáveis ausentes → sinalize no relatório; NÃO pontue essas dimensões.
  2. Execute verificações determinísticas. Compile o código. Execute a suite de testes que o candidato escreveu. Capture o output. Esses são os resultados auditáveis e reproduzíveis — o LLM não os re-litiga.
  3. Pontue por dimensão da rubrica. Para cada dimensão na rubrica, pontue 1-5 com citações verbatim da submissão do candidato (caminho do arquivo + intervalo de linha + o código ou texto). Citações são obrigatórias; sem citação, o score fica no padrão da âncora 1 da rubrica. O requisito de citação mantém o modelo ancorado na submissão real em vez de feedback genérico.
  4. Detecte sinal de uso de IA contra a política. Execute verificações de padrão contra a política de uso de IA divulgada. Correspondências verbatim com boilerplate de IA gerado publicamente, estilo suspeitosamente consistente entre arquivos de complexidade variável, ou comentários genéricos sem engajamento com as decisões específicas do problema todos surgem como notas ai-use-signal — não como violação, apenas como sinal para o painel discutir contra a política divulgada.
  5. Calcule o agregado SEM uma recomendação de contratar/não contratar. Some os scores por dimensão. Surfaceie o agregado como um número. NÃO traduza o agregado em uma recomendação. O skill retorna explicitamente “relatório; não uma decisão” em vez de “passa / reprova”.
  6. Emita relatório por painelista ou agregado. No modo de painelista único, o relatório vai para o painelista que chamou. No modo por painelista, o skill agrega entre painelistas, surfaceia deltas por dimensão entre painelistas (e qual painelista viu o quê diferente) e emite um relatório pronto para debrief.

Realidade de custos

Por submissão take-home, no Claude Sonnet 4.6:

  • Tokens de LLM — tipicamente 15-30k de input (rubrica + código/texto da submissão + instruções do skill) e 3-5k de output (relatório pontuado por dimensão). Aproximadamente $0,15-0,25 por submissão no modo de painelista único. O modo por painelista (3-4 painelistas) multiplica linearmente.
  • Custo de CI / sandbox — rodar a suite de testes do candidato custa o que seu CI normalmente custa; geralmente negligível. A execução em sandbox (recomendada — nunca rode código do candidato no laptop do painel) custa o que seu provedor de runner em sandbox cobra.
  • Tempo do painelista — o ganho. A revisão de primeira passagem de um painelista num take-home é 60-90 minutos quando bem feito, menos quando mal feito. Revisar o relatório do skill e anotar concordar/discordar por dimensão é 15-25 minutos. Tempo total do painel economizado por take-home: 2-3 horas de painelista.
  • Tempo de setup — 40 minutos uma vez para a rubrica e o mapeamento de política de uso de IA por formato de take-home. A reutilização entre cargos na mesma família é alta.

Métrica de sucesso

Rastreie três coisas por ciclo de take-home:

  • Variância de score entre painelistas — variância entre os scores por dimensão dos painelistas. O skill deve comprimir a variância (painelistas ancorados na mesma rubrica e nas mesmas citações) sem forçar concordância artificial. Variância abaixo de ~0,5 (numa escala de 5 pontos) sugere que os painelistas estão aprovando o relatório do skill sem critério; acima de ~1,5 sugere que as âncoras da rubrica são vagas demais para o take-home discriminar.
  • Correlação contratação-vs-não-contratação com o agregado do skill — ao longo de um trimestre, a decisão de contratação do painel correlaciona com o agregado do skill? Deve ser positiva mas NÃO 1,0; se for 1,0, o painel está deferindo automaticamente (que é o modo de falha contra o qual o skill é projetado), e se for 0, a rubrica ou o skill está desalinhado com o que o painel realmente valoriza.
  • Duração do debrief de take-home — tempo real desde “todos os painelistas enviaram revisões” até “decisão registrada”. Deve cair de 1-2 dias para menos de 4 horas, porque o relatório é uma âncora compartilhada.

Versus as alternativas

  • Versus CodeSignal Coding Reports / HackerRank automated grading. Esses produtos rodam o código do candidato contra os casos de teste da plataforma e emitem um score. Escolha-os se seu take-home é bem-definido-input-para-output-bem-definido estruturado (estilo LeetCode). Escolha o skill se o take-home é uma construção (escreva um pequeno sistema, projete uma API, escreva um PRD), onde a rubrica é o score e o score é a rubrica. Os dois são complementares; o CodeSignal pode ser o input para a etapa de run-tests do skill.
  • Versus take-homes corrigidos manualmente. A correção manual é certa para as contratações de maior risco (engenheiro fundador, IC principal) onde o julgamento narrativo do painel é o entregável. O skill ganha seu custo de setup nos 80% dos take-homes onde a aplicação consistente de rubrica é o que está faltando.
  • Versus ChatGPT no estilo “revise este código”. O chat genérico retorna feedback genérico. O skill é estruturalmente diferente: exige citações verbatim, executa verificações determinísticas primeiro e recusa autorizar uma recomendação de contratar/não contratar.
  • Versus nenhum take-home (loops somente ao vivo). Uma escolha razoável para cargos sênior onde referências e rodadas ao vivo carregam o peso. O skill é irrelevante se o loop não tem take-home.

Pontos de atenção

  • Drift de passa / reprova automático. Guarda: o output do skill termina com os scores por dimensão e o agregado. Não há string “passa” ou “reprova”. O esquema omite explicitamente um campo de recomendação.
  • Alucinação de feedback genérico. Guarda: todo score de dimensão exige uma citação verbatim (caminho do arquivo + intervalo de linha + conteúdo). Scores sem citações ficam no padrão 1.
  • Herança de viés da rubrica. Guarda: a rubrica é upstream deste skill. Execute a rubrica pelo enquadramento do auditor de slate diversificado — a rubrica pontua em dimensões que têm impacto disparate conhecido (ex.: “usa idiomas obscuros”, que frequentemente correlaciona com background de bootcamp vs CS)?
  • Falso positivo de detecção de uso de IA. Guarda: sinais de uso de IA são surfaceados como notas, não violações. O painel revisa contra a política divulgada. Auto-sinalizar como violação seria a leitura errada; o uso legítimo de ferramentas de IA (dentro da política) é cada vez mais a norma.
  • Falha de sandboxing no código do candidato. Guarda: o skill recomenda explicitamente execução em sandbox e avisa se o ambiente que chamou executa a suite de testes diretamente na máquina do painel. Nunca execute código de candidato não revisado numa máquina com acesso a segredos do escritório.
  • Explosão do tamanho da submissão. Guarda: se a submissão exceder ~50K LOC, o skill avisa que a pontuação será parcial e solicita ao painelista que identifique as partes em que focar. Take-homes que produzem 50K LOC são em si um sinal de que o brief estava errado.

Stack

O bundle do skill fica em apps/web/public/artifacts/take-home-evaluator-claude-skill/ e contém:

  • SKILL.md — a definição do skill
  • references/1-take-home-rubric-template.md — template de rubrica preenchível
  • references/2-ai-use-policy-mapping.md — como a política divulgada mapeia para as verificações de padrão do skill

Ferramentas que o workflow assume que você usa: Claude (o modelo). Opcional: CodeSignal ou HackerRank para a parte de verificação determinística; Ashby para o registro do candidato. Execução em sandbox é escolha do recruiter / hiring manager (containers Docker, GitHub Actions, etc.).

Conceitos relacionados: entrevistas estruturadas, entrevistas comportamentais, experiência do candidato, qualidade da contratação.

Arquivos deste artefato

Baixar tudo (.zip)