Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Calendar skill with user-adaptive backend selection (Flag 3). Default: local SQLite store. Optional: Google Calendar MCP, Routinika or UpToday as backend — controlled via assist/prefs.json. Without preference the LLM asks the user interactively.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 1113% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 109% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 450% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 89% | 0% |
| case-07 | ✗→✓ | ▲ Improved | -10% | 0% |
<img src="banner.png" width="100%" alt="kalender banner">
> Deutsch — Offizielle Deutsch-Version / Documento Oficial en Deutsch.
Capture, query and manage appointments — with a selectable backend. The core (kalender_core.py) always uses the local SQLite store as the default. The LLM selects an alternative backend from assist/prefs.json if needed.
Flag 3 — Backend selection:
| kalender_backend in prefs.json | Behaviour | |---|---| | local (default) | SQLite store in this skill folder | | google | Google Calendar MCP (LLM path only, not in core.py) | | routinika | Routinika calendar via module-installer (not impl. v0.1) | | uptoday | UpToday calendar via module-installer (not impl. v0.1) | | not set | LLM asks the user interactively for preferred backend |
> kalender_core.py implements the local backend exclusively. > Google Calendar MCP and further backends are LLM-driven and are > documented in SKILL.md, not in the core.
| Phrase | Action | |---|---| | "Add an appointment" | Capture a new appointment | | "What is on today?" | Query today's appointments | | "What is on this week?" | 7-day overview | | "Appointment title] on date]" | Create appointment with date | | "All appointments in month]" | Monthly overview | | "Delete appointment ID]" | Remove appointment | | "Export appointment" | ICS export of all/individual appointments |
assist/prefs.json → kalender_backend.bash# Create appointment (Deutsch) python kalender_core.py add "Dentist" --date 2026-07-01 --time 10:00 [--duration 60] [--location "Dr. X practice"] # Today's appointments (Deutsch) python kalender_core.py today # Weekly overview (Deutsch) python kalender_core.py week [--from 2026-06-22] # Monthly overview (Deutsch) python kalender_core.py month [--month 2026-07] # All appointments (optionally with search term) (Deutsch) python kalender_core.py list [--search "Dentist"] [--limit 50] # Delete appointment (Deutsch) python kalender_core.py delete <id> # ICS export (Deutsch) python kalender_core.py export [--id <id>] [--out calendar.ics] # Backend check (Deutsch) python kalender_core.py check-backend # Alternative store (e.g. for tests) (Deutsch) python kalender_core.py --store /tmp/kal_test.db today --dry-run
| Property | Value | |---|---| | Type | SQLite (local backend) | | Path (default) | skills/assist/kalender/store.db | | Override | --store <path> or env KALENDER_STORE | | Tables | events |
sqlCREATE TABLE IF NOT EXISTS events ( id TEXT PRIMARY KEY, -- UUID (short: 8 hex) title TEXT NOT NULL, -- appointment name date TEXT NOT NULL, -- ISO date YYYY-MM-DD time TEXT, -- HH:MM (optional) duration_min INTEGER, -- duration in minutes (optional) location TEXT, -- location (optional) description TEXT, -- note/description recurrence TEXT, -- ICS RRULE (optional, e.g. "FREQ=WEEKLY") ics_uid TEXT UNIQUE, -- ICS UID for import/export created_at TEXT NOT NULL, updated_at TEXT NOT NULL );
local backend — lightweight, no external dependencies.recurrence/RRULE) are stored but not evaluated — evaluation is v0.2.store.db — no network access in the core.store.db to Git (recommended: .gitignore).mcp__claude_ai_Google_Calendar__*) — alternative backend, LLM-drivenassist/haushalt-manager — Routinika integration (presence check pattern)tools/module-installer/module_installer.py — for future Routinika/UpToday backend integration| Version | Date | Change | |---|---|---| | 0.1.0 | 2026-06-22 | Initial creation — Flag-3 logic, local backend, ICS export |
Other measured skills in the registry, with their headline benchmark lift.