npx skills add ...
npx skills add vishalsachdev/canvas-mcp --skill canvas-course-qc
Learning designer quality check for Canvas LMS courses. Audits module structure, content completeness, publishing state, date consistency, and rubric coverage. Use when asked to "QC a course", "is this course ready", "pre-semester check", or "quality review".
npx skills add vishalsachdev/canvas-mcp --skill canvas-course-qc
Automated quality checklist for Learning Designers to verify a Canvas course is ready for students. Runs structure, content, publishing, and completeness checks — then reports issues by priority.
Ask the user which course to QC. Accept a course code, Canvas ID, or course name.
If not specified, prompt:
Which course would you like to quality-check?
Use list_courses to look up available courses if needed.
Call get_course_structure(course_identifier) to get the full module-to-items tree in one call.
This returns all modules with their items, publishing states, and summary statistics.
Analyze the module tree for structural issues:
| Check | Priority | What to Look For |
|---|---|---|
| Empty modules | Warning | Modules with 0 items (confusing to students) |
| Naming consistency | Suggestion | Do all modules follow the same pattern? (e.g., "Week N:", "Unit N:") |
| Module count | Suggestion | Does it match expected count for course length? |
| Item ordering | Suggestion | SubHeaders present for organization? |
Call list_assignments(course_identifier) and check each assignment:
| Check | Priority | What to Look For |
|---|---|---|
| Missing due dates | Blocking | Graded assignments without a due_at date |
| Missing descriptions | Warning | Assignments with empty or null description |
| Missing points | Warning | Assignments without points_possible set |
| Date sequencing | Warning | Due dates that don't follow module order |
| Rubric coverage | Suggestion | Graded assignments without an associated rubric |
For pages, check if any pages in modules have empty body content using get_page_content for pages flagged in the structure.
Using the structure data:
| Check | Priority | What to Look For |
|---|---|---|
| Ghost items | Blocking | Published items inside unpublished modules (invisible to students) |
| Unpublished modules | Warning | Modules that may need publishing before semester |
| No front page | Warning | Course has no front page set |
Check for front page by calling list_pages(course_identifier) and looking for front_page: true.
Compare module structures to find inconsistencies:
| Check | Priority | What to Look For |
|---|---|---|
| Inconsistent structure | Warning | Most modules have 4 items but some only have 1 |
| Missing item types | Suggestion | Most modules have an Assignment but some don't |
Build a "typical module" profile from the most common item-type pattern, then flag modules that deviate.
Present results grouped by priority:
After presenting the report, offer actionable next steps:
Would you like me to:
- Auto-fix publishing -- Publish all unpublished modules (with confirmation)
- Show details -- Expand on a specific issue
- Run accessibility audit -- Check for WCAG-oriented issues (uses canvas-accessibility-auditor skill)
- Check another course
For auto-fix, use update_module or bulk_update_pages with user confirmation before each batch.
| Tool | Purpose |
|---|---|
list_courses | Find available courses |
get_course_structure | Full module tree with items |
list_assignments | Assignment details for content checks |
get_assignment_details | Deep-dive on flagged assignments |
list_pages | Check for front page |
get_page_content | Verify pages have content |
list_rubrics | Check rubric coverage |
update_module | Auto-fix: publish modules |
bulk_update_pages | Auto-fix: publish pages |
User: "QC check for BADM 350"
Agent: Runs all checks, outputs the prioritized report.
User: "Fix the publishing issues"
Agent: Publishes the 2 unpublished modules after confirmation.
canvas-accessibility-auditor for comprehensive course review.