home / skills / openclaw / skills / birthday-reminder
This skill helps you manage birthdays with natural language, storing, recalling upcoming dates and ages to keep you organized.
npx playbooks add skill openclaw/skills --skill birthday-reminderReview the files below or copy the command above to add this skill to your agents.
---
name: birthday-reminder
description: Manage birthdays with natural language. Store birthdays in /home/clawd/clawd/data/birthdays.md, get upcoming reminders, calculate ages. Use when the user mentions birthdays, wants to add/remember someone's birthday, check upcoming birthdays, or asks about someone's age/birthday. Understands phrases like "X hat am DD.MM. Geburtstag", "Wann hat X Geburtstag?", "Nächste Geburtstage".
---
# 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.
This skill manages birthdays using natural language so you can add, query, and get reminders without manual date handling. It stores a simple markdown list of birthdays and computes upcoming dates and ages automatically. The skill supports multiple date formats and issues reminder triggers relative to each birthday.
The skill reads and writes a markdown file of birthdays in a compact, consistent format. It parses natural-language inputs to extract names and dates, normalizes dates, and stores the entry with an optional birth year. For queries it calculates days until each birthday and the age someone will turn when the year is known, then sorts and presents upcoming items. A daily check can emit reminders 7 days before, 1 day before, and on the birthday.
What date formats does the skill accept?
It accepts DD.MM.YYYY, DD.MM., and natural month names like '14 February'. Variants with single-digit months/days are normalized.
How is age calculated if the year is missing?
If the birth year is missing, the skill will show days until the birthday but cannot calculate the turning age.