Skip to content
Back to skills

Calendar Reminders

ASecurity

Calendar reminders pipeline: config-driven wrapper around gcalcli (Google Calendar) plus optional CalDAV source via vdirsyncer+khal, and a reminder planner that outputs a JSON plan for one-shot OpenClaw reminders.

  • 33 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 5, 2026
toolspythonrustgoshellsecurity

Works with

  • cli

Security analysis

A100/100

Pro scans all 3 files and shows the line behind each finding

Scanned September 5, 2026

npx -y skills add dvcrn/openclaw-skills-marketplace --skill calendar-reminders --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Calendar Reminders?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Calendar Reminders
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/dvcrn-calendar-reminders/badge)](https://www.skillsdirectory.com/skills/dvcrn-calendar-reminders)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: calendar-reminders
description: "Calendar reminders pipeline: config-driven wrapper around gcalcli (Google Calendar) plus optional CalDAV source via vdirsyncer+khal, and a reminder planner that outputs a JSON plan for one-shot OpenClaw reminders."
---

# gcalcli calendar wrapper + reminder planner

This skill provides:
- `scripts/calendar` — wrapper around `gcalcli`
- `scripts/calendar_reminder_plan.py` — produces a JSON plan for reminder scheduling
- `references/openclaw-calendar.example.json` — example config format

## Config

Copy the example config to a private location and edit it:

- Default path: `~/.config/openclaw/calendar.json`
- Override with env: `OPENCLAW_CALENDAR_CONFIG=/path/to/calendar.json`

## Requirements

- Required: `python3`, `gcalcli`
- Optional (for CalDAV/iCloud): `vdirsyncer`, `khal`

## Security notes (why ClawHub may flag this)

This skill *invokes external binaries* and is config-driven.

- The planner runs `gcalcli`/`khal` using `subprocess.check_output([...], shell=False)` (argument-list form; safe against shell injection from event titles).
- If you wire a cron job to run `vdirsyncerSyncCommand`, make sure you run it as an **argv list** (`subprocess.run(cmd_list, shell=False)`), not as a shell string.
- Only point `gcalcliPath` / `khalBin` to **trusted binaries** (prefer absolute paths). Don’t run untrusted paths.

## Auth (Google)

`gcalcli` requires OAuth. On headless servers you may need SSH port-forwarding.
The wrapper uses `--noauth_local_server` to print instructions.

## Reminder planning

The planner outputs a JSON blob describing reminders to schedule. A separate cron job
(or an agent turn) can read it and create one-shot OpenClaw reminders.

Defaults:
- Ignore birthdays.
- Timed events are considered important.
- All-day events only trigger reminders if their title matches configured keywords.

## Wiring a daily reminder scheduler (OpenClaw)

Create a daily cron job (e.g. 00:05 local time) that:

1) If CalDAV is enabled in config, runs the configured `vdirsyncer` sync command.
2) Runs `scripts/calendar_reminder_plan.py` to get a JSON plan.
3) For each planned reminder, creates a one-shot OpenClaw `systemEvent` reminder at `reminderAtUtc`.
4) Writes a small state file so you don’t schedule duplicates.

(Our skill intentionally provides the wrapper + planner; scheduling is left to your cron/agent wiring.)

Files in this skill

  • SKILL.md2.4 KB
  • references/openclaw-calendar.example.json925 B
  • scripts/calendar_reminder_plan.py10.9 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…