Artifacts
An artifact is a single deliverable produced for a module (or for the whole course): a slide deck, a handout, an assignment, notes, a syllabus, etc.
Artifacts are declared in course.yaml under a module’s artifacts: list or at the top-level artifacts: list for course-wide documents.
Artifact fields
| Field | Default | Description |
|---|---|---|
id |
{type}-{index} |
Unique identifier within the scope (module or course) |
type |
— | Drives template resolution and subdirectory placement |
enabled |
true |
Whether to generate a stub and include in Quarto configs |
status |
planned |
Lifecycle status — metadata only |
file |
computed | Explicit output path; overrides the computed default |
output_formats |
— | List of render formats: revealjs, beamer, pdf, website |
stub_template |
auto-resolved | Jinja2 template name: string or per-format dict |
Default file paths
When file: is not set, the generator computes:
content/{subdir}/{scope_id}-{artifact_type}.qmd
where {subdir} is determined by artifact type:
| Artifact type | Subdirectory |
|---|---|
slides |
content/slides/ |
handout |
content/handouts/ |
notes |
content/notes/ |
assignment |
content/assignments/ |
syllabus |
content/ |
| any other | content/{type}/ |
Example: module id: intro with artifact type: slides produces content/slides/intro-slides.qmd.
Output formats
Each artifact declares which Quarto render formats it participates in via the output_formats list. The generator uses this to include the artifact in the correct sub-project _quarto.yml and to emit matching format blocks in the stub front matter.
| Format | Sub-project | Output |
|---|---|---|
revealjs |
content/slides/ |
reveal.js HTML slides |
beamer |
content/slides/ |
Beamer PDF slides |
pdf |
content/handouts/ or content/assignments/ |
PDF document |
website |
root website project | HTML page embedded in course website |
Examples
Slides with Beamer PDF
artifacts:
- id: intro-slides
type: slides
enabled: true
output_formats: [revealjs, beamer]Handout with website page and PDF download
artifacts:
- id: intro-handout
type: handout
enabled: true
output_formats: [website, pdf]Assignment (website + PDF)
artifacts:
- id: ex01
type: assignment
enabled: true
output_formats: [website, pdf]
lms:
release: 2026-10-05
due: 2026-10-19Disabled artifact (placeholder for future use)
artifacts:
- id: project-brief
type: assignment
enabled: falsePinning a custom template
artifacts:
- id: my-poster
type: slides
output_formats: [revealjs]
stub_template: poster.qmd.j2 # single template for all formats
- id: lecture-slides
type: slides
output_formats: [revealjs, beamer]
stub_template:
default: slides.qmd.j2
beamer: slides-beamer.qmd.j2 # per-format overrideSee Templates & Filters for full template resolution rules.