Submit approved assessments to Canvas gradebook with rubric-based grading
Submit approved assessments from the JSON file to the Canvas gradebook.
Review approved assessments, preview submission, and send grades to Canvas with safety checks.
If course_id and assignment_id provided:
.claude/assessments/{{course_id}}_{{assignment_id}}_*.json in the current repositoryIf no arguments provided:
.claude/state/assessment_state.json for last used fileassessments_*.json and use most recent/assess:setup firstRead the assessment JSON file using the Read tool. Validate structure and compute statistics.
Display validation summary:
Assessment File Status
======================
File: {assessment_file_path}
Assignment: {assignment_name}
Course: {course_name}
Assessments Overview:
Total submissions: X
Reviewed: Y (AI-evaluated)
Approved: Z (ready to submit)
Not reviewed: W
Score Statistics (approved only):
Average: {avg} / 20 pts
Range: {min} - {max} pts
Run the dauber CLI submit command without --confirm to get a dry run:
uv run dauber assess submit {assessment_file_path} {course_id} {assignment_id} --format json
This shows what would be submitted without making changes. Build and display a preview from the assessment file data:
Submission Preview (DRY RUN)
============================
WILL BE SUBMITTED (Z approved):
User {user_id} - {total_pts}/{points_possible} pts
- {criterion1}: {pts1}/{max1}
- {criterion2}: {pts2}/{max2}
- ...
(list all criteria from rubric)
WILL BE SKIPPED:
User {user_id} - not approved (needs review)
User {user_id} - already graded in Canvas (protected)
...
NO SUBMISSION (W students):
- User {user_id} - no submission to grade
...
Ask user for confirmation:
Ready to submit Z approved assessments to Canvas?
This will:
- Submit grades for Z students
- Skip X unapproved assessments
- Post rubric scores and feedback to Canvas
- Mark submitted assessments in JSON file
Continue? (Y/n)
Use AskUserQuestion tool with:
If user confirms YES:
Run the dauber CLI submit command with --confirm:
uv run dauber assess submit {assessment_file_path} {course_id} {assignment_id} --confirm --format json
Report results:
Submission Complete
===================
Successfully Submitted: X students
User {user_id} - {total_pts}/{points_possible} pts posted to Canvas
...
Skipped:
Not approved: Y students
Already graded in Canvas: Z students (protected)
...
Failed (errors): W students
User {user_id} - Error: {error_message}
...
Grades Posted to Canvas: X/{total_submissions}
Assessment File Updated
If user cancels:
Update .claude/state/assessment_state.json with:
{
"last_assessment_file": "{file_path}",
"course_id": "{course_id}",
"assignment_id": "{assignment_id}",
"last_submission_time": "{timestamp}",
"total_submitted": X,
"total_approved": Y,
"total_skipped": Z
}
Final Summary
=============
Assignment: {assignment_name}
Course: {course_name}
Grading Complete:
X students graded in Canvas
Y students pending approval
- Z students no submission
Class Performance (submitted grades):
Average: {avg}/{points_possible} pts ({percentage}%)
Criterion Averages:
- {criterion1}: {avg1}/{max1} pts
- {criterion2}: {avg2}/{max2} pts
- ...
(list all criteria from rubric)
Assessment File: {file_path}
Preserved as audit trail with submission timestamps
Next Steps:
- Review skipped assessments if any
- Check Canvas gradebook to verify grades posted
- Follow up with students who didn't submit
Begin submission process now.