Generate optimized conference schedules using constraint satisfaction solvers. These skills enable Claude Code to automatically schedule talks into time slots and rooms while respecting speaker availability, avoiding conflicts, and optimizing for educational flow.
See example directory for the used input files and the generated output schedule.
| Skill | Solver | Language | Best For |
|---|---|---|---|
conference-scheduler-timefold-skill |
TimeFold (OptaPlanner) | Java | Advanced constraints, large conferences |
conference-scheduler-google-skill |
OR-Tools CP-SAT | Python | Quick setup, no JVM required |
conference-scheduler-solverforge-skill |
SolverForge | Python | Timefold-compatible, Python-native |
All skills produce identical output formats and handle the same input data.
See the example/ directory for complete working examples:
| File | Description |
|---|---|
| example/input/schedule.csv | Sample timeslots and rooms (single-day conference) |
| example/input/talks.csv | Sample talks with 24 sessions across multiple tracks |
| example/output/output.csv | Generated schedule (CSV format) |
| example/output/output.md | Generated schedule (Markdown format) |
You need two CSV files (semicolon-delimited). See example/input/ for complete examples.
Schedule CSV — Available time slots and rooms (example):
"from hour";"to hour";"session type";"room name"
"10:35";"11:20";Conference;Room 2
"10:35";"11:20";Conference;Room 8
"11:30";"12:15";Conference;Room 3For multi-day conferences, add a "day" column as the first column.
Talks CSV — Talks to schedule (example):
"Talk ID";"Talk Title";"Audience Level";"Talk Summary";"Track Name";"Speaker Availability days";"Available from";"Available to";"Speaker names"
1411;Unit Test Your Architecture;BEGINNER;Learn ArchUnit...;Development Practices;Wednesday,Thursday;;;Roland Weisleder
3872;Full-stack Development;INTERMEDIATE;Java developers...;UI & UX;;;;Simon Martinelli
5456;Java Next;ADVANCED;Future of Java...;Java;Thursday;;;Nicolai ParlogColumn Details:
- Talk ID: Unique identifier
- Audience Level: BEGINNER, INTERMEDIATE, or ADVANCED
- Track Name: Groups related talks (same track won't run in parallel)
- Speaker Availability days: Comma-separated days (empty = all days)
- Speaker names: Comma-separated for multi-speaker talks
Simply ask Claude Code to schedule your conference:
Schedule this conference using the talks in talks.csv and timeslots in schedule.csv
Or be more specific:
Create an optimized conference schedule from schedule.csv and talks.csv.
Use a 2-minute time limit for the solver. Output to wednesday-schedule.csv
The skill generates:
- CSV file: Machine-readable schedule (example)
- Markdown file: Human-readable schedule with tables (example)
- Speaker conflict: A speaker cannot present in two rooms simultaneously
- Room conflict: Only one talk per room per time slot
- Track conflict: Same track cannot have parallel sessions
- Speaker availability: Respects day restrictions from input
- Educational flow: BEGINNER → INTERMEDIATE → ADVANCED within each track
- Track room consistency: Keeps same track in same room when possible
- AI-computed order: Respects optimal talk sequence based on content analysis
Claude Code skills are installed by copying the skill directory to your Claude Code configuration.
Skills are stored in ~/.claude/skills/ (create if it doesn't exist):
mkdir -p ~/.claude/skillsFor the Python/OR-Tools skill:
cp -r conference-scheduler-google-skill ~/.claude/skills/For the Java/TimeFold skill:
cp -r conference-scheduler-timefold-skill ~/.claude/skills/For the Python/SolverForge skill:
cp -r conference-scheduler-solverforge-skill ~/.claude/skills/Python/OR-Tools skill:
pip install ortools --break-system-packagesJava/TimeFold skill (requires Java 17+ and Maven):
cd ~/.claude/skills/conference-scheduler-timefold-skill
unzip assets/timefold-project.zip
cd timefold-conference-scheduler
mvn clean packagePython/SolverForge skill (requires Python 3.10-3.12 and JDK 17+):
pip install solverforge_legacy --break-system-packagesStart a new Claude Code session. The skill should appear when you type / to see available commands, or Claude will automatically use it when you ask to schedule a conference.
| Conference Size | Talks | Time Limit |
|---|---|---|
| Small | < 30 | 10-30 seconds |
| Medium | 30-100 | 30-120 seconds |
| Large | 100+ | 2-10 minutes |
Longer time limits generally produce better optimization of soft constraints.
The constraints cannot all be satisfied. Check for:
- More talks than available slots
- Speaker with more talks than available time slots on their available days
- Too many talks in same track for available parallel slots
Verify CSV formatting:
- Use semicolons as delimiters
- Quote fields containing special characters
- Ensure consistent day names between schedule and availability
Ensure availability values match day names in schedule CSV exactly (e.g., "Wednesday" not "Wed").
See the constraints documentation for examples of adding custom constraints:
Examples include:
- Keynotes in main room
- Track preferences for morning/afternoon
- Speaker time preferences
- Maximum talks per speaker per day
For optimal educational flow beyond simple level ordering, the skills support AI analysis of talk summaries: