๐ŸŽ Get the FREE AI Skills Starter Guide โ€” Subscribe โ†’
BytesAgainBytesAgain
๐Ÿฆ€ ClawHub

Focus Break Reminder

by @lxj0276

Workspace wellness break reminder with configurable work interval, cooldown, idle reset, quiet hours, and per-day caps. Use when users want OpenClaw to remin...

Versionv1.0.0
Downloads1,203
Starsโญ 1
TERMINAL
clawhub install focus-break-reminder

๐Ÿ“– About This Skill


name: focus-break-reminder description: Workspace wellness break reminder with configurable work interval, cooldown, idle reset, quiet hours, and per-day caps. Use when users want OpenClaw to remind them to take regular breaks during long sessions, including setup of heartbeat checks, reminder templates, and on/off/snooze/status controls.

Focus Break Reminder

Implement a lightweight per-user/session state machine that triggers rest reminders without spamming.

Configure

Create or load references/config.example.json as the default schema.

Required settings:

  • enabled
  • timezone
  • work_minutes
  • cooldown_minutes
  • idle_reset_minutes
  • daily_max_reminders
  • quiet_hours
  • snooze_until
  • templates
  • Prefer defaults that are practical and non-intrusive:

  • work interval: 50 minutes
  • cooldown: 30 minutes
  • idle reset: 15 minutes
  • daily cap: 4
  • Track state

    Maintain minimal state per user (or per DM/chat for first version):

  • session_start_at
  • last_active_at
  • last_remind_at
  • remind_count_today
  • today_key
  • Persist to a small JSON file so reminders survive restarts.

    Update activity

    On each inbound user message: 1. If date changed in configured timezone, reset remind_count_today and today_key. 2. If idle time since last_active_at >= idle_reset_minutes, reset session_start_at to now. 3. Set last_active_at to now.

    Evaluate reminder eligibility

    Only remind when all conditions pass: 1. enabled is true. 2. Not in quiet hours. 3. Not snoozed (now < snooze_until means skip). 4. Daily cap not exceeded. 5. Active duration (now - session_start_at) >= work_minutes. 6. Cooldown passed (now - last_remind_at) >= cooldown_minutes.

    If all pass, send one reminder and set:

  • last_remind_at = now
  • remind_count_today += 1
  • Reminder delivery

    Use one short template per reminder. Keep copy practical and non-medical.

    Example template:

  • โ€œไฝ ๅทฒ็ป่ฟž็ปญๅทฅไฝœไธ€ๆฎตๆ—ถ้—ดไบ†ใ€‚็Žฐๅœจ่ตท่บซ 2 ๅˆ†้’Ÿใ€ๅ–ๅฃๆฐด๏ผŒๅ†็œ‹ 20 ็ง’่ฟœๅค„ ๐Ÿ‘€โ€
  • Commands

    Support these chat commands:

  • /break on โ†’ enable reminders
  • /break off โ†’ disable reminders
  • /break status โ†’ show current config + next eligible reminder window
  • /break set โ†’ update work_minutes
  • /break snooze โ†’ set snooze_until = now + minutes
  • Validate numeric ranges (e.g., 15โ€“180 for work interval).

    Heartbeat integration

    Use heartbeat polling to run eligibility checks when there is recent activity. Avoid noisy polling loops.

    Recommended behavior:

  • If no user activity for a long period, skip checks.
  • If reminder was just sent, honor cooldown and return quickly.
  • Safety and UX boundaries

  • Do not provide medical diagnosis or treatment advice.
  • Keep reminders optional and easy to disable.
  • Store only minimum timestamps and settings needed for reminder logic.
  • Use clear language when data is missing: โ€œๅพ…่กฅๅ……โ€.
  • Testing checklist

    Use references/test-cases.md.

    At minimum verify:

  • triggers at/after work interval
  • cooldown suppresses duplicates
  • idle reset restarts session timer
  • quiet hours suppress reminders
  • snooze suppresses reminders until expiry
  • daily cap blocks additional reminders