Skill de Criação/Otimização de Currículo ATS
Objetivo da Tarefa
- Este Skill serve para: ajudar usuários a criar, otimizar e gerenciar currículos profissionais compatíveis com ATS
- Capacidades incluem: geração de currículo, otimização de currículo, verificação de aceitabilidade para submissão, gerenciamento de versões, exportação de arquivos
- Condição de acionamento: o usuário precisa criar um novo currículo, otimizar um currículo existente, comparar ou exportar currículos
Preparação Prévia
- Dependências: este Skill utiliza bibliotecas Python puramente locais para processamento e exportação de arquivos (nenhuma dependência de serviço externo/rede)
pdfplumber>=0.10.0 # Analisar currículos em PDF python-docx>=1.1.0 # Gerar DOCX reportlab>=4.0.0 # Gerar PDF (fonte CJK embutida, pip puro; fallback automático para HTML se ausente) - Preparação de diretório: criar um diretório de gerenciamento de versões no diretório de trabalho atual
mkdir -p .resume-versions
Princípios Fundamentais
Regras Obrigatórias
- Nunca inventar experiências/dados do usuário: conteúdo ausente deve ser marcado com
【Placeholder】e uma "lista mínima de complementação" deve ser gerada - ATS-friendly: por padrão, coluna única, sem tabelas, sem caixas de texto, sem ícones; usar títulos de seção padrão
- Aceitabilidade para submissão: o relatório de diagnóstico deve verificar, da perspectiva do recrutador, se o título é adequado, se tempo de experiência/local/contato/autorização de trabalho/disponibilidade estão claros, e se há informações tabu do mercado-alvo como foto, idade, estado civil, filiação política, salário esperado
- Saída completa: deve-se fornecer simultaneamente o JSON ResumeIR, relatório de diagnóstico, conclusão de aceitabilidade para submissão e o texto do currículo revisado; a exportação de arquivos é gerada localmente por script quando necessário (veja "Exportação de Arquivos")
- Custo mínimo de entrada do usuário: priorizar "colar texto/enviar arquivo", perguntar apenas quando campos críticos estiverem ausentes
Estrutura de Saída
Todas as operações devem gerar as três partes a seguir (arquivos exportados são gerados conforme necessário):
- JSON ResumeIR: nomes de campos fixos, de acordo com o Esquema ResumeIR.v1
- Relatório de Diagnóstico: lista de problemas + gravidade + sugestões, de acordo com a Especificação do Relatório de Diagnóstico
- Conclusão de Aceitabilidade para Submissão:
application_acceptability, respondendo "pode enviar agora / onde o recrutador vai travar / o que complementar primeiro" - Texto do currículo revisado: visualização em texto puro
- (Opcional) Arquivos exportados: quando o usuário precisar de DOCX/PDF, chamar
scripts/render_resume.pypara geração local
Etapas de Operação
Seleção de Modo
Selecionar o modo com base na necessidade do usuário:
- Modo 1: Criar Currículo (do zero): ajudar o usuário a criar um currículo a partir do zero
- Modo 2: Otimizar Currículo (currículo existente): otimizar com base em um currículo existente do usuário
Todos os modos suportam entradas opcionais:
- JD (descrição da vaga colada pelo usuário)
- Cargo alvo: target_title / target_level (China: P6/P7, Sênior/Especialista/Gerente; EUA tech: Senior/Staff, L5/L6, SDE II etc.)
- Idioma: zh-CN / en-US
- Setor: Internet/AI/Dados/P&D/Operações/Vendas/Administração etc.
- Modelo: template_id (padrão: cn_ats_a4_v1)
Modo 1: Criar Currículo (do zero)
Passo 1: Coleta de Informações
Usar o mínimo de perguntas para ajudar o usuário a coletar as seguintes informações:
- Informações Básicas: nome, telefone, e-mail, cidade
- Cargo Alvo: target_title, target_level, target_industry
- Últimas 2-3 Experiências Profissionais: cada uma incluindo empresa, cargo, datas de início e fim, 3 pontos principais de resultados
- Formação Acadêmica: instituição, grau, curso, data de conclusão
- Habilidades: habilidades principais (primary) e secundárias (secondary)
Passo 2: Gerar ResumeIR
Converter as informações coletadas para o formato ResumeIR (campos completos no Esquema ResumeIR.v1), campos ausentes preenchidos com 【Placeholder】. Exemplo de esqueleto mínimo:
{
"meta": {"version": "1.0", "language": "zh-CN", "locale": "zh-CN"},
"basics": {"name": "João", "phone": "【Placeholder】", "email": "【Placeholder】", "target_title": "Gerente de Produto"},
"summary": "",
"skills": {"primary": ["Análise de Requisitos", "Análise de Dados"], "secondary": []},
"work": [{"company": "Empresa X", "title": "Gerente de Produto", "start": "2021-06", "end": "presente",
"bullets": ["Liderou……, resultando em um aumento de 20%"]}],
"projects": [],
"education": [{"school": "【Placeholder】", "degree": "Bacharel", "start": "", "end": ""}]
}
Passo 3: Gerar Primeira Versão do Currículo
- Gerar o JSON ResumeIR
- Gerar visualização em texto puro (formatado na ordem padrão)
- Gerar relatório de diagnóstico (foco em completude)
- Gerar conclusão de aceitabilidade para submissão:
ready / needs_fix / do_not_submit, listando até 3 problemas que o recrutador identificaria - Gerar lista mínima de complementação (no máximo 8 questões)
Passo 4: Salvar Versão
Salvar automaticamente como primeira versão: version_name = "{target_title}-{data}-{idioma}"
Modo 2: Otimizar Currículo (currículo existente)
Passo 1: Analisar Currículo
- Se o usuário enviar arquivo (PDF/DOCX/TXT): chamar
scripts/parse_resume.pypara extrair texto - Se o usuário colar texto: usar o conteúdo do texto diretamente
Passo 2: Exibir e Confirmar
Exibir ao usuário os seguintes campos-chave para confirmar a precisão da análise:
- Nome
- Empresa mais recente
- Cargo mais recente
- Estimativa de tempo de experiência
Passo 3: Coletar JD (opcional)
Perguntar ao usuário se há um JD alvo; se sim, solicitar que cole
Passo 4: Gerar ResumeIR e Relatório de Diagnóstico
- Extrair informações do texto do currículo e gerar ResumeIR (ausentes com
【Placeholder】) - Gerar relatório de diagnóstico (pontuação 0-100, lista de problemas + gravidade + sugestões)
- Gerar conclusão de aceitabilidade para submissão: correspondência de título, legibilidade da primeira tela, informações de contato, local/disponibilidade/autorização de trabalho, informações tabu do mercado, evidências para o cargo atendendo à triagem inicial do recrutador
- Gerar ResumeIR revisado
- Gerar visualização em texto puro (chamar render_resume.py para exportar quando o usuário precisar de arquivo)
Passo 5: Salvar Versão
Salvar automaticamente como primeira versão: version_name = "{target_title}-{data}-{idioma}"
Especificações de Reescrita de Currículo
Formato de Bullet de Experiência Profissional
Cada bullet deve seguir a seguinte estrutura:
Verbo de ação + tarefa + método/ferramenta + resultado (indicador)
Exemplo:
- ❌ Errado: Responsável por análise de dados e geração de relatórios
- ✅ Correto: Usou Python e SQL para analisar dados de comportamento do usuário, otimizando funcionalidades do produto por meio de testes A/B, resultando em um aumento de 20% nos usuários ativos diários
Requisito de Quantificação
- Sempre que possível, usar números específicos, porcentagens, valores monetários etc.
- Quando não for possível quantificar, usar o placeholder
【metric】e indicar na lista de complementação
Cobertura de Palavras-chave do JD (se houver JD)
- Fazer cobertura de palavras-chave para as habilidades primárias (≤12)
- Incorporar naturalmente nos bullets, evitando acúmulo forçado
Gerenciamento de Versões
Salvar Versão
Usar script para salvar o ResumeIR atual:
python3 scripts/version_manager.py save --version-name "GerenteProduto-2024-01-15-pt-BR" --resume-ir "resume_ir.json"
Renomear Versão
python3 scripts/version_manager.py rename --old-name "v1" --new-name "GerenteProduto-2024-01-15-pt-BR"
Comparar Versões
python3 scripts/version_manager.py compare --version1 "v1" --version2 "v2"
Reverter Versão
python3 scripts/version_manager.py rollback --version-name "v1"
Exportação de Arquivos
Exportação Local (Python puro, sem serviços externos/rede)
Quando o usuário solicitar exportação, salvar o ResumeIR atual como JSON e chamar o script:
python3 scripts/render_resume.py --resume-ir "resume_ir.json" --output-formats "docx,pdf" --output-dir ./out
A exportação usa uma escada de degradação, garantindo que qualquer ambiente produza um arquivo utilizável:
- DOCX: gerado por python-docx, coluna única, títulos padrão, sem tabelas/caixas de texto, ATS-friendly (formato recomendado para submissão)
- PDF: gerado por reportlab + fonte CJK embutida (pip puro, sem necessidade de fontes/bibliotecas do sistema); se reportlab não estiver instalado, gera automaticamente HTML otimizado para impressão, com instrução "Abra no navegador e pressione Ctrl+P para salvar como PDF"
- O script não depende de nenhum serviço remoto; basta clonar localmente para executar
Estilos Disponíveis
cn_ats_a4_v1(chinês, padrão) /en_ats_a4_v1(inglês); o idioma real é determinado pormeta.languageno ResumeIR- Visualizar:
python3 scripts/render_resume.py --list-templates - Para gerar currículos bilíngues ou em inglês, consulte references/en-resume-conventions.md (banco de verbos de ação, proibido foto/idade/estado civil, prioridade de 1 página, datas em inglês MMM YYYY, prioridade de quantificação)
- Para cargos tech nos EUA (SWE/PM/DS) : consulte diretamente assets/examples/ os exemplos
en-US-software-engineer.json,en-US-product-manager.jsoneen-US-data-scientist.json(com LinkedIn/GitHub, níveis americanos, métricas tech como p99/QPS/SLA); quandometa.language=en-US, a camada de renderização aplica automaticamente títulos de seção em inglês e converte datas ISOYYYY-MMparaMMM YYYY
Índice de Recursos
Scripts Necessários
- scripts/parse_resume.py : script de análise de currículo, suporta PDF/DOCX/TXT/MD
- Parâmetro: argumento posicional
<caminho_do_arquivo>(também compatível com--input-file <caminho>) - Saída: JSON
{"text": "...", "format": "pdf|docx|txt", "pages": N, "success": true}; em caso de falha, retorna{"error": "...", "exit_code": N}
- Parâmetro: argumento posicional
- scripts/version_manager.py : script de gerenciamento de versões
- Parâmetros:
save/rename/compare/rollback+ parâmetros correspondentes - Saída: resultado da operação de versão
- Parâmetros:
- scripts/render_resume.py : script de exportação local (DOCX/PDF/HTML, sem serviços externos)
- Parâmetros:
--resume-ir <arquivo JSON>,--output-formats docx,pdf,html,--output-dir,--file-name - Saída: arquivos DOCX / PDF (ou fallback para HTML)
- Parâmetros:
Referências de Domínio
- references/resumeir-schema.md : Definição do Esquema ResumeIR.v1 (quando consultar: ao gerar ou analisar ResumeIR)
- references/diagnostic-report-spec.md : Especificação de saída do relatório de diagnóstico (quando consultar: ao gerar relatório de diagnóstico)
- references/en-resume-conventions.md : Convenções para currículos em inglês (quando consultar: ao gerar currículos bilíngues/em inglês)
Exemplo de Fluxo de Conversa
Cenário 1: Criar Currículo do Zero
Usuário: Me ajude a criar um currículo
Agente: Claro, vou te ajudar a criar um currículo. Por favor, me informe:
1. Qual é o seu cargo alvo?
2. Sua situação profissional atual (empresa/cargo/tempo de experiência)?
...
[Coleta de informações]
Agente: Primeira versão do currículo gerada. Segue minha análise:
[Relatório de Diagnóstico]
Lista mínima de complementação (8 questões):
1. Por favor, forneça suas informações de contato específicas (telefone/e-mail)
2. Na primeira experiência profissional, qual é o valor específico do 【metric】 mencionado?
...
Cenário 2: Otimizar Currículo Existente
Usuário: Me ajude a otimizar este currículo [enviar arquivo]
Agente: [Analisando currículo] Extraí as seguintes informações do seu currículo, por favor confirme:
Nome: João
Empresa mais recente: Empresa Tech X
Cargo mais recente: Gerente de Produto
Tempo de experiência: 3-5 anos
Há um JD alvo? Se sim, cole-o.
[Se houver JD]
Agente: Otimização concluída. Relatório de diagnóstico:
Pontuação total: 72/100
Lista de problemas:
[P0] A seção de experiência profissional carece de indicadores quantificados (grave)
Sugestão: Cada bullet deve conter números ou porcentagens específicos
Exemplo de reescrita: "Responsável pela iteração do produto" → "Liderou 5 iterações do produto, aumentando a taxa de retenção de usuários em 15%"
...
Lista de lacunas (JD exige, mas currículo não tem):
1. Habilidade em SQL (JD exige explicitamente)
Pergunta de complementação mínima: Você tem experiência com SQL? Em que contexto?
[Gerar currículo revisado]
Cenário 3: Exportar Arquivo
Usuário: Exporte este currículo
Agente: Gerando arquivos DOCX e PDF... [chamar render_resume.py]
Arquivos gerados:
- Joao-GerenteProduto-2024-01-15.docx
- Joao-GerenteProduto-2024-01-15.pdf
Cenário 4: Comparar Versões
Usuário: Compare v1 e v2
Agente: [chamar version_manager.py compare]
Principais diferenças:
1. Experiência profissional - Empresa Tech X (2019-2022)
v1: Responsável pelo design de produto e análise de requisitos
v2: Liderou 8 iterações do produto, otimizando com base em dados, aumentando a satisfação do usuário em 25%
2. Habilidades - primárias
v1: ["Design de Produto", "Análise de Requisitos", "Gerenciamento de Projetos"]
v2: ["Design de Produto", "Análise de Requisitos", "Gerenciamento de Projetos", "Análise de Dados", "SQL", "Testes A/B"]
Sugestão: A versão v2 está mais completa; recomendo usar v2 para submissão.
Cenário 5: Reverter Versão
Usuário: Reverter para v1
Agente: [chamar version_manager.py rollback]
Revertido para a versão v1 (GerenteProduto-2024-01-10-pt-BR)
Observações
Fallback em Caso de Falha
- Falha na análise do currículo: solicitar que o usuário cole o texto puro; ou que cole em seções separadas por "educação/experiência/projeto"
- Informações ausentes: usar
【Placeholder】+ lista mínima de complementação (≤8 perguntas) - JD muito longo: extrair apenas as seções de responsabilidades e requisitos do cargo; ignorar o restante
- Conteúdo gerado muito genérico: forçar que cada bullet contenha um "resultado/impacto"; caso contrário, marcar como problema P1 e fornecer exemplo de reescrita
Compatibilidade ATS (a restrição se aplica ao currículo "gerado/exportado"; ao analisar arquivos enviados pelo usuário, o conteúdo de tabelas pode ser lido normalmente)
- Usar títulos de seção padrão (Experiência Profissional, Formação Acadêmica, Habilidades etc.)
- Evitar uso de tabelas, caixas de texto, ícones, imagens
- Layout de coluna única por padrão
- Usar fontes padrão (ex.: Arial, Calibri)
- Evitar caracteres especiais e elementos decorativos
Garantia de Qualidade
- Todos os bullets devem começar com um verbo de ação (ex.: "Liderou", "Projetou", "Implementou", "Otimizou" etc.)
- Garantir que cada bullet tenha um resultado ou impacto claro
- Evitar verbos fracos como "Responsável por", "Participou de"
- Priorizar voz ativa; evitar voz passiva
Exemplos de Uso
Exemplo 1: Criar Currículo do Zero (chinês/inglês)
- Descrição da funcionalidade: ajudar o usuário a criar currículos bilíngues (chinês e inglês) do zero
- Modo de execução: conversa com agente + script para salvar versão
- Parâmetros-chave: language=zh-CN/en-US, target_title, target_level
- Etapas:
- Coletar informações básicas e experiências
- Gerar ResumeIR em chinês
- Gerar ResumeIR em inglês (tradução automática)
- Salvar como duas versões (chinês e inglês)
Exemplo 2: Otimizar Currículo com Base em JD
- Descrição da funcionalidade: otimizar conteúdo do currículo para um JD específico
- Modo de execução: análise pelo agente + script de análise
- Parâmetros-chave: texto do JD, arquivo de currículo original
- Etapas:
- Analisar currículo original
- Analisar requisitos do JD
- Comparar e identificar lacunas
- Reescrever currículo para cobrir palavras-chave do JD
- Gerar comparação e sugestões de otimização
Exemplo 3: Gerenciamento de Múltiplas Versões
- Descrição da funcionalidade: criar várias versões de currículo, comparar e selecionar a melhor
- Modo de execução: script de gerenciamento de versões
- Parâmetros-chave: version_name, resume_ir
- Etapas:
- Salvar versão v1
- Modificar e salvar versão v2
- Comparar v1 e v2
- Reverter para a melhor versão
- Exportar versão final