Guided assignment creation with sensible defaults and parameter validation
Walk through assignment creation with interactive parameter collection, sensible defaults, and validation.
Collect assignment details interactively, validate inputs, create the assignment via the dauber CLI, and report the result. Provides guardrails for common mistakes like missing submission types or forgetting to publish.
Read dauber/config.toml to get canvas_course_id and
course_title.
If missing: Report error and tell user to run /course:setup first. Stop.
Use AskUserQuestion across multiple rounds to gather parameters. Group
related questions together (max 4 per round).
Assignment name: "What is the assignment name?"
Points possible: "How many points is this assignment worth?"
Due date: "When is this assignment due? (ISO 8601 format, e.g., 2026-03-15T23:59:00Z)"
Submission types: "What submission types should be allowed?"
Publish immediately?: "Should this assignment be published now?"
Display a confirmation summary:
Assignment Preview
==================
Course: {course_title} ({canvas_course_id})
Name: {assignment_name}
Points: {points_possible}
Due: {due_date or "No due date"}
Submission Types: {types}
Publish: {Yes/No}
Use AskUserQuestion:
If "Edit details", return to Step 2 and let the user change specific fields.
Build and run the CLI command:
uv run dauber assignments create {canvas_course_id} "{assignment_name}" \
--points {points_possible} \
--due "{due_date}" \
--types "{submission_types}" \
--publish \
--format json
Notes:
--due if no due date selected--publish if saving as draft--types if not specified (Canvas defaults apply)Parse the JSON response to extract the created assignment's id, name,
html_url, and published status.
Use AskUserQuestion:
If yes: Run the /rubrics:create skill now.
It will guide rubric creation and offer to attach it to this assignment
(ID: {assignment_id}).
Assignment Created
==================
Course: {course_title} ({course_code})
Assignment: {assignment_name}
ID: {assignment_id}
Points: {points_possible}
Due: {due_date or "No due date"}
Submission Types: {types}
Published: {Yes/No}
To view:
uv run dauber assignments show {canvas_course_id} {assignment_id}
To update later:
uv run dauber assignments update {canvas_course_id} {assignment_id} --name "..." --points ...
Next steps:
- Add a rubric in Canvas UI if needed
- Run /assess:setup {assignment_id} to start grading workflow
/course:setupBegin assignment creation now.