Skills rem

Manages macOS Reminders from the terminal using the rem CLI. Creates, lists, updates, completes, deletes, searches, and exports reminders and lists. Supports natural language due dates, filtering, import/export, and multiple output formats. Use when the user wants to interact with Apple Reminders via command line, automate reminder workflows, or build scripts around macOS Reminders.

install
source · Clone the upstream repo
git clone https://github.com/openclaw/skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/bro3886/rem-cli" ~/.claude/skills/openclaw-skills-rem && rm -rf "$T"
OpenClaw · Install into ~/.openclaw/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.openclaw/skills && cp -r "$T/skills/bro3886/rem-cli" ~/.openclaw/skills/openclaw-skills-rem && rm -rf "$T"
manifest: skills/bro3886/rem-cli/SKILL.md
source content

rem — CLI for macOS Reminders

A Go CLI that wraps macOS Reminders. Sub-200ms reads via cgo + EventKit. Single binary, no dependencies at runtime.

Installation

# macOS (recommended)
curl -fsSL https://rem.sidv.dev/install | bash

# Or via Go
go install github.com/BRO3886/rem/cmd/rem@latest

Install this skill into your agent:

# Claude Code or Codex
rem skills install

# OpenClaw
rem skills install --agent openclaw

Quick Start

# See all lists with reminder counts
rem lists --count

# Add a reminder with natural language date
rem add "Buy groceries" --list Personal --due tomorrow --priority high

# List incomplete reminders in a list
rem list --list Work --incomplete

# Search across all reminders
rem search "meeting"

# Complete a reminder by short ID
rem complete abc12345

# View stats
rem stats

Command Reference

Reminder CRUD

CommandAliasesDescription
rem add
create
,
new
Create a reminder
rem list
ls
List reminders with filters
rem show
get
Show full details of one reminder
rem update
edit
Update reminder properties
rem delete
rm
,
remove
Delete a reminder
rem complete
done
Mark reminder complete
rem uncomplete
Mark reminder incomplete
rem flag
Flag a reminder
rem unflag
Remove flag

List Management

CommandAliasesDescription
rem lists
Show all lists
rem list-mgmt create
lm new
Create a list
rem list-mgmt rename
Rename a list
rem list-mgmt delete
lm rm
Delete a list

Search & Analytics

CommandDescription
rem search <query>
Search title and notes
rem stats
Show statistics and per-list breakdown
rem overdue
Show overdue reminders
rem upcoming
Show reminders due in next N days (default: 7)

Import/Export

CommandDescription
rem export
Export to JSON or CSV
rem import <file>
Import from JSON or CSV file

Skills & Other

CommandDescription
rem skills install
Install rem skill for AI agents
rem skills uninstall
Uninstall rem skill from AI agents
rem skills status
Show skill installation status
rem interactive
/
rem i
Interactive menu-driven mode
rem version
Print version
rem completion
Generate shell completions (bash/zsh/fish)

For full flag details on every command, see references/commands.md.

Key Concepts

Short IDs

Reminders have UUIDs like

x-apple-reminder://AB12CD34-...
. The CLI displays the first 8 characters as a short ID (
AB12CD34
). You can pass any unique prefix to commands —
rem complete AB1
works if it matches exactly one reminder.

Natural Language Dates

The

--due
flag accepts natural language:

rem add "Call dentist" --due tomorrow
rem add "Submit report" --due "next friday at 2pm"
rem add "Quick task" --due "in 30 minutes"
rem add "Wrap up" --due eod

Supported patterns:

today
,
tomorrow
,
next monday
,
in 3 hours
,
eod
,
eow
,
5pm
,
2026-02-15
, and more. See references/dates.md for the full list.

Priority Levels

LevelFlag valueAppleScript value
High
--priority high
1 (range 1-4)
Medium
--priority medium
5
Low
--priority low
9 (range 6-9)
None
--priority none
0

Output Formats

All read commands support

-o
/
--output
:

  • table (default) — formatted table with borders
  • json — machine-readable JSON
  • plain — simple text, one item per line

The

NO_COLOR
environment variable is respected.

URL Storage

macOS Reminders has no native URL field. rem stores URLs in the notes/body field with a

URL: 
prefix and extracts them for display.

Common Workflows

Daily review

rem overdue                          # Check what's past due
rem upcoming --days 1                # See today's reminders
rem list --list Work --incomplete    # Focus on work items

Batch operations with JSON

rem export --list Work --format json > backup.json
rem import backup.json --list "Work Archive"

Scripting with JSON output

# Get overdue count
rem overdue -o json | jq 'length'

# List all incomplete reminder titles
rem list --incomplete -o json | jq -r '.[].name'

Public Go API

For programmatic access, use

go-eventkit
directly:

import "github.com/BRO3886/go-eventkit/reminders"

client, _ := reminders.New()
r, _ := client.CreateReminder(reminders.CreateReminderInput{
    Title:    "Buy milk",
    ListName: "Shopping",
    Priority: reminders.PriorityHigh,
})
items, _ := client.Reminders(reminders.WithCompleted(false))

See go-eventkit docs for the full API surface.

Limitations

  • macOS only — requires EventKit framework and
    osascript
  • No tags, subtasks, or recurrence — not exposed by EventKit/AppleScript
  • --flagged
    filter is slower
    (~3-4s) — falls back to JXA since EventKit doesn't expose flagged
  • List deletion may fail on some macOS versions