QR code to slides at aud613.niyaziarslan.com
follow along
Human in the Loop

Faculty-Directed AI
for Canvas Course Development

Niyazi Arslan, Ph.D.
Department of Speech Pathology and Audiology
CoTL 2026 conference logo
University of South Alabama
Where teaching lives now

Half of US higher-ed enrollment runs on Canvas.

WebCT, 1996
1996
WebCT
Blackboard Inc., 1997
1997
Blackboard
D2L (later Brightspace), 1999
1999
D2L
Moodle, 2002
2002
Moodle
Canvas, 2011
2011
Canvas
Pandemic, 2020
2020
Pandemic
AI in LMS, 2023+
2023+
AI in LMS
Canvas
50%
↑ 44 → 47 → 50
D2L Brightspace
20%
SUNY + CUNY moves · 2024
Blackboard
12%
↓ 21 → 18 → 12 · Anthology Ch. 11 '25
Moodle
9%
Holding steady · smaller schools
USAonline Sakai → Canvas, spring 2020
Phil Hill / On EdTech YE-2024 · Edutechnica spring 2025 · Inside Higher Ed (Anthology Ch. 11)
What the platform has to hold

Building a full Canvas course.

AUD-613-101 · Psychoacoustics 3
Home
Announcements
Syllabus
Modules
Pages
Files
Assignments
Quizzes
Rubrics
Discussions
Grades
Panopto Video
AUD 613 · Psychoacoustics
Physics of Sound · Perception of Hearing
Spring 2026
Empty course shell. Nothing here yet.
Syllabus · course design
Map alignment
Goal 1 Quiz 1 PS 1
Sequence modules
M01 M02 M03 M04
Apply UDL
Engagement Representation Action & expression
Pages · Files · Captioned media
Lecture 01
slides · captions
Lecture 02
slides · captions
Reading 01
PDF
Lab demo
video 14m
Reading 02
PDF
Audio set
.wav x 8
Assignments · Quizzes · Rubrics
Problem set 1 · with rubric 50 pts
Quiz 1 · 20 items, banked 20 pts
Lab report 1 · peer review 100 pts
Problem set 2 · with rubric 50 pts
Modules · everything in order
M01Sound and waves
Lecture 01 · Reading 01
Problem set 1
Quiz 1
M02Hearing and threshold
Lecture 02 · Reading 02
Audio set · Lab demo
Lab report 1 · Problem set 2
Week 6 · live operations
Announcement posted · "Week 6 reminders" 2h ago
22 submissions awaiting grade PS-2
Discussion · "Threshold interpretation" 14 posts
01 Design
Map alignmentSequence modulesApply UDL
02 Build content
Record lecturesBuild slidesCurate readingsCaption media
03 Build assessments
Write itemsBuild rubricsQuestion banksPeer review
04 Publish to Canvas
Build modulesCreate pagesAdd alt textAudit accessibility
05 Run the term
Weekly announcementsGrade submissionsFeedbackFacilitate discussion
The work behind a good Canvas course

Hidden behind every stage.

01
Time
70hrs
Median to build a first online course. Then 12.69 hrs/wk to run it. Scales per student: ~30 min/week, each.
Freeman 2015 (OJDLA)
Mandernach & Holbeck 2016
02
Expertise gap
28%
of faculty fully prepared for online course design. Flat since 2020.
CHLOE 10 (QM & EDUCAUSE)
n=257 COLOs · Jan-Feb 2025
03
Design
300hrs
to reach beginner HTML/CSS, per freeCodeCamp. That's the floor for escaping Canvas's editor, which strips JavaScript, custom CSS, SVG, and animation on save. 700+ institutions pay Cidi Labs to bridge the gap.
canvas_sanitize.rb
freeCodeCamp · Cidi Labs
04
Accessibility
Apr 26
2027
federal deadline
DOJ Title II. WCAG 2.1 AA on every Canvas page, every PDF, every video. 95.9% of pages on the web fail today.
DOJ Title II · HHS OCR
WebAIM Million 2026
05
Maintenance
38%
of webpages from 10 years ago no longer load. The course is the same. The dates, rules, and links are not.
Pew Research 2024
“When Online Content Disappears”

How can AI help with each one?

01  Time 02  Expertise 03  Design 04  Accessibility 05  Maintenance

Where AI fits.

