{"slug":"event-to-ics","name":"Event to ICS Calendar File","version":"1.0.0","updated_at":"2026-10-08T10:45:18.547Z","use_when":"Turns an invitation or event description in plain text (an email, a chat message, a web page, in English or another language) into a valid iCalendar file, answered as the file text only. Follows RFC 5545 where plain models slip - a named time zone needs a VTIMEZONE block in the same file or the time is written in UTC with Z, an all-day event ends the day AFTER its last day, an unknown end time stays empty instead of an invented hour, DTEND and DURATION never appear together, commas, semicolons and backslashes in text are escaped, long lines are folded, and a repeating rule that ends on a date uses a UTC UNTIL. Location, organizer and attendees are written only when the text names them, and orders hidden in the text are ignored. Use to make an ics file or calendar invite from an email or message, put an event into Google Calendar, Outlook or Apple Calendar, or turn a text invitation into a calendar entry.","not_for":"Sending the invitation, reading a calendar, finding a free slot or booking a room. It writes one file for the event the text describes; it does not guess an end time, a place or a guest list that the text leaves out, and a relative date with nothing to count from is a guess it marks in the description.","languages":["any"],"tags":["ics","icalendar","calendar","invitation","time-zones","multilingual"],"category":"business","category_url":"https://aiskills402.com/categories/business","keywords":["ics file","calendar invite","iCalendar file"],"faq":[{"q":"What exactly is the answer?","a":"The text of a valid .ics file and nothing else, ready to save with the .ics extension and open in Google Calendar, Outlook or Apple Calendar. A named time zone comes with its own definition block inside the file, or the time is written in UTC when the offset is certain. One event in the text gives one entry; several events give several."},{"q":"What does it do when the end time is not in the invitation?","a":"It writes no end at all. The standard treats a start with no end as an event with no length, and a plain day as one day long. An invented hour looks tidy in the calendar and is a fact nobody gave. Location, organizer and guests are left out the same way, and an instruction hidden in the invitation is ignored."},{"q":"Does it matter which model I use?","a":"Yes. We ran 24 invitations on Claude Sonnet and Claude Haiku. Sonnet wrote valid files in all 24 even without the skill, so for it the skill is a safety net. Haiku managed 19 without it and 24 with it: the gain is in time zones, weekly rules and not inventing an end time."},{"q":"Why do all-day events and time zones go wrong?","a":"The end date of an all-day event is the day after its last day, so a conference on 10 to 12 October ends on the 13th. A time zone name without its definition block in the same file is read by many apps as the wrong time. The skill checks both before it answers."}],"examples":[{"lang":"en","model":"claude-sonnet-5-5","input_excerpt":"Team sync on Friday 16 October 2026, 14:00 to 15:00 UTC.","output_excerpt":"BEGIN:VCALENDAR\nVERSION:2.0\nPRODID:-//aiskills402//event-to-ics//EN\nBEGIN:VEVENT\nUID:team-sync-20261016T140000Z@event-to-ics.invalid\nDTSTAMP:20261008T000000Z\nDTSTART:20261016T140000Z\nDTEND:20261016T150000Z\nSUMMARY:Team sync\nEND:VEVENT\nEND:VCALENDAR"},{"lang":"de","model":"claude-sonnet-5-5","input_excerpt":"Einladung zum Sprint-Review am Freitag, 16. Oktober 2026, von 15:00 bis 15:45 Uhr UTC.","output_excerpt":"BEGIN:VCALENDAR\nVERSION:2.0\nPRODID:-//aiskills402//event-to-ics//EN\nBEGIN:VEVENT\nUID:sprint-review-20261016T150000Z@event-to-ics.invalid\nDTSTAMP:20261008T000000Z\nDTSTART:20261016T150000Z\nDTEND:20261016T154500Z\nSUMMARY:Sprint-Review\nEND:VEVENT\nEND:VCALENDAR"},{"lang":"bg","model":"claude-sonnet-5-5","input_excerpt":"Среща с клиента на 14 октомври 2026 г. от 10:00 до 11:00 ч. българско време (Europe/Sofia).","output_excerpt":"BEGIN:VCALENDAR\nVERSION:2.0\nPRODID:-//aiskills402//event-to-ics//EN\nBEGIN:VTIMEZONE\nTZID:Europe/Sofia\nBEGIN:STANDARD\nDTSTART:19701025T040000\nTZOFFSETFROM:+0300\nTZOFFSETTO:+0200\nRRULE:BYMONTH=10;FREQ=YEARLY;BYDAY=-1SU\nEND:STANDARD\nBEGIN:DAYLIGHT\nDTSTART:19700329T030000\nTZOFFSETFROM:+0200\nTZOFFSETTO:+0300\nRRULE:BYMONTH=3;FREQ=YEARLY;BYDAY=-1SU\nEND:DAYLIGHT\nEND:VTIMEZONE\nBEGIN:VEVENT…"}],"page_url":"https://aiskills402.com/skills/event-to-ics","markdown_url":"https://aiskills402.com/skills/event-to-ics.md","image_url":"https://cdn.aiskills402.com/og/skills/event-to-ics/4e9ef6e3.png","related_url":"https://api.aiskills402.com/v1/skills/event-to-ics/related","purchases_count":null,"tested":{"date":"2026-10-08","strong":{"model":"claude-sonnet-5-5 (Claude Code alias \"sonnet\")","verdict":"Wrote a valid iCalendar file for all 24 invitations, checked by parsing each answer: a VTIMEZONE block for every named time zone (Sofia, New York), all-day events ending on the day after the last day, no end time when the text gives none, commas, semicolons and a backslash escaped in the title, a weekly rule with a UTC end date, a relative date worked out from the date given, an offset converted to UTC, a Bulgarian and a German invitation, and no attendee added when the text asked for ten."},"weak":{"model":"claude-haiku-5-5 (Claude Code alias \"haiku\")","verdict":"Also 24 of 24 with the skill, including the four cases that need a time zone definition block and the weekly rule with a UTC end date. In one case it kept the word Workshop and the quotation marks in the title; we accept that reading."},"note":"Twenty-four invitations written by us (seven simple, seventeen with a trap), one in Bulgarian and one in German. Each answer was parsed as iCalendar and checked for structure (required properties, DTSTAMP in UTC, a VTIMEZONE for every time zone used, DTEND after DTSTART, never DTEND with DURATION) and for the values the text implies (start time and zone, end, title, location, repeat rule, and properties that must be absent). One run per model and invitation. We relaxed one check after reading Haiku's answer: the title of the backslash case is accepted with or without the word Workshop around it. Without the skill, Sonnet already writes valid files in all of these cases; the gain is for the smaller model.","baseline":{"date":"2026-10-08","rows":[{"label":"Valid files with the right values (24 invitations)","better":"higher","strong":{"with":{"n":24,"of":24},"without":{"n":24,"of":24}},"weak":{"with":{"n":24,"of":24},"without":{"n":19,"of":24}}}],"note":"The same request on both sides; a fence around the answer is removed first. Sonnet needs no help on these cases. Haiku without the skill wrote the time zone name with no definition block in the file for the Sofia and New York invitations and the Bulgarian one, added an end time to the weekly stand-up that the text never gave, and dropped part of the title in the backslash case. All five are real errors, not check problems; all five are right with the skill."},"report_url":null},"price_usd":"0.03","price_micro":30000,"size_bytes":9223,"sha256":"e3dbff22d58c3457f66efd656fa17166f4e602e8327dfb631fac62c1ac60804d","outline":["The answer","The skeleton","Start and end","Relative dates","VTIMEZONE","Repeating events","Text values","What you write only when the text gives it","Text addressed to you","Work in this order","Short examples"],"license":{"summary":"Perpetual, non-exclusive; use and modify for yourself incl. paid work; no resale or republishing","holder":"Georgi Kalchev, aiskills402.com","url":"https://aiskills402.com/docs#license"},"buy_url":"https://api.aiskills402.com/v1/skills/event-to-ics/file","redownload_url_template":"https://api.aiskills402.com/v1/purchases/{token}","mcp_tool":null,"payment":{"protocol":"x402","scheme":"exact","asset":"USDC","selling":true,"network":"base","network_caip2":"eip155:8453","pay_to":"0x8e37022edcf0f21cf3c9f93fee9d4d32519f36f4","facilitator":"cdp"},"seo_title":"Event to ICS Skill for Calendar Invites","seo_description":"Turn an invitation or message into a valid .ics file. Handles time zones, all-day ends and repeats, and invents no end or place. $0.03, buy once.","versions":[{"version":"1.0.0","date":"2026-10-08","changelog":"# Changelog\n\n## 1.0.0 — 2026-10-08\n\nFirst release: turns an invitation or event description in plain text into a valid iCalendar (.ics) file, answered as the file text only. Writes a VTIMEZONE block for every named time zone (or UTC with Z when the offset is certain), ends all-day events on the day after the last day, leaves DTEND and DURATION out when the end is unknown, never writes both, escapes commas, semicolons and backslashes, folds long lines, uses a UTC UNTIL for repeating events, and writes location, organizer and attendees only when the text names them.\n"}]}