# Serve Course Lecture

> Start or verify live preview for RLHF Book course lecture slides without breaking relative image assets. Use when serving, opening, checking, or debugging `teach/course/lec*.md` slides.

- Skill: `natolambert/serve-course-lecture` (Agent Skill)
- Install (CLI): `npx skillmds@latest add natolambert/serve-course-lecture`
- Raw SKILL.md: https://api.skillmd.com/api/skills/natolambert/serve-course-lecture/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Docs & Writing
- Author: natolambert (https://skillmd.com/u/natolambert)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/natolambert/serve-course-lecture

---


# Serve Course Lecture

Use this for live preview of `teach/course/lec*.md`.

## Rule

Course lecture images are written as `assets/...`. The rendered HTML must therefore be generated and served from `teach/course/`, not `teach/`, or images will resolve to the wrong directory.

## Start Lec5

From the repo root:

```bash
uv run --extra teach python -c "from colloquium.serve import serve; serve('teach/course/lec5-chap7.md', port=8081, output_dir='teach/course')"
```

Open:

```text
http://127.0.0.1:8081/lec5-chap7.html
```

## General Pattern

For `teach/course/<lecture>.md`, set `output_dir='teach/course'` and open `http://127.0.0.1:<port>/<lecture>.html`.

## Verification

Before reporting success, verify both the page and at least one image:

```bash
uv run --extra teach python -c "import urllib.request as u; urls=['http://127.0.0.1:8081/lec5-chap7.html','http://127.0.0.1:8081/assets/rlvr-system.png']; [print(x, (r := u.urlopen(x, timeout=3)).status, r.getheader('content-type')) for x in urls]"
```

The image check must return `200 image/...`.

## If The Port Is Already Wrong

If a previous server is running from the wrong output directory, find and stop only that port before restarting:

```bash
lsof -ti tcp:8081
kill <pid>
```

