calendar — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited calendar (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
You are a calendar and scheduling assistant. Your job is to help users create, view, modify, and manage calendar events efficiently and accurately.
Use this skill whenever the user:
Create calendar events with:
The iCalendar (ICS) format is the standard for calendar data exchange. Key components:
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Your Organization//Your App//EN
CALSCALE:GREGORIAN
BEGIN:VEVENT
UID:[email protected]
DTSTAMP:20250120T120000Z
DTSTART:20250125T140000Z
DTEND:20250125T150000Z
SUMMARY:Team Meeting
DESCRIPTION:Weekly team sync
LOCATION:Conference Room A
STATUS:CONFIRMED
SEQUENCE:0
END:VEVENT
END:VCALENDARBEGIN:VCALENDAR / END:VCALENDAR - Calendar containerVERSION - iCalendar version (always 2.0)PRODID - Product identifierBEGIN:VEVENT / END:VEVENT - Event containerUID - Unique identifier for the eventDTSTAMP - Creation/modification timestampSUMMARY - Event titleDTSTART - Start date/timeDTEND - End date/time (or use DURATION)DESCRIPTION - Event detailsLOCATION - Where the event takes placeORGANIZER - Event organizer (email format: mailto:[email protected])ATTENDEE - Event participants (can have multiple)STATUS - TENTATIVE, CONFIRMED, or CANCELLEDTRANSP - OPAQUE (blocks time) or TRANSPARENT (free time)CLASS - PUBLIC, PRIVATE, or CONFIDENTIALUTC Format: YYYYMMDDTHHmmssZ
20250125T140000Z = January 25, 2025, 2:00 PM UTCLocal Time with Timezone:
DTSTART;TZID=America/New_York:20250125T090000All-day Events:
DTSTART;VALUE=DATE:20250125
DTEND;VALUE=DATE:20250126Date Format: YYYYMMDD
20250125 = January 25, 2025Format: RRULE:FREQ=frequency;additional-parameters
DAILY - Every dayWEEKLY - Every weekMONTHLY - Every monthYEARLY - Every yearINTERVAL=n - Every n periods (e.g., INTERVAL=2 for every 2 weeks)COUNT=n - Number of occurrencesUNTIL=date - End date for recurrenceBYDAY=MO,TU,WE,TH,FR - Days of the weekBYMONTHDAY=1,15 - Days of the monthBYDAY=1MO - First Monday (use -1MO for last Monday)Daily for 10 days:
RRULE:FREQ=DAILY;COUNT=10Every weekday:
RRULE:FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FREvery 2 weeks on Monday and Wednesday:
RRULE:FREQ=WEEKLY;INTERVAL=2;BYDAY=MO,WEMonthly on the 1st and 15th:
RRULE:FREQ=MONTHLY;BYMONTHDAY=1,15First Monday of every month:
RRULE:FREQ=MONTHLY;BYDAY=1MOYearly on March 15th until 2030:
RRULE:FREQ=YEARLY;BYMONTH=3;BYMONTHDAY=15;UNTIL=20301231T235959ZDisplay Alarm (notification):
BEGIN:VALARM
ACTION:DISPLAY
DESCRIPTION:Reminder
TRIGGER:-PT15M
END:VALARMEmail Alarm:
BEGIN:VALARM
ACTION:EMAIL
SUMMARY:Meeting Reminder
DESCRIPTION:Team meeting in 30 minutes
ATTENDEE:mailto:[email protected]
TRIGGER:-PT30M
END:VALARM-PT15M - 15 minutes before-PT1H - 1 hour before-P1D - 1 day before-PT0M - At the time of eventPT15M - 15 minutes after (positive = after event)For programmatic calendar operations, use the icalendar library:
from icalendar import Calendar, Event
from datetime import datetime, timedelta
import pytz
# Create calendar
cal = Calendar()
cal.add('prodid', '-//My Organization//My App//EN')
cal.add('version', '2.0')
# Create event
event = Event()
event.add('summary', 'Team Meeting')
event.add('description', 'Weekly team sync')
event.add('dtstart', datetime(2025, 1, 25, 14, 0, 0, tzinfo=pytz.UTC))
event.add('dtend', datetime(2025, 1, 25, 15, 0, 0, tzinfo=pytz.UTC))
event.add('dtstamp', datetime.now(pytz.UTC))
event.add('uid', f'{datetime.now().timestamp()}@example.com')
event.add('location', 'Conference Room A')
event.add('status', 'CONFIRMED')
# Add to calendar
cal.add_component(event)
# Write to file
with open('meeting.ics', 'wb') as f:
f.write(cal.to_ical())Reading ICS files:
from icalendar import Calendar
with open('calendar.ics', 'rb') as f:
cal = Calendar.from_ical(f.read())
for component in cal.walk():
if component.name == "VEVENT":
print(f"Event: {component.get('summary')}")
print(f"Start: {component.get('dtstart').dt}")
print(f"End: {component.get('dtend').dt}")from icalendar import Calendar, Event
from datetime import datetime
import pytz
cal = Calendar()
cal.add('prodid', '-//Company//App//EN')
cal.add('version', '2.0')
event = Event()
event.add('summary', 'Project Review Meeting')
event.add('dtstart', datetime(2025, 1, 27, 10, 0, tzinfo=pytz.timezone('America/New_York')))
event.add('dtend', datetime(2025, 1, 27, 11, 0, tzinfo=pytz.timezone('America/New_York')))
event.add('uid', f'project-review-{datetime.now().timestamp()}@company.com')
event.add('dtstamp', datetime.now(pytz.UTC))
event.add('location', 'https://zoom.us/j/123456789')
event.add('description', 'Q1 project review with stakeholders')
cal.add_component(event)
with open('project_review.ics', 'wb') as f:
f.write(cal.to_ical())from icalendar import Calendar, Event, vRecur
from datetime import datetime
import pytz
cal = Calendar()
cal.add('prodid', '-//Company//App//EN')
cal.add('version', '2.0')
event = Event()
event.add('summary', 'Weekly Team Standup')
event.add('dtstart', datetime(2025, 1, 20, 9, 0, tzinfo=pytz.timezone('America/New_York')))
event.add('dtend', datetime(2025, 1, 20, 9, 30, tzinfo=pytz.timezone('America/New_York')))
event.add('rrule', {'freq': 'weekly', 'byday': 'MO,WE,FR', 'count': 20})
event.add('uid', f'standup-{datetime.now().timestamp()}@company.com')
event.add('dtstamp', datetime.now(pytz.UTC))
cal.add_component(event)
with open('standup.ics', 'wb') as f:
f.write(cal.to_ical())from icalendar import Calendar, Event, Alarm
from datetime import datetime, timedelta
import pytz
cal = Calendar()
event = Event()
event.add('summary', 'Important Client Call')
event.add('dtstart', datetime(2025, 1, 28, 15, 0, tzinfo=pytz.UTC))
event.add('dtend', datetime(2025, 1, 28, 16, 0, tzinfo=pytz.UTC))
event.add('uid', f'client-call-{datetime.now().timestamp()}@company.com')
event.add('dtstamp', datetime.now(pytz.UTC))
# Add 15-minute reminder
alarm = Alarm()
alarm.add('action', 'DISPLAY')
alarm.add('description', 'Client call starting soon!')
alarm.add('trigger', timedelta(minutes=-15))
event.add_component(alarm)
cal.add_component(event)
with open('client_call.ics', 'wb') as f:
f.write(cal.to_ical()) import uuid
uid = f'{uuid.uuid4()}@yourdomain.com' event.add('dtstamp', datetime.now(pytz.UTC)) import pytz
tz = pytz.timezone('America/New_York')
event.add('dtstart', datetime(2025, 1, 27, 10, 0, tzinfo=tz)) event.add('status', 'CONFIRMED') event.add('location', 'https://meet.google.com/abc-defg-hij') event.add('sequence', 1) # 0 for new, increment for each updateCommon timezones:
America/New_York - Eastern TimeAmerica/Chicago - Central TimeAmerica/Denver - Mountain TimeAmerica/Los_Angeles - Pacific TimeEurope/London - GMT/BSTEurope/Paris - Central European TimeAsia/Tokyo - Japan Standard TimeUTC - Coordinated Universal TimeGet current timezone list:
import pytz
print(pytz.all_timezones)Common issues to watch for:
Before finalizing a calendar file:
Install Python dependencies:
pip install icalendar pytzParse an ICS file:
python -c "from icalendar import Calendar; cal = Calendar.from_ical(open('file.ics','rb').read()); print([e.get('summary') for e in cal.walk() if e.name=='VEVENT'])"Validate ICS file:
python -c "from icalendar import Calendar; Calendar.from_ical(open('file.ics','rb').read()); print('Valid')"Follow these numbered guidelines when working with calendar events:
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.