Introduction
# Birthday Reminder Skill
Manage birthdays naturally. Store in `data/birthdays.md`, query with natural language.
## Storage
Birthdays are stored in `/home/clawd/clawd/data/birthdays.md`:
```markdown # Geburtstage
- **Valentina** - 14.02.2000 (wird 26) - **Max** - 15.03.1990 ```
## Natural Language Patterns
### Adding Birthdays When user says things like: - "Valentina hat am 14. Februar Geburtstag" - "Füge hinzu: Max, 15.03.1990" - "X wurde am 10.05.1985 geboren"
**Action:** 1. Parse name and date 2. Extract year if provided 3. Calculate upcoming age: `birthday_year - birth_year` 4. Append to `/home/clawd/clawd/data/birthdays.md` 5. Confirm with age info
### Querying Birthdays When user asks: - "Wann hat Valentina Geburtstag?" - "Welche Geburtstage kommen als Nächstes?" - "Wie alt wird Valentina?" - "Nächster Geburtstag"
**Action:** 1. Read `/home/clawd/clawd/data/birthdays.md` 2. Parse all entries 3. Calculate days until each birthday 4. Sort by upcoming date 5. Show age turning if year is known
### Listing All When user says: - "Zeige alle Geburtstage" - "Liste meine Geburtstage"
**Action:** 1. Read the file 2. Show formatted list with days until each
## Date Parsing
Support various formats: - "14. Februar" → 14.02 - "14.02." → 14.02 - "14.02.2000" → 14.02.2000 - "14.2.2000" → 14.02.2000
## Age Calculation
```python from datetime import datetime
def calculate_turning_age(birth_year, birthday_month, birthday_day): today = datetime.now() birthday_this_year = today.replace(month=birthday_month, day=birthday_day) if today.date() <= birthday_this_year.date(): birthday_year = today.year else: birthday_year = today.year + 1 return birthday_year - birth_year ```
## Days Until Birthday
```python def days_until(month, day): today = datetime.now() birthday = today.replace(month=month, day=day) if birthday < today: birthday = birthday.replace(year=today.year + 1) return (birthday - today).days ```
## Automatic Reminders
For cron/reminders, check birthdays daily and notify if: - 7 days before - 1 day before - On the day
Use the `check_reminders()` logic from `scripts/reminder.py`.
## File Format
Each line: `- **Name** - DD.MM.YYYY (wird X)` or `- **Name** - DD.MM.`
Keep the file sorted by date (month/day) for easier reading.