Job Application Tracker
Verwenden Sie ein lokales, portables Job-Board als Single Source of Truth für Bewerbungsaufzeichnungen. Lassen Sie den Benutzer natürlich sprechen; lösen Sie das richtige Board auf, bewahren Sie vorhandene Informationen und führen Sie deterministische, konfliktsichere Änderungen durch.
Sprachrichtlinie
Behalten Sie die Skill-Implementierung, Agent-Anweisungen, Referenzen, Skripte, Schemas, Kommentare und Tests in Englisch. Behandeln Sie englische Namen und Definitionen als kanonisch.
Benutzerorientierte Oberflächen können lokalisiert werden. README.md und die assets/dashboard-* Frontend-Dateien enthalten derzeit Chinesisch und Englisch. Speichern Sie sprachneutrale Codes für Phasen und Batches, sodass die Anzeigesprache niemals die zugrunde liegende Bedeutung ändert.
Erforderliche Referenzen
Lesen Sie nur die für den aktuellen Vorgang erforderliche Referenz:
- Lesen Sie references/data-model.md vor dem Aufzeichnen, Aktualisieren, Validieren, Zusammenfassen oder Erinnern.
- Lesen Sie references/deployment.md vor dem Installieren, Aktivieren, Lokalisieren, Verschieben, Reparieren oder Starten eines Boards.
- Lesen Sie references/board-ui.md vor dem Neuerstellen oder Ändern des Dashboards, der Starter, des lokalen Servers oder der Visualisierungslogik.
Lösen Sie zuerst das Board auf
Bezeichnen Sie das ausgewählte Verzeichnis als BOARD_DIR.
Verwenden Sie python3 unter macOS/Linux. Ersetzen Sie unter Windows python3 in den untenstehenden Befehlen durch py -3, falls verfügbar, andernfalls python.
-
Wenn der Benutzer einen Pfad angibt, überprüfen Sie ihn:
python3 <skill-dir>/scripts/board_locator.py inspect --board-dir <path>Wenn es gültiges altes
data.jsonenthält, aber die Markierung fehlt, erklären Sie, dass eine portable, nicht sensible Identitätsdatei hinzugefügt wird, und führen Sie dann aus:python3 <skill-dir>/scripts/board_locator.py mark --board-dir <path> -
Andernfalls entdecken Sie markierte Boards:
python3 <skill-dir>/scripts/board_locator.py discover -
Interpretieren Sie die Entdeckung genau:
- Exit 0: Verwenden Sie das einzige gültige Board und melden Sie dessen Pfad und Datensatzanzahl.
- Exit 4: Fragen Sie nach einem vorhandenen Pfad oder expliziter Erlaubnis, ein neues Board zu erstellen.
- Exit 5: Zeigen Sie jeden Kandidaten und fordern Sie den Benutzer zur Auswahl auf.
Wählen Sie niemals nach Änderungszeit, Datensatzanzahl oder Schätzung. Erstellen Sie niemals ein Board, nur weil die Entdeckung fehlgeschlagen ist. Speichern Sie niemals eine globale absolute Pfadregistrierung im Home-Verzeichnis des Benutzers.
Sicherer Daten-Workflow
Für jeden Lese- oder Schreibvorgang:
-
Lösen Sie
BOARD_DIRauf. -
Holen Sie das aktuelle Datum, wenn Daten den Vorgang beeinflussen: Führen Sie
date +%Y-%m-%dunter macOS/Linux oder(Get-Date).ToString('yyyy-MM-dd')in Windows PowerShell aus. -
Erstellen Sie einen Snapshot:
python3 <skill-dir>/scripts/data_store.py snapshot \ --data <BOARD_DIR/data.json> -
Bewahren Sie den zurückgegebenen
boardTitle, optionaleslang, optionalestageLevels, alle Datensätze, alle unbekannten, aber gültigen Datensatzfelder und das zurückgegebene ETag. -
Für einen Schreibvorgang erstellen Sie eine Kandidaten-JSON-Datei und ersetzen Sie sicher:
python3 <skill-dir>/scripts/data_store.py replace \ --data <BOARD_DIR/data.json> \ --input <candidate.json> \ --expected-etag <etag> -
Behandeln Sie Exit 3 als Konflikt durch gleichzeitige Bearbeitung. Erstellen Sie einen neuen Snapshot, wenden Sie nur die vom Benutzer angeforderte Änderung erneut an und wiederholen Sie den Vorgang. Erzwingen Sie niemals einen veralteten Schreibvorgang.
-
Bestätigen Sie den Erfolg erst, nachdem das Tool erfolgreich war.
Schreiben Sie niemals direkt in data.json. Laden Sie niemals Lehrexempel ohne explizite Benutzerbestätigung oder behandeln Sie sie als echte Bewerbungen. Ändern Sie während eines reinen Datenvorgangs niemals bereitgestellte Engine-Dateien.
Kernoperationen
Bewerbung aufzeichnen oder aktualisieren
- Lesen Sie references/data-model.md.
- Finden Sie einen vorhandenen Datensatz nach Unternehmen und Rolle. Wenn das Ziel mehrdeutig ist, bitten Sie den Benutzer um Auswahl.
- Fordern Sie für einen neuen Datensatz Unternehmen und Rolle. Fragen Sie einmal nach fehlenden optionalen Details – Kanal, Bewerbungsportal, Stadt und Recruiting-Batch – und warten Sie dann auf die Antwort des Benutzers oder die explizite Aufforderung zum Überspringen, bevor Sie speichern.
- Fügen Sie einen neuen Datensatz am Anfang von
recordsein, sodass neue Bewerbungen standardmäßig zuerst erscheinen. Bewahren Sie die vorhandene Array-Position beim Aktualisieren eines Datensatzes. - Ändern Sie für einen vorhandenen Datensatz nur die Felder, die der Benutzer erwähnt hat.
- Verfolgen Sie den Fortschritt, indem Sie ein Ereignis anhängen; pflegen Sie niemals ein separates Statusfeld.
- Für eine unbekannte benutzerdefinierte Phase bewahren Sie deren genauen Text und fügen Sie eine
stageLevels-Regel hinzu. Verwenden Sie die vom Benutzer angeforderte Platzierung; andernfalls standardmäßig auf eine eigene Ebene unmittelbar vork_hr. - Halten Sie
noteleer, es sei denn, der Benutzer bittet explizit darum, etwas hineinzuschreiben. - Verwenden Sie den sicheren Daten-Workflow und melden Sie den genauen Datensatz und das geänderte Ereignis.
Erfinden Sie niemals ein Unternehmen, eine Rolle, ein Datum, einen Kanal, einen Standort, ein Gehalt, ein Ergebnis oder eine Interviewrunde.
Textuelle Fortschrittsübersicht anzeigen
- Lesen Sie references/data-model.md.
- Erstellen Sie einen sicheren Snapshot ohne Datenänderung.
- Stellen Sie qualifizierende datierte Erinnerungen von heute bis zu den nächsten sieben Tagen an die erste Stelle.
- Gruppieren Sie Datensätze in in Bearbeitung, Angebot erhalten, Beendet und Noch nicht beworben.
- Identifizieren Sie veraltete Datensätze in Bearbeitung und bevorstehende Meilensteine.
- Beenden Sie mit einer konkreten nächsten Aktion.
Bauen Sie kein HTML neu auf, es sei denn, der Benutzer bittet explizit darum.
Visuelles Board öffnen oder neu erstellen
- Lesen Sie references/deployment.md und references/board-ui.md.
- Lösen Sie das vorhandene Board auf und validieren Sie es, bevor Sie Engine-Dateien berühren.
- Sagen Sie dem Benutzer normalerweise, er solle das Board starten und
http://127.0.0.1:8770/öffnen. - Kopieren Sie das Frontend-Engine-Set nur neu, wenn eine Engine-Datei fehlt oder der Benutzer explizit bittet, die Engine neu zu erstellen oder zu aktualisieren.
- Bewahren Sie
data.jsonund alle Sicherungen auf.
Installieren oder Aktivieren
Lesen Sie references/deployment.md und folgen Sie dessen entdeckungsbasiertem Workflow. Installation des Skills und Erstellung eines neuen Boards sind separate Aktionen. Die Erstellung eines Boards erfordert explizite Benutzerabsicht.
Harte Regeln
- Verwenden Sie nur ein aufgelöstes, markiertes
BOARD_DIR. - Erstellen Sie nicht stillschweigend ein Ersatzboard.
- Durchsuchen Sie das Home-Verzeichnis des Benutzers nicht rekursiv.
- Speichern Sie keine globale Pfadregistrierung.
- Verwenden Sie
data_store.pyfür jeden Agent-seitigen Datenschreibvorgang. - Bewahren Sie nicht erwähnte Daten und vorhandene Felder.
- Halten Sie
noteleer, es sei denn, explizit angefordert. - Verwenden Sie neutrale Phasen- und Batch-Codes aus
references/data-model.md. - Verwenden Sie das aktuelle Datum; verlassen Sie sich nicht auf mentale Datumsarithmetik.
- Wenn die Datei-Schreibberechtigung nicht verfügbar ist, erklären Sie die genauen manuellen Schritte und behaupten Sie niemals, dass ein Schreibvorgang erfolgreich war.
- Kombinieren Sie eine Datenänderung nicht mit einer Engine-Neuerstellung, es sei denn, der Benutzer fordert explizit beides.
- Überschreiben Sie nicht
data.json,.data.backup.*.jsonoder.job-tracker-board.jsonbeim Bereitstellen oder Aktualisieren von Engine-Dateien.
Mitgelieferte Ressourcen
scripts/board_locator.py: Board-Verzeichnisse identifizieren, markieren und sicher entdecken.scripts/data_store.py: Daten snapshot, validieren, konfliktprüfen, atomar ersetzen und sichern.assets/dashboard-template.html,dashboard.cssunddashboard-*.js: lokalisierte, abhängigkeitsfreie Dashboard-Module.assets/server.py: Loopback-only lokaler Server und validierte Daten-API.assets/start.command/assets/stop.command: macOS-Starter.assets/start-board.bat/assets/stop-board.batmit passenden PowerShell-Helfern: Windows-Starter mit Gesundheitschecks und Diagnoseprotokollen.assets/data.json: Leerer Seed nur für ein explizit angefordertes neues Board.tools/: Deterministische Sankey-Kreuzungsregressions-Werkzeuge.