Communitygithub.com

ShuchangZhang/rastreador-de-candidaturas

Um rastreador de candidaturas a empregos local, com atualizações em linguagem natural e um painel visual Sankey.

O que é rastreador-de-candidaturas?

Esta skill oferece um sistema portátil e local para rastrear candidaturas a empregos, funcionando como uma única fonte de verdade. O usuário pode fazer atualizações em linguagem natural, enquanto a skill gerencia um quadro de empregos baseado em arquivos JSON, garantindo que as alterações sejam seguras e livres de conflitos. Suporta operações como registrar novas candidaturas, atualizar o progresso (por meio de eventos, não campos de status separados), visualizar resumos de texto e abrir um painel interativo Sankey. A skill prioriza a resolução segura do diretório do quadro antes de qualquer operação e utiliza scripts Python para garantir a integridade dos dados, evitando gravações diretas no arquivo `data.json`. Ela foi projetada para funcionar em macOS, Linux e Windows, com scripts de inicialização e utilitários de linha de comando para tarefas como localização do quadro e substituição segura de dados.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add ShuchangZhang/job-application-tracker

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Rastreador de Candidaturas a Empregos

Use um quadro de empregos local e portátil como a única fonte da verdade para registros de candidaturas. Deixe o usuário falar naturalmente; resolva o quadro correto, preserve as informações existentes e aplique alterações determinísticas e seguras contra conflitos.

Política de Idioma

Mantenha a implementação da skill, as instruções do Agente, referências, scripts, esquemas, comentários e testes em inglês. Trate nomes e definições em inglês como canônicos.

Superfícies voltadas para o usuário podem ser localizadas. O README.md e os arquivos de front-end assets/dashboard-* atualmente incluem chinês e inglês. Armazene códigos neutros em idioma para estágios e lotes, de modo que o idioma de exibição nunca altere o significado subjacente.

Referências Obrigatórias

Leia apenas a referência necessária para a operação atual:

Resolva o Quadro Primeiro

Indique o diretório selecionado como BOARD_DIR.

Use python3 no macOS/Linux. No Windows, substitua python3 nos comandos abaixo por py -3 quando disponível, caso contrário, python.

  1. Se o usuário fornecer um caminho, inspecione-o:

    python3 <skill-dir>/scripts/board_locator.py inspect --board-dir <caminho>
    

    Se ele contiver data.json legítimo, mas não tiver o marcador, explique que um arquivo de identidade portátil e não sensível será adicionado e, em seguida, execute:

    python3 <skill-dir>/scripts/board_locator.py mark --board-dir <caminho>
    
  2. Caso contrário, descubra quadros marcados:

    python3 <skill-dir>/scripts/board_locator.py discover
    
  3. Interprete a descoberta exatamente:

    • Saída 0: use o único quadro válido e relate seu caminho e contagem de registros.
    • Saída 4: solicite um caminho existente ou permissão explícita para criar um novo quadro.
    • Saída 5: mostre cada candidato e exija que o usuário escolha.

Nunca escolha por data de modificação, contagem de registros ou suposição. Nunca crie um quadro apenas porque a descoberta falhou. Nunca armazene um registro de caminho absoluto global no diretório inicial do usuário.

Fluxo de Trabalho Seguro de Dados

Para cada leitura ou gravação:

  1. Resolva BOARD_DIR.

  2. Obtenha a data real atual quando as datas afetarem a operação: execute date +%Y-%m-%d no macOS/Linux ou (Get-Date).ToString('yyyy-MM-dd') no Windows PowerShell.

  3. Tire uma captura de segurança:

    python3 <skill-dir>/scripts/data_store.py snapshot \
      --data <BOARD_DIR/data.json>
    
  4. Preserve o boardTitle retornado, o lang opcional, os stageLevels opcionais, todos os registros, todos os campos de registro desconhecidos, mas válidos, e o ETag retornado.

  5. Para uma gravação, crie um arquivo JSON candidato e substitua com segurança:

    python3 <skill-dir>/scripts/data_store.py replace \
      --data <BOARD_DIR/data.json> \
      --input <candidate.json> \
      --expected-etag <etag>
    
  6. Trate a saída 3 como um conflito de edição simultânea. Tire uma nova captura de segurança, reaplique apenas a alteração solicitada pelo usuário e tente novamente. Nunca force uma gravação desatualizada.

  7. Confirme o sucesso somente após a ferramenta ter sucesso.

Nunca escreva data.json diretamente. Nunca carregue exemplos de ensino sem confirmação explícita do usuário ou os trate como candidaturas reais. Nunca modifique arquivos de motor implantados durante uma operação exclusiva de dados.

