Courseware Build Pipeline (single source of truth)
All course content lives in labs_data.py (19 labs: 12 Docker + 7 Kubernetes, built
around the TaskBoard sample app). Every other artifact is generated from it, so the
slides, labs, Lesson Plan, Learner Guide and Markdown never drift apart.
Files
| File |
Generates |
labs_data.py |
THE source of truth — 19 labs (metadata + step-by-step body blocks + test). Edit here. |
build_labs.py |
labs/labNN-*/lab.md + working files + labs/README.md |
build_slides.py + build_slides_content.py |
courseware/….pptx — all-white n8n-house-style deck |
build_lesson_plan.py |
courseware/LP-….docx (9:00–6:00, 8 h/day, Day 2 assessment 4:00 PM, lists every lab) |
build_learner_guide.py |
LG-….md (root) and courseware/LG-….docx (step-by-step per lab) |
prodoc.py |
shared DOCX helpers (cover, version control, TOC, footer) |
How to run
From the repo root (scripts resolve I/O via $COURSE_REPO or the current dir):
SK=.claude/skills/courseware-build
python3 $SK/build_labs.py
python3 $SK/build_slides.py
python3 $SK/build_lesson_plan.py
python3 $SK/build_learner_guide.py
Then convert to PDF with LibreOffice:
soffice --headless --convert-to pdf --outdir courseware courseware/*.pptx courseware/LP-*.docx courseware/LG-*.docx
Design rules
- Slides: all-white theme (blue
#1F6FEB / teal #10B981 accents, Arial), reusing the
tertiary-course-slides helpers + its assets/icons. Cover with Tertiary + course logos,
admin front matter, per-topic concept slides, then per lab: overview → command slides → Test it.
- Lesson Plan: 2 days, 9:00 AM–6:00 PM, 8 training hours/day (1 h lunch, tea within),
Day 2 final assessment at 4:00 PM; schedule lists every lab; each day asserts 480 min.
- Learner Guide: one section per lab — Goal · What you'll build · Step-by-step · Test it —
plus setup, troubleshooting and glossary; MD and DOCX emitted from one source.
- Labs: realistic, follow the KillerCoda scenarios, built around the TaskBoard app.
To change course content, edit labs_data.py and re-run all four generators.
1---2name: courseware-build3description: Single-source build pipeline for the WSQ "Application Integration with Docker and Kubernetes" (TGS-2021010366) courseware. One canonical content module (labs_data.py) drives ALL artifacts so they stay 100% aligned — the labs/ folder, the all-white slide deck (PPT), the Lesson Plan (LP), the Learner Guide (LG) and its Markdown mirror. Use to regenerate any courseware after editing course content.4---56# Courseware Build Pipeline (single source of truth)78All course content lives in **`labs_data.py`** (19 labs: 12 Docker + 7 Kubernetes, built9around the **TaskBoard** sample app). Every other artifact is generated from it, so the10slides, labs, Lesson Plan, Learner Guide and Markdown never drift apart.1112## Files13| File | Generates |14|---|---|15| `labs_data.py` | **THE source of truth** — 19 labs (metadata + step-by-step `body` blocks + `test`). Edit here. |16| `build_labs.py` | `labs/labNN-*/lab.md` + working files + `labs/README.md` |17| `build_slides.py` + `build_slides_content.py` | `courseware/….pptx` — all-white n8n-house-style deck |18| `build_lesson_plan.py` | `courseware/LP-….docx` (9:00–6:00, 8 h/day, Day 2 assessment 4:00 PM, lists every lab) |19| `build_learner_guide.py` | `LG-….md` (root) **and** `courseware/LG-….docx` (step-by-step per lab) |20| `prodoc.py` | shared DOCX helpers (cover, version control, TOC, footer) |2122## How to run23From the **repo root** (scripts resolve I/O via `$COURSE_REPO` or the current dir):24```bash25SK=.claude/skills/courseware-build26python3 $SK/build_labs.py27python3 $SK/build_slides.py28python3 $SK/build_lesson_plan.py29python3 $SK/build_learner_guide.py30```31Then convert to PDF with LibreOffice:32```bash33soffice --headless --convert-to pdf --outdir courseware courseware/*.pptx courseware/LP-*.docx courseware/LG-*.docx34```3536## Design rules37- **Slides: all-white theme** (blue `#1F6FEB` / teal `#10B981` accents, Arial), reusing the38 `tertiary-course-slides` helpers + its `assets/icons`. Cover with Tertiary + course logos,39 admin front matter, per-topic concept slides, then per lab: overview → command slides → Test it.40- **Lesson Plan**: 2 days, 9:00 AM–6:00 PM, 8 training hours/day (1 h lunch, tea within),41 Day 2 final assessment at 4:00 PM; schedule lists every lab; each day asserts 480 min.42- **Learner Guide**: one section per lab — Goal · What you'll build · Step-by-step · Test it —43 plus setup, troubleshooting and glossary; MD and DOCX emitted from one source.44- **Labs**: realistic, follow the KillerCoda scenarios, built around the TaskBoard app.4546To change course content, edit `labs_data.py` and re-run all four generators.