canvas-peer-review-manager
Educator peer review management for Canvas LMS. Tracks completion rates, analyzes comment quality, flags problematic reviews, sends targeted reminders, and generates instructor-ready reports. Trigger phrases include "peer review status", "how are peer reviews going", "who hasn't reviewed", "review quality", or any peer review follow-up task.
What this skill does
# Canvas Peer Review Manager A complete peer review management workflow for educators using Canvas LMS. Monitor completion, analyze quality, identify students who need follow-up, send reminders, and export data -- all through MCP tool calls against the Canvas API. ## Prerequisites - **Canvas MCP server** must be running and connected to the agent's MCP client (e.g., Claude Code, Cursor, Codex, OpenCode). - The authenticated user must have an **educator or instructor role** in the target Canvas course. - The assignment must have **peer reviews enabled** in Canvas (either manual or automatic assignment). - **FERPA compliance**: Set `ENABLE_DATA_ANONYMIZATION=true` in the Canvas MCP server environment to anonymize student names. When enabled, names render as `Student_xxxxxxxx` hashes while preserving functional user IDs for messaging. ## Steps ### 1. Identify the Assignment Ask the user which course and assignment to manage peer reviews for. Accept a course code, Canvas ID, or course name, plus an assignment name or ID. If the user does not specify, prompt: > Which course and assignment would you like to check peer reviews for? Use `list_courses` and `list_assignments` to help the user find the right identifiers. ### 2. Check Peer Review Completion Call `get_peer_review_completion_analytics` with the course identifier and assignment ID. This returns: - Overall completion rate (percentage) - Number of students with all reviews complete, partial, and none complete - Per-student breakdown showing completed vs. assigned reviews **Key data points to surface:** | Metric | What It Tells You | |--------|-------------------| | Completion rate | Overall health of the peer review cycle | | "None complete" count | Students who haven't started -- highest priority for reminders | | "Partial complete" count | Students who started but didn't finish | | Per-student breakdown | Exactly who needs follow-up | ### 3. Review the Assignment Mapping If the user wants to understand who is reviewing whom, call `get_peer_review_assignments` with: - `include_names=true` for human-readable output - `include_submission_details=true` for submission context This shows the full reviewer-to-reviewee mapping with completion status. ### 4. Extract and Read Comments Call `get_peer_review_comments` to retrieve actual comment text. Parameters: - `include_reviewer_info=true` -- who wrote the comment - `include_reviewee_info=true` -- who received the comment - `anonymize_students=true` -- recommended when sharing results or working with sensitive data This reveals what students actually wrote in their reviews. ### 5. Analyze Comment Quality Call `analyze_peer_review_quality` to generate quality metrics across all reviews. The analysis includes: - **Average quality score** (1-5 scale) - **Word count statistics** (mean, median, range) - **Constructiveness analysis** (constructive feedback vs. generic comments vs. specific suggestions) - **Sentiment distribution** (positive, neutral, negative) - **Flagged reviews** that fall below quality thresholds Optionally pass `analysis_criteria` as a JSON string to customize what counts as high/low quality. ### 6. Flag Problematic Reviews Call `identify_problematic_peer_reviews` to automatically flag reviews needing instructor attention. Flagging criteria include: - Very short or empty comments - Generic responses (e.g., "looks good", "nice work") - Lack of constructive feedback - Potential copy-paste or identical reviews Pass custom `criteria` as a JSON string to override default thresholds. ### 7. Get the Follow-up List Call `get_peer_review_followup_list` to get a prioritized list of students requiring action: - `priority_filter="urgent"` -- students with zero reviews completed - `priority_filter="medium"` -- students with partial completion - `priority_filter="all"` -- everyone who needs follow-up - `days_threshold=3` -- adjusts urgency calculation based on days since assignment ### 8. Send Reminders **Always use a dry run or review step before sending messages.** For targeted reminders, call `send_peer_review_reminders` with: - `recipient_ids` -- list of Canvas user IDs from the analytics results - `custom_message` -- optional custom text (a default template is used if omitted) - `subject_prefix` -- defaults to "Peer Review Reminder" Example flow: 1. Get incomplete reviewers from step 2 2. Extract their user IDs 3. Review the recipient list with the user 4. Send reminders after confirmation For a fully automated pipeline, call `send_peer_review_followup_campaign` with just the course identifier and assignment ID. This tool: 1. Runs completion analytics automatically 2. Segments students into "urgent" (none complete) and "partial" groups 3. Sends appropriately toned reminders to each group 4. Returns combined analytics and messaging results **Warning:** The campaign tool sends real messages. Always confirm with the instructor before running it. ### 9. Export Data Call `extract_peer_review_dataset` to export all peer review data for external analysis: - `output_format="csv"` or `output_format="json"` - `include_analytics=true` -- appends quality metrics to the export - `anonymize_data=true` -- recommended for sharing or archival - `save_locally=true` -- saves to a local file; set to `false` to return data inline ### 10. Generate Instructor Reports Call `generate_peer_review_feedback_report` for a formatted, shareable report: - `report_type="comprehensive"` -- full analysis with samples of low-quality reviews - `report_type="summary"` -- executive overview only - `report_type="individual"` -- per-student breakdown - `include_student_names=false` -- recommended for FERPA compliance For a completion-focused report (rather than quality-focused), use `generate_peer_review_report` with options for executive summary, student details, action items, and timeline analysis. This report can be saved to a file with `save_to_file=true`. ## Use Cases **"How are peer reviews going?"** Run steps 1-2. Present completion rate, highlight any concerning patterns (e.g., "Only 60% complete, 8 students haven't started"). **"Who hasn't done their reviews?"** Run steps 1-2, then step 7 with `priority_filter="urgent"`. List the students who need follow-up. **"Are the reviews any good?"** Run steps 4-6. Present quality scores, flag generic or low-effort reviews, and surface recommendations. **"Send reminders to stragglers"** Run steps 1-2 to identify incomplete reviewers, then step 8. Always confirm the recipient list before sending. **"Give me a full report"** Run steps 2, 5, 6, and 10. Combine completion analytics with quality analysis into a comprehensive instructor report. **"Export everything for my records"** Run step 9 with `output_format="csv"` and `anonymize_data=true` for a FERPA-safe dataset. ## MCP Tools Used | Tool | Purpose | |------|---------| | `list_courses` | Discover active courses | | `list_assignments` | Find assignments with peer reviews enabled | | `get_peer_review_assignments` | Full reviewer-to-reviewee mapping | | `get_peer_review_completion_analytics` | Completion rates and per-student breakdown | | `get_peer_review_comments` | Extract actual comment text | | `analyze_peer_review_quality` | Quality metrics (scores, word counts, constructiveness) | | `identify_problematic_peer_reviews` | Flag low-quality or empty reviews | | `get_peer_review_followup_list` | Prioritized list of students needing follow-up | | `send_peer_review_reminders` | Send targeted reminder messages | | `send_peer_review_followup_campaign` | Automated analytics-to-messaging pipeline | | `extract_peer_review_dataset` | Export data as CSV or JSON | | `generate_peer_review_feedback_report` | Quality-focused instructor report | | `generate_peer_review_report` | Completion-focused instructor report | ## Example **User:** "How are peer reviews going for Assignment 3 in BADM 350?" **Agent:** Calls `get_peer_review_completion_anal
Related in Productivity
gitea-workflow
IncludedOrchestrate agile development workflows for Gitea repositories using the tea CLI. Use when working with Gitea-hosted repos and asking to 'run the workflow', 'continue working', 'what's next', 'complete the task cycle', 'start my day', 'end the sprint', 'implement the next task', or wanting guided step-by-step development assistance. Keywords: workflow, orchestrate, agile, task cycle, sprint, daily, implement, review, PR, standup, retrospective, gitea, tea.
microsoft-graph-gateway
IncludedRoute Microsoft Graph work in this workspace. Use when users want to read or write Outlook mail, calendar events, contacts, OneDrive or SharePoint files, Teams, Planner, To Do, users, groups, directory data, or arbitrary Microsoft Graph endpoints from VS Code. Prefer WorkIQ for common read scenarios. Use Microsoft Graph for write actions and gap-read scenarios that need exact Graph properties, filters, permissions, or endpoints.
copilotkit
IncludedUse when building with CopilotKit — setup, development, integrations, debugging, upgrading, or contributing. Routes to the appropriate specialized skill based on the task.
wordly-wisdom
IncludedProvides calibrated decision analysis using Charlie Munger-style multiple mental models, inversion, incentive mapping, circle-of-competence checks, misjudgment audits, second-order effects, and forecast updates. Use when the user asks for an oracle take, a hard call, a decision memo, a premortem, an outside view, a red-team, a sanity-check, what am I missing, think this through, or wants a strategy, hire, investment, plan, product, partnership, or major life choice analysed. Avoid for simple factual lookups or time-sensitive legal, medical, or market questions without fresh evidence.
swain-session
IncludedSession management and project status dashboard. Owns the full session lifecycle (start/work/close/resume), focus lane, bookmarks, worktree detection, and tab naming. Also serves as the project status dashboard — shows active epics, progress, actionable next steps, blocked items, tasks, GitHub issues, and recommendations. Worktree creation is deferred to swain-do task dispatch (SPEC-195). Triggers on: 'session', 'status', 'what's next', 'dashboard', 'overview', 'where are we', 'what should I work on', 'show me priorities', 'bookmark', 'focus on', 'session info'.
gandi
IncludedComprehensive Gandi domain registrar integration for domain and DNS management. Register and manage domains, create/update/delete DNS records (A, AAAA, CNAME, MX, TXT, SRV, and more), configure email forwarding and aliases, check SSL certificate status, create DNS snapshots for safe rollback, bulk update zone files, and monitor domain expiration. Supports multi-domain management, zone file import/export, and automated DNS backups. Includes both read-only and destructive operations with safety controls.