Birthday Reminder
by @manantra
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".
clawhub install birthday-reminder📖 About This Skill
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:
# GeburtstageValentina - 14.02.2000 (wird 26)
Max - 15.03.1990
Natural Language Patterns
Adding Birthdays
When user says things like: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: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:Action: 1. Read the file 2. Show formatted list with days until each
Date Parsing
Support various formats:
Age Calculation
from datetime import datetimedef 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
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:
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.