Skip to content
calendar-event-manager logo

Calendar Event Manager

calendar-event-manager

user wants to create a macOS Calendar event with sound alarms and paired Reminders, schedule a meeting, RSVP to an invitation, or set reminders.

terrylica/cc-skills0installs75stars

SKILL.md

Full skill instructions

Calendar Event Manager

Create macOS Calendar events with tiered sound alarms and paired Reminders so events are never missed across Mac and iOS.

Self-Evolving Skill: This skill improves through use. If instructions are wrong, parameters drifted, or a workaround was needed — fix this file immediately, don't defer. Only update for real, reproducible issues.

CRITICAL RULES (Hard-Learned Truths 2026-02-12)

These rules are NON-NEGOTIABLE. Violating any of them defeats the purpose of this skill.

1. Calendar + Reminders ALWAYS Together

Every event MUST create BOTH:

  • Calendar event with multiple sound alarm entries (custom sound per tier)
  • Reminders (3 minimum) as a separate notification channel

Never create one without the other.

2. Use sound alarm, NOT display alarm

-- CORRECT: audible alert with custom sound
make new sound alarm at end of sound alarms with properties {trigger interval:-60, sound name:"Glass"}

-- WRONG: silent visual banner only
make new display alarm at end of display alarms with properties {trigger interval:-60}

Each alarm supports its own sound name property. Use DIFFERENT sounds for different tiers so the user knows which alert level it is by sound alone.

3. ONLY Long Sounds (>= 1.4 seconds)

Short sounds get missed and ignored. NEVER use sounds under 1.4 seconds.

APPROVED sounds only:

SoundDurationUse For
Funk2.16sAt event time (loudest)
Glass1.65s1 hour before
Pop1.63sMorning-of / 3 hrs before
Sosumi1.54sDay-before
Ping1.50s30 min before
Submarine1.49sAlternative
Blow1.40sGentle early reminder

BANNED sounds: Hero, Basso, Bottle, Purr, Frog, Morse, Tink (all < 1.4s)

4. Multiple Early Reminders Are Mandatory

Minimum alarm tiers for any event:

TierTriggerCalendar SoundReminder
1 day before-1440 minBlow"TOMORROW: ..."
Morning-of 9 AMAbsoluteSosumi"TODAY: ..."
3 hours before-180 minPop(via Calendar)
1 hour before-60 minGlass(via Calendar)
30 min before-30 minPing(via Calendar)
At event time0 minFunkDue-time reminder

5. macOS Notification Settings Prerequisite

Calendar notifications must be enabled in System Settings:

  • System Settings > Notifications > Calendar > Allow Notifications = ON
  • Alert style = Banners or Alerts
  • Play sound = ON

Open with: open "x-apple.systempreferences:com.apple.Notifications-Settings.extension"


TodoWrite Task Templates

Template A: Create Event from Invitation

1. Extract event details (title, date, time, location, notes, RSVP)
2. Create Calendar event with 6-tier sound alarms (Blow, Sosumi, Pop, Glass, Ping, Funk)
3. Create 3 Reminders (TOMORROW, TODAY morning, due-time)
4. Verify event and reminders created
5. Report full schedule to user

Template B: Create Event from User Description

1. Ask user for: event name, date/​time, duration, location
2. Create Calendar event with 6-tier sound alarms
3. Create 3 Reminders
4. Verify event and reminders created
5. Report full schedule to user

Template C: Test Notification Setup

1. Create test Calendar event 3 min in future with sound alarms (1 min, 2 min tiers)
2. Create test Reminder 2 min in future
3. Wait for user confirmation of notifications
4. Clean up test event and reminders

AppleScript Date Construction (CRITICAL)

NEVER use date "STRING" in AppleScript. String-based date parsing is locale-dependent and silently produces wrong results:

