Birthday Reminder

v1.0.0

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".

1· 2.6k·4 current·4 all-time

Install

OpenClaw Prompt Flow

Install with OpenClaw

Best for remote or guided setup. Copy the exact prompt, then paste it into OpenClaw for manantra/birthday-reminder.

Previewing Install & Setup.
Prompt PreviewInstall & Setup
Install the skill "Birthday Reminder" (manantra/birthday-reminder) from ClawHub.
Skill page: https://clawhub.ai/manantra/birthday-reminder
Keep the work scoped to this skill only.
After install, inspect the skill metadata and help me finish setup.
Use only the metadata you can verify from ClawHub; do not invent missing requirements.
Ask before making any broader environment changes.

Command Line

CLI Commands

Use the direct CLI path if you want to install manually and keep every step visible.

OpenClaw CLI

Bare skill slug

openclaw skills install birthday-reminder

ClawHub CLI

Package manager switcher

npx clawhub@latest install birthday-reminder
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Suspicious
high confidence
!
Purpose & Capability
The skill claims to store entries in /home/clawd/clawd/data/birthdays.md (markdown lines) and describes appending to that file, but both included scripts read/write /home/clawd/clawd/data/birthdays.json and manage a JSON object keyed by name. The documented file format and the actual on-disk format differ, and the 'append' described in SKILL.md does not match the scripts' behavior (scripts overwrite/update a JSON dictionary). This is an incoherence between description and implementation.
Instruction Scope
SKILL.md instructs the agent to read/append a birthday markdown file in the user's home-data path and refers to check_reminders logic; the shipped scripts operate only on files under /home/clawd/clawd/data and do not access external networks, other system paths, or environment variables. The main concern is the mismatch in file path/format (MD vs JSON) which could lead the agent to write to a different file than the scripts read, producing surprise or data loss.
Install Mechanism
There is no install spec (instruction-only at registry level) and included scripts are plain Python files — nothing is downloaded or executed from remote URLs during installation. This is the lower-risk install pattern.
Credentials
The skill requests no environment variables, no credentials, and touches only a data file under /home/clawd/clawd/data. No excessive or unrelated secrets are requested.
Persistence & Privilege
always is false and the skill does not request system-wide privileges. It will create and write files under /home/clawd/clawd/data (the scripts create the parent directory if missing), which is expected for local data storage but should be noted because it writes to the user's home-area.
What to consider before installing
This skill appears to implement a simple local birthday manager and contains no networking or secret access, but there is a clear mismatch between the human-readable SKILL.md and the actual scripts: SKILL.md says to store and append markdown in /home/clawd/clawd/data/birthdays.md, while both scripts read/write /home/clawd/clawd/data/birthdays.json as a JSON dictionary. Before installing or enabling the skill: 1) Back up any existing birthdays.md and birthdays.json in /home/clawd/clawd/data. 2) Decide whether you want markdown or JSON storage; if you rely on the markdown file, the provided scripts will not read it. 3) Inspect or run the scripts in a sandbox to confirm the behavior (add/list/check) and ensure they meet your expectations. 4) If you accept the JSON approach, update SKILL.md or the agent instructions so the agent and scripts use the same path/format to avoid silent data loss. Finally, note the skill's source/homepage are unknown — trust this only if you reviewed the code yourself or run it in an isolated environment.

Like a lobster shell, security has layers — review code before you run it.

latestvk97a3fxxm9c0zgqy04xtn79zs9809bpa
2.6kdownloads
1stars
1versions
Updated 2mo ago
v1.0.0
MIT-0

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:

# 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

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

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.

Comments

Loading comments...