Files

152 lines
4.0 KiB
Markdown
Raw Permalink Normal View History

2026-05-06 11:25:26 +02:00
---
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 <ID>
exec: vdirsyncer sync
```
### Aufgabe löschen
```
exec: /home/hans/bin/todo delete <ID>
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.