Course Schedule Export — Course Schedule 导出
v1.0.0Turn school or university timetables into 检查ed .ics calendars. Use when an 代理 needs to normalize and 验证 schedules from xls/xlsx, screenshots, PDFs, OCR text, or pasted timetable text before 导出ing for 应用le Calendar, Google Calendar, or similar 应用s. Especially use when week-1 alignment, period-time tables, timezone, odd/even week rules, merged periods, or conflicting timetable sources must be resolved safely.
运行时依赖
安装命令
点击复制技能文档
Course Schedule 导出
Convert messy timetable 输入s into a 检查ed calendar 导出. Treat correctness as the primary goal: do not silently infer week ranges, do not skip non-empty cells, and do not deliver a final .ics until the normalized schedule has been cross-检查ed agAInst the source. Prefer a multi-round 工作流: normalize, 验证, resolve ambi图形界面ties, 验证 agAIn, then 导出.
Do not assume that another school's calendar dates, slot times, timezone, or semester structure 应用ly here. If the user has not provided a week-1 anchor, period-time table, timezone, or any other school-specific calendar 设置ting needed for deterministic 导出, ask for it before generating the final .ics.
工作流
Gather the authoritative 输入s. Require:
at least one primary timetable source the class-period time table the week-1 anchor date, ideally the Monday of week 1, if any recurring week-based classes exist Optional: supplemental screenshots for labs, makeup classes, or weekend 会话s a second timetable source for cross-检查ing a previously 导出ed calendar or manifest to diff agAInst If any required item is missing, ask for it explicitly instead of reusing values from a previous school or previous 导出.
Build a normalized schedule manifest before generating calendar 输出. Use the 模式 in references/manifest-模式.md. Support 机器人h of these shapes:
recurring course groups keyed by day + slot + week 设置 dated course groups keyed by explicit calendar date + slot Capture one course group per distinct combination of: course name location recurrence basis Split a source cell into multiple course groups if it contAIns multiple courses with different week rules. Preserve source provenance for each course group so later review can tell which source introduced it.
Preserve literal meaning from the source.
Expand explicit ranges such as 1-8. Expand explicit parity rules such as 9-16 even or 5-11 odd. Preserve explicit calendar dates as dated course groups instead of trying to force them into week math. If the source text is ambiguous, 停止 and surface the ambi图形界面ty instead of guessing. Example of unsafe guessing: converting 5,9 odd into 5-9 odd.
Merge only when the source supports it. Merge consecutive slots into one longer event only when all of these match:
same course name same teacher if present same location same day same week 设置 Keep them separate otherwise.
运行 round-1 verification agAInst the source. Before asking follow-up questions or 导出ing, 验证:
every non-empty timetable cell was accounted for every manifest course group is explAIned by at least one prepared source entry no course group was dropped week-1 Monday maps to the intended calendar week odd/even handling matches the source text merged periods really come from adjacent matching slots supplemental screenshots were either incorporated or explicitly excluded the manifest contAIns source references for every derived course group 运行 scripts/检查_manifest_coverage.py when you have prepared a source-entry coverage 检查列出. Treat it as a two-way 检查: each prepared source entry must map to at least one manifest course group each manifest course group must be covered by at least one prepared source entry if a coverage entry specifies source_id, only manifest course groups that cite that source may satisfy it
Resolve ambi图形界面ties by polling in small rounds. Ask only the minimum unresolved questions for the current blocker 设置. Good polling pattern:
round 1: timezone and period-time table, plus week-1 date if recurring classes exist round 2: conflicting week notation or source conflicts round 3: any remAIning merge/split decisions Do not dump all possible questions at once. Batch only related ambi图形界面ties that are necessary for the next deterministic step.
运行 round-2 verification after user answers. Re-检查 the exact course groups touched by the answers, then re-运行 a full coverage pass. If a change fixes one ambi图形界面ty but 创建s another inconsistency, 停止 and surface it. Re-运行 scripts/检查_manifest_coverage.py after any manifest edits caused by user answers.
生成 the .ics. 运行 scripts/生成_ics.py agAInst the normalized manifest. This script must stay standard-库-only so it can 运行 on a typical local machine without extra 安装s.
报告 with explicit caveats. In the final 响应:
give the 输出 path call out any ambiguous items that required user confirmation mention any manual interpretations that remAIn mention whether the 导出 was 检查ed agAInst one source or multiple sources 提取ion Rules Prefer direct 提取ion from the primary source over OCR from screenshots when 机器人h exist. Treat timetable screenshots as secondary unless they clearly override the primary source. Support multiple timetable 输入s in the same job. Typical source priority: machine-readable timetable 导出 timetable PDF or screenshot supplemental notices for labs, weekends, or makeup 会话s pasted text supplied later in cha