Canvas Accessibility Training · WCAG 4.1.2 Level A

The Accessibility Rebellion

Deploying Claude Code Against the Empire of Inaccessible iframes

iframe Title Remediation  ·  Claude + MCP Workflow

I. Intelligence Briefing

The Problem. Every video embedded in Canvas lives inside an <iframe> tag. Without a title attribute, a screen reader announces only "iframe" — and nothing else. A student using assistive technology has no way to know what they're about to watch.

This is a WCAG 4.1.2 Level A violation — required for ADA/Section 508 compliance. It affects every course with embedded video.

Fixing this one page at a time takes hours. Claude Code does it in minutes — with a human review step built in so nothing gets changed without your approval.

35
iframes fixed in SOC 101
35
Canvas pages touched
~25 min
automated vs. ~2 hrs manual

The same workflow runs on any course. Once you've done it once, it's three commands.

"Impressive. Most impressive."

— Darth Vader, The Empire Strikes Back

Punch It GIFfrom Star Wars GIFs

II. Pre-Flight Checklist

Before engaging hyperdrive, confirm you have both:

  • student_facing_issues.md The issues file for your course — provided with your task folder
  • Canvas course URL e.g., https://canvas.asu.edu/courses/12345

📁 Task folder: C:\Users\Jcampb70\Downloads\TRAINING_iframe-title-remediation\
Open Claude Code from here — CLAUDE.md loads automatically and orients Claude to the task.

III. Engage — Open the Command Post

Claude needs to launch from inside the task folder so it knows the context of your work. Here's how:

  1. Open the task folder in File Explorer
  2. Right-click on an empty area inside the folder
  3. Select "Open in Terminal"
  4. Type claude and press Enter

III. Engage — The Briefing File

When Claude opens from this folder, it automatically reads a file called CLAUDE.md — a briefing written specifically for this workflow.

Think of it like handing someone a brief before the meeting starts. Claude already knows:

  • What task you're running and how it works
  • The rules it must follow when editing Canvas pages
  • Where output files should be saved
  • How to handle edge cases without asking

You don't explain any of that. Just tell it which course you're working on.

III. What's in the Folder

CLAUDE.md

Auto-loaded when Claude opens from this folder — orients it to the task and the rules it must follow

ATTENDEE_PROMPTS.md

Ready-to-copy prompts for every step of the workflow — keep this open alongside Claude

TASK_REFERENCE.md

Full directives and title inference logic — Claude reads this file to run the task. Lives inside the iframe-title-remediation folder.

EXAMPLE_iframe-title-review.md

Real example of a completed review file — useful for understanding the format before you review your own. Lives inside the iframe-title-remediation folder.

III. Engage — Your Opening Prompt

This is all you need to say. Claude handles everything from here.

I want to run the iframe title remediation task.
Course URL: https://canvas.asu.edu/courses/[ID]
Issues file: C:\path\to\your\student_facing_issues.md

Please orient yourself with CLAUDE.md, then read iframe-title-remediation/TASK_REFERENCE.md
and follow the Claude + MCP workflow. When you build the review table, save it as a .md file
using iframe-title-remediation/EXAMPLE_iframe-title-review.md as the format reference.

Claude will read your issues file, fetch every flagged page in Canvas, and build a review table with a proposed title for each iframe. Nothing in Canvas is touched yet.

III. Engage — Copying Your Prompt

Open ATTENDEE_PROMPTS.md, copy Prompt 1 into Notepad to fill in your course URL and issues file path, then paste into Claude.

  1. Open ATTENDEE_PROMPTS.md
  2. Copy Prompt 1
  3. Paste into Notepad — fill in your details
  4. Copy the edited prompt and paste into Claude

IV. The Three-Step Protocol

Step 01 of 03
Scout the Battlefield — Dry Run

Claude reads your report, fetches every flagged page, and reads each <iframe> — suggesting a title based on nearby headings and page context. Nothing is changed in Canvas.

When the scan is complete, Claude presents a review table directly in the session — one row per iframe, grouped by confidence level. This is your approval checkpoint.

→ A review file is also saved automatically to your task folder.

Step 02 of 03
Read the Intel — Review the File

Open the review file. Every iframe row is grouped by confidence:

FlagWhat It MeansYour Action
✅ Confident Known platform + heading found above the iframe Spot-check a few, then approve the batch
⚠️ Verify Title from transcript link or less specific context Click each Canvas link — confirm the video matches
❓ Check Unknown platform or no context found Surveys and LTI tools land here — review carefully

Edit any Suggested Title cell directly in the review file.

Save the file before telling Claude to apply. Markdown files do not auto-save — use Ctrl+S (or your editor's save command) after making any edits so Claude reads your final version.

📄 See a real example:  SOC 101 iFrame Title Review Markdown File

Step 03 of 03
Execute — Apply the Fix

1. Complete your checks/edits of the review table markdown file and save any changes made (File → Save) — then tell Claude it can proceed:

The file was reviewed and edits made. Now update the iframe titles.

2. Claude will give options to deploy the changes:

Select Deployment Mode
A
All at once — Apply all approved changes in one pass, full summary at the end
B
Module by module — Pause after each module so you can spot-check in Canvas before continuing
C
Your call — Tell Claude how you want to group them and it will follow your lead

V. Confirming the Victory

Pick any page from your review file and spot-check in Canvas:

  1. Navigate to the page in Canvas and open the HTML Editor
  2. Search for <iframe — the title attribute should now appear with your descriptive label
  3. Confirm it reads title="[your title]" — not blank, not generic

✅ File housekeeping: Move your review file and change log to the course's Accessibility Remediation folder — not the task folder. The task folder stays clean and reusable across all courses.

📁 Accessibility Workflow\[Course Name] Accessibility Remediation\

Star Wars Han Solo GIFfrom Star Wars GIFs

VI. Known Anomalies — Don't Panic

SituationWhat Claude Does
Page ID returns a 404 Auto-retries using the URL slug from the report's File: field
ID resolves to wrong page + no iframes Auto-retries by URL slug before filing as "nothing to fix" — no silent skips
❓ Check rows — "Unknown" platform Usually surveys or LTI tools — review before approving
Multiple iframes on one page Each gets its own row (if:1, if:2) — fixed independently
New platform "Unknown" at scale Add its URL pattern to PLATFORM_PATTERNS in fix_iframe_titles.py
Gold Leader GIFfrom Gold GIFs

VII. Your Mission — Live Fire Exercise

Use your own course. Bring the student_facing_issues.md for a course you're currently remediating and run the full workflow with real data.

No file ready? Use the SOC 101 file in Accessibility Workflow\SOC 101 Accessibility Remediation\

  • Open your terminal from the task folder and launch Claude
  • Give Claude your opening prompt — course URL and issues file path
  • Review the table Claude generates
  • Carefully inspect each indicator — ✅ ⚠️ ❓
  • Edit any titles as needed directly on the md file and save
  • Tell Claude to apply — watch it update Canvas in real time
  • Verify one fix in Canvas — open the page HTML Editor and confirm title="…" on the <iframe>
  • Move your iFrame Title Review MD file to your course's Accessibility Remediation folder
Death Of The Death Star - Star Wars GIFfrom Star Wars GIFs

Mission Complete

May the Force of Accessible Content
Be With You.

WCAG 4.1.2 Name, Role, Value (Level A) · iframe Title Remediation · Canvas LMS

Developed by Jaclyn Campbell · ASU Learning Enterprise · Instructional Designer

1 / 25