Canvas course pulse
Educator skill for tracking week-over-week course health trends in Canvas. Surfaces assignment performance trends, login activity, engagement gaps, and struggling students across a longer time horizon than a daily check. Trigger phrases include "course pulse", "course health", "course trends", "week-over-week performance", "how is the course going", "engagement trends", "who isn't logging in", or "course activity over time".From its SKILL.md
npx -y skills add bruchris/canvas-lms-mcp --skill canvas-course-pulseAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 5 stars5 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
6.8 KB, as published. Nobody here has run it
Canvas Course Pulse
Educator skill for a longer-horizon view of course health: assignment performance trends, login patterns, engagement gaps, and student activity — across a week or more of data.
Use this skill for trend analysis over days or weeks. For today's immediate check (submission rates, upcoming deadlines, grade distribution this morning), use canvas-morning-check instead.
Prerequisites
- Canvas MCP server must be running and connected.
- You must have instructor or admin role in the target course.
- Analytics data requires the course to have active student enrollments and at least one graded activity.
- Student names and engagement data are visible in output — only run this in a private or educator-only session.
Steps
1. Identify the Target Course
Ask the user which course to analyse. Accept a course name, course code, or Canvas ID.
If unclear, call list_course_enrollments with the course ID to confirm the course exists and has enrolled students.
2. Choose a Focus Area
Offer three pulse views or ask the user what they want to know:
| View | What it answers |
|---|---|
| Assignment trends | Which assignments have low completion or low average scores? How has performance trended? |
| Engagement & login activity | Who is logging in regularly? Who has gone quiet? What's happening in the activity stream? |
| Per-student deep-dive | How is a specific student tracking across assignments, grades, and participation? |
You can combine views in a single report.
3A. Assignment Performance Trends
- Call
get_course_analyticswith the course ID. This returns aggregate assignment-level data: submission counts, score averages, and on-time vs late rates per assignment. - Call
list_assignmentswith the course ID to get assignment titles, due dates, and point values (for context the analytics data may not include).
Cross-reference to build a trend table, ordering by due date:
Assignment Trends — [Course Name] (last 4 weeks)
Assignment Submitted Avg Score On Time
"Week 1 Reflection" 47/50 (94%) 88% 92%
"Reading Quiz 2" 46/50 (92%) 81% 89%
"Group Project Draft" 44/50 (88%) 74% 71% ← slipping
"Week 3 Reflection" 39/50 (78%) 68% 58% ← needs attention
"Midterm Essay" 41/50 (82%) 72% 63%
Flag assignments where submission rate has dropped more than 10 percentage points from the course average, or where the on-time rate is below 65%.
3B. Engagement and Login Activity
- Call
get_course_activity_streamwith the course ID. This returns the recent activity feed: discussion posts, assignment submissions, grade postings, and other course events. - Call
list_course_enrollmentswith the course ID andtype=StudentEnrollmentto get the enrolled student list with last-activity timestamps.
Identify students who have not had any course activity in the past 7 days. For courses with 50+ students, narrow to the bottom quartile by last-activity date rather than listing all students.
Present a summary:
Engagement Pulse — [Course Name]
RECENT ACTIVITY (last 7 days)
Total events: 312
Discussion posts: 87
Assignment submissions: 134
Grade views: 58
Other: 33
ACTIVE STUDENTS: 43/50 this week
DISENGAGED STUDENTS (no activity in 7+ days)
• Student A — last seen 12 days ago
• Student B — last seen 9 days ago
• Student C — last seen 8 days ago
• … (3 more — ask to see full list)
Ask the instructor if they want to reach out to disengaged students or investigate further.
3C. Per-Student Deep-Dive
- Call
get_student_analyticswith the course ID and the student's user ID. This returns the student's per-assignment scores, submission behaviour, and participation data.
Present a compact per-student pulse:
Student Pulse — Student A — [Course Name]
Assignments submitted: 7/9 (78%)
Current grade: 71%
Trend: down from 81% four weeks ago
SUBMISSION HISTORY
• "Week 1 Reflection" ✓ submitted on time 88%
• "Reading Quiz 2" ✓ submitted on time 76%
• "Group Project Draft" ✓ submitted 2 days late 62%
• "Week 3 Reflection" ✗ not submitted —
• "Midterm Essay" ✓ submitted on time 71%
Flag if the student's grade is trending downward (more than 8 points over the past 3 assignments) or if they have 2+ missing submissions.
4. Summarise and Suggest Next Steps
After presenting the requested views, offer concrete next steps:
- For struggling assignments: "Would you like to review submissions for [assignment name] to understand why scores are low?"
- For disengaged students: "Would you like to send a check-in message to students who haven't logged in this week?" (Use
canvas-at-risk-studentsfor full outreach workflow.) - For a declining student: "Would you like to send [student name] a direct message through Canvas?"
Output Format
Course Pulse — [Course Name] (analysed [date])
ASSIGNMENT TRENDS
Submission rate this week: 82% (↓ from 91% two weeks ago)
Average score trend: 74% (↓ from 81%)
Assignments needing attention: 2
ENGAGEMENT
Active students this week: 43/50
Disengaged (7+ day gap): 7 students
SUGGESTED ACTIONS
• Review "Week 3 Reflection" submissions — lowest completion (78%) and scores (68%)
• Check in with 7 disengaged students — 3 are also below 70% grade
• Student A has missed 2 assignments and grade is trending down 10 pts
Notes
- This skill is read-only — it surfaces analytics and engagement data without modifying any Canvas content.
- Scope vs
canvas-morning-check:canvas-morning-checkis a same-day health check (today's submission rates, this morning's grade distribution). This skill analyses trends over days or weeks — use it for mid-course adjustments, not for daily ops. get_course_analyticsreturns aggregate data per assignment, not per-student scores. For individual student trajectories, useget_student_analytics(Step 3C).- For courses with 100+ students,
get_course_activity_streammay return a large event list. Summarise by event type and highlight disengagement signals rather than listing all events. - Login activity and "last seen" data comes from enrollment timestamps. Canvas does not always update these in real time; treat "last activity" as approximate.