01
Time
70 hrs to build, 12.69 hrs/wk to run, ~30 min per student per week.
AI helps faculty draft the build (modules, pages, quizzes, rubrics from your syllabus) and the weekly work (announcements, feedback, grading rubrics).
02
Expertise gap
28% of faculty fully prepared. Flat since 2020.
AI accelerates the Canvas learning curve in real time. The 28% narrows with use.
03
Design
Canvas strips JS, custom CSS, SVG, animation. 300 hrs of HTML/CSS to escape.
AI helps faculty build modern, interactive pages. Coding becomes minutes, not hours. No third-party tools needed.
04
Accessibility
WCAG 2.1 AA by Apr 26, 2027. 95.9% of pages fail today.
AI helps faculty fix accessibility gaps page by page. Alt text, contrast, headings, captions: each proposed, each approved. The 95.9% drops one page at a time.
05
Maintenance
38% of 10-year-old webpages no longer load. Dates, rules, links all shift.
AI helps faculty run the pre-semester audit. Dead links flagged, dates re-anchored, policy text drafted, each one approved before it lands.
The chat-and-copy pattern

What most faculty do today.

01 · YOU
Faculty
the human in the loop
Does every transfer by hand.
types prompt
reads output
02 · AI (web)
ChatGPT Gemini Claude
Web AI
ChatGPT · Gemini · Claude.ai
Chat in a browser tab. Never sees your course.
copy
paste · fix format
03 · VENUE
Canvas LMS
Canvas
USAonline
Real institutional courses.
Every transfer is a tab switch. Can we do this more systematically?
How it works

AI inside Canvas, systematically.

01 · YOU
Faculty
the human in the loop
Directs every action.
directs
says yes
02 · AI
Claude
Claude
by Anthropic
  • Claude Code the runtime where this all happens
  • the systematic layer
  • Skills Markdown files Claude reads for each task.
  • Hooks Validators that fire after every Claude write.
  • GATE protocol Pauses Claude until you say yes.
calls
returns
BRIDGE
canvas-mcp
open-source MCP server
vishalsachdev/canvas-mcp
via MCP
via Canvas REST API
executes
responds
03 · VENUE
Canvas LMS
Canvas
USAonline
Real institutional courses.
Components: 1. Claude Code · 2. The bridge to Canvas (canvas-mcp) · 3. Skills · Hooks · GATE
Anthropic Claude Code · vishalsachdev/canvas-mcp · open standard (Model Context Protocol)
Component 1 of 3 · the runtime
Claude v2.1.138 · May 2026

Claude Code.

Anthropic's agent. Runs in your terminal or right inside VS Code. Reads your files, calls tools, waits for you.
Browser chat · web application
claude.ai
Help me redesign my Module 6 page in Canvas.
Sure. Paste the page text here and I will suggest edits.
Can't you just open it in Canvas?
No system access from this chat.
Single conversation. Text in, text out. No system access.
Claude Code · desktop application
claude code · aud613
> Help me redesign my Module 6 page in Canvas.
Calling canvas-mcp / get-page
Checking WCAG 2.1: alt text, contrast, headings
I see 3 accessibility issues and have a redesign proposal.
continue / revise / skip ?
> C
Calling canvas-mcp / update-page
✓ Page updated. Refresh Canvas to confirm.
Local files, external tools. Same agent in terminal or VS Code.
Component 2 of 3 · the bridge to Canvas

MCP. The Model Context Protocol.

An open standard for how AI assistants connect to outside tools and data.
What it is
AI host
Claude Code
also: ChatGPT, Gemini, Copilot
MCP
canvas-mcp → Canvas (USAonline)
github-mcp → GitHub
filesystem-mcp → local files
slack-mcp → Slack
+ 10,000 more · one protocol, many tools
One protocol that connects any AI on one side to any tool on the other.
Component 2 of 3 · the bridge to Canvas
GitHub vishalsachdev/canvas-mcp · v1.3.0 · 130+★ · MIT

canvas-mcp + the Canvas API.

Canvas exposes a REST API. canvas-mcp turns it into MCP tools Claude can call.
How it connects
Canvas
Layer 1 · the LMS
Canvas (USAonline)
REST API
Layer 2 · the bridge
canvas-mcp
Python · runs locally · 88 tools, 8 agent skills
MCP
Claude
Layer 3 · the AI
Claude Code
88 tools across categories like:
pages modules assignments quizzes discussions files users announcements rubrics analytics
What you need from Canvas
API TOKEN a private key from your Canvas account
7~Xa9bC4d2FgH8jK•••••••••••••••••••••••••••••••••••••••••9pQ
FROM CANVAS Account → Settings → + New Access Token
TREAT LIKE A PASSWORD
Never share. Never paste in chat. Anyone holding this can act as you in Canvas.
FERPA
Student names auto-anonymized before leaving your laptop.
Vishal Sachdev
Built by Vishal Sachdev, Clinical Associate Professor & MakerLab Director, Gies College of Business, UIUC. github.com/vishalsachdev/canvas-mcp
A note
canvas-mcp is not the only way to reach Canvas. The real interface is the Canvas REST API, which is public.
Component 3 of 3 · your customization layer
.claude/ · skills + hooks + gates · all markdown, no code

