--- name: mailbox_calendar description: Liest, erstellt und verwaltet Termine und Aufgaben aus dem mailbox.org-Kalender via khal (Termine) und todoman (Aufgaben). Immer verwenden wenn der Nutzer nach Terminen, Kalender, Aufgaben, Tasks oder To-Dos fragt. requires: bins: - khal - vdirsyncer user-invocable: true --- # mailbox.org Kalender & Aufgaben Dieser Skill gibt dir Zugriff auf den mailbox.org-Kalender und die Aufgabenliste von hans@dumbass über die lokal synchronisierten vdirsyncer-Verzeichnisse. ## Wichtige Pfade - Kalender-vdir: `/home/hans/.local/share/vdirsyncer/calendars/Y2FsOi8vMC8zMg` - Task-vdir: `/home/hans/.local/share/vdirsyncer/tasks/MzU` - khal-Binary: `/usr/bin/khal` - todo-Binary: `/home/hans/bin/todo` - vdirsyncer-Binary: `/usr/bin/vdirsyncer` ## Pflichtregeln 1. **Vor jeder Lese-Operation** immer zuerst `vdirsyncer sync` ausführen, damit die Daten aktuell sind. 2. **Nach jeder Schreib-Operation** (neuer Termin, neue Aufgabe, Abschluss) immer `vdirsyncer sync` ausführen, damit die Änderung zu mailbox.org hochgeladen wird. 3. Niemals Termine oder Aufgaben erfinden. Wenn keine Daten vorhanden, klar sagen: "Keine Termine/Aufgaben gefunden." 4. Bei Fehlern den genauen Fehlertext an den Nutzer weitergeben. ## Kalender-Operationen ### Termine anzeigen – heute ``` exec: vdirsyncer sync exec: khal list today ``` ### Termine anzeigen – nächste N Tage ``` exec: vdirsyncer sync exec: khal list today Nd ``` Beispiel für 7 Tage: `khal list today 7d` ### Termine anzeigen – bestimmtes Datum ``` exec: vdirsyncer sync exec: khal list YYYY-MM-DD ``` ### Nächste Woche ``` exec: vdirsyncer sync exec: khal list monday 7d ``` ### Neuen Termin erstellen ``` exec: khal new YYYY-MM-DD HH:MM HH:MM "Titel des Termins" exec: vdirsyncer sync ``` Beispiel: `khal new 2026-06-01 14:00 15:00 "Zahnarzt"` Ganztägiger Termin: `khal new 2026-06-01 "Geburtstag Oma"` ### Interaktiver Kalender (nur wenn Nutzer explizit fragt) ``` exec: ikhal ``` ## Aufgaben-Operationen ### Alle offenen Aufgaben anzeigen ``` exec: vdirsyncer sync exec: /home/hans/bin/todo list ``` ### Aufgaben mit Fälligkeitsdatum anzeigen ``` exec: vdirsyncer sync exec: /home/hans/bin/todo list --due ``` ### Neue Aufgabe erstellen (mit Fälligkeitsdatum) ``` exec: /home/hans/bin/todo new "Titel der Aufgabe" --due YYYY-MM-DD exec: vdirsyncer sync ``` Beispiel: `/home/hans/bin/todo new "Steuererklärung einreichen" --due 2026-05-31` ### Neue Aufgabe erstellen (ohne Datum) ``` exec: /home/hans/bin/todo new "Titel der Aufgabe" exec: vdirsyncer sync ``` ### Aufgabe als erledigt markieren Zuerst ID der Aufgabe ermitteln: ``` exec: /home/hans/bin/todo list ``` Dann mit der angezeigten ID: ``` exec: /home/hans/bin/todo done exec: vdirsyncer sync ``` ### Aufgabe löschen ``` exec: /home/hans/bin/todo delete exec: vdirsyncer sync ``` ## Ausgabe-Format - Termine immer mit Datum, Uhrzeit und Titel ausgeben. - Aufgaben mit ID, Titel und Fälligkeitsdatum (falls vorhanden) ausgeben. - Wenn `khal list` leer zurückkommt, sagen: "Keine Termine in diesem Zeitraum." - Wenn `/home/hans/bin/todo list` leer zurückkommt, sagen: "Keine offenen Aufgaben." ## Fehlerbehandlung - Wenn `vdirsyncer sync` mit einem Fehler endet: den Fehler anzeigen, nicht weitermachen. - Wenn khal oder todo nicht gefunden: prüfen ob die Binaries existieren: ``` exec: which khal exec: ls /home/hans/bin/todo ``` - Wenn khal "critical: ..." meldet: Konfigurationsfehler, Nutzer auf `~/.config/khal/config` hinweisen. ## Beispiel-Abläufe **"Was habe ich diese Woche?"** 1. `vdirsyncer sync` 2. `khal list today 7d` 3. Ausgabe strukturiert zurückgeben. **"Erstelle einen Termin: Arzt am 15. Mai um 9 Uhr"** 1. `khal new 2026-05-15 09:00 10:00 "Arzt"` 2. `vdirsyncer sync` 3. Bestätigung ausgeben. **"Welche Aufgaben sind fällig?"** 1. `vdirsyncer sync` 2. `/home/hans/bin/todo list --due` 3. Ausgabe mit IDs und Daten zurückgeben. **"Markiere Aufgabe 3 als erledigt"** 1. `/home/hans/bin/todo done 3` 2. `vdirsyncer sync` 3. Bestätigung ausgeben.