home / skills / openclaw / skills / birthday-reminder

birthday-reminder skill

/skills/manantra/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-reminder

Review the files below or copy the command above to add this skill to your agents.

Files (4)
SKILL.md
2.7 KB
---
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.

Overview

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.

How this skill works

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.

When to use it

  • Add a new birthday by saying a natural sentence with name and date.
  • Ask when someone’s birthday is or how old they will be.
  • Request a list of next upcoming birthdays.
  • Enable automated daily reminders for upcoming birthdays.
  • Import or clean up a simple markdown birthday list.

Best practices

  • Provide the year when you want the exact age to be tracked; omit it for privacy or unknown years.
  • Use unambiguous date formats (DD.MM.YYYY or full month names) to reduce parsing errors.
  • Keep the markdown file sorted by month and day to make manual edits easy.
  • Confirm parsed name and date when adding to avoid duplicates or typos.
  • Run the daily reminder check via cron or a scheduler to ensure timely notifications.

Example use cases

  • User says: "Valentina has a birthday on 14 February" and the skill adds the entry and confirms the age.
  • User asks: "When is Max's birthday?" and the skill returns the date and how many days remain.
  • Request: "Show next birthdays" to see the sorted upcoming list with ages when available.
  • Automated job runs daily and notifies you 7 days before and on the birthday.
  • Quickly scan the markdown file to spot missing years or duplicate names.

FAQ

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.