Skills, hooks, gates.

Three mechanisms you write yourself. Your standards, your checks, your control.
01 · SKILLS A syllabus written for the AI
claude code · aud647
> Build Module 6 page from the brief

 Loading skill: canvas-content-skill
 Reading SKILL.md
 Loading 3 reference files
  voice-guide.md
  accessibility-rules.md
  course-constants.md

Phase 1 of 4, reading the brief...
.claude/skills/canvas-content-skill/SKILL.md
---
name: canvas-content-skill
description: Build a Canvas page
  from a lecture brief. Apply voice
  and accessibility rules.
---

# Build a Canvas page

## Phase 1: Read the brief
## Phase 2: Apply voice
## Phase 3: Build the page
**GATE:** present, wait for C/R/S/N
## Phase 4: Validate and save
A skill is markdown. You write it once. Claude follows it every time.
02 · HOOKS Auto-validators that fire on every write
claude code · aud647
 Phase 3 complete. Wrote pages/module-6.html

[hook: PostToolUse → validate-canvas-html.sh]

× HOOK BLOCKED · 2 issues:
   image at line 47 missing alt attribute
   h2 → h4 heading skip at line 52

Reverting write. Fix and retry.
.claude/settings.json
{
  "hooks": {
    "PostToolUse": [{
      "matcher": "Write|Edit",
      "hooks": [{
        "type": "command",
        "command": ".claude/hooks/
          validate-canvas-html.sh"
      }]
    }]
  }
}
A hook is a script you write. Fires on every Claude write. If the file fails your check, Claude can't move on.
03 · GATES Pause for your yes at every phase
claude code · aud647
 Phase 3 complete. Draft saved.
 Validators passed.

Phase 3 → Phase 4 boundary

GATE: How would you like to proceed?

  (C) Continue to Phase 4
  (R) Revise (give feedback, re-gate)
  (S) Skip this phase
  (N) Next phase only

> _
.claude/skills/canvas-content-skill/SKILL.md
## Phase 3: Build the page

Generate the page using the
template. Apply voice and
accessibility rules. Run the
validator before presenting.

**GATE:** Present the draft to
the user. Wait for one of:
  (C) Continue to Phase 4
  (R) Revise (apply feedback, re-gate)
  (S) Skip this phase
  (N) Next phase only
GATE is something you build using skills. Your stop sign at every phase boundary.
Web AI + copy-paste
  • Standards live in your head
  • Format breaks on every paste
  • You're in the loop only at the prompt
  • Re-prompt every session
This workflow
  • Standards live in markdown on disk
  • Hooks validate every write
  • You're in the loop at every phase
  • One skill, every course
You write the standards once. They run on every page, every course, every term.
Putting it all together

The full loop.

What this looks like in Claude Code.
Claude Code · aud647 · VS Code
canvas-content-skill loaded
C
> Build the Module 6 page from the brief.
Loaded skill canvas-content-skill (4 phases, 3 reference files)
Applied voice-guide.md and accessibility-rules.md
Phase 1: read brief  ·  done
Phase 2: apply voice  ·  done
Phase 3: build page draft  ·  ready for review
GATE · Phase 3 boundary
Draft ready. How would you like to proceed?
  (C) Continue to Phase 4 (validate)
  (R) Revise (give feedback, re-gate)
  (S) Skip this phase
  (N) Next phase only
> C   # continue
Writing pages/module-6.html
[hook fired: PostToolUse → validate-canvas-html.sh]
Alt text: 8 of 8 images covered
Heading hierarchy: H2 → H3 valid
Link integrity: 12 of 12 resolve
✓ Hook passed
Calling canvas-mcp → update_page
Pushed to Canvas REST API
✓ Module 6 page updated in your live course.
Open USAonline to verify.
The payoff · what this lets you do

What you can do on Canvas with this.

Different tools.
BUILD module · announcement · page when there is nothing yet
claude code · aud613
> Build Module 6 from the AUD613 syllabus

 Loading canvas-content-skill
 Phase 1-3 complete · draft ready

GATE: Continue?
> C

 Created 5 pages, 5 assignments
 Created 1 announcement
