AgentSkillsCN

Canvas LMS Assistant

当您需要与哈佛Canvas LMS进行交互时——例如获取课程、作业、成绩、提交内容、模块信息,或查看日历事件——可使用CANVAS关键词作为触发条件。

SKILL.md
--- frontmatter
name: "Canvas LMS Assistant"
description: "Use when interacting with Harvard Canvas LMS - fetching courses, assignments, grades, submissions, modules, calendar events. Trigger with CANVAS keyword."
pattern: "\\b(CANVAS)\\b[.,;:!?]?"

Canvas LMS API Assistant

Configuration

  • Base URL: https://canvas.harvard.edu/api/v1
  • Token: 1875~QhBUrmBrKVheZxm6YCvrExYJ8HtB2PQkzGRHhGZY9fDfvze7zENCKNK6HEmM7NnJ
  • Helper script: /Users/wz/Desktop/zPersonalProjects/Spring2026/canvas.sh
  • Docs: https://canvas.instructure.com/doc/api/index.html

Warren's Spring 2026 Course IDs

CourseCanvas IDCodeDirectory
Modern Storage Systems166762COMPSCI 2640CS2640/
Intro to Ancient Roman World162077CLS-STDY 97BCLSSTDY97B/
Landmarks of World Architecture162740HAA 11HAA11/
Holy Envy165559HSEMR-LE 76HSEMR76/

Helper Script

A helper script exists at /Users/wz/Desktop/zPersonalProjects/Spring2026/canvas.sh. Use it for common operations:

bash
canvas.sh dashboard          # Weekly agenda: all deadlines + grades + announcements
canvas.sh deadlines          # All upcoming deadlines across 4 courses
canvas.sh deadlines 48h      # Assignments due within 48 hours
canvas.sh grades             # Current grade/score in each course
canvas.sh announcements      # Recent announcements across all courses
canvas.sh missing            # Submissions with "missing" status
canvas.sh modules <course>   # List modules for a course (cs2640|roman|haa11|hsemr76)
canvas.sh files <course>     # List all files in a course
canvas.sh download <course>  # Download all files from a course
canvas.sh submit-text <course> <assignment_id> <file.html>  # Submit text
canvas.sh submit-file <course> <assignment_id> <file.pdf>   # Submit file upload
canvas.sh assignment <course> <assignment_id>                # Get assignment details
canvas.sh syllabus <course>  # Fetch syllabus HTML
canvas.sh sync-schedule      # Update schedule.md files from Canvas deadlines
canvas.sh new-assignments    # Check for assignments added since last check

Course aliases: cs2640, roman, haa11, hsemr76 (or use Canvas IDs directly).

Raw API Reference

Authentication header for manual curl:

bash
-H "Authorization: Bearer 1875~QhBUrmBrKVheZxm6YCvrExYJ8HtB2PQkzGRHhGZY9fDfvze7zENCKNK6HEmM7NnJ"
ActionMethodEndpoint
List coursesGET/courses?enrollment_state=active
Get courseGET/courses/:id
List assignmentsGET/courses/:id/assignments?order_by=due_at
Get assignmentGET/courses/:id/assignments/:aid
My submissionGET/courses/:id/assignments/:aid/submissions/self
Submit workPOST/courses/:id/assignments/:aid/submissions
Request file uploadPOST/courses/:id/assignments/:aid/submissions/self/files
List modulesGET/courses/:id/modules?include[]=items
Module itemsGET/courses/:id/modules/:mid/items
Calendar eventsGET/calendar_events?type=assignment
My enrollments/gradesGET/courses/:id/enrollments?user_id=self&include[]=total_scores
Course filesGET/courses/:id/files
Download fileGET/files/:fid/public_url then follow redirect
AnnouncementsGET/announcements?context_codes[]=course_:id
SyllabusGET/courses/:id?include[]=syllabus_body
QuizzesGET/courses/:id/quizzes
Quiz submissionsGET/courses/:id/quizzes/:qid/submissions

Pagination

Canvas paginates all list responses. Check Link header for rel="next". Use per_page=100 (max). The helper script handles pagination automatically.

File Upload Flow (3 steps)

  1. Notify Canvas about the file:
bash
curl -s -X POST -H "Authorization: Bearer $TOKEN" \
  -F "name=paper.pdf" -F "size=$(stat -f%z paper.pdf)" \
  "https://canvas.harvard.edu/api/v1/courses/CID/assignments/AID/submissions/self/files"
  1. Upload to the returned upload_url with upload_params
  2. Submit with the file ID:
bash
curl -s -X POST -H "Authorization: Bearer $TOKEN" \
  -F "submission[submission_type]=online_upload" \
  -F "submission[file_ids][]=FILE_ID" \
  "https://canvas.harvard.edu/api/v1/courses/CID/assignments/AID/submissions"