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.

Fifteen Minutes of Clicking Before Anyone Learns Anything

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. Before I built this skill, that meant opening Notion, finding today's time blocks, clicking through to each linked lesson plan, exporting or copy-pasting, formatting for print, and sending to the printer. For a full day with two teachers and four or five lesson plans, it was 15 minutes of clicking before anyone taught a single thing.

I tried doing it the night before. That lasted about a week before I fell behind. The answer was not better discipline — it was less process.

What the Skill Does

print-lesson-plans is an orchestration skill — it composes three other skills into a single workflow. I say "print lesson plans" or "get the lesson plans ready" and Claude handles the rest: it validates the date (rejects weekends with an offer to check Monday), generates schedule files by running daily-lesson-plans for each teacher, sends each schedule to the printer via markdown-print, then queries the Daily Time Blocks database to collect all unique lesson plan URLs linked to today's blocks, deduplicates them (the same lesson plan often appears on multiple time blocks when a 90-minute session is split across two 45-minute slots), fetches each one from Notion via notion-printable-markdown, and prints them.

At the end, Claude reports what it printed: teacher schedules, lesson plan titles, and any blocks that had no linked plan — that last one is useful for catching gaps before the kids sit down.

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 is where the real time savings happen. One phrase replaces five separate commands.

The interesting design constraint: skills don't share state between invocations. The orchestrator re-queries the Daily Time Blocks database even though daily-lesson-plans already fetched similar data. This is intentional. Each skill is self-contained; the orchestrator treats them as black boxes with known inputs and outputs. A few extra API calls is a small price 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. The skill doesn't care which name you use.

Output

A typical morning run produces one to two schedule sheets (one per teacher), three to six lesson plan pages (deduplicated across both teachers), and a terminal summary listing everything printed and flagging any gaps.

Total time from command to paper: about 90 seconds. Most of that is Chromium rendering PDFs. The printing itself is instant.

Fifteen minutes of manual prep, compressed to a sentence and a half. That's the kind of automation worth building — not because it's technically interesting (it isn't, really), but because it gives me those fifteen minutes back every single morning.