✓ Pushed to USAonline
AUD-613-101 · Psychoacoustics
Home
Announcements
Modules
Pages
Assignments
Grades
Modules
Module 6: Sound Localization
✓ Just created · 5 pages, 5 assignments
• Lecture 6.1: Interaural cues
• Lecture 6.2: Cone of confusion
• Lecture 6.3: HRTFs
° Problem Set 6: due Mar 20
° Quiz 6: due Mar 25
MAINTAIN due dates · links · structure when the calendar moves underneath
claude code · aud647
> Roll all due dates: Spring 2026 to Fall 2026

 Scanning 47 assignments, 12 module unlocks
 Preserving day-of-week alignment

GATE: 59 date changes ready. Apply?
> C

 Updated 47 due dates
 Updated 12 module unlocks
✓ Pushed to USAonline
AUD-647-101 · Audiologic Rehab
Home
Announcements
Modules
Pages
Assignments
Grades
Assignments ✓ 47 dates rolled
Audiogram interpretation Aug 28
Hearing aid fitting brief Sep 11
Counseling roleplay Sep 25
Pediatric case study Oct 9
+ 43 more
AUDIT accessibility · triage · coverage when the question is what is wrong
claude code · audit
> Audit all pages for WCAG 2.1 AA

 Scanning 133 pages across both courses
 Checks: alt text, contrast, headings, links

GATE: Show report?
> C

! 12 critical · missing alt text
! 23 medium · heading order
! 8 low · link text quality
AUD-613 + AUD-647 · Accessibility report
Home
Modules
Pages
Files
Quizzes
Grades
Pages with issues 43 of 133 flagged
Module 3 / Lecture 3.2 CRITICAL · 3 issues
Module 5 / Audiogram intro CRITICAL · 2 issues
Module 7 / Frequency response MEDIUM · 4 issues
Module 9 / Speech audiometry MEDIUM · 2 issues
Module 11 / Pediatric assessment LOW · 1 issue
+ 38 more
A sample of canvas-mcp's 88 tools github.com/vishalsachdev/canvas-mcp
Read & browse
list_courses list_assignments get_course_details list_submissions
Build
create_module create_page create_assignment create_announcement
Communicate & grade
send_conversation bulk_grade_submissions grade_submission list_discussion_topics
Bulk & files
upload_course_file execute_typescript enroll_user create_rubric
+ 72 more. Any tool, in any order, composed by skills you write.
When you're not at your desk
Claude mobile app · Remote Control · canvas-mcp

From your phone, by voice.

01 · Dictate
“Post an announcement to AUD647: Friday's lab moves to Room 312.”
iOS keyboard dictation (system mic)
02 · Relay
Phone routes to your laptop session, in seconds.
claude.ai/code Remote Control · laptop awake
03 · Draft + Gate
Skill drafts on the laptop. The C/R/S/N gate mirrors to your phone.
build-announcements · canvas-mcp loaded
04 · Publish
Live in Canvas. Email + push to all enrolled.
canvas-mcp · pre-approved API permission
Walkthrough · one prompt, one announcement
AUD647 · build-announcements skill · canvas-mcp

One real prompt. One real Canvas page.

The terminal on the left replays how this announcement got built. The screenshot on the right is what landed in Canvas.
claude · AUD647 / spring 2026
$ asciinema cast loading...
Serve the deck via local HTTP for the cast to load:
cd presentations && python -m http.server
asciinema replay · build-announcements skill REPLAY
Canvas · AUD647 announcement
Study Guide Is Ready! announcement on Canvas
USAonline · Study Guide Is Ready! · published SHIPPED
what shipped this term through the setup
AUD613 (57 pages) · AUD647 (48 pages) · 26 announcements

AUD613 + AUD647 · Spring 2026.

click to enlarge AUD613 · Home
Psychoacoustics · Course home module roadmap
click to enlarge AUD613 · Announcement
Welcome to Psychoacoustics term opener
click to enlarge AUD613 · Lecture
Physics of Sound · M01 L01 lecture overview
click to enlarge AUD647 · Home
Adult Rehabilitation & Aging course home
click to enlarge AUD647 · Announcement
Midterm study guide is ready prep nudge
click to enlarge AUD613 · Assessment
Module Test 1 · Logistics exam page
FERPA · how it's protected in this workflow
canvas-mcp · anonymize_response_data()

Two zones. Two answers.

