course-build

Syncs Canvas LMS course content between local files and the Canvas REST API.

4|4|Updated Apr 15, 2026
One-click install
npx skills add https://github.com/chaz-clark/canvas-toolbox --skill course-build-chaz-clark
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: course-build
Source: https://github.com/chaz-clark/canvas-toolbox/tree/main/.agents/skills/course-build
Command: npx skills add https://github.com/chaz-clark/canvas-toolbox --skill course-build-chaz-clark

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Managing Canvas course content through the web UI is slow, error-prone, and has no version history. This Skill treats course content as code: mirror a course to local files, edit locally with git as your history, and push approved changes back through the Canvas REST API. ## Core Features & Use Cases - Course mirroring: Pull a Canvas course to local files and push edits back with canvas_sync, keeping local files as the source of truth. - Multi-course propagation: Sync content from a master course to Blueprint sections and per-semester sections, with validation and orphan-page detection. - Module and grading configuration: Set module prerequisites and completion rules, create custom grading schemes, and set up peer-review assignments. - Offline editing: Import a .imscc export, edit locally, and patch changes back into the .imscc for re-import via the Canvas UI. - Use Case: An instructor authors a course in a master shell, then propagates it to five live sections for the new semester, running a post-push quality check to catch duplicates and date-window problems. ## Quick Start Ask the agent to pull the course from Canvas into local files so you can review and edit the content before pushing changes back.

Frequently Asked Questions about course-build

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I sync Canvas course content with local files?▼

Run canvas_sync.py with --pull to mirror a Canvas course into a local folder, edit the files locally, then run canvas_sync.py --push to apply approved changes back through the Canvas REST API. Local files plus git serve as your version history since Canvas has none.

How to propagate content from a master course to Canvas Blueprint sections?▼

Use blueprint_sync.py to propagate content from the master course to the Blueprint course, then validate the result with validate_blueprint_sync.py and blueprint_exception_report.py. Blueprint resyncs can spawn orphan pages, so run blueprint_orphan_pages.py to detect them.

Can I edit a Canvas course offline without API access?▼

Yes. Import a .imscc export with offline_import, edit the local course folder, and use imscc_record to patch your edits back into the .imscc file for re-import through the Canvas UI. Quiz questions, files, and LTI content are preserved byte-for-byte.

Why do Canvas module prerequisite updates silently fail?▼

Module prerequisites and published state must be sent as form-encoded data, not JSON; a JSON payload silently no-ops against the Canvas API. Date writes also require the full due_at, lock_at, and unlock_at trio to take effect.

What are the limitations of pushing Canvas content via API?▼

NewQuiz and ExternalTool items use a separate REST surface that canvas_sync.py cannot push to production yet. The late_policy PATCH endpoint is admin-only and returns 403 for teacher tokens, and new content requires both a course item and a module item to be visible to students.