Communitygithub.com

ShuchangZhang/tracker-de-solicitudes-de-empleo

Un rastreador de solicitudes de empleo local primero con actualizaciones en lenguaje natural y un panel visual tipo Sankey.

¿Qué es tracker-de-solicitudes-de-empleo?

Esta habilidad del agente implementa un rastreador de solicitudes de empleo local y portátil que actúa como la fuente única de verdad para los registros de aplicaciones. Permite a los usuarios actualizar su progreso mediante lenguaje natural y proporciona resúmenes de progreso de texto, al mismo tiempo que ofrece un panel visual de tipo Sankey (sin dependencias) para obtener una visión general de todo el proceso de solicitud. La habilidad es compatible con agentes como Claude Code, Cursor y Codex, y enfatiza la seguridad de datos mediante una rigurosa resolución de directorios, instantáneas atómicas y reemplazos controlados por ETag para evitar conflictos de edición concurrente. El usuario habla de forma natural y la habilidad resuelve automáticamente el tablero correcto, conserva la información existente y aplica cambios deterministas y seguros contra conflictos, con un soporte completo tanto para macOS/Linux como para Windows a través de scripts dedicados y lanzadores.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add ShuchangZhang/job-application-tracker

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Rastreador de Solicitudes de Empleo

Use un tablero de empleo local y portátil como la fuente única de verdad para los registros de solicitudes. Permita que el usuario hable de forma natural; resuelva el tablero correcto, conserve la información existente y aplique cambios deterministas y seguros contra conflictos.

Política de Idioma

Mantenga la implementación de la habilidad, las instrucciones del agente, las referencias, los scripts, los esquemas, los comentarios y las pruebas en inglés. Trate los nombres y definiciones en inglés como canónicos.

Las superficies orientadas al usuario pueden localizarse. README.md y los archivos front-end assets/dashboard-* actualmente incluyen chino e inglés. Almacene códigos neutrales al idioma para las etapas y lotes, de modo que el idioma de visualización nunca cambie el significado subyacente.

Referencias Requeridas

Lea solo la referencia necesaria para la operación actual:

Resuelva el Tablero Primero

Denote el directorio seleccionado como BOARD_DIR.

Use python3 en macOS/Linux. En Windows, reemplace python3 en los siguientes comandos con py -3 cuando esté disponible, de lo contrario python.

  1. Si el usuario proporciona una ruta, inspecciónela:

    python3 <skill-dir>/scripts/board_locator.py inspeccionar --tablero-dir <ruta>
    

    Si contiene un data.json heredado válido pero carece del marcador, explique que se agregará un archivo de identidad portátil y no sensible, luego ejecute:

    python3 <skill-dir>/scripts/board_locator.py marcar --tablero-dir <ruta>
    
  2. De lo contrario, descubra tableros marcados:

    python3 <skill-dir>/scripts/board_locator.py descubrir
    
  3. Interprete el descubrimiento exactamente:

    • Código de salida 0: use el único tablero válido e informe su ruta y número de registros.
    • Código de salida 4: solicite una ruta existente o permiso explícito para crear un nuevo tablero.
    • Código de salida 5: muestre cada candidato y requiera que el usuario elija.

Nunca elija por hora de modificación, número de registros o conjeturas. Nunca cree un tablero simplemente porque el descubrimiento falló. Nunca almacene un registro de ruta absoluta global en el directorio personal del usuario.

Flujo de Trabajo Seguro de Datos

Para cada lectura o escritura:

  1. Resuelva BOARD_DIR.

  2. Obtenga la fecha real actual cuando las fechas afecten la operación: ejecute date +%Y-%m-%d en macOS/Linux o (Get-Date).ToString('yyyy-MM-dd') en Windows PowerShell.

  3. Tome una instantánea:

    python3 <skill-dir>/scripts/data_store.py instantánea \
      --datos <BOARD_DIR/data.json>
    
  4. Conserve el boardTitle devuelto, el lang opcional, los stageLevels opcionales, todos los registros, todos los campos de registro desconocidos pero válidos, y el ETag devuelto.

  5. Para una escritura, cree un archivo JSON candidato y reemplácelo de forma segura:

    python3 <skill-dir>/scripts/data_store.py reemplazar \
      --datos <BOARD_DIR/data.json> \
      --entrada <candidato.json> \
      --etag-esperado <etag>
    
  6. Trate el código de salida 3 como un conflicto de edición concurrente. Tome una nueva instantánea, reaplique solo el cambio solicitado por el usuario y reintente. Nunca fuerce una escritura obsoleta.

  7. Confirme el éxito solo después de que la herramienta tenga éxito.

