gitstua/stu-skills · Archived

ics-calendar-reader

Read, parse, and summarize iCalendar (.ics) files from Google Calendar, Apple Calendar, and similar providers. Use when extracting upcoming events, filtering by date range, converting ICS events to JSON/text, or debugging calendar fields like DTSTART/DTEND/TZID/RRULE.

First seen Feb 12, 2026

Installation

$ npx skills add gitstua/stu-skills --skill ics-calendar-reader

Stronger alternatives

This repository is archived — consider an actively maintained alternative.

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from gitstua/stu-skills.

npx skills add gitstua/stu-skills

Browse all from gitstua/stu-skills

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

License LICENSE
Default branch main
Open issues 0
Status Archived

Skill metadata

Parsed from SKILL.md frontmatter.

LicenseGPL-3.0-only

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 3,156 B
  • docs SUMMARY.md 295 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 4 installs

SKILL.md

ICS Calendar Reader

Parse .ics files with scripts/read_ics.py instead of hand-parsing text.

Prerequisite

  • Set ICS_URLS to one or more calendar URLs (comma-separated).

- Example: export ICS_URLS="https://example.com/a.ics,https://example.com/b.ics";

  • Secrets/defaults file: ~/.config/stu-skills/ics-calendar-reader/.env

- The script reads this path from ics-calendar-reader/.env-path automatically.

  • If ICSURLS is missing and no icspath is provided, the script exits with an instruction for the agent to ask the user for it.
  • Do not paste private calendar URLs in prompts or command lines; run the script and let it read from env.
  • The parser refuses --url inputs by design and instructs using ICS_URLS from .env.
  • ICS_URLS entries using webcal:// or webcals:// are normalized to https:// automatically.

.env Sample

Path: ~/.config/stu-skills/ics-calendar-reader/.env

ICS_URLS="https://example.com/a.ics,https://example.com/b.ics"

Workflow

  1. Run the parser on the file and request JSON for reliable downstream use:

- python3 scripts/readics.py /path/to/calendar.ics --format json - python3 scripts/readics.py --format json

  1. Filter to upcoming events or a window:

- python3 scripts/readics.py /path/to/calendar.ics --after now --limit 20 --format json - python3 scripts/readics.py /path/to/calendar.ics --after 2026-02-01T00:00:00 --before 2026-03-01T00:00:00 --format json - python3 scripts/read_ics.py --after now --limit 20 --format json

  1. Use text output for quick human review:

- python3 scripts/read_ics.py /path/to/calendar.ics --format text

Cache (URL fetches)

  • Remote ICS URLs are cached by default for 900 seconds.
  • Override TTL with --cache-ttl (seconds) or ICSCACHETTL_SECONDS.
  • Disable cache by setting --cache-ttl 0.
  • Override cache location with --cache-dir or ICSCACHEDIR.
  • Default cache path:

- $XDGCACHEHOME/stu-skills/ics-calendar-reader - or ~/.cache/stu-skills/ics-calendar-reader when XDGCACHEHOME is unset.

Output Contract

Expect each event to include:

  • summary
  • start (ISO-8601)
  • end (ISO-8601 when available)
  • all_day (boolean)
  • location
  • description
  • status
  • uid
  • organizer
  • attendees

Notes

  • Treat parsed JSON as source of truth for further transformations.
  • Keep timezone-aware datetimes intact; do not strip offsets.
  • When presenting datetimes to users, default to local timezone with format Sat 7 Feb 2026 16:43 (%a %-d %b %Y %H:%M).
  • For recurring events, treat each VEVENT record present in the file as one parsed item.
  • If needed, read references/ics-fields.md for quick field semantics.
  • For private calendar subscriptions, store URLs in ICS_URLS and avoid inline URLs entirely.