{"id":78325,"plugin_id":"plugin_asdk_app_6ad1ffba80e08191ac5b38ee5e1f0515","kind":"skill","collection_source":"plugin_package","comparison_source":null,"observed_at":"2026-11-03T12:13:05.871Z","digest":"f1db65ab5a189ed4427e557a1700d3c27b2e2ac08db5bed51b446e9a2142cd2d","against":null,"payload":{"description":"Convert Cricket Explorer fixture start times into one or more local time zones and produce a copyable agenda when the user asks when matches start where they live, across cities, or after a date change. Require trustworthy GMT timestamps and resolved time zones; do not create calendar events, reminders, or guessed start or finish times.","included_files":[{"relative_path":"agents/openai.yaml","size_in_bytes":244},{"relative_path":"scripts/convert_fixtures.py","size_in_bytes":3595}],"name":"fixture-time-planner","skill_md_contents":"---\nname: fixture-time-planner\ndescription: Convert Cricket Explorer fixture start times into one or more local time zones and produce a copyable agenda when the user asks when matches start where they live, across cities, or after a date change. Require trustworthy GMT timestamps and resolved time zones; do not create calendar events, reminders, or guessed start or finish times.\n---\n\n# Fixture Time Planner\n\nTurn returned fixture start timestamps into an agenda with explicit dates, time zones, and day changes.\n\n## Inputs and retrieval\n\n1. Reuse the requested match rows from tool results or `widgetState.modelContent.selectedMatch`. For a series, use returned `structuredContent.selectedSeries.matches`; the selected series in widget state contains no fixture list.\n2. If details are missing but an ID is known, call `open-cricket-explorer` with `reason` and either `initialPanel: \"matches\"` plus `matchId`, or `initialPanel: \"series\"` plus `seriesId`. Check the returned selection rather than assuming the lookup succeeded.\n3. If no ID is known, open the appropriate panel with `reason` and `initialPanel`, ask the user to select the entity, and use its next model-visible ID. Do not invent IDs or call the widget-only `get-cricket-data` tool.\n4. Resolve the destination time zone or zones from the request. Use IANA names such as `Europe/London` and `Australia/Sydney`. Ask about ambiguous cities or abbreviations such as CST; language, country, and current device offsets do not establish a time zone for a future fixture.\n\n## Convert the timestamps\n\n1. Use `dateTimeGmt` as the source instant. Interpret an offset-free timestamp in that field as UTC; honor an explicit offset when supplied. Require a full calendar date and time. Never manufacture midnight from `date` or infer a missing year.\n2. Use the bundled [scripts/convert_fixtures.py](scripts/convert_fixtures.py) when local Python execution is available. It uses Python 3.9 or later and the system's IANA time-zone database through `zoneinfo`, with no third-party Python packages.\n3. Extract the returned rows into a temporary JSON array containing their `id`, `name`, `date`, and `dateTimeGmt`. Resolve the helper path from this skill directory. For example, run from this directory:\n\n   ```bash\n   python3 scripts/convert_fixtures.py --input /tmp/cricket-fixtures.json --timezone Europe/London --timezone Australia/Sydney\n   ```\n\n4. Read the helper's JSON result. Use `utcStart` and each `localStarts` entry's `dateTime`, `timeZone`, `abbreviation`, and `dateShiftDays`. Keep rows marked `missing` or `invalid` unresolved. Invalid destination zones fail the command instead of silently substituting another zone.\n5. If the helper cannot run, use another available standard time-zone facility with date-specific IANA rules. If no reliable conversion facility is available, retain the source timestamps and explain that local conversion is unresolved. Do not guess daylight-saving offsets.\n6. Sort valid instants chronologically, deduplicate match IDs, and preserve each local calendar date. Show the numeric offset alongside the zone name when a repeated clock time could be ambiguous.\n\n## Deliverable\n\nProvide a copyable table of fixture, UTC start, and a dated local start for each requested time zone. Highlight local day changes and list unresolved fixtures separately, preserving a trustworthy source date only as an unconverted date.\n\nLabel times as reported starts from data potentially cached for up to 24 hours. A conversion establishes neither a fresh schedule nor a confirmed future start if status and timing conflict. Keep start times distinct from match duration or daily sessions; the app supplies no finish times or calendar-writing capability.\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}