Anti-patternWhat happensExample
date "April 1, 2026 at 6:00:00 PM"On 24h systems, "PM" is ignored → 06:004 failures in amonic session
date "2026-04-01 18:00:00"ISO parsed as individual numbers → year 121691 failure
set month before set day to 1Day 31 + April (30 days) → rolls to May 11 failure

ALWAYS use programmatic date construction:

-- Build date safely: day-first-then-month prevents rollover
set d to current date
set day of d to 1           -- safe floor FIRST (prevents month rollover)
set month of d to April
set year of d to 2026
set day of d to 1           -- now set actual target day
set hours of d to 18        -- 24h format, no AM/​PM ambiguity
set minutes of d to 0
set seconds of d to 0

Calendar Discovery (run first)

tell application "Calendar"
    set output to ""
    repeat with c in calendars
        set output to output & name of c & " (writable:" & writable of c & ")" & linefeed
    end repeat
    output
end tell

Use the first writable:true calendar. Never assume "Home" or "Calendar" exists.

Full Event Creation (Copy-Paste Ready)

tell application "Calendar"
    -- Build start date programmatically
    set startDate to current date
    set day of startDate to 1
    set month of startDate to MONTH_CONSTANT
    set year of startDate to YEAR_INT
    set day of startDate to DAY_INT
    set hours of startDate to HOUR_24
    set minutes of startDate to 0
    set seconds of startDate to 0

    -- Build end date (1 hour later)
    set endDate to startDate + 1 * hours

    tell calendar "WRITABLE_CALENDAR_NAME"
        set newEvent to make new event with properties {summary:"EVENT_NAME", start date:startDate, end date:endDate, location:"LOCATION", description:"NOTES"}
        tell newEvent
            make new sound alarm at end of sound alarms with properties {trigger interval:-1440, sound name:"Blow"}
            make new sound alarm at end of sound alarms with properties {trigger interval:-180, sound name:"Pop"}
            make new sound alarm at end of sound alarms with properties {trigger interval:-60, sound name:"Glass"}
            make new sound alarm at end of sound alarms with properties {trigger interval:-30, sound name:"Ping"}
            make new sound alarm at end of sound alarms with properties {trigger interval:0, sound name:"Funk"}
        end tell
    end tell
    reload calendars
end tell

Verification (always run after creation)

tell application "Calendar"
    tell calendar "WRITABLE_CALENDAR_NAME"
        set matches to (every event whose summary is "EVENT_NAME" and start date > (current date))
        repeat with e in matches
            log (summary of e) & " | " & (start date of e) & " → " & (end date of e)
        end repeat
    end tell
end tell

Paired Reminders Creation

tell application "Reminders"
    set defaultList to default list

    -- Build date programmatically (same pattern as Calendar)
    set eventDate to current date
    set day of eventDate to 1
    set month of eventDate to MONTH_CONSTANT
    set year of eventDate to YEAR_INT
    set day of eventDate to DAY_INT
    set hours of eventDate to HOUR_24
    set minutes of eventDate to 0
    set seconds of eventDate to 0

    -- Due-time reminder
    make new reminder in defaultList with properties {name:"EVENT_NAME", due date:eventDate, body:"LOCATION\nNOTES"}
    -- Day-before
    make new reminder in defaultList with properties {name:"TOMORROW: EVENT_NAME", due date:(eventDate - 1 * days), body:"Event tomorrow! LOCATION"}
    -- Morning-of at 9 AM
    set morningDate to eventDate
    set hours of morningDate to 9
    set minutes of morningDate to 0
    make new reminder in defaultList with properties {name:"TODAY: EVENT_NAME", due date:morningDate, body:"Today! LOCATION"}
end tell

Post-Change Checklist

After modifying this skill:

  1. Sound reference table matches sound-reference.md
  2. All 6 alarm tiers documented with correct sounds
  3. BANNED sounds list is complete
  4. Hook file (hooks/​calendar-reminder-sync.ts) aligned with skill rules
  5. AppleScript examples use sound alarm not display alarm

References

Post-Execution Reflection

