From 5e6877e8f3fb552fce3367ff273167d2cf6af75f Mon Sep 17 00:00:00 2001 From: Craig Jennings Date: Sun, 22 Feb 2026 23:20:56 -0600 Subject: chore: add docs/ to .gitignore and untrack personal files docs/ contains session history, personal workflows, and private protocols that shouldn't be in a public repository. --- docs/workflows/set-alarm.org | 165 ------------------------------------------- 1 file changed, 165 deletions(-) delete mode 100644 docs/workflows/set-alarm.org (limited to 'docs/workflows/set-alarm.org') diff --git a/docs/workflows/set-alarm.org b/docs/workflows/set-alarm.org deleted file mode 100644 index 440e769..0000000 --- a/docs/workflows/set-alarm.org +++ /dev/null @@ -1,165 +0,0 @@ -#+TITLE: Set Alarm Workflow -#+AUTHOR: Craig Jennings & Claude -#+DATE: 2026-01-31 -#+UPDATED: 2026-02-02 - -* Overview - -This workflow enables Claude to set timers and alarms that reliably notify Craig, even if the terminal session ends or is accidentally closed. Notifications are distinctive (audible + visual with alarm icon) and persist until manually dismissed. - -Uses the =notify= command (alarm type) for consistent notifications across all AI workflows. - -* Problem We're Solving - -Notifications from AI sessions have several issues: - -1. *Too easy to miss* - Among many dunst notifications, AI alerts blend in -2. *Not audible* - Dunst notifications are visual-only by default -3. *Lost on terminal close* - If the terminal is accidentally closed, scheduled notifications never fire - -*Impact:* Missed notifications lead to lost time and reduced productivity. Tasks that depend on timely reminders get forgotten or delayed. - -* Exit Criteria - -The workflow is successful when: - -1. AI-set alarms are never missed -2. Notifications are immediately noticeable, even when away from desk (audible) -3. Notifications persist until manually dismissed (no auto-fade) -4. Alarms fire regardless of whether the Claude session has ended or terminal was closed - -* When to Use This Workflow - -Use this workflow when: - -- Craig asks you to remind him about something at a specific time -- A long-running task needs a check-in notification -- Craig needs to leave the desk but wants to be alerted when to return -- Any situation requiring a timed notification that must not be missed - -Examples: -- "Set an alarm for 5pm to wrap up" -- "Remind me in 30 minutes to check the build" -- "Set a timer for 1 hour - time to take a break" - -* Approach: How We Work Together - -** Step 1: Craig Requests an Alarm - -Craig tells Claude when and why: -- "Set a timer for 45 minutes - meeting starts" -- "Alarm at 3:30pm to call the dentist" - -** Step 2: Claude Sets the Alarm - -Claude schedules the alarm using the =at= daemon with =notify=: - -#+begin_src bash -echo "notify alarm 'Alarm' 'Time to call the dentist' --persist" | at 3:30pm -echo "notify alarm 'Alarm' 'Meeting starts' --persist" | at now + 45 minutes -#+end_src - -The =at= daemon: -1. Schedules the notification (survives terminal close) -2. Confirms the alarm was set with the scheduled time - -** Step 3: Alarm Fires - -When the scheduled time arrives: -1. Distinctive sound plays (alarm.ogg) -2. Dunst notification appears with: - - Alarm icon - - The custom message provided - - Normal urgency (not critical - doesn't imply emergency) - - No timeout (persists until dismissed) - -** Step 4: Craig Responds - -Craig dismisses the notification and acts on it. - -* Implementation - -** Setting Alarms - -Use the =at= daemon to schedule a =notify alarm= command: - -#+begin_src bash -# Schedule alarm for specific time -echo "notify alarm 'Alarm' 'Meeting starts' --persist" | at 3:30pm - -# Schedule alarm for relative time -echo "notify alarm 'Alarm' 'Check the build' --persist" | at now + 30 minutes - -# Schedule alarm for tomorrow -echo "notify alarm 'Alarm' 'Call the dentist' --persist" | at 3:30pm tomorrow -#+end_src - -** Notification System - -Uses the =notify= command with the =alarm= type. The =notify= command provides 8 notification types with matching icons and sounds. - -#+begin_src bash -# Immediate alarm notification (for testing) -notify alarm "Alarm" "Your message here" --persist -#+end_src - -The =--persist= flag keeps the notification on screen until manually dismissed. - -** Managing Alarms - -#+begin_src bash -# List pending alarms -atq - -# Cancel an alarm by job number -atrm JOB_NUMBER -#+end_src - -The =at= command accepts various time formats: -- =now + 30 minutes= - relative time -- =now + 1 hour= - relative time -- =3:30pm= - specific time today -- =3:30pm tomorrow= - specific time tomorrow -- =noon= - 12:00pm today -- =midnight= - 12:00am tonight -* Principles to Follow - -** Reliability -The alarm must fire. Use the =at= daemon which is designed for exactly this purpose and survives terminal closure and session changes. - -** Efficiency -Simple invocation - Claude runs one command. No complex setup required per alarm. - -** Fail Audibly -If the alarm fails to schedule, report the error clearly. Don't fail silently. - -** Testable -The =notify alarm= command can be called directly to verify notifications work without waiting for a timer. - -** Non-Alarming -Use normal urgency, not critical. The notification should be noticeable but not imply something has gone horribly wrong. - -* Limitations (Current Version) - -- *Does not survive logout/reboot* - Alarms scheduled via =at= are lost on logout/reboot -- *No alarm management UI* - Use =atq= to list and =atrm= to remove alarms manually - -Future versions may add: -- Reboot persistence via systemd timers or alarm state file - -* Living Document - -Update this workflow as we learn what works: -- Sound choices that are distinctive but not jarring -- Icon that clearly indicates alarm origin -- Any edge cases discovered in use - -** Sound Resources - -For future notification sounds: -- Local collection: =~/documents/sounds/= (various notification tones) -- https://notificationsounds.com - good selection of clean notification tones -- https://mixkit.co/free-sound-effects/notification/ - royalty-free sounds - -See =notify= package for the unified notification system used across all AI workflows. - -- cgit v1.2.3