Print Lesson Plans: One Command to Print the Whole Teaching Day
A Claude Code skill that orchestrates multiple sub-skills to fetch, format, and print a complete day's teaching materials from Notion to paper.
The Problem
Every school morning, two things need to happen before teaching starts: each teacher needs a printed schedule, and the lesson plan pages for each session need to be on the table. Manually, this means opening Notion, finding today's time blocks, clicking through to each linked lesson plan, exporting or copy-pasting each one, formatting for print, and sending to the printer. For a full day with two teachers and four or five lesson plans, it's 15 minutes of clicking before anyone teaches a single thing.
What the Skill Does
print-lesson-plans is an orchestration skill — it composes three other skills into a single workflow. Say "print lesson plans" or "get the lesson plans ready" and Claude:
- Validates the date. Rejects weekends with an offer to check Monday.
- Generates schedule files. Runs
daily-lesson-plansfor each teacher (or a single teacher if specified), producing Markdown schedule tables. - Prints the schedules. Sends each schedule file to the Brother printer via
markdown-print. - Collects lesson plan URLs. Queries the Daily Time Blocks database directly (skills don't share state) and extracts all unique Lesson Plan URLs linked to today's blocks.
- Deduplicates. The same lesson plan often appears on multiple time blocks (e.g., a 90-minute session split into two 45-minute blocks). Each plan is printed exactly once.
- Fetches and prints each plan. For each unique lesson plan, runs
notion-printable-markdownto fetch the Notion page, thenmarkdown-printto send it to the printer. - Summarizes. Reports what was printed: teacher schedules, lesson plan titles, and any blocks that had no linked plan.
Why Orchestration Matters
Each sub-skill works independently — you can run daily-lesson-plans alone to check the schedule on screen, or notion-printable-markdown to export any Notion page. But the orchestration skill is where the real time savings happen. Instead of five separate commands, one phrase handles the full morning prep.
The key design constraint is that skills don't share state between invocations. Step 4 re-queries the Daily Time Blocks database even though step 2 already fetched similar data. This is intentional: each skill is self-contained, and the orchestrator treats them as black boxes with known inputs and outputs. The tradeoff is a few extra API calls in exchange for skills that never break when used independently.
Teacher Targeting
The optional teacher argument — "print lesson plans for Dad" — limits the run to a single teacher's schedule and linked plans. Without it, both teachers get printed. Teacher matching uses Notion user IDs internally, not display names, which avoids ambiguity (the same person might appear as "Dad," "Matt," or "Ayah" in different parts of the database).
Output
A typical run produces:
- 1–2 schedule sheets (one per teacher)
- 3–6 lesson plan pages (deduplicated across both teachers)
- A terminal summary listing everything printed and flagging any gaps
Total time from command to paper: about 90 seconds, most of which is Chromium rendering PDFs.
Comments ()