Claude Skill

canvas-accessibility-auditor

Accessibility audit and remediation for Canvas LMS courses. Scans content for WCAG-oriented issues, generates prioritized reports, guides fixes, and verifies remediation. Use when asked to "audit accessibility", "check WCAG", "fix accessibility issues", or "run accessibility revi

LLM Mart · 0 points · 10 views 13 listing impressions 0 install-command copies
Virus-scanned Reviewed automatically before listing.

Full trust report

Download vishalsachdev-canvas-mcp-skills_canvas-accessibility-auditor-43497f9.zip · 2 KB
Part of vishalsachdev/canvas-mcp — 8 skills

Install

skills CLI npx skills add https://github.com/vishalsachdev/canvas-mcp/tree/main/skills/canvas-accessibility-auditor
Claude Code claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install vishalsachdev-canvas-mcp@llmmart
Git git clone https://github.com/vishalsachdev/canvas-mcp.git

The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole vishalsachdev/canvas-mcp collection as a plugin from our marketplace. Git is the plain clone.

Skill manifest

Canvas Accessibility Auditor

Full accessibility audit cycle for Learning Designers: scan course content, generate a prioritized report, guide remediation of fixable issues, re-scan to verify fixes, and produce an accessibility review summary.

Prerequisites

  • Canvas MCP server must be running and connected.
  • Authenticated user must have instructor, TA, or designer role in the target course.
  • For UFIXIT integration: the course must have a UFIXIT report page (generated by your institution's accessibility tool).

Steps

1. Identify Target Course

Ask the user which course to audit. Accept a course code, Canvas ID, or course name.

If not specified, prompt:

Which course would you like to audit for accessibility?

2. Scan Course Content

Run two scans in parallel if possible:

Scan A -- Direct content scan:

scan_course_content_accessibility(course_identifier, "pages,assignments")

This checks all page and assignment HTML for:

  • Images missing alt text (WCAG 1.1.1, Level A)
  • Empty headings (WCAG 2.4.6, Level AA)
  • Tables missing headers (WCAG 1.3.1, Level A)
  • Non-descriptive link text like "click here" (WCAG 2.4.4, Level A)

Scan B -- UFIXIT report (if available):

fetch_ufixit_report(course_identifier)

If the UFIXIT page exists, parse it:

parse_ufixit_violations(report_json)

3. Generate Prioritized Report

Combine results from both scans. Call format_accessibility_summary if using UFIXIT data.

Present issues sorted by priority:

## Accessibility Audit: [Course Name]

### Summary
- Content scanned: 20 pages, 15 assignments
- Total issues: 12
- Auto-fixable: 8 | Manual review needed: 4

### Level A Violations (must fix)
1. **Missing alt text** -- 5 images across 3 pages
   - Page "Week 1 Overview": 2 images
   - Page "Lab Instructions": 2 images
   - Assignment "Final Project": 1 image

2. **Tables missing headers** -- 2 tables
   - Page "Grade Scale": 1 table
   - Page "Schedule": 1 table

3. **Non-descriptive links** -- 3 instances of "click here"
   - Page "Resources": 2 links
   - Page "Week 3 Overview": 1 link

### Level AA Violations (should fix)
4. **Empty headings** -- 2 empty heading elements
   - Page "Week 5 Notes": 1 empty h3
   - Page "Midterm Review": 1 empty h2

### Manual Review Required
- Color contrast: Cannot be checked automatically (requires visual inspection)
- Video captions: Cannot be verified via API (check in Canvas media player)
- PDF accessibility: Cannot be parsed via API (use Adobe Acrobat checker)

4. Guided Remediation

For each auto-fixable issue, walk the user through the fix:

For missing alt text:

  1. Call get_page_content(course_identifier, page_url) to retrieve the HTML
  2. Identify the <img> tags without alt attributes
  3. Ask the user for alt text descriptions (or suggest based on surrounding context)
  4. Call edit_page_content(course_identifier, page_url, new_content) with corrected HTML

For non-descriptive links:

  1. Retrieve the page content
  2. Show the current link: <a href="...">click here</a>
  3. Suggest descriptive replacement: <a href="...">Download the syllabus (PDF)</a>
  4. Apply fix after user approval

For empty headings:

  1. Retrieve the page content
  2. Show the empty heading
  3. Ask: "Remove this heading, or add text to it?"
  4. Apply the chosen fix

For tables missing headers:

  1. Retrieve the page content
  2. Show the table structure
  3. Ask: "Which row/column should be headers?"
  4. Convert <td> to <th> elements and apply

Always ask for user confirmation before modifying any page.

5. Re-scan Modified Pages

After remediation, re-run the scan on modified pages only:

scan_course_content_accessibility(course_identifier, "pages")

Report: "Fixed 8/12 issues. 4 remaining require manual review."

6. Generate Accessibility Review Summary

Produce a final summary suitable for stakeholder reporting:

## Accessibility Review Summary

**Course:** [Course Name]
**Audit Date:** [date]
**Auditor:** AI-assisted audit via Canvas MCP

### Results
- Total content items scanned: 35
- Automated issues found: 12
- Issues remediated: 8
- Issues requiring manual review: 4
- Automated WCAG-oriented checks: Partial pass (manual review items remain)

### Remediation Actions Taken
- Added alt text to 5 images
- Fixed 3 non-descriptive links
- Removed 2 empty headings

### Outstanding Items
- Color contrast review needed (pages with colored text)
- Video caption verification (embedded videos)
- PDF accessibility check (uploaded PDFs)

### Recommendation
Course content meets automated WCAG 2.1 Level A criteria after remediation.
Manual review of color contrast and multimedia is recommended before publishing.

MCP Tools Used

Tool Purpose
scan_course_content_accessibility Scan pages and assignments for WCAG issues
fetch_ufixit_report Retrieve institutional UFIXIT report
parse_ufixit_violations Extract structured violations from report
format_accessibility_summary Format violations into readable report
get_page_content Retrieve page HTML for remediation
edit_page_content Apply accessibility fixes to pages
list_courses Find available courses

Example

User: "Run accessibility audit for CS 101"

Agent: Scans all content, generates the prioritized report.

User: "Fix the missing alt text issues"

Agent: Retrieves each affected page, asks for alt text descriptions, applies fixes, re-scans.

Limitations

  • Cannot check: Color contrast, video captions, PDF accessibility, audio descriptions, keyboard navigation
  • These are flagged as "manual review required" in every report
  • Remediation is per-page: Each fix requires a full page content read and write cycle
  • No undo: Page edits via the API do not create Canvas revision history -- back up pages before bulk fixes

Notes

  • Pairs well with canvas-course-qc for comprehensive pre-semester review.
  • Run after major content updates or course imports.
  • UFIXIT integration depends on your institution having UDOIT/UFIXIT installed.
Files (canvas-mcp)
  • SKILL.md 6.3 KB
    ---
    name: canvas-accessibility-auditor
    description: Accessibility audit and remediation for Canvas LMS courses. Scans content for WCAG-oriented issues, generates prioritized reports, guides fixes, and verifies remediation. Use when asked to "audit accessibility", "check WCAG", "fix accessibility issues", or "run accessibility review".
    ---
    
    # Canvas Accessibility Auditor
    
    Full accessibility audit cycle for Learning Designers: scan course content, generate a prioritized report, guide remediation of fixable issues, re-scan to verify fixes, and produce an accessibility review summary.
    
    ## Prerequisites
    
    - **Canvas MCP server** must be running and connected.
    - Authenticated user must have **instructor, TA, or designer role** in the target course.
    - For UFIXIT integration: the course must have a UFIXIT report page (generated by your institution's accessibility tool).
    
    ## Steps
    
    ### 1. Identify Target Course
    
    Ask the user which course to audit. Accept a course code, Canvas ID, or course name.
    
    If not specified, prompt:
    
    > Which course would you like to audit for accessibility?
    
    ### 2. Scan Course Content
    
    Run two scans in parallel if possible:
    
    **Scan A -- Direct content scan:**
    ```
    scan_course_content_accessibility(course_identifier, "pages,assignments")
    ```
    
    This checks all page and assignment HTML for:
    - Images missing alt text (WCAG 1.1.1, Level A)
    - Empty headings (WCAG 2.4.6, Level AA)
    - Tables missing headers (WCAG 1.3.1, Level A)
    - Non-descriptive link text like "click here" (WCAG 2.4.4, Level A)
    
    **Scan B -- UFIXIT report (if available):**
    ```
    fetch_ufixit_report(course_identifier)
    ```
    
    If the UFIXIT page exists, parse it:
    ```
    parse_ufixit_violations(report_json)
    ```
    
    ### 3. Generate Prioritized Report
    
    Combine results from both scans. Call `format_accessibility_summary` if using UFIXIT data.
    
    Present issues sorted by priority:
    
    ```
    ## Accessibility Audit: [Course Name]
    
    ### Summary
    - Content scanned: 20 pages, 15 assignments
    - Total issues: 12
    - Auto-fixable: 8 | Manual review needed: 4
    
    ### Level A Violations (must fix)
    1. **Missing alt text** -- 5 images across 3 pages
       - Page "Week 1 Overview": 2 images
       - Page "Lab Instructions": 2 images
       - Assignment "Final Project": 1 image
    
    2. **Tables missing headers** -- 2 tables
       - Page "Grade Scale": 1 table
       - Page "Schedule": 1 table
    
    3. **Non-descriptive links** -- 3 instances of "click here"
       - Page "Resources": 2 links
       - Page "Week 3 Overview": 1 link
    
    ### Level AA Violations (should fix)
    4. **Empty headings** -- 2 empty heading elements
       - Page "Week 5 Notes": 1 empty h3
       - Page "Midterm Review": 1 empty h2
    
    ### Manual Review Required
    - Color contrast: Cannot be checked automatically (requires visual inspection)
    - Video captions: Cannot be verified via API (check in Canvas media player)
    - PDF accessibility: Cannot be parsed via API (use Adobe Acrobat checker)
    ```
    
    ### 4. Guided Remediation
    
    For each auto-fixable issue, walk the user through the fix:
    
    **For missing alt text:**
    1. Call `get_page_content(course_identifier, page_url)` to retrieve the HTML
    2. Identify the `<img>` tags without alt attributes
    3. Ask the user for alt text descriptions (or suggest based on surrounding context)
    4. Call `edit_page_content(course_identifier, page_url, new_content)` with corrected HTML
    
    **For non-descriptive links:**
    1. Retrieve the page content
    2. Show the current link: `<a href="...">click here</a>`
    3. Suggest descriptive replacement: `<a href="...">Download the syllabus (PDF)</a>`
    4. Apply fix after user approval
    
    **For empty headings:**
    1. Retrieve the page content
    2. Show the empty heading
    3. Ask: "Remove this heading, or add text to it?"
    4. Apply the chosen fix
    
    **For tables missing headers:**
    1. Retrieve the page content
    2. Show the table structure
    3. Ask: "Which row/column should be headers?"
    4. Convert `<td>` to `<th>` elements and apply
    
    Always ask for user confirmation before modifying any page.
    
    ### 5. Re-scan Modified Pages
    
    After remediation, re-run the scan on modified pages only:
    
    ```
    scan_course_content_accessibility(course_identifier, "pages")
    ```
    
    Report: "Fixed 8/12 issues. 4 remaining require manual review."
    
    ### 6. Generate Accessibility Review Summary
    
    Produce a final summary suitable for stakeholder reporting:
    
    ```
    ## Accessibility Review Summary
    
    **Course:** [Course Name]
    **Audit Date:** [date]
    **Auditor:** AI-assisted audit via Canvas MCP
    
    ### Results
    - Total content items scanned: 35
    - Automated issues found: 12
    - Issues remediated: 8
    - Issues requiring manual review: 4
    - Automated WCAG-oriented checks: Partial pass (manual review items remain)
    
    ### Remediation Actions Taken
    - Added alt text to 5 images
    - Fixed 3 non-descriptive links
    - Removed 2 empty headings
    
    ### Outstanding Items
    - Color contrast review needed (pages with colored text)
    - Video caption verification (embedded videos)
    - PDF accessibility check (uploaded PDFs)
    
    ### Recommendation
    Course content meets automated WCAG 2.1 Level A criteria after remediation.
    Manual review of color contrast and multimedia is recommended before publishing.
    ```
    
    ## MCP Tools Used
    
    | Tool | Purpose |
    |------|---------|
    | `scan_course_content_accessibility` | Scan pages and assignments for WCAG issues |
    | `fetch_ufixit_report` | Retrieve institutional UFIXIT report |
    | `parse_ufixit_violations` | Extract structured violations from report |
    | `format_accessibility_summary` | Format violations into readable report |
    | `get_page_content` | Retrieve page HTML for remediation |
    | `edit_page_content` | Apply accessibility fixes to pages |
    | `list_courses` | Find available courses |
    
    ## Example
    
    **User:** "Run accessibility audit for CS 101"
    
    **Agent:** Scans all content, generates the prioritized report.
    
    **User:** "Fix the missing alt text issues"
    
    **Agent:** Retrieves each affected page, asks for alt text descriptions, applies fixes, re-scans.
    
    ## Limitations
    
    - **Cannot check:** Color contrast, video captions, PDF accessibility, audio descriptions, keyboard navigation
    - **These are flagged** as "manual review required" in every report
    - **Remediation is per-page:** Each fix requires a full page content read and write cycle
    - **No undo:** Page edits via the API do not create Canvas revision history -- back up pages before bulk fixes
    
    ## Notes
    
    - Pairs well with `canvas-course-qc` for comprehensive pre-semester review.
    - Run after major content updates or course imports.
    - UFIXIT integration depends on your institution having UDOIT/UFIXIT installed.
    

Comments (0)

Sign in to join the conversation.

No comments yet.

Reviews (0)

No reviews yet.

Related