一键导入
reminders
Schedule events that fire at a specific time, when an email reply arrives, or when a shell check passes. Use to wake a session without idle polling.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Schedule events that fire at a specific time, when an email reply arrives, or when a shell check passes. Use to wake a session without idle polling.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | reminders |
| description | Schedule events that fire at a specific time, when an email reply arrives, or when a shell check passes. Use to wake a session without idle polling. |
Three trigger types — pick the one that matches what you're actually waiting on:
| Trigger | Use when |
|---|---|
--at=<time> | Wall-clock deadline. "Remind me at 14:00", "follow up in 30 minutes". |
--when-reply-to=<thread-id> | Waiting on a human / external system to reply by email. Most stakeholder loops use this. |
--when-script-ok=<cmd> | Waiting on an external system you can poll cheaply (deploys, CI builds, file landings, status APIs). |
Each reminder runs a Claude session with the given prompt when it fires. Reminders can be one-shot or recurring; session routing picks up the originating channel automatically.
reminder add --title="Standup" --at="2026-03-08 09:00" --prompt="Send the daily standup summary"
reminder add --title="Deploy check" --at="+2h" --prompt="Verify the rollout completed"
reminder add --title="Quick nudge" --at="+30m" --prompt="Ping Max about the proposal"
--at-based)reminder add --title="Build watch" --at="+5h" --recurring=5h --prompt="Review CI status"
--recurring is only supported with --at. See the Recurring Reminders section below.
# Most common: wait forever for a reply (real humans take days)
reminder add --title="Müller OK" \
--when-reply-to="thread-abc123" \
--prompt="Müller hat geantwortet — gleich abarbeiten"
# Restrict to a specific sender on the thread (substring match on the From: address)
reminder add --title="Müller OK" \
--when-reply-to="thread-abc123" \
--from="s.mueller@mueller-partner.de" \
--prompt="Müller hat geantwortet — gleich abarbeiten"
# Safety net: give up after two weeks if nothing arrives
reminder add --title="Müller OK" \
--when-reply-to="thread-abc123" \
--timeout="+14d" \
--prompt="Müller hat geantwortet (oder Timeout) — entscheiden"
Use email threads to find the right thread-id. When a reply arrives, the reminder fires at the next check tick (every minute by default).
# Default: poll every 60s
reminder add --title="Deploy ready" \
--when-script-ok="kubectl rollout status deploy/api --timeout=10s" \
--prompt="Deploy ist live — Tests fahren"
# Faster polling (minimum interval: 10s)
reminder add --title="File landed" \
--when-script-ok="test -s /shared/output/import.csv" \
--check-interval="30s" \
--prompt="Importdatei ist da — verarbeiten"
# With timeout
reminder add --title="CI green" \
--when-script-ok="gh run view --json conclusion -q '.conclusion==\"success\"'" \
--check-interval="2m" --timeout="+2h" \
--prompt="CI ist grün — Release-Notes raus"
The command is run under bash -c. Exit code 0 fires the reminder; any other exit code (or command-not-found) is treated as "keep waiting".
--timeout, the reminder waits forever (until cancelled). Set --timeout=+14d or similar only when you genuinely need a safety net.--check-interval is 60s for --when-script-ok. Minimum is 10s.--at reminders are NOT deduplicated. Setting two 30-minute timers is a legitimate request.--when-reply-to and --when-script-ok ARE deduplicated by the tuple (trigger config, prompt). Re-adding the same reminder returns the existing id — safe to retry in agent loops.--at and --timeout"2026-03-08 14:00" or "2026-03-08T14:00:00" (local timezone)"14:00""+30m", "+2h", "+1d", "+14d""+1d2h30m", "+2h30m", "+90m" (units in order: d, h, m)reminder list # pending only
reminder list --all # include fired/cancelled
reminder list --recurring # show recurring chains
reminder cancel 5 # by positional id (mark as cancelled, keeps history)
reminder cancel --id=5 # or by flag — equivalent
reminder delete 5 # permanently remove (positional or --id=5)
The list output includes the trigger type and a human-readable "fires_when" column so you can scan what each reminder is waiting on.
If --timeout is set on a --when-reply-to or --when-script-ok reminder and the trigger condition isn't met by the timeout, the reminder still fires — with a [Timeout: ...] note appended to the prompt. The point is to let you decide what to do (follow up, escalate, abandon) rather than silently dropping the work.
Without --timeout, the reminder waits indefinitely.
By default, reminders fire into the same session that created them — Signal reminders wake the Signal session, email reminders wake the email-channel session, web reminders wake the web session.
To force a standalone ephemeral session, add --new-session.
--at only)reminder add --title="Hourly ping" --at="+1h" --recurring=1h \
--prompt="Log a status update to journal"
After each fire the original row is marked fired and a new pending row is inserted with a fresh id. Cancel the current pending row to stop the chain.
Recurring reminders are session-bound (do not persist across sessions). For cross-session schedules, use a cronjob — see the triggers skill.
--recurring is not supported with --when-reply-to or --when-script-ok — those are event-driven and shouldn't repeat; set a fresh reminder after each fire if you really need that.
~/.index/atlas.db, table reminders.manage-reminders.ts check every minute. Each pending reminder is evaluated by its trigger type:
time: fire_at <= nowemail_reply: any inbound email in the configured thread (optionally from the configured sender) created after the reminder was setscript_check: the configured command exits 0, throttled by check_interval_secondstrigger.sh, or spawns an ephemeral session if no context.--timeout when you genuinely need a fallback path.--when-script-ok. The minimum is 10s for a reason — anything faster wastes cron-loop budget without making the trigger noticeably more responsive.--when-reply-to as a guard against missed emails. It only fires on emails received after the reminder is created. If the reply might already be in the inbox, check directly first.--recurring an event trigger. Doesn't work — event triggers fire on edges, not intervals. Set a new reminder after each fire if you need that behavior.Use this skill for any PDF authoring or post-processing task that doesn't require READING the content. CREATE / GENERATE / PRODUCE PDFs from scratch — reports, invoices, business letters, memos, status updates, market analyses, proposals (Typst engine, charts via Cetz, four bundled templates: report, invoice, letter, memo). FILL existing PDF forms — text fields, checkboxes, radio buttons. MERGE / SPLIT / ROTATE / WATERMARK / ENCRYPT existing PDFs via qpdf and pypdf. Embed ZUGFeRD / Factur-X XML for EU e-invoices. Triggers: 'erstelle PDF', 'baue Rechnung', 'mache einen Bericht als PDF', 'create a PDF', 'generate a report', 'render an invoice', 'business letter', 'Geschäftsbrief', 'Memo', 'merge PDFs', 'split a PDF', 'rotate pages', 'watermark this PDF', 'encrypt PDF', 'PDF Formular ausfüllen', 'fill this form'. Do NOT use for READING / EXTRACTING text from existing PDFs or OCR on scanned documents — use the `document-parse` skill (LiteParse).
Use this skill whenever the user wants to create, read, edit, or manipulate Word documents (.docx files). Triggers include: any mention of 'Word doc', 'word document', '.docx', or requests to produce professional documents with formatting like tables of contents, headings, page numbers, or letterheads. Also use when extracting or reorganizing content from .docx files, inserting or replacing images in documents, performing find-and-replace in Word files, working with tracked changes or comments, or converting content into a polished Word document. If the user asks for a 'report', 'memo', 'letter', 'template', or similar deliverable as a Word or .docx file, use this skill. Do NOT use for PDFs, spreadsheets, Google Docs, or general coding tasks unrelated to document generation.
How to create and manage triggers via the CLI. Covers cron, webhook, manual, Signal, WhatsApp and Email integration.
Use this skill to READ / EXTRACT / PARSE / OCR existing documents — pull text and structure out of PDF, DOCX, PPTX, XLSX, EPUB, HTML, images (JPG/PNG/TIFF/WebP), scanned-document PDFs, or any unstructured file. Triggers: 'parse this PDF', 'extract text', 'OCR this image', 'text aus scan', 'lies das Dokument', 'convert PDF to markdown', 'erkenne Text', 'transcribe document', 'spatial layout extraction', plus any time the user provides a file and asks what's inside. Runs LiteParse locally — Tesseract.js OCR built-in, optional external OCR server (EasyOCR / PaddleOCR) for higher accuracy. Output is clean markdown ready for downstream LLM processing. Do NOT use for: (1) CREATING a new PDF from scratch — use the `pdf` skill. (2) Filling forms in an existing PDF — see `pdf` skill `forms.md`. (3) Pure speech-to-text from audio/video — use the `stt` skill.
Use this skill to CUT, TRIM, CLEAN, EDIT existing video footage. Triggers: 'schneide das Video', 'edit/cut/trim this video', 'remove silence/fillers', 'concat videos', 'add subtitles', 'edit these into a launch video', 'make a recap from these clips', any task that takes existing video file(s) as input and produces a polished edited output. Audio-first approach: transcribe → identify cuts on word boundaries → FFmpeg-based EDL render → self-evaluate cut points. Do NOT use for: (1) creating animated videos from scratch — use the `video` skill (Remotion). (2) understanding/classifying video content (describe scenes, extract timestamps for visual events, classify) — use a multimodal LLM directly. (3) raw single-command FFmpeg ops where you already know the exact filter chain — just run FFmpeg directly.
Use this skill to CREATE / GENERATE / PRODUCE animated videos, motion graphics, screencasts, product demos, explainer videos, intros, and brand videos from scratch. Triggers: 'erstelle ein Video', 'mache ein Video', 'create a video', 'animate', 'screencast', 'demo video', 'explainer', 'motion graphics', 'intro video', 'produce MP4/WebM with animation', plus mention of Remotion. Covers the full creation workflow: composition, animations, captions, voiceover (ElevenLabs/TTS), background music, sound effects, transparency. Primary tool: React Remotion. Do NOT use for: (1) editing/cutting existing video footage — use the `video-edit` skill. (2) understanding/analyzing existing video content (timestamps, descriptions, classification) — use a multimodal LLM directly via your normal Bash tools. (3) simple file conversion or transcoding — use raw FFmpeg.