← Files AnyQRARCHIVED FILE

skills/calendar-invite-qr-planner/SKILL.md

2.38 KB · Nov 2, 2026 · 12:18 UTC

↓ Download file

See the change to this file →

---
name: calendar-invite-qr-planner
description: Turn event details into a reviewed calendar-invite QR code. Use when the user wants a meeting, appointment, class, performance, reservation, or all-day event encoded for calendar import and needs help resolving missing dates, end times, locations, or timezone ambiguity. Do not use to write directly to a calendar account or promise recurrence, reminders, organizer fields, or attendee invitations.
---

# Calendar Invite QR Planner

## Gather the event details

Collect:

- Summary.
- Optional description and location.
- Start.
- End.
- Whether the event is all-day.

Ask only about details whose ambiguity could put the event on the wrong date or time. Do not invent a duration, timezone, or end date without a clear contextual basis.

## Normalize the schedule

1. Use `YYYY-MM-DD` values for all-day events.
2. Treat an all-day `DTEND` as exclusive. When the user states an inclusive final day, encode the following date as the end and explain that representation in the preview.
3. Use ISO-like local values such as `YYYY-MM-DDTHH:mm` for floating local times.
4. Use a trailing `Z` only when the event time is explicitly UTC or has been unambiguously converted to UTC.
5. If attendees may be in multiple timezones and the user supplied only a named timezone, clarify how to represent it because the app schema has no named-timezone field.
6. Verify that the end is after the start. Resolve contradictions before creating the QR.

## Create the calendar QR

Call `qr-code` with only `qrCodeInformation` using:

- `kind: "calendar"`
- The normalized `summary`, `description`, `location`, `start`, `end`, and `allDay` fields.
- `encodedText: ""` so the app creates the calendar payload.

Treat returned `structuredContent.qrCodeInformation` as authoritative.

## Deliver the result

Provide a plain-language preview containing:

- Event title and location.
- Start and end as the user should understand them.
- The assumed timezone behavior: UTC, floating local time, or all-day.
- Any omitted optional fields.
- Confirmation that the widget is editable and exportable.

## Boundaries

Do not claim the event was added to a calendar, invitations were sent, availability was checked, or reminders were scheduled. The supported payload has no organizer, attendee, recurrence, alarm, or named-timezone field; do not hide those values in another field as if they were structurally supported.

SHA-256: de76f4c9b31659325fbdf177fa1721ef2bbdf0cf8d24ee331e4d64bcf2e01fc0