reminders
Skill2 starsChanged 13 days agoMITView on GitHub
Leaves a reminder for the user, shown in a later Claude Code session on this computer or another one, and notifies them on the desktop and on the phone (Claude mobile app through a scheduled task, or ntfy) every morning and at the first session of the day. Use when the user says "remind me", "rappelle-moi", "tomorrow when I open a session, tell me…", "don't let me forget", "list my reminders", "that reminder is done", or when a SessionStart message lists reminders.
17 other projects use a version of this.
Adopted by
Most recently taken up by
- yourbeckett/beckett-for-claudetheir own version, first seen Nov 1, 2026
- RumbleJack56/skillstheir own version, first seen Oct 20, 2026
- steipete/agent-scriptstheir own version, first seen Oct 20, 2026
- metraton/gaiatheir own version, first seen Oct 13, 2026
- microsoft/aibast-agents-librarytheir own version, first seen Oct 13, 2026
- jholhewres/devclaw-skillstheir own version, first seen Oct 9, 2026
Used with
Projects with it also use calendar.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
jacobraskSkillcalendar
Interact with Apple Calendar via AppleScript. Use when the user asks to check calendar, view events, create events, manage schedule, find free time, or list calendars. Triggers include "my calendar", "my schedule", "calendar events", "create event", "add to calendar", "what's on my calendar", "free time", "available slots", "upcoming events", "today's events". Requires macOS with Calendar.app.
Also in 4 projects that use this
Other versions17 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 17
- steipete/agent-scripts★ 7.4ksame name
- kellyvv/PhoneClaw★ 1.3ksame name
- brianharms/reminder-watch★ 63same name
- JinyangWang27/people-context★ 60same name
- Deibler/edmund-harness★ 24same name
- microsoft/aibast-agents-library★ 8same name
- jholhewres/devclaw-skills★ 4same name
- metraton/gaia★ 4same name
- eddmann/jeeves★ 2same name
- montagao/skills★ 2same name
7 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository13 other files it gives its agents.
- AGENTS.mdAGENTS.md
- capability-builderSkill
- ci-reviewSkill
- daily-syncSkill
- handoffSkill
- insta360-montageSkill
- kbSkill
- pr-watchSkill
- reopen-sessionsSkill
- sprint-demoSkill
- tech-watchSkill
- test-evidenceSkill
- video-montageSkill
The file
We split this skill into the rules it gives an agent
10 rules. 0 are common, 2 are distinctive, and 8 are very specific to this project.
0
Common
Most of the 16 edited versions we read keep these.
2
Distinctive
This author's own choices. Worth a look.
8
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 45
Ask only these and what you can't infer.
- Very specific: line 46
Every new session gets each due reminder (global ones everywhere, repo-specific ones in their folder) until it's done or past until.
- Distinctive: line 47
Never put secrets in it: the file goes to GitHub.
- Very specific: line 54
When the user says a reminder is done: bash $SK/reminders.sh done <id> (the file name without .md).
- Very specific: line 56
When the user wants to do a reminder now ("let's do the reminder <id> now", the pane's pick): read its file and help with it.
- Very specific: line 67
If a cloud routine was set up before the encryption, offer to turn it off (update its trigger with enabled: false): it can no longer read …
- Very specific: line 72
if something is due, send one PushNotification (one line, under 200 characters, in the user's language), then one line per reminder.
- Distinctive: line 74
Check that the test notification reached the phone.
- Very specific: line 76
Test both with bash $SK/reminders.sh notify "test".
- Very specific: line 77
If the morning run isn't scheduled on this computer (bash <daily-sync skill folder>/schedule.sh status.
“Common” is measured: kept by at least 6 in 10 of the 16 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Reminders
A reminder is for the user to remember: it never runs anything by itself, and the user always picks it up. Work for Claude to do on another computer, or a task for the user's assistant to run by itself ("ask <assistant> to … at …"), is a handoff: use the handoff skill.
A reminder is one Markdown file in ~/.claude-sync/reminders/ (or $CLAUDE_REMINDERS_DIR), the config sync repo, so every computer of the user gets it. Scripts are in this skill's base directory (~/.claude/skills/reminders/ when installed by install.sh; $SK below).
It needs the sync engine (~/.claude-sync) and the daily-sync skill:
- At session start, the hook shows the due reminders it already has in the terminal and hands them to you, without waiting: the sync runs in the background. When it brings new ones, they are notified at once and reach you with the user's next message. Remind the user in your next reply, before anything else.
- Every morning (09:00 by default), the daily sync runs
morning.sh, which sends the due reminders to the desktop and the phone, with no session open. - At the first session of the day that has a due reminder, the same notification goes out once.
Leave a reminder
Write ~/.claude-sync/reminders/<YYYY-MM-DD>-<short-slug>.md:
---
title: <one line the user will read in a notification, in their language>
on: <YYYY-MM-DD, or YYYY-MM-DD HH:MM: when it starts showing>
until: <YYYY-MM-DD: last day it shows (optional)>
every: <repeating only: friday, or several days "monday, thursday", or day, or weekday, or "3 days", or month (optional)>
times: <repeating only: several times a day, "08:00, 14:00" (optional)>
group: <what the reminders pane files it under: an organization, a client, a project (optional)>
where: <repo-specific only: the folder the session must be in, as a path or its tail like "dev/shop"; leave out for a global reminder>
machine: <a name from ~/.claude-sync/machines/ (optional: every computer)>
created: <YYYY-MM-DD HH:MM>
---
<What it is about and what the user wants to do, in their language: people, dates, links, the points to raise.
Enough for a session in a few days, without this conversation, to help.>- Always ask whether the reminder is global or for one repo/folder, unless the user already said it: "Global (every session, any repo, any computer) or only in <the folder/repo in question>?", and say which you'd pick and why (work on this repo's code fits the repo; a call, a meeting or an errand is global). Global leaves
whereout. Opening a session in a folder is not a reason to tie the reminder to it. A repo-specific reminder setswhereto that repo or folder. - Ask whether they want it at a set time, unless they gave one: "At a set time, or with the morning notification?". A day alone ("tomorrow", "Thursday") means
on:that day, shown from the start of the day and notified with the morning run. A time meanson: YYYY-MM-DD HH:MM; when the phone notification goes through a dedicated session (below), also schedule a one-shot wake-up of that session at that time (create_triggerwithpersistent_session_idandrun_once_at) so the push lands then. - Repeating ("every Friday", "each morning"):
every:with the days, in English.on:is when the series starts, and its time of day, if any, is the time it shows each of those days, else 09:00 (REMINDERS_AT), when the morning sync notifies;until:ends the series.- "Every 3 days" is
every: 3 days, counted fromon:. "Every month" isevery: month, on the day ofon:(the last day of a shorter month when that day is missing). - Several times a day ("at 8 and at 2") is
times: 08:00, 14:00, which takes the place of the time inon:.
- "Every 3 days" is
- Group: when the reminder clearly belongs to an organization, a client or a project the user works for (their employer, a customer), set
group:to its name, the same spelling each time, so the pane files them together. Otherwise leave it out: the pane files it by folder, then computer, then "General". Closing it for the day (done) brings it back on its next day;stopends it. - Ask only these and what you can't infer. "Tomorrow" means
on:the next day; a meeting on a date meansuntil:that date. When the user says "this morning" or "now", use today. - Every new session gets each due reminder (global ones everywhere, repo-specific ones in their folder) until it's done or past
until. - Never put secrets in it: the file goes to GitHub.
- Then run
bash ~/.claude-sync/sync.sh nowso the other computers get it, and tell the user when and where it will show up.
Manage them
bash $SK/reminders.sh list: every reminder with its state (due,later,expired), and for a repeating one when it shows next.bash $SK/reminders.sh due [DIR]: the files due for a session in DIR.- When the user says a reminder is done:
bash $SK/reminders.sh done <id>(the file name without.md); a repeating one is closed for today only. When they no longer want a repeating one:stop <id>. Thenbash ~/.claude-sync/sync.sh now. Offer to close expired ones when you see them. - Closed reminders move to
past/with aclosed:line and stay there 60 days;restore <id>puts one back as it was (its dates and repeat days),delete <id>removes one for good. - When the user wants to do a reminder now ("let's do the reminder
<id>now", the pane'spick): read its file and help with it; once it's done, close it withdone. bash $SK/reminders.sh json [DIR]: all of them, past ones included, as JSON. The reminders-handoffs mod reads it:/reminders-paneor the band button above the prompt.
Notifications
- Desktop: macOS notification, Windows toast,
notify-sendon Linux. First check whether the reminders are encrypted:
bash $SK/reminders.sh encrypted. When it saysencrypted(the sync repo encrypts the folder with git-crypt), a cloud routine reads only ciphertext from GitHub, so the Claude app option below can't work as it is. Propose instead, in this order, with what each costs:- The user's assistant, when
reminders.sh agentslists one that holds the key (it runs on a server that reads the sync repo): a repeating task for it (written with the handoff skill), every day at the morning time, asking it to list the due reminders (or adding them to a morning briefing it already gives). Nothing to install, and it works with every computer off. - ntfy from the computers (below): each computer reads its own decrypted copy and the morning sync pushes. It only works when one of them is on at that time, and what it pushes goes through the ntfy server in clear: set it to send only the count (below), or use a self-hosted server.
- The cloud routine with the key: the key, as a secret in the cloud environment, lets the session run
git-crypt unlock. The key then leaves the user's computers, which undoes much of the encryption: only on their explicit choice.
If a cloud routine was set up before the encryption, offer to turn it off (update its trigger with
enabled: false): it can no longer read the reminders.- The user's assistant, when
- Phone, first choice when the reminders are in clear: the Claude mobile app. Always propose this first. It's a recurring Claude Code scheduled task (a cloud routine) that runs every morning in a fresh cloud session, reads the reminders from the sync repo on GitHub and ends with a short summary; its push notification lands in the Claude app. Set it up with the user's yes:
- A session that a scheduled task creates from scratch gets no repo access, and the private sync repo is refused. So first create a dedicated cloud session with the private sync repo attached (
create_sessionwith itssource_url, title "Morning reminders"). Never hard-code the repo: read the user's own withgit -C ~/.claude-sync remote get-url origin(or ask) and write it out in the session's first message. Its first message sets its job, read-only, and runs it once as a test:- pull the sync repo, and read this skill's
SKILL.mdfor the format; - list what is due in the user's time zone:
onnot after now,untilnot before today;whereandmachineonly limit coding sessions; - if something is due, send one
PushNotification(one line, under 200 characters, in the user's language), then one line per reminder; otherwise reply "no reminders today" and send no notification.
- pull the sync repo, and read this skill's
- Then make a daily scheduled task that wakes that session:
create_triggerwithpersistent_session_id, a cron in the user's time zone (CRON_TZ=<zone> M H * * *, default around 09:00), and a short prompt: "run the morning check". The session sends the push itself, so the task needs no notification setting of its own. A fresh-session task (create_new_session_on_fire) only works if the user's cloud environment already gives new sessions access to the sync repo: test it once before relying on it. Without these tools, the user can do the same at claude.ai/code. - Check that the test notification reached the phone.
- A session that a scheduled task creates from scratch gets no repo access, and the private sync repo is refused. So first create a dedicated cloud session with the private sync repo attached (
- Phone, alternative: ntfy, when the user doesn't want the Claude app, wants the computer itself to push, or the reminders are encrypted. They install the ntfy app and subscribe to a topic name that is hard to guess (anyone who knows it can read it); you write it on each computer to
~/.claude/reminders.json:{"ntfy": "https://ntfy.sh/<topic>"}(or a self-hosted server URL). That file stays on the computer. Adding"ntfy_detail": "count"sends the phone only how many reminders are due ("2 reminders due"), never their titles: offer it whenever the reminders are encrypted, since the ntfy server sees everything it carries. The desktop notification keeps the titles. - Test both with
bash $SK/reminders.sh notify "test". - If the morning run isn't scheduled on this computer (
bash <daily-sync skill folder>/schedule.sh status; the folder is~/.claude/skills/daily-sync/, or the daily-sync plugin's), offer to turn it on with the daily-sync skill.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

