Fetch and display sports schedules from an ICS calendar feed with filtering. Use when the user asks about game schedules, upcoming games, sports events, match times, what games are this week, home games, when does a sport play, schedule for a team, or any athletics/sports schedule lookup. Supports filtering by date range, home/away, sport, level (varsity/jv/ms), and gender.
Query sports schedules from an ICS calendar feed with flexible filtering.
When presenting results, follow the unified Discord schedule display spec in
docs/schedule-display.md.
Run the fetch script to answer schedule queries:
python3 ${SKILL_DIR}/scripts/fetch_events.py [options]
The script auto-loads config from references/config.json (ICS URL, timezone, team name).
| Flag | Values | Default |
|---|---|---|
--range | today, tomorrow, this-week, next-week, this-weekend, next-N (e.g. next-7), YYYY-MM-DD |
next-7--home-away | home, away, all | all |
--sport | Sport name (fuzzy match: baseball, lacrosse, etc.) | all |
--level | varsity, jv, ms, freshman, all | all |
--gender | boys, girls, coed, all | all |
--limit | Max events to return | 50 |
--format | text, json | text |
--range this-week--range next-week --home-away home--sport lacrosse --range next-14--range this-week --level varsity--sport softball --gender girls--range this-weekend--range today--range next-30When the user's timeframe is vague ("coming up", "soon"), use --range next-14.
Pass --ics-url, --timezone, or --team-name to override references/config.json values.
Edit references/config.json to change the default ICS feed URL, timezone, or team name.
--format textProduces a compact, day-grouped text view suitable for quick inspection.
--format jsonPrefer this when you want to normalize and render the results in the shared Discord schedule format.
Example:
python3 ${SKILL_DIR}/scripts/fetch_events.py --range today --format json
The JSON output is shaped for unified schedule rendering and includes:
titletimezoneitems[]metadataEach item includes fields like:
sourcecategorytitlestatusstartend (when available)locationopponenthomeAwaytagsallDaydateLabeltimeLabelDefault to the unified schedule spec's compact style.
--format json when possible so you can render with the shared schedule rulesrender_schedule tool is available, pass the normalized JSON response to it instead of hand-formatting the full schedule yourself--format text for quick inspection or if the user wants a simpler/rawer script outputMap ICS fields to the shared schedule model like this:
titleDTSTART / DTEND → start / endLOCATION → locationopponenthomeAwaysourcesportsnormalUse natural sports phrasing:
Girls JV Lacrosse vs Little MiamiBoys Varsity Baseball at Middletown ScrimmageGirls MS Softball at Dixie- 5:30 PM · Girls MS Softball at Dixie · Miamisburg High SchoolTime: / Date: labels unless the user explicitly asks for raw/full outputvs = home game, at = away gameTBD for time../../../docs/schedule-display.md — Unified schedule display spec for Discord