| name | mlcon-schedule |
| description | Answer questions about the ML Conference AI 2026 program — session titles, abstracts, speakers, rooms, tracks, and timing. Use this skill whenever the user asks about "ML Conference", "MLCon", "the conference schedule", a specific talk, a specific speaker, "what's on today/tomorrow", or anything that implies browsing a conference program. Trigger even when the user doesn't name the conference explicitly if the context (chat history, current work) points to it. |
ML Conference AI 2026 — Schedule Skill
The program lives behind a GraphQL endpoint. This skill ships a small Python script that calls the endpoint, caches the result for 5 minutes, and prints filtered output. No MCP server, no external dependencies — stdlib only. Just run the script.
The script
Path (relative to the skill directory): scripts/mlcon.py
Run it with python3. Two subcommands:
list — find sessions
python3 scripts/mlcon.py list [OPTIONS]
Filters (all optional, combinable):
| Flag | Meaning | Example |
|---|
--day YYYY-MM-DD | Sessions starting on this date | --day 2026-04-22 |
--track TEXT | Case-insensitive substring on track name | --track "generative ai" |
--speaker TEXT | Substring on speaker name or company | --speaker "Dreßel" |
--room TEXT | Substring on room name | --room nieuwmarkt |
--language EN | Exact language code | --language EN |
--session-type TEXT | Substring on session type name | --session-type keynote |
--skill-level TEXT | Substring on qualification/skill level | --skill-level advanced |
--query TEXT | Free-text across title, abstract, speakers, tracks | --query "prompt injection" |
--limit N | Max results (default 50) | --limit 10 |
Output: one compact line per session — date time | title — room · track · speakers (id: …, slug: …).
get — full details
python3 scripts/mlcon.py get <id-or-slug>
Returns a markdown block: title, when, room, language, type, tracks, speakers (with bios), abstract (HTML-stripped), workshop requirements, PDF slide links.
How to use the skill
Pick the right subcommand for the user's question:
| User wants… | Command |
|---|
| "Generative AI track talks" | list --track "generative ai" |
| "Keno's sessions" | list --speaker Keno |
| "What's on Wednesday?" | list --day 2026-04-22 (resolve the date yourself) |
| "Tell me about the LLM security talk" | list --query "LLM security", then get <slug> on the best match |
| "Abstract for dark-side-of-llms" | get dark-side-of-llms directly |
If the user named a slug or unambiguous title, go straight to get — don't list first just to confirm.
Important data quirks
- Dates arrive as
DD/MM/YYYY HH:MM:SS (European format). The --day flag accepts YYYY-MM-DD for your convenience; the script does the conversion. When summarising back to the user, prefer a natural form ("Wednesday 22 April, 09:45") over raw strings.
- Filters are case-insensitive substrings (except
--language, which is exact). So --track "gen ai" matches "Generative AI & Agents". Prefer short, distinctive substrings.
list never returns abstracts — it's a compact index. If the user asks "what's this talk about?", you must run get.
- Cache: the script caches the full dataset for 5 minutes in
/tmp/mlcon_sessions_cache.json. If the user says the data looks wrong or stale, delete that file and retry.
Recommended response shapes
List query → short markdown list, one line per talk, with time, title, room, speaker. Don't dump abstracts unless asked.
Single session → lead with title + when + room + speaker(s). Then 2–3 sentences summarising the abstract (don't paste the raw abstract verbatim — it's often long). Offer the slug so they can come back for more detail.
No matches → say so plainly and suggest a broader filter ("try dropping the day filter or --track AI").
Worked example
User: "What generative AI talks are on the first morning?"
- Resolve "first morning" — the conference runs 22–23 April 2026, so the first day is
2026-04-22.
- Run
python3 scripts/mlcon.py list --day 2026-04-22 --track "generative ai".
- Filter the output to start times before 12:00 (the tool has no time-of-day flag).
- Present 3–5 top candidates as a markdown list. End with "Want the abstract for any of these?"
What not to do
- Don't call
list with no filters just to dump all ~20+ sessions — that's spammy. Always filter.
- Don't invent sessions or speakers — if the script returns nothing, say nothing was found.
- Don't echo the raw
_id to the user unless they ask for it; the slug is more readable.
- Don't reimplement the GraphQL call yourself — the bundled script is the contract, use it.