After this skill completes, check before closing:

  1. Did the command succeed? — If not, fix the instruction or error table that caused the failure.
  2. Did parameters or output change? — If the underlying tool's interface drifted, update Usage examples and Parameters table to match.
  3. Was a workaround needed? — If you had to improvise (different flags, extra steps), update this SKILL.md so the next invocation doesn't need the same workaround.

Only update if the issue is real and reproducible — not speculative.

More skills from terrylica

code-hardcode-audit logo
terrylica/cc-skills

code-hardcode-audit

Detect hardcoded values, magic numbers, and leaked secrets. TRIGGERS - hardcode audit, magic numbers, PLR2004, secret scanning.

75 152
View
calcom-access logo
terrylica/cc-skills

calcom-access

Access Cal.com API via CLI with 1Password API key. Use when user wants to list bookings, create event types, manage schedules, or.

75 0
View
schema-e2e-validation logo
terrylica/cc-skills

schema-e2e-validation

Earthly E2E validation for YAML schema contracts. TRIGGERS - schema validation, YAML schema, schema contracts, regenerate types.

75 0
View
glossary-management logo
terrylica/cc-skills

glossary-management

Manage terminology glossary with Vale. TRIGGERS - sync terms, glossary validation, add terms, Vale vocabulary.

75 0
View
log-reader logo
terrylica/cc-skills

log-reader

Read MetaTrader 5 log files. TRIGGERS - MT5 logs, Experts pane, indicator errors, compilation errors.

75 0
View
daemon-start logo
terrylica/cc-skills

daemon-start

Start the asciinema chunker daemon. TRIGGERS - start daemon, resume chunker, enable backup.

75 0
View
sred-commit logo
terrylica/cc-skills

sred-commit

Create a git commit with SR&ED (CRA tax credit) trailers. TRIGGERS - sred commit, sred, cra commit, tax credit commit, scientific research commit.

75 0
View
doppler-workflows logo
terrylica/cc-skills

doppler-workflows

Manage credentials and secrets through Doppler for publishing and deployment workflows. Use whenever the user needs to publish Python packages.

75 0
View
distributed-job-safety logo
terrylica/cc-skills

distributed-job-safety

Concurrency safety patterns for distributed pueue + mise + systemd-run job pipelines.

75 0
View
diagnose logo
terrylica/cc-skills

diagnose

Diagnose Kokoro TTS issues. TRIGGERS - kokoro not working, tts diagnose, kokoro error, tts troubleshoot.

75 0
View
bootstrap-monorepo logo
terrylica/cc-skills

bootstrap-monorepo

Autonomous polyglot monorepo bootstrap meta-prompt on the moon + proto + Bun stack (Nx-convergent). TRIGGERS - new monorepo, new repository, polyglot setup, scaffold repo, moon proto bootstrap, monorepo from scratch.

75 0
View
fork-intelligence logo
terrylica/cc-skills

fork-intelligence

Discover valuable GitHub fork divergence beyond stars. TRIGGERS - fork analysis, fork intelligence, find forks

75 0
View

Popular AI tools

Kaiber logo
Video

Kaiber

Generate, edit, and beat-sync AI video with leading models in one workspace.

Paid
View
Vimcal logo
Productivity

Vimcal

The world's fastest calendar for remote work

Free
View

Transform Your Design with AI Designer by ImgCreator.ai

Freemium
View
Akool AI logo
Content & writing

Akool AI

Revolutionizing Video Production with AI-Powered Creativity

Paid
View

Extend an image past the frame and let AI fill the new aspect ratio.

Freemium
View
StarByFace logo
Security

StarByFace

Discover your celebrity doppelgänger with StarByFace!

Free
View
C

ChainClarity explains 700+ crypto whitepapers in plain English, with layered summaries, comparisons, research tools, alerts, and a $4.99 Pro plan.

Freemium
View
Opus Clip logo
Coding & apps

Opus Clip

Opus.ai: Revolutionize Your Web Experience

Free
View