---
name: canvas-assignment-submission-manager
description: Manages assignment submissions on Canvas LMS. Identifies missing submissions from grade records, prepares files with proper naming conventions, and submits assignments. Handles course identification, assignment listing, submission status checking, file preparation, and automated submission.
---
# Instructions

## Primary Objective
Help a forgetful student identify and submit missing Canvas assignments based on a published grade summary, while respecting excused absences.

## Core Workflow

### 1. Initialization & Context Gathering
- **Read User Memory**: Use `memory-read_graph` to retrieve the student's personal information (Student ID, Email, Name).
- **Identify Target Course**: Use `canvas-canvas_list_courses` to list all courses. The target course is typically identifiable by name (e.g., "Cinema Culture Appreciation") or code (e.g., "FILM101") mentioned in the user request or grade sheet.
- **Explore Workspace**: Use `filesystem-list_allowed_directories` and `filesystem-directory_tree` to understand the file structure, locating the grade summary file and potential assignment directories.

### 2. Analyze Submission Status
- **Locate Grade Summary**: Find the Excel file (e.g., `Cinema_Culture_Grade_Summary.xlsx`) in the workspace. Use `local-python-execute` with pandas to read it.
- **Parse Grade Data**: Identify the row for the current student (matching Student ID or Name). Extract the status for each assignment ("Not Submitted", a score, or "Excused").
- **Cross-reference with Canvas**: Use `canvas-canvas_list_assignments` for the target course with `include_submissions: true`. This returns the official list of assignments and the user's current submission status (`workflow_state`).
- **Determine Actionable Items**: Compare the grade sheet "Not Submitted" status with Canvas's `workflow_state`. Only submit assignments that are **both** marked as missing on the grade sheet **and** have `workflow_state: "unsubmitted"` in Canvas. Respect any user-stated excusals (e.g., "officially excused from Assignment 2").

### 3. Prepare and Submit Assignments
- **Find Assignment Files**: Search the workspace directory tree (e.g., `homeworks/mine/`) for files whose content matches the assignment descriptions. Use `filesystem-read_multiple_files` to inspect likely candidates.
- **Enforce Naming Conventions**: Check each assignment's `description` field for specific file naming requirements (e.g., `StudentID_FILM101_Assignment4.md`). If required, create a new file with the correct name using `filesystem-write_file`, copying the content from the found assignment file.
- **Submit Assignments**: For each missing assignment, use `canvas-canvas_submit_assignment_with_file` with the `course_id`, `assignment_id`, and the path to the correctly named file.

### 4. Handle Administrative Tasks
- **Locate Supporting Documents**: Find any referenced documents (e.g., "Leave Application.pdf") in the workspace using the directory tree.
- **Communicate with Instructors**: If instructed, send an email to the relevant TA or instructor (email often found in the grade summary) using `emails-send_email`. Attach the supporting document and clearly state the student's request (e.g., reminder about an excused absence).

## Critical Rules & Guardrails
- **No Content Creation**: Only submit assignment files that already exist in the workspace. Do not generate new answer content.
- **Selective Submission**: Only submit assignments identified as missing. Do not re-submit assignments that already have a score or submission.
- **Data-Driven Decisions**: Base all decisions on data from the official grade sheet and Canvas API, not assumptions.
- **Preserve User Info**: Use the Student ID, Name, and Email from memory for file naming and communication.

## Error Handling
- If the grade sheet cannot be parsed, inform the user and halt.
- If an assignment file cannot be found, do not submit anything for that assignment. Inform the user.
- If a Canvas API call fails (e.g., course not found), report the error and stop.

## Final Step
Provide the user with a clear summary of actions taken: which assignments were identified as missing, which were submitted, and any administrative communications sent.


---
Source attribution: zjunlp
Original project: https://github.com/zjunlp/SkillNet/blob/665926a2fe4c564dcd79ea54c5246dc8e07cde39/skills/benchmark_skills/toolathlon/canvas-assignment-submission-manager/SKILL.md
License: MIT
License information: https://opensource.org/license/mit
Original upstream instructions; downloaded from Dave AI.

## Upstream license notice

MIT License

Copyright (c) 2026 ZJUNLP

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.



# Dave AI resource metadata

Creator / publisher: zjunlp
Original project: https://github.com/zjunlp/SkillNet/blob/665926a2fe4c564dcd79ea54c5246dc8e07cde39/skills/benchmark_skills/toolathlon/canvas-assignment-submission-manager/SKILL.md
Attribution basis: Recovered original package and original project license at a pinned revision

Fields of work: Education & Research, Project & Program Management, Sales, Customer Support
Roles: Customer Success Manager, Project Manager, Sales Development Rep (SDR), Support Agent, Tutor / Instructor
Specialties: API
Tools: Tool not specified
Country applicability: Country not specified
Classification basis: Source catalog labels
Instruction SHA-256: 33e35aff527e56beaad22d922512f56e012a9c9634ad3613986c2a9a01807703
Metadata reviewed: 2026-10-27
This metadata supersedes earlier Dave AI catalog attribution. Original instruction and supporting files are preserved.
