canvas-info
Canvas Course Information Research
Overview
The canvaslms CLI provides read-only access to Canvas LMS course data:
assignments, pages, modules, discussions, announcements, grades, quizzes, and
calendar events. This skill teaches a research workflow for answering user
questions about their courses.
For detailed options on any subcommand, run canvaslms <subcommand> -h.
Research Workflow
Follow these steps when answering a Canvas-related question:
Step 1: Identify the Course
canvaslms courses # List all courses
canvaslms courses "regex" # Filter by name/code (case-insensitive regex)
Note the course ID from the output. Use it with -c <id> in subsequent
commands.
Step 2: Explore Course Structure
Choose the right entry point based on the question:
| Question type | Start with |
|---|---|
| "What's in this course?" | canvaslms modules list -c <id> |
| "What assignments exist?" | canvaslms assignments list -c <id> |
| "Any announcements?" | canvaslms discussions list -c <id> -t announcement |
| "What pages are available?" | canvaslms pages list -c <id> |
| "What are the deadlines?" | canvaslms calendar -c <id> |
| "How did students do?" | canvaslms results -c <id> |
Step 3: Drill into Content
Use view subcommands to read specific items:
canvaslms modules view -c <id> -m "module regex"
canvaslms pages view -c <id> -p "page regex"
canvaslms assignments view -c <id> -a "assignment regex"
canvaslms discussions view -c <id> -d "discussion regex"
The view commands output full content (markdown for pages, HTML for
assignments). The list commands output tab-delimited CSV summaries.
Step 4: Refine with Filters
Most commands accept regex filters and additional flags. Run
canvaslms <subcommand> -h to discover available filters for each command.
Common refinement patterns:
- Combine course + item filters:
-c "DD2520" -a "lab" - Filter by module:
-c <id> -m "week 3" - Filter submissions by user:
canvaslms submissions -c <id> -u "username"
Step 5: Synthesize and Answer
After gathering data:
- Quote relevant content directly when answering
- Summarize lists into readable format (tables, bullets)
- If data seems stale, suggest re-running with
--no-cache - Provide the course/assignment/page names so the user can navigate in Canvas
Quick Reference
| To find... | Command | Key flags |
|---|---|---|
| All courses | canvaslms courses |
regex filter, -i for ID only |
| Course modules | canvaslms modules list |
-c, -m |
| Module contents | canvaslms modules view |
-c, -m |
| Assignments | canvaslms assignments list |
-c, -a, -m |
| Assignment details | canvaslms assignments view |
-c, -a |
| Wiki pages | canvaslms pages list |
-c, -p, -m |
| Page content | canvaslms pages view |
-c, -p |
| Announcements | canvaslms discussions list |
-c, -t announcement |
| Discussions | canvaslms discussions list |
-c, -t discussion |
| Discussion content | canvaslms discussions view |
-c, -d |
| Quizzes | canvaslms quizzes list |
-c, -q |
| Submissions | canvaslms submissions |
-c, -a, -u |
| Grades/results | canvaslms results |
-c, -a |
| Calendar/deadlines | canvaslms calendar |
-c, date range flags |
| Users/enrollment | canvaslms users |
-c, role filters |
| Groups | canvaslms groups |
-c |
Regex Filtering Patterns
- Course matching is case-insensitive:
"dd2520"matches "DD2520" - Use anchors for precision:
"^DD2520$"for exact match - Partial match works:
"crypt"matches "Applied Cryptography" - Combine flags for specificity:
-c "DD2520" -m "week 3" -a "lab"
Output and Caching
listcommands produce tab-delimited CSV (pipe throughcolumn -t -s$'\t'for readability)viewcommands produce full content (markdown, HTML, or YAML frontmatter + content)- Results are cached; use
--no-cacheto force a fresh fetch - Pages
viewoutput includes YAML frontmatter with metadata
Common Pitfalls
Always identify the course first:
BAD: canvaslms assignments list -a "lab 1" # No course specified
GOOD: canvaslms assignments list -c 12345 -a "lab 1"
Use list before view to discover item names:
BAD: canvaslms pages view -c 12345 -p "syllabus" # Guessing the page name
GOOD: canvaslms pages list -c 12345 # Discover available pages
canvaslms pages view -c 12345 -p "Course Syllabus" # Use actual name
Use the right content type flag for discussions:
BAD: canvaslms discussions list -c 12345 # Missing type
GOOD: canvaslms discussions list -c 12345 -t announcement
GOOD: canvaslms discussions list -c 12345 -t discussion
Scope
This skill is read-only — it retrieves and presents course information.
It does not create, modify, or delete any Canvas content. To create quiz
content, use the canvas-quiz skill instead.