Manifest fields

course.yaml

schema_version: 1          # required; tells the framework whether it can read this pack
id: my-course              # immutable, also the URL segment
title: { zh: 我的课程, en: My Course }
description: One-line summary
default_language: zh
languages: [zh, en]
license:
  type: CC-BY-4.0
  commercial_use: true
authors:
  - name: Your name
chapters: [intro, advanced]   # or group them with sections — not both

Courses imported from another repository also need source.repository and source.commit so the content can be traced.

chapter.yaml and lesson.yaml

# chapter.yaml
id: intro
title: Getting started
lessons: [first-steps, setup]
# lesson.yaml
id: first-steps
title: First steps
code: { label: examples/first-steps, url: https://example.com/repo/tree/abc123/examples }

The video, quiz and lab fields are reserved for now.

Download a minimal template: example-course.yaml.