Filter and curate a KubeCon schedule from ICS calendar exports. Parses the raw schedule, applies heuristic filters to surface deep dives and high-signal talks, then iteratively refines recommendations based on user feedback. Outputs a curated markdown list and a filtered ICS file. Use this skill whenever the user mentions KubeCon schedule, KubeCon talks, filtering conference sessions, or wants help deciding which KubeCon sessions to attend — even if they just say "help me pick talks" or "there are too many sessions."
Filter a KubeCon schedule down to the talks worth attending: $ARGUMENTS
This skill ships with bundled ICS files for the current KubeCon event. Your job is to parse the schedule, apply quality heuristics, and then work with the user in iterative rounds to build a personalized shortlist. The user knows Kubernetes well — they want depth, not introductions.
Two ICS files are bundled in this skill's directory:
kubecon.ics — the main KubeCon conference sessionscolocated-events.ics — co-located events (Cilium Con, Istio Day, BackstageCon, etc.)Read both files from the skill directory (the same directory as this SKILL.md). If the user provides a different ICS file path, use that instead.
Extract these fields from each VEVENT:
If the ICS is malformed or missing fields, work with what you have. KubeCon's Sched exports are sometimes messy — speaker names might be in the description body rather than a structured field. Do your best to extract them.
Count the total number of sessions parsed and tell the user so they know the scale.
Score each talk using these heuristics. The goal is to separate signal from noise before the user sees anything.
Don't filter by topic area yet. The user hasn't told you what they're interested in — that's what the iterative rounds are for. Apply only quality heuristics in this pass, not topic preferences.
Show the user 10-15 of the highest-scored talks. For each talk, present:
### [Talk Title]
**Speaker(s):** Name (Company)
**Track:** Deep Dive / Case Study / etc.
**When:** Day, Time — Time
**Room:** Location
> [2-3 sentence summary of the abstract — what the talk is actually about, not the marketing fluff]
**Why this made the cut:** [brief reason — e.g., "maintainer of Cilium discussing eBPF internals" or "production war story from a team running 2000 nodes"]
Group the batch by day/time slot if possible so the user can see their schedule taking shape.
If any recommended talks overlap in time, flag it clearly:
> [!warning] Schedule conflict
> This talk overlaps with [Other Talk Title] (same time slot). Both are recommended — pick one to attend live and catch the other on YouTube later.
After presenting, ask the user for feedback. Something like: "Which of these look good? Which aren't interesting? Any topics you want to see more or less of?"
Based on the user's feedback, infer their preferences:
Apply the learned preferences and present the next batch. Keep batches to ~10 talks to avoid overwhelming the user.
Repeat until:
Throughout the rounds, maintain a running list of accepted talks so you can:
When the user is satisfied, produce two outputs:
Save to Fleeting/ in the vault (or wherever the user specifies) as YYYY-MM-DD_kubecon-schedule.md:
---