Operações Principais

Registrar ou Atualizar uma Candidatura

  1. Leia references/data-model.md.
  2. Corresponda um registro existente por empresa e cargo. Se o alvo for ambíguo, peça ao usuário para escolher.
  3. Para um novo registro, exija empresa e cargo. Pergunte uma vez sobre detalhes opcionais ausentes—canal, portal de candidatura, cidade e lote de recrutamento—e então aguarde a resposta do usuário ou solicitação explícita para pular antes de salvar.
  4. Insira um novo registro no início de records para que novas candidaturas apareçam primeiro por padrão. Preserve a posição existente do array ao atualizar um registro.
  5. Para um registro existente, altere apenas os campos que o usuário mencionou.
  6. Avance o progresso anexando um evento; nunca mantenha um campo de status separado.
  7. Para um estágio personalizado não visto, preserve seu texto exato e adicione uma regra stageLevels. Use o posicionamento solicitado pelo usuário; caso contrário, padrão para um nível distinto imediatamente antes de k_hr.
  8. Mantenha note vazio, a menos que o usuário peça explicitamente para escrever algo nele.
  9. Use o fluxo de trabalho seguro de dados e relate o registro exato e o evento alterado.

Nunca invente empresa, cargo, data, canal, local, salário, resultado ou rodada de entrevista.

Mostrar um Resumo de Progresso em Texto

  1. Leia references/data-model.md.
  2. Tire uma captura de segurança sem modificar dados.
  3. Coloque lembretes com data de hoje até os próximos sete dias primeiro.
  4. Agrupe registros em: em andamento, oferecidos, encerrados e ainda não aplicados.
  5. Identifique registros parados em andamento e próximos marcos.
  6. Termine com uma ação concreta seguinte.

Não reconstrua HTML a menos que o usuário peça explicitamente.

Abrir ou Reconstruir o Quadro Visual

  1. Leia references/deployment.md e references/board-ui.md.
  2. Resolva e valide o quadro existente antes de tocar nos arquivos do motor.
  3. Normalmente, diga ao usuário para iniciar o quadro e abrir http://127.0.0.1:8770/.
  4. Recopie o conjunto do motor de front-end apenas quando um arquivo do motor estiver faltando ou o usuário pedir explicitamente para reconstruir ou atualizar o motor.
  5. Preserve data.json e todos os backups.

Instalar ou Ativar

Leia references/deployment.md e siga seu fluxo de trabalho de descoberta primeiro. A instalação da skill e a criação de um novo quadro são ações separadas. Criar um quadro requer intenção explícita do usuário.

Regras Rígidas

  1. Use apenas um BOARD_DIR resolvido e marcado.
  2. Não crie silenciosamente um quadro substituto.
  3. Não escaneie recursivamente o diretório inicial do usuário.
  4. Não armazene um registro de caminho global.
  5. Use data_store.py para cada gravação de dados do lado do Agente.
  6. Preserve dados não mencionados e campos existentes.
  7. Mantenha note vazio, a menos que solicitado explicitamente.
  8. Use códigos de estágio e lote neutros de references/data-model.md.
  9. Use a data real atual; não confie em cálculos de data mental.
  10. Se a permissão de gravação de arquivo não estiver disponível, explique os passos manuais exatos e nunca afirme que uma gravação foi bem-sucedida.
  11. Não combine uma mutação de dados com uma reconstrução do motor, a menos que o usuário solicite explicitamente ambos.
  12. Não sobrescreva data.json, .data.backup.*.json ou .job-tracker-board.json ao implantar ou atualizar arquivos do motor.

Recursos Agrupados

  • scripts/board_locator.py: identifique, marque e descubra com segurança diretórios de quadros.
  • scripts/data_store.py: tire capturas, valide, verifique conflitos, substitua atomicamente e faça backup de dados.
  • assets/dashboard-template.html, dashboard.css e dashboard-*.js: módulos de painel localizados e sem dependências.
  • assets/server.py: servidor local apenas de loopback e API de dados validada.
  • assets/start.command / assets/stop.command: lançadores macOS.
  • assets/start-board.bat / assets/stop-board.bat com auxiliares PowerShell correspondentes: lançadores Windows com verificações de integridade e logs de diagnóstico.
  • assets/data.json: semente vazia apenas para um novo quadro solicitado explicitamente.
  • tools/: utilitários determinísticos de regressão de cruzamento Sankey.

Habilidades Relacionadas