Nunca escriba data.json directamente. Nunca cargue ejemplos de enseñanza sin confirmación explícita del usuario ni los trate como solicitudes reales. Nunca modifique archivos de motor implementados durante una operación solo de datos.

Operaciones Principales

Registrar o Actualizar una Solicitud

  1. Lea references/data-model.md.
  2. Coincida un registro existente por empresa y puesto. Si el objetivo es ambiguo, pida al usuario que elija.
  3. Para un nuevo registro, requiera empresa y puesto. Pregunte una vez por los detalles opcionales faltantes (canal, portal de solicitud, ciudad y lote de reclutamiento), luego espere la respuesta del usuario o una solicitud explícita para omitir antes de guardar.
  4. Inserte un nuevo registro al principio de records para que las nuevas solicitudes aparezcan primero de forma predeterminada. Conserve la posición existente del array al actualizar un registro.
  5. Para un registro existente, cambie solo los campos que el usuario mencionó.
  6. Avance el progreso agregando un evento; nunca mantenga un campo de estado separado.
  7. Para una etapa personalizada no vista, conserve su texto exacto y agregue una regla stageLevels. Use la ubicación solicitada por el usuario; de lo contrario, predetermine a un nivel distinto inmediatamente antes de k_hr.
  8. Mantenga note vacío a menos que el usuario pida explícitamente escribir algo en él.
  9. Use el flujo de trabajo seguro de datos e informe el registro y evento exactos cambiados.

Nunca invente una empresa, puesto, fecha, canal, ubicación, salario, resultado o ronda de entrevista.

Mostrar un Resumen de Progreso en Texto

  1. Lea references/data-model.md.
  2. Tome una instantánea segura sin modificar datos.
  3. Coloque los recordatorios con fecha calificados desde hoy hasta los próximos siete días primero.
  4. Agrupe los registros en: en progreso, ofrecidos, finalizados y aún no solicitados.
  5. Identifique registros en progreso estancados y hitos próximos.
  6. Termine con una acción concreta a seguir.

No reconstruya HTML a menos que el usuario lo solicite explícitamente.

Abrir o Reconstruir el Tablero Visual

  1. Lea references/deployment.md y references/board-ui.md.
  2. Resuelva y valide el tablero existente antes de tocar los archivos del motor.
  3. Normalmente, dígale al usuario que inicie el tablero y abra http://127.0.0.1:8770/.
  4. Vuelva a copiar el conjunto del motor front-end solo cuando falte un archivo del motor o el usuario solicite explícitamente reconstruir o actualizar el motor.
  5. Conserve data.json y todas las copias de seguridad.

Instalar o Activar

Lea references/deployment.md y siga su flujo de trabajo de descubrimiento primero. La instalación de la habilidad y la creación de un nuevo tablero son acciones separadas. La creación de un tablero requiere la intención explícita del usuario.

Reglas Estrictas

  1. Use solo un BOARD_DIR resuelto y marcado.
  2. No cree silenciosamente un tablero de reemplazo.
  3. No escanee recursivamente el directorio personal del usuario.
  4. No almacene un registro de ruta global.
  5. Use data_store.py para cada escritura de datos del lado del agente.
  6. Conserve los datos no mencionados y los campos existentes.
  7. Mantenga note vacío a menos que se solicite explícitamente.
  8. Use códigos de etapa y lote neutrales de references/data-model.md.
  9. Use la fecha real actual; no confíe en la aritmética de fechas mental.
  10. Si el permiso de escritura de archivos no está disponible, explique los pasos manuales exactos y nunca afirme que una escritura tuvo éxito.
  11. No combine una mutación de datos con una reconstrucción del motor a menos que el usuario solicite explícitamente ambas.
  12. No sobrescriba data.json, .data.backup.*.json o .job-tracker-board.json al implementar o actualizar archivos del motor.

Recursos Incluidos

  • scripts/board_locator.py: identificar, marcar y descubrir directorios de tableros de forma segura.
  • scripts/data_store.py: instantánea, validación, verificación de conflictos, reemplazo atómico y copia de seguridad de datos.
  • assets/dashboard-template.html, dashboard.css y dashboard-*.js: módulos de panel localizados y sin dependencias.
  • assets/server.py: servidor local solo de bucle de retorno y API de datos validada.
  • assets/start.command / assets/stop.command: lanzadores de macOS.
  • assets/start-board.bat / assets/stop-board.bat con asistentes PowerShell coincidentes: lanzadores de Windows con verificaciones de salud y registros de diagnóstico.
  • assets/data.json: semilla vacía solo para un nuevo tablero solicitado explícitamente.
  • tools/: utilidades deterministas de regresión de cruce Sankey.

Skills relacionados