# Mochi Remind

Handle due reminders, notify the user with natural language and mark them done.

- Repository: https://github.com/kirodotdev/KiroCrew (4711 stars)
- Category: Engineering
- License: Apache-2.0
- Last updated: 2026-11-01
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add kirodotdev/KiroCrew --skill mochi-remind -g -a claude-code -y`
Codex: `npx skills add kirodotdev/KiroCrew --skill mochi-remind -g -a codex -y`
Cursor: `npx skills add kirodotdev/KiroCrew --skill mochi-remind -g -a cursor -y`
Gemini CLI: `npx skills add kirodotdev/KiroCrew --skill mochi-remind -g -a gemini-cli -y`

## Description

Handle due reminders, notify the user with natural language and mark them done.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# @mochi-remind, Handle Due Reminders

Handle reminders that have reached their trigger time.

## Steps

### 1. Verify Meetings (if applicable)

For items with `kind=meeting`, only if the user has connected a calendar tool. **Do not assume a
server or tool name**, look at the tools you actually have and find one that lists events in a
time range.

1. List events in a window around the meeting's `triggerAt` (±2 hours) to find it.
2. Match by subject/title (fuzzy, the label may be abbreviated).
3. Check the event status:
   - **Cancelled**: Tell the user the meeting was cancelled. Mark the item `done`.
   - **Rescheduled** (calendar start differs from the item's `notes.meetingStart` by >1 min; if the item has no `meetingStart`, treat it as on schedule): Tell the user the new time. Keep the user's lead time (`meetingStart` minus `triggerAt`) and call `update_watchlist` with `triggerAt` = new start minus that lead and `notes.meetingStart` = new start. Do NOT mark done.
   - **Still on schedule**: Proceed to notify normally (step 2).
4. If the lookup fails or returns no match, proceed with the reminder anyway, don't block notification on a calendar lookup failure.

Skip this step for `kind=reminder` items or when you have no calendar tool.

### 2. Notify the User

**Before notifying, check activity log for duplicates:**
Call `read_mochi_file({ which: "activity" })` and scan the last 10 entries.
If you find a `notification` entry within the last 15 minutes that already communicated
the same reminder (same label/subject), skip the notification, it was already delivered
by a concurrent agent. Just mark the item done and finish. A "got moved to …" message
from a reschedule is NOT the reminder itself and does not count as a duplicate.
Right after 00:00 UTC the log rotates, so also check `"activity-yesterday"`.

The rest: https://github.com/kirodotdev/KiroCrew/blob/HEAD/src/kiro_crew/apps/builtins/mochi/agents/skills/mochi-remind/SKILL.md
