From productivity
Set time-based reminders that deliver via chat when they come due. Supports natural language times ("next Tuesday at 9am"), recurrence (daily/weekly/weekdays/monthly), and cross-team reminders ("remind Sarah to send the proposal"). Use when someone says "remind me to...", "follow up on...", "ping me about...", or "set a reminder for [person]".
How this skill is triggered — by the user, by Claude, or both
Slash command
/productivity:proactive-remindersThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Go beyond static task lists — set reminders that **deliver themselves** at the right time via ~~chat. Supports natural language scheduling, recurrence, teammate reminders, and optional links to ~~CRM deals or ~~project tracker items.
Go beyond static task lists — set reminders that deliver themselves at the right time via ~~chat. Supports natural language scheduling, recurrence, teammate reminders, and optional links to ~~CRM deals or ~~project tracker items.
| Connector | What It Adds |
|---|---|
| ~~chat (required) | Delivers reminders as DMs when they come due |
| ~~CRM | Links reminders to deals for pipeline follow-up context |
| ~~project tracker | Links reminders to tasks/issues |
| ~~calendar | Cross-references with scheduled meetings |
Minimum requirement: A ~~chat connector is needed to deliver reminders. Without it, this skill can still help draft reminders but cannot deliver them proactively.
┌─────────────────────────────────────────────────────────────┐
│ PROACTIVE REMINDERS │
├─────────────────────────────────────────────────────────────┤
│ │
│ 1. PARSE Natural language → structured reminder │
│ "remind me to call Acme next Tuesday at 2pm" │
│ → who: me, what: call Acme, when: Tue 2:00 PM │
│ │
│ 2. VALIDATE Ensure the date is in the future │
│ ⚠️ If year looks wrong, auto-correct to current year │
│ ⚠️ If time is ambiguous, default to 9:00 AM │
│ │
│ 3. STORE Save to persistent storage │
│ → reminder table / file with: who, what, when, │
│ created_by, recurrence, deal/task link │
│ │
│ 4. DELIVER When time arrives, send via ~~chat │
│ → DM to the assigned person │
│ → Include context (deal name, task link) │
│ → Handle recurrence (create next occurrence) │
│ │
│ 5. MANAGE List, dismiss, reschedule │
│ → "show my reminders" → list upcoming │
│ → "cancel the Acme reminder" → dismiss │
│ → "push that to Friday" → reschedule │
│ │
└─────────────────────────────────────────────────────────────┘
When the user says "remind me to...", "follow up on...", "ping me about...", or "set a reminder for...":
1. Parse the request into structured fields:
| Field | Source | Default |
|---|---|---|
message | What to be reminded about | Required |
remind_at | When to deliver (ISO 8601 timestamp) | Required — parse from natural language |
assigned_to | Who gets the reminder | Current user |
recurrence | Repeat pattern | None |
deal_id / task_id | Linked item | None |
2. Parse natural language times:
| User says | Interpret as |
|---|---|
| "tomorrow at 2pm" | Next day, 2:00 PM in user's timezone |
| "next Tuesday" | The upcoming Tuesday, 9:00 AM |
| "Friday at 8am" | The upcoming Friday, 8:00 AM |
| "in 2 hours" | Current time + 2 hours |
| "end of day" | Today 5:00 PM |
| "next week" | Next Monday, 9:00 AM |
| "every weekday at 9am" | Recurrence: weekdays, starting tomorrow 9:00 AM |
3. Validate the timestamp:
⚠️ Critical: Date validation. AI models may generate timestamps with incorrect years (e.g., 2025 instead of 2026). Always validate:
IF remind_at is in the past:
TRY replacing year with current year
IF now in the future → use corrected date
TRY replacing year with current year + 1
IF now in the future → use corrected date (Dec→Jan edge case)
ELSE → ask user to clarify
This server-side validation prevents reminders from firing immediately due to year errors.
4. Confirm with the user:
✅ Reminder set for Tuesday, Mar 25 at 2:00 PM: "Call Acme about the proposal"
Always confirm with a human-readable date (not ISO format) so the user can verify at a glance.
When someone says "remind Sarah to..." or "ping Nick about...":
assigned_to to the named personThis turns reminders into a lightweight delegation tool.
| Pattern | Behavior |
|---|---|
daily | Repeats every day at the same time |
weekly | Repeats every 7 days |
weekdays | Mon-Fri only; skips Sat/Sun (Friday → Monday) |
monthly | Same day each month |
When a recurring reminder is delivered:
weekdays: if the next day is Saturday, skip to MondayWhen the user asks "what are my reminders?" or "show upcoming reminders":
When the user says "cancel the Acme reminder" or "push that to Friday":
remind_at, confirm new timeReminders need a background process to check for due reminders and deliver them. Implementation options:
Run a check every 5-15 minutes:
1. Query: SELECT * FROM reminders WHERE remind_at <= NOW() AND triggered = false AND dismissed = false
2. For each due reminder:
a. Send DM via ~~chat to assigned_to
b. Mark as triggered
c. If recurring, create next occurrence
3. Log delivery for analytics
Create a ~~calendar event for each reminder. The calendar handles delivery natively. Trade-off: no recurrence control, clutters calendar.
Use ~~chat's scheduled message API (e.g., Slack's chat.scheduleMessage). Trade-off: limited to single delivery, no recurrence, harder to manage.
Option A is recommended because it supports recurrence, cross-team delivery, and integrates naturally with CRM/project-tracker links.
Reminders need persistent storage. Recommended schema:
CREATE TABLE reminders (
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
created_by text NOT NULL, -- who set the reminder
assigned_to text NOT NULL, -- who gets reminded
remind_at timestamptz NOT NULL, -- when to deliver
message text NOT NULL, -- what to remind about
deal_id uuid, -- optional ~~CRM link
task_id text, -- optional ~~project tracker link
recurrence text CHECK (recurrence IN ('daily', 'weekly', 'weekdays', 'monthly')),
dismissed boolean NOT NULL DEFAULT false,
triggered boolean NOT NULL DEFAULT false,
created_at timestamptz NOT NULL DEFAULT now()
);
CREATE INDEX idx_reminders_pending
ON reminders (remind_at)
WHERE triggered = false AND dismissed = false;
Alternative: For teams without a database, use a REMINDERS.md file (similar to how task-management uses TASKS.md), but note this cannot support background delivery.
This skill complements task-management:
| task-management | proactive-reminders | |
|---|---|---|
| Purpose | Track what needs doing | Ensure it gets done on time |
| Storage | TASKS.md file | Database or file |
| Delivery | User checks manually | Push notification at set time |
| Recurrence | No | Yes |
| Cross-team | No (single user) | Yes (remind teammates) |
| Time-based | No | Yes |
They work best together: use task-management for your backlog, use proactive-reminders for time-sensitive follow-ups.
See Dyrt's standup bot for a production implementation that includes:
Built by an 11-person waste management team running their entire CRM and operations stack on Claude Cowork + MCP tools.
npx claudepluginhub dyrt-labs/knowledge-work-plugins --plugin productivityGuides collaborative design exploration before implementation: explores context, asks clarifying questions, proposes approaches, and writes a design doc for user approval.
Creates structured, bite-sized implementation plans from specs or requirements before writing code. Useful for breaking down multi-step tasks into testable steps with file structure and task boundaries.
Implements work from a spec or tickets using TDD at agreed seams, with regular typechecking and test runs, followed by code review.