When AI helps with course pages vs when AI helps with student work, the protection looks different.
Zone 1 · Authoring
No student data enters.
Pages, modules, syllabi, announcements. The AI works on artifacts, not on people.
pages modules syllabus announcements files settings
Nothing the AI sees identifies a student. FERPA is not in scope for this zone.
✓ every endpoint outside /users, /submissions, /discussion, /enrollments, /groups, /analytics
Zone 2 · Student data
canvas-mcp anonymizes at the source.
Grading, summarizing, analytics. The AI sees the work, not the name. Identifiers are hashed before the data leaves your machine.
Canvas response
id: 12345
name: Maria Rivera
email: mrivera@usouthal.edu
login_id: mrivera42
sis_user_id: J00123456
canvas
-mcp
What Claude sees
id: 12345
name: Student_5994471a
email: student_5994471a@example.edu
login_id: student_5994471a
sis_user_id: null
Also redacted:
integration_id avatar_url bio email, phone, SSN in messages
ENABLE_DATA_ANONYMIZATION=true default · deterministic SHA-256 · faculty re-identifies locally from the Canvas roster
Accessibility · the 2027 recipe
DOJ Title II · WCAG 2.1 AA · Apr 26, 2027 · WebAIM Million 2026

One skill file. Four rules. Any course.

FERPA was the first compliance question. Accessibility is the second. Write the rules once. The AI applies them across every page.
accessibility-skill.md .claude/skills/ ~80 lines
# accessibility-skill # Apply whenever the user asks about Canvas pages. # Each section pauses at the GATE for a yes. ## 1. Color contrast WCAG 1.4.3 - For every text node, compute contrast against bg. - If < 4.5:1, propose a darker passing color. GATE: yes per fix. ## 2. Alt text + OCR WCAG 1.1.1 - Walk every image and PDF. - Draft alt from caption + context. - Flag scanned PDFs that need OCR. GATE: yes per image. ## 3. Headings + link text WCAG 1.3.1, 2.4.4 - Sequential heading order. No h2 to h4 jumps. - Replace “click here” with descriptive text. GATE: yes per diff. ## 4. Required third-party tools 28 CFR 35.205 - List every external tool the syllabus requires. - Find its accessibility statement. FLAG: required tools that fail WCAG 2.1 AA.
What each rule does, before / after
1 · Color contrast 84% fail
2.6:1 Body text
7.4:1 Body text
2 · Alt text + OCR 53% fail
missing alt=""
drafted audiogram...
3 · Headings + links 46% fail
skip h2 h4 ?
order h2 h3
4 · Third-party tools legal trap
unknown publisher ?
audited publisher FAIL
Try it yourself · resources + acquisition order
All open source · all faculty-built or open standard

Where each component lives. What you read or install.

Screenshot of claude.com/claude-code
01 The runtime · Component 1
Claude Code.
Anthropic's agentic CLI. Reads your files, calls tools, waits at every gate. The same agent you saw in the live demo.

Screenshot of github.com/vishalsachdev/canvas-mcp
02 The bridge · Component 2
canvas-mcp.
The faculty-built bridge. Speaks the open Model Context Protocol. Mint your Canvas token in Account → Settings.

Screenshot of skillsmp.com
03 The discipline · Component 3
Skills, hooks, gates.
Markdown rules + automatic checks + the four-letter yes/no menu. None of it is code. All of it is writing. Start with one skill file under .claude/skills/.

Where skillsmp.com
Screenshot of code.visualstudio.com
+ Helpful environment
Visual Studio Code.
A free editor for the skill files, hook scripts, and Canvas-content HTML. Claude Code runs in its built-in terminal, so the agent and your files share one window.

Caution · the same API works both ways
sources verified: Instructure docs · Oct 2025 product blog

Everything I just showed you, any student in your course can do too.

The Canvas REST API does not distinguish a faculty token from a student token.
The reality
The API is symmetric.
A student can mint a personal access token in under a minute. The same endpoints I demoed expose their own quiz attempts. List the quiz. Read the questions and the answer choices. Submit. Instructure publicly confirmed in October 2025:
“students setting up AI integrations to automatically review and complete assignments on their behalf.”
community.canvaslms.com / strengthening-security blog (Oct 2025)
The answer
Design beats detection.
Proctoring tools cannot see an API client running off-machine. The durable fix is two-layered. At the institution, admins can disable student access tokens with one permission flip. At the course, the answer is assessment design: in-person proctored fact recall, frequent low-stakes formative work, project-based application, oral defense.
Stanford Teaching Commons · MIT TLL · AAC&U

Thank you.

Questions?
Disclaimer: independent academic work. Not sponsored by or affiliated with any company mentioned in this presentation.
Niyazi Arslan · University of South Alabama
niyaziarslan@southalabama.edu