Source profileQuality 99/100

terrylica/cc-skills/plugins/productivity-tools/skills/calendar-event-manager/SKILL.md

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.

Source repository stars
62
Declared platforms
0
Static risk flags
0
Last source update
2026-08-24
Source checked
2026-08-25

Decision brief

What it does: where it fits

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

Best for

    Not for

    • Tasks that require unconfirmed production actions or broad system permissions.
    • Environments where the pinned source and install steps cannot be inspected.

    Compatibility matrix

    Platform support, with evidence labels

    PlatformStatusEvidenceWhat to check
    CodexNot declaredNo explicit evidencePortability before use
    Claude CodeNot declaredNo explicit evidencePortability before use
    CursorNot declaredNo explicit evidencePortability before use
    Gemini CLINot declaredNo explicit evidencePortability before use
    Open the compatibility checker

    Installation

    Inspect first. Install second.

    The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.

    Source-detected install commandSource
    npx skills add https://github.com/terrylica/cc-skills --skill "plugins/productivity-tools/skills/calendar-event-manager"
    Safe inspection promptEditorial

    Inspect the Agent Skill "calendar-event-manager" from https://github.com/terrylica/cc-skills/blob/a5f847b22ee5afa35677e446973a903d098cd1d4/plugins/productivity-tools/skills/calendar-event-manager/SKILL.md at commit a5f847b22ee5afa35677e446973a903d098cd1d4. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.

    Workflow

    What the source asks the agent to do

    1. 01

      Template C: Test Notification Setup

      Review the “Template C: Test Notification Setup” section in the pinned source before continuing.

      Review and apply the “Template C: Test Notification Setup” source section.
    2. 02

      Verification (always run after creation)

      Verification is NOT optional. Every failure logged in this file was silent — the create step returned success in all of them.

      Verification is NOT optional. Every failure logged in this file was silent — the create step returned success in all of them.Confirm the alarm COUNT and every trigger interval — do not just confirm the event exists. Dropped alarms are the most common silent failure.
    3. 03

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

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

      Calendar event with multiple sound alarm entries (custom sound per tier)Reminders (3 minimum) as a separate notification channelThe morning-of 9 AM Reminder fires after an 08:30 event. Move it to
    4. 04

      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 channelEvery event MUST create BOTH:
    5. 05

      2. Use sound alarm, NOT display alarm

      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.

      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.

    Permission review

    Static risk signals and limitations

    No configured static risk pattern was detected

    This is not proof of safety. Runtime behavior, indirect dependencies, and hidden external systems are outside the static scan.

    Evidence record

    Why each signal appears

    EvidenceSourceComputedTestedEditorial
    SignalValueEvidence typeMeaning
    Quality score99/100ComputedDocumentation, specificity, maintenance, and trust rules
    Repository stars62SourceRepository attention, not individual Skill quality
    Compatibility0 platformsSourceDeclared in the catalog source record
    Usage guideautomated source guideEditorialGenerated or reviewed according to the visible evidence level

    Pinned source

    Provenance and original SKILL.md

    Repository
    terrylica/cc-skills
    Skill path
    plugins/productivity-tools/skills/calendar-event-manager/SKILL.md
    Commit
    a5f847b22ee5afa35677e446973a903d098cd1d4
    License
    MIT
    Collected
    2026-08-25
    Default branch
    main
    View the original SKILL.md

    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

    Calendar accepts at most 5 alarms per event (verified 2026-08-17 on a CalDAV calendar: adding a 6th silently evicts an earlier one, with no error). Budget the 5 slots deliberately and do NOT spend one duplicating a Reminder that already fires at the same moment.

    Default alarm tiers:

    TierTriggerCalendar SoundReminder
    1 day before-1439 minBlow"TOMORROW: ..."
    Night before-720 minSosumi
    1 hour before-60 minGlass(via Calendar)
    30 min before-30 minPing(via Calendar)
    At event time0 minFunkDue-time reminder

    Plus 3 Reminders: "TOMORROW:" (day before, 9 AM), "TODAY:" (morning-of), and the due-time one.

    Use -1439, never -1440. An exact 1440-minute (24 h) offset is silently dropped by Calendar — the alarm simply does not appear on read-back. Verified twice on 2026-08-17. -1439 persists.

    Early-morning events (before ~9:30 AM)

    The default tiers misfire for early events. Adjust:

    • The morning-of 9 AM Reminder fires after an 08:30 event. Move it to ~90 min before the event instead.
    • A -180 min tier on an 08:30 event rings at 05:30, waking the user three hours early. Drop it; use the night-before -720 tier instead.

    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 5-tier sound alarms (Blow, Sosumi, 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 5-tier sound alarms (max Calendar allows)
    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
                -- EXACTLY 5 alarms: a 6th silently evicts one of these.
                -- -1439 not -1440: an exact 24h offset is silently dropped.
                make new sound alarm at end of sound alarms with properties {trigger interval:-1439, sound name:"Blow"}
                make new sound alarm at end of sound alarms with properties {trigger interval:-720, sound name:"Sosumi"}
                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)

    Verification is NOT optional. Every failure logged in this file was silent — the create step returned success in all of them.

    tell application "Calendar"
        tell calendar "WRITABLE_CALENDAR_NAME"
            set e to first event whose summary contains "EVENT_NAME"
            set out to (summary of e) & " | " & (start date of e) & " -> " & (end date of e) & linefeed
            -- Read BOTH classes: Calendar reports sound alarms back as display alarms.
            set out to out & "alarms=" & ((count of display alarms of e) + (count of sound alarms of e)) & linefeed
            repeat with a in display alarms of e
                set out to out & "  " & (trigger interval of a) & linefeed
            end repeat
            repeat with a in sound alarms of e
                set out to out & "  " & (trigger interval of a) & linefeed
            end repeat
            return out
        end tell
    end tell
    

    Confirm the alarm COUNT and every trigger interval — do not just confirm the event exists. Dropped alarms are the most common silent failure.

    Calendar AppleScript bridge limitations (verified 2026-08-17)

    AttemptResultDo this instead
    repeat with e in (every event whose summary …)error -1728, "Can't get item 1"Collect uid of (every event whose …) first, then delete/act per uid
    count of (every alarm of e)syntax error -2741, no alarm class existsCount display alarms + sound alarms separately
    delete (first display alarm whose …)error -10000, AppleEvent handler failedIndividual alarms cannot be deleted — recreate the whole event
    delete display alarm <index>error -10000Same: recreate the event
    Read back sound name of a created alarmReports 0 sound alarms, N display alarmsExpected. sound name persists at the EventKit level; create sound alarms anyway

    Paired Reminders Creation

    NEVER use default list. On this machine it resolves to an empty placeholder list literally named DEFAULT_TASK_CALENDAR_NAME (an unsubstituted template string). make new reminder in (default list) returns success and writes nothing — a total silent failure. Discover the real list by name first and target it explicitly.

    -- Discover lists FIRST; never assume.
    tell application "Reminders"
        set out to ""
        repeat with l in lists
            set out to out & name of l & " count=" & (count of reminders in l) & linefeed
        end repeat
        return out
    end tell
    
    tell application "Reminders"
        -- Target the real list BY NAME (usually "Reminders"), not `default list`.
        set targetList to list "Reminders"
    
        -- 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
    
        -- CRITICAL: `copy`, not `set`. `set x to eventDate` ALIASES the same date
        -- object, so mutating x silently rewrites eventDate too (this corrupted a
        -- due-time reminder to 07:00 on 2026-08-17). `copy` makes a real clone.
        copy eventDate to morningDate
        set hours of morningDate to 7
        set minutes of morningDate to 0
        set seconds of morningDate to 0
    
        copy eventDate to dayBefore
        set dayBefore to dayBefore - 1 * days
        set hours of dayBefore to 9
        set minutes of dayBefore to 0
        set seconds of dayBefore to 0
    
        make new reminder in targetList with properties {name:"NOW: EVENT_NAME", due date:eventDate, body:"LOCATION" & linefeed & "NOTES"}
        make new reminder in targetList with properties {name:"TOMORROW: EVENT_NAME", due date:dayBefore, body:"Event tomorrow! LOCATION"}
        make new reminder in targetList with properties {name:"TODAY: EVENT_NAME", due date:morningDate, body:"Today! LOCATION"}
    end tell
    

    Note body: must use & linefeed & — a literal \n inside an AppleScript string is the two characters backslash-n, not a newline.


    Post-Change Checklist

    After modifying this skill:

    1. Sound reference table matches sound-reference.md
    2. All 5 alarm tiers documented with correct sounds (Calendar caps at 5)
    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.

    Frequently asked questions

    What to verify before installation and use

    What does the calendar-event-manager source document cover?

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

    How do I install calendar-event-manager?

    The source record exposes this install command: npx skills add https://github.com/terrylica/cc-skills --skill "plugins/productivity-tools/skills/calendar-event-manager". Inspect the command and pinned source before running it.

    Alternatives

    Compare before choosing

    Computed 10045,511

    coreyhaines31/marketingskills

    ab-testing

    When the user wants to plan, design, or implement an A/B test or experiment, or build a growth experimentation program. Also use when the user mentions "A/B test," "split test," "experiment," "test this change," "variant copy," "multivariate test," "hypothesis," "should I test this," "which version is better," "test two versions," "statistical significance," "how long should I run this test," "growth experiments," "experiment velocity," "experiment backlog," "ICE score," "experimentation program

    Computed 10029,034

    garrytan/gbrain

    bulk-ingestion

    End-to-end discipline for turning any large data source (audio libraries, email takeouts, document corpora, chat exports, API dumps) into brain pages at scale. The lifecycle spine: SCHEMA → ACCESS → TRIAL → EVALUATE → IMPROVE → CODIFY → TEST → SKILLIFY → BULK → MONITOR. State is tracked in a durable JSON manifest (see MANIFEST-PATTERN.md) so any crash, session boundary, or subagent fan-out resumes from ground truth instead of memory.

    Computed 10024,921

    alirezarezvani/claude-skills

    app-store-optimization

    App Store Optimization (ASO) toolkit for researching keywords, analyzing competitor rankings, generating metadata suggestions, and improving app visibility on Apple App Store and Google Play Store. Use when the user asks about ASO, app store rankings, app metadata, app titles and descriptions, app store listings, app visibility, or mobile app marketing on iOS or Android. Supports keyword research and scoring, competitor keyword analysis, metadata optimization, A/B test planning, launch checklist

    Computed 1005,241

    dotnet/skills

    migrate-vstest-to-mtp

    Migrates .NET test projects from VSTest to Microsoft.Testing.Platform (MTP). Use when user asks to "migrate to MTP", "switch from VSTest", "enable Microsoft.Testing.Platform", "use MTP runner", set OutputType=Exe only for test projects in Directory.Build.props, or mentions EnableMSTestRunner, EnableNUnitRunner, or UseMicrosoftTestingPlatformRunner. USE FOR: MTP behavioral differences vs VSTest (exit code 8, zero tests discovered, --ignore-exit-code, TESTINGPLATFORM_EXITCODE_IGNORE); centralizing