Course skeleton for building a Canvas Common Cartridge (.imscc) with imscc_mcp. Content lives in folders (lectures/, assignments/, …); Cursor rules in .cursor/rules/ tell agents how to populate them.
| Directory | Purpose |
|---|---|
course/ |
meta.json (title, ids, absolute output_directory), assignment_groups.json, optional syllabus.html (IMS syllabus) |
lectures/ |
One folder per lesson → wiki page + optional slides/ + attached_files |
assignments/ |
One folder per assignment → assignment.json + optional HTML instructions |
rubrics/ |
One .json file per rubric (skip _template.json) |
modules/ |
sequence.json → module order and items (Wiki, Assignment, URL, Attachment, Discussion) |
discussions/ |
Optional discussion topics |
assets/files/ |
Optional shared files (see README there) |
scripts/ |
assemble-spec.mjs; google-slides-from-md.mjs; build-all-slides.mjs / export-slides-pdf.mjs / review-slides-pdf.mjs; gh-classroom-repos.mjs |
course/github-classroom.json |
Optional — GitHub org + defaults for Classroom / starter repos (see docs/GITHUB_CLASSROOM.md) |
examples/ |
Standalone JSON examples (bypass assemble) |
docs/AUTHORING.md |
Full authoring reference |
docs/MYST.md |
MyST Markdown baseline for content.myst.md, instructions.myst.md, body.myst.md |
docs/POPULI.md |
Populi import: webcontent + QTI assessment often skipped; --populi omits both |
- Set
course/meta.json→output_directoryto a real absolute path. npm installonce (Google Slides + GitHub scripts).- Optional — Google Slides:
node scripts/google-slides-from-md.mjs --lecture lectures/01-welcome, ornpm run slides:build+npm run slides:review-pdf(seedocs/GOOGLE_SLIDES.md,docs/SLIDES_PDF_REVIEW.md).npm run build:with-slides= slides + assemble. - Optional — GitHub Classroom / Codespaces:
course/github-classroom.json+npm run gh-classroom(seedocs/GITHUB_CLASSROOM.md). mkdir -p build && node scripts/assemble-spec.mjs > build/spec.json
Populi: add--populi(seedocs/POPULI.md).- From imscc_mcp:
bundle exec ruby ruby/build_cartridge.rb < /path/to/imscc_template/build/spec.json
Open this repo as the workspace. Rule imscc-workflow.mdc is always applied (including generate-from-title order: title → description → rubrics → lectures → assignments → tests → modules, then assemble/build). Globs attach for path-specific authoring—e.g. imscc-syllabus.mdc for course/syllabus.html, imscc-rubrics.mdc for rubrics/, imscc-myst.mdc for *.myst.md, github-classroom-lti.mdc for Classroom + LTI + autograding grade alignment, plus lectures/, assignments/, etc.
Do not clone the template directly for a real course. Fork it on GitHub, then clone your fork. That way you can merge upstream whenever the template gains new .cursor/rules, scripts/, or docs/.
git remote add upstream https://github.com/InquiryInstitute/imscc_template.git
git fetch upstream && git merge upstream/mainDetails: docs/FORKING.md.
- InquiryInstitute/imscc_mcp — optional tool
imscc_google_slides_from_markdownwithIMSCC_TEMPLATE_ROOT - instructure/canvas_cc
MIT