Skip to content

Repository files navigation

course-maker

Читать на русском

From a bare course idea to finished lecture slides, speaker notes, labs, quizzes, and homework — in hours or days, not weeks or months. A structured AI pipeline for preparing university course materials, with state tracking so nothing gets forgotten or re-explained between sessions.

The skill is a cross-tool Agent Skill (SKILL.md), so it should run on any Agent Skill–compatible tool; explicitly tested on Claude Code and Cowork, OpenAI Codex CLI, and Cursor — one skill, installed per tool (see Installation). Deeper cross-tool parity is tracked in docs/MULTI_HARNESS_PLAN.md.


Why

Preparing a course the usual way costs weeks: a slide plan that drifts from what you actually teach, Beamer files that fight you on layout, speaker notes written from memory the night before, lab assignments and grading built by hand every semester. Plain chat-based AI help doesn't fix this — every session starts from zero, so you re-explain your audience and re-reject the same bad ideas every week.

course-maker is a pipeline, not a chat: it remembers your course's audience, style, and every decision you've made, and turns that into consistent, ready-to-use material.

  • Speed: one lecture — plan, figures, slides, speaker notes — in hours; a whole new course's worth of lectures, labs, and quizzes in days.
  • Fits your audience: rigor level, language, and style are set once and applied to every lecture, lab, and quiz — no re-explaining, no drift.
  • A course that survives next semester: every course is a predictable file layout with an explicit status table and decision log, so updating one lecture, or picking the whole course back up a year later, takes minutes, not archaeology.

What it does

One pipeline, the whole course — not just slides:

For... You get
Lectures slide-by-slide plan → visualization list → Python figure scripts → chunked Beamer/Slidev deck → speaker notes
Seminars the same deck pipeline plus a practical live-coding notebook
Labs plan → notebook → instructor spec → pytest-based autograded tests → student validation → publish to your LMS
Quizzes / exams interactive plan → chunked question bank with answer key → student-facing export
Homework task brief + grading rubric → student handout (pdf/latex/docx)
The course itself course_plan.md as the single source of truth, a generated student syllabus, and a status dashboard across every pipeline

For one lecture, that looks like:

/course-maker plan 3        # detailed slide-by-slide plan
/course-maker visuals 3     # list of visualizations, TikZ vs Python
/course-maker figures 3     # Python script to generate PNG figures
/course-maker slides 3      # LaTeX/Beamer presentation (chunked)
/course-maker slides 3 next # ...next 5 slides
/course-maker notes 3       # speaker notes (chunked)

Each step reads the outputs of previous steps and a history.md that logs every decision and rejected idea — so the agent doesn't re-propose what you already turned down, and each new lecture benefits from lessons learned in previous ones. Labs, seminars, quizzes, and homework each have their own pipeline in the same style — see Commands for the full reference.


Installation

Requirements: any Agent Skill–compatible agent (tested on Claude Code, Cowork, OpenAI Codex CLI, and Cursor), plus git. For local Beamer compilation: a LaTeX distribution. For lab tests: Python 3.11+.

The same skill (SKILL.md + references/) works in every tool; only how you install it differs. Pick one of two ways.

Option A — release zip (any tool; the only way for Cowork)

Download course-maker-vX.Y.Z.zip from the latest release. It is a self-contained, versioned copy of the skill — a single course-maker/ folder — with the version stamped into it.

  • claude.ai / Claude Cowork: upload the zip as-is via Settings → Features (Skills). Do not unzip.

  • Claude Code / Codex / Cursor: unzip it into the tool's skills directory. The archive already contains the course-maker/ folder, so it lands in the right place:

    unzip course-maker-v1.3.0.zip -d ~/.claude/skills/   # Claude Code
    unzip course-maker-v1.3.0.zip -d ~/.agents/skills/   # Codex CLI
    unzip course-maker-v1.3.0.zip -d ~/.cursor/skills/   # Cursor (only if not using the above)

    Re-download and re-unzip to update.

Option B — clone + symlink (for development / tracking main)

Best if you want a git pull to update every tool at once, or you're editing the skill. Not applicable to Cowork. Run from the PARENT directory of the clone:

git clone https://github.com/markpolyak/course-maker

# Claude Code:
ln -s "$(pwd)/course-maker/skill" ~/.claude/skills/course-maker

# Codex CLI:
mkdir -p ~/.agents/skills
ln -s "$(pwd)/course-maker/skill" ~/.agents/skills/course-maker

Replace ln -s with cp -r for a self-contained copy (re-copy after updates).

Cursor needs no separate install — it also reads the Claude Code and Codex skill directories, so it picks up either symlink above. (Only using Cursor? Put the link in ~/.cursor/skills/course-maker.)

Then create a course and initialize it in your agent:

# Create a new course repository
mkdir my-course && cd my-course && git init

# Open in Claude Code / Codex / Cursor and initialize
> /course-maker course init
> /course-maker course plan

course init creates AGENTS.md (course context), course_conventions.md, slides_preamble.tex, and the directory layout. course plan walks you through filling in course_plan.md (or imports an existing one).


Quick start (5 minutes to first slide plan)

  1. Run /course-maker course init — fills in AGENTS.md (course context) and per-course templates from your answers (course name, audience, style, language, slides format, LaTeX engine).
  2. Run /course-maker course plan — interactively creates course_plan.md, or imports yours if you already have one.
  3. Run /course-maker plan 1 and review the output.
  4. When satisfied, run /course-maker visuals 1.

Full walkthrough: docs/getting-started.md.


How it reduces iteration

The two main sources of wasted rounds in lecture prep:

Problem 1: the agent doesn't remember what you rejected. Each session starts fresh. You say "compress section 3", the agent does it, next week it's back. → history.md per lecture fixes this: every decision is logged and re-read at the start of each step.

Problem 2: Beamer slides time out or overflow. A 20-slide .tex file is 600–900 lines. Generating it in one shot risks hanging or truncating the output, in any of the supported tools. → Slides and speaker notes are generated in chunks of 5, with approval between each chunk.

A third source — the agent silently skipping a references/*.md file mentioned in the dispatcher — is addressed by the ## Inviolable rules block in SKILL.md, which is always loaded and lists the critical rules that survive any skip.


Repository layout (per course)

my-course/
  AGENTS.md               ← course context (audience, style, language, profile)
  course_plan.md          ← master plan (source of truth)
  syllabus.md             ← student-facing syllabus (generated from course_plan.md)
  COURSE_STATE.md         ← status of all pipelines: ✅ 🔄 ❌ ⚠️
  course_conventions.md   ← terminology + language rules (generated by course init)
  slides_preamble.tex     ← LaTeX/Beamer preamble (generated by course init)
  lab_templates.md        ← lab notebook/test templates (generated by lab course-init)
  lms_adapter.md          ← LMS publish workflow (copied from the profile by lab course-init)
  lectures/
    01/
      plan.md             ← slide-by-slide plan
      visuals.md          ← visualization list with TikZ feasibility
      figures/
        figures.py        ← generates all PNG figures
        fig01_name.png
      slides.tex          ← Beamer presentation
      speaker_notes.md    ← live spoken text for the lecturer
      history.md          ← decision log
  labs/
    shared/               ← per-course base templates
    lab1/
      lab_spec.md         ← instructor-only contract (not published to students)
      history.md
      starter/            ← student-facing files (delivery depends on the LMS adapter)
        exercises.ipynb
        conftest.py
        tests.py
        ...
  seminars/               ← per-seminar decks + practical notebooks
  quizzes/                ← quiz/exam banks + student exports
  homework/               ← homework briefs + rubrics (or nested under a seminar)

Commands

Lecture pipeline:

Command Description
/course-maker Project status (all pipelines)
/course-maker help Command reference
/course-maker course init Scaffold a new course repository
/course-maker course plan Create, fill, or update course_plan.md (interactive)
/course-maker course status Status table for all pipelines
/course-maker course update Detect manual edits to course_plan.md, flag affected lectures
/course-maker doctor Check for state drift, missing files, config gaps (read-only)
/course-maker stats Progress bars across pipelines (read-only)
/course-maker syllabus [pdf|latex|docx] Generate/update student syllabus.md; optional export
/course-maker plan N Step 1: detailed slide plan for lecture N
/course-maker visuals N Step 2: visualization list
/course-maker figures N Step 3: Python figure generation script
/course-maker slides N Step 4: Beamer slides, chunk 0 (preamble + title)
/course-maker slides N next Step 4: next chunk of 5 slides
/course-maker notes N Step 5: speaker notes, slides 1–5
/course-maker notes N next Step 5: next chunk of 5 slides
/course-maker status N State + history summary for lecture N

Seminar pipeline (a lecture deck + a practical part, in seminars/NN/):

Command Description
/course-maker seminar plan|visuals|figures|slides|notes N Deck steps — reuse the lecture step pipeline, targeting seminars/NN/
/course-maker seminar practice N Practical live code-demo notebook (practice.ipynb)
/course-maker seminar status N Status + last 3 history entries

Lab pipeline:

Command Description
/course-maker lab course-init One-time setup: create labs/shared/ with templates; install the LMS adapter
/course-maker lab init N [url] [slug] Scaffold lab N (starter setup per the LMS adapter; url used only by remote-starter profiles)
/course-maker lab plan N Step 1a: interactive planning until approved
/course-maker lab notebook N Step 1b: generate exercises.ipynb
/course-maker lab spec N Step 1b: generate lab_spec.md (auto plan/notebook mode)
/course-maker lab datasets N Step 1b: generate datasets_info.md (optional)
/course-maker lab tests N Step 2: tests.py, requirements.txt, README (+ grade_report.py if a reporter is used)
/course-maker lab validate N <id> Step 3: validate as student (new session required)
/course-maker lab publish N Run the publish workflow from lms_adapter.md (LMS-specific)
/course-maker lab update N Re-publish after post-release fix
/course-maker lab status N Status + last 3 history entries

Quiz pipeline (quizzes / tests / exams):

Command Description
/course-maker quiz plan N Step 1: interactive quiz plan (blocks, types, variants)
/course-maker quiz generate N [next] Step 2: generate question bank (chunked by block)
/course-maker quiz publish N [format] Step 3: export student-facing version (markdown)

Homework pipeline (manually graded take-home assignment — no autograding):

Command Description
/course-maker homework plan N [dir] Step 1: interactive task brief + grading rubric (dir default homework/NN/)
/course-maker homework publish N [format] Step 2: assemble student handout; markdown default, pdf/latex/docx via pandoc
/course-maker homework status N Status + last 3 history entries

Examples

examples/regularization-course/ is a full example produced end to end by the skill: two lectures with every pipeline artifact (plan, visuals, figures, slides, speaker notes, decision history), plus a lab through the tests step. See examples/README.md for what it covers and how to contribute your own — examples must come from actually running the skill, not be hand-assembled.


Roadmap

Active roadmap with execution plan: docs/IMPROVEMENT_PLAN.md.

Quick status:

  • Claude Code skill (~/.claude/skills/)
  • Chunked generation for slides and speaker notes
  • State tracking (COURSE_STATE.md + history.md)
  • Lab assignment pipeline (/course-maker lab * commands)
  • Seminar, quiz, and homework pipelines
  • Working out-of-the-box templates (conftest_base.py, tests.yaml)
  • ## Inviolable rules block in SKILL.md (critical rules survive skipped references)
  • Profile layer: pluggable LMS adapters + user defaults + opt-in grading extensions
  • Syllabus auto-generation from course_plan.md
  • Course health & progress tooling: doctor, stats, state drift checker, bulky-history warning
  • Additional slide formats: Slidev and pptx (in addition to Beamer)
  • Overleaf integration (cloud LaTeX compilation)
  • [~] Cross-tool support: skill installs on Claude Code, Codex CLI, and Cursor (Agent Skills standard); full parity (declaudize wording, AGENTS.md course layer) tracked in docs/MULTI_HARNESS_PLAN.md
  • Multi-agent harness support (similar to GSD Redux)

Contributing

See CONTRIBUTING.md.

The best contributions right now: examples from courses you actually taught (any discipline), and bug reports from the Beamer compilation step with the specific error + fix.


License

MIT

About

No description, website, or topics provided.

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages