Skip to content

cass

cass — Canvas grading CLI.

Usage:

$ cass [OPTIONS] COMMAND [ARGS]...

Options:

  • --config TEXT: Path to a cass.toml (default: search upward from the working directory) [env var: CASS_CONFIG]
  • -V, --version: Show version
  • --debug: Show full tracebacks on errors
  • --install-completion: Install completion for the current shell.
  • --show-completion: Show completion for the current shell, to copy it or customize the installation.
  • --help: Show this message and exit.

Commands:

  • status: Show project sync status and the local DB...
  • init: Initialize or repair the local cass setup.
  • pull: Fetch from Canvas and update the local...
  • push: Preview and push pending Canvas-managed...
  • revert: Revert local pending Canvas-managed...
  • query: Query curated datasets, or use raw SQL as...
  • delete: Delete the local database (cass.db).
  • backup: Save a timestamped copy of the database to...
  • restore: Replace the current database with a backup...
  • view: Open the database in a browser-based viewer.
  • canvas: Canvas LMS — browse and modify course...
  • skill: Agent skill — install the Claude Code...

cass status

Show project sync status and the local DB overview.

Usage:

$ cass status [OPTIONS]

Options:

  • --json: Print project status as one JSON object
  • --help: Show this message and exit.

cass init

Initialize or repair the local cass setup.

Usage:

$ cass init [OPTIONS]

Options:

  • --help: Show this message and exit.

cass pull

Fetch from Canvas and update the local database.

Usage:

$ cass pull [OPTIONS]

Options:

  • --students: Pull students only
  • --assignments: Pull assignments only
  • --submissions: Pull submissions only
  • --help: Show this message and exit.

cass push

Preview and push pending Canvas-managed changes.

Usage:

$ cass push [OPTIONS]

Options:

  • -y, --yes: Skip confirmation prompt
  • --dry-run: Show the push preview without pushing
  • --help: Show this message and exit.

cass revert

Revert local pending Canvas-managed changes since the last sync.

Usage:

$ cass revert [OPTIONS]

Options:

  • -y, --yes: Skip confirmation prompt
  • --help: Show this message and exit.

cass query

Query curated datasets, or use raw SQL as an explicit escape hatch.

Usage:

$ cass query [OPTIONS] [DATASET]

Arguments:

  • [DATASET]: Dataset to query (students, assignments, submissions, gradebook)

Options:

  • --where TEXT: Filter expression
  • --order TEXT: Order expression
  • --limit INTEGER: Limit rows (0 = all) [default: 0]
  • --sql TEXT: Raw SQL (advanced usage)
  • --help: Show this message and exit.

cass delete

Delete the local database (cass.db).

Usage:

$ cass delete [OPTIONS]

Options:

  • -y, --yes: Skip confirmation prompt
  • --help: Show this message and exit.

cass backup

Save a timestamped copy of the database to backups/.

Usage:

$ cass backup [OPTIONS]

Options:

  • -t, --tag TEXT: Tag appended to filename
  • -l, --list: List existing backups
  • --help: Show this message and exit.

cass restore

Replace the current database with a backup file.

Usage:

$ cass restore [OPTIONS] FILE

Arguments:

  • FILE: Path to a .db backup file [required]

Options:

  • -y, --yes: Skip confirmation prompt
  • --help: Show this message and exit.

cass view

Open the database in a browser-based viewer.

Usage:

$ cass view [OPTIONS] [FILEPATH]

Arguments:

  • [FILEPATH]: Path to a .duckdb or .db file (optional)

Options:

  • --port INTEGER: Port number (0 = auto-select) [default: 0]
  • --help: Show this message and exit.

cass canvas

Canvas LMS — browse and modify course content.

Usage:

$ cass canvas [OPTIONS] COMMAND [ARGS]...

Options:

  • --help: Show this message and exit.

Commands:

  • login: Save a browser session and refresh it...
  • sync: Sync cass.toml declarations to Canvas...
  • api: Send a raw Canvas API request and print...
  • people: Course roster — list.
  • modules: Course modules — list, show, create,...
  • assignments: Assignments — list, show, create, publish,...
  • quizzes: Quizzes — list, show, export, create,...
  • submissions: Submissions — list, excuse, clear-late.
  • calendar: Course calendar — list, create, update,...
  • files: Course files — list, upload, move, rename,...
  • announcements: Announcements — list, create, update, delete.
  • tabs: Navigation tabs — list, show, hide.

cass canvas login

Save a browser session and refresh it automatically after a 401 rejection.

Usage:

$ cass canvas login [OPTIONS]

Options:

  • --from-brave: Import your Canvas session from Brave on macOS.
  • --from-chrome: Import your Canvas session from Google Chrome on macOS.
  • --profile TEXT: Browser profile directory, such as 'Profile 1'. [default: Default]
  • --help: Show this message and exit.

cass canvas sync

Sync cass.toml declarations to Canvas (modules, assignments, quizzes).

Compares [], [], and the quiz files named by [] against the live Canvas course. Shows a diff of create/update/skip actions. Use --apply to execute changes.

Quizzes match by title. Questions on an existing quiz are never compared or modified; only settings are updated.

Modules that declare [] also get their items reconciled: every such module is planned before any item is written. Undeclared items are reported as extra; --prune removes them.

Usage:

$ cass canvas sync [OPTIONS]

Options:

  • --dry-run / --apply: Show what would change (default) or apply changes [default: dry-run]
  • --create-groups: Create assignment groups that are missing on Canvas
  • --prune: Remove module items not declared in cass.toml (modules with items only)
  • --help: Show this message and exit.

cass canvas api

Send a raw Canvas API request and print the response body.

Usage:

$ cass canvas api [OPTIONS] METHOD PATH

Arguments:

  • METHOD: HTTP method, e.g. GET, POST, PUT, DELETE [required]
  • PATH: API path; {course} expands to the configured course ID [required]

Options:

  • -p, --param TEXT: Query parameter KEY=VALUE (repeatable)
  • -d, --data TEXT: Form field KEY=VALUE (repeatable)
  • --json-body TEXT: Request body as a JSON string
  • --all: Follow pagination (GET only); print one JSON array
  • --dry-run: Show the Canvas requests this would send, without sending any writes
  • --help: Show this message and exit.

cass canvas people

Course roster — list.

Usage:

$ cass canvas people [OPTIONS] COMMAND [ARGS]...

Options:

  • --help: Show this message and exit.

Commands:

  • list: Show course roster with roles, emails and...

cass canvas people list

Show course roster with roles, emails and enrolled dates.

Usage:

$ cass canvas people list [OPTIONS]

Options:

  • --csv TEXT: Export as CSV file
  • --save TEXT: Save output as markdown file
  • --enrolled-after TEXT: Only people (any role) first enrolled after DATE (course time zone)
  • --state [active|invited|inactive|completed]: Enrollment state; repeatable (default: active and invited)
  • --json: Print JSON Lines: one Canvas object per line
  • --help: Show this message and exit.

cass canvas modules

Course modules — list, show, create, publish, delete, items.

Usage:

$ cass canvas modules [OPTIONS] COMMAND [ARGS]...

Options:

  • --help: Show this message and exit.

Commands:

  • list: List modules.
  • show: Show the items in a module.
  • create: Create a new module.
  • publish: Publish a module (or all modules with --all).
  • unpublish: Unpublish a module.
  • delete: Delete a module.
  • items: Module items — add, update, move, remove.

cass canvas modules list

List modules.

Usage:

$ cass canvas modules list [OPTIONS]

Options:

  • --csv TEXT: Export as CSV file
  • --save TEXT: Save output as markdown file
  • --json: Print JSON Lines: one Canvas object per line
  • --help: Show this message and exit.

cass canvas modules show

Show the items in a module.

Usage:

$ cass canvas modules show [OPTIONS] ID_OR_NAME

Arguments:

  • ID_OR_NAME: Module ID or name [required]

Options:

  • --csv TEXT: Export as CSV file
  • --save TEXT: Save output as markdown file
  • --json: Print JSON Lines: one Canvas object per line
  • --help: Show this message and exit.

cass canvas modules create

Create a new module.

Usage:

$ cass canvas modules create [OPTIONS] NAME

Arguments:

  • NAME: Module name [required]

Options:

  • --position INTEGER: Position in list
  • --dry-run: Show the Canvas requests this would send, without sending any writes
  • --help: Show this message and exit.

cass canvas modules publish

Publish a module (or all modules with --all).

Usage:

$ cass canvas modules publish [OPTIONS] [ID_OR_NAME]

Arguments:

  • [ID_OR_NAME]: Module ID or name

Options:

  • --all: Publish all modules
  • --dry-run: Show the Canvas requests this would send, without sending any writes
  • --help: Show this message and exit.

cass canvas modules unpublish

Unpublish a module.

Usage:

$ cass canvas modules unpublish [OPTIONS] ID_OR_NAME

Arguments:

  • ID_OR_NAME: Module ID or name [required]

Options:

  • --dry-run: Show the Canvas requests this would send, without sending any writes
  • --help: Show this message and exit.

cass canvas modules delete

Delete a module.

Usage:

$ cass canvas modules delete [OPTIONS] ID_OR_NAME

Arguments:

  • ID_OR_NAME: Module ID or name [required]

Options:

  • -y, --yes: Skip confirmation
  • --dry-run: Show the Canvas requests this would send, without sending any writes
  • --help: Show this message and exit.

cass canvas modules items

Module items — add, update, move, remove.

Usage:

$ cass canvas modules items [OPTIONS] COMMAND [ARGS]...

Options:

  • --help: Show this message and exit.

Commands:

  • add: Add an item to a module.
  • update: Change an item's title, indent or...
  • move: Move an item to a position within its module.
  • remove: Remove an item from a module (the linked...
cass canvas modules items add

Add an item to a module.

Usage:

$ cass canvas modules items add [OPTIONS] ID_OR_NAME

Arguments:

  • ID_OR_NAME: Module ID or name [required]

Options:

  • --type TEXT: Assignment, Quiz, File, Page, ExternalUrl or SubHeader [required]
  • --content-id INTEGER: Canvas ID of the content (Assignment, Quiz, File)
  • --page-url TEXT: Page slug (Page items)
  • --url TEXT: Target URL (ExternalUrl items)
  • --title TEXT: Item title (defaults to the content's name)
  • --indent INTEGER RANGE: Indent level [x>=0]
  • --dry-run: Show the Canvas requests this would send, without sending any writes
  • --help: Show this message and exit.
cass canvas modules items update

Change an item's title, indent or published state.

Usage:

$ cass canvas modules items update [OPTIONS] ID_OR_NAME ITEM

Arguments:

  • ID_OR_NAME: Module ID or name [required]
  • ITEM: Item ID or title [required]

Options:

  • --title TEXT: New title
  • --indent INTEGER RANGE: New indent level [x>=0]
  • --publish / --unpublish
  • --dry-run: Show the Canvas requests this would send, without sending any writes
  • --help: Show this message and exit.
cass canvas modules items move

Move an item to a position within its module.

Usage:

$ cass canvas modules items move [OPTIONS] ID_OR_NAME ITEM

Arguments:

  • ID_OR_NAME: Module ID or name [required]
  • ITEM: Item ID or title [required]

Options:

  • --position INTEGER RANGE: New position (1 = first) [x>=1; required]
  • --dry-run: Show the Canvas requests this would send, without sending any writes
  • --help: Show this message and exit.
cass canvas modules items remove

Remove an item from a module (the linked content is untouched).

Usage:

$ cass canvas modules items remove [OPTIONS] ID_OR_NAME ITEM

Arguments:

  • ID_OR_NAME: Module ID or name [required]
  • ITEM: Item ID or title [required]

Options:

  • -y, --yes: Skip confirmation
  • --dry-run: Show the Canvas requests this would send, without sending any writes
  • --help: Show this message and exit.

cass canvas assignments

Assignments — list, show, create, publish, delete.

Usage:

$ cass canvas assignments [OPTIONS] COMMAND [ARGS]...

Options:

  • --help: Show this message and exit.

Commands:

  • list: List assignments.
  • show: Show details for one assignment.
  • create: Create a new assignment.
  • publish: Publish an assignment.
  • unpublish: Unpublish an assignment.
  • delete: Delete an assignment.
  • groups: Assignment groups — list, create, delete.

cass canvas assignments list

List assignments.

Usage:

$ cass canvas assignments list [OPTIONS]

Options:

  • --csv TEXT: Export as CSV file
  • --save TEXT: Save output as markdown file
  • --json: Print JSON Lines: one Canvas object per line
  • --help: Show this message and exit.

cass canvas assignments show

Show details for one assignment.

Usage:

$ cass canvas assignments show [OPTIONS] ID_OR_NAME

Arguments:

  • ID_OR_NAME: Assignment ID or name [required]

Options:

  • --csv TEXT: Export as CSV file
  • --save TEXT: Save output as markdown file
  • --json: Print JSON Lines: one Canvas object per line
  • --help: Show this message and exit.

cass canvas assignments create

Create a new assignment.

Usage:

$ cass canvas assignments create [OPTIONS] NAME

Arguments:

  • NAME: Assignment name [required]

Options:

  • --group TEXT: Assignment group name (e.g. 'Homeworks', 'Labs') [required]
  • --points FLOAT: Points possible [default: 0]
  • --due TEXT: Due (YYYY-MM-DD HH:MM in course time, or ISO 8601)
  • --type TEXT: Submission type (online_url, online_upload, online_text_entry, etc.) [default: online_url]
  • --publish: Publish immediately
  • -d, --description TEXT: HTML description
  • --dry-run: Show the Canvas requests this would send, without sending any writes
  • --help: Show this message and exit.

cass canvas assignments publish

Publish an assignment.

Usage:

$ cass canvas assignments publish [OPTIONS] ID_OR_NAME

Arguments:

  • ID_OR_NAME: Assignment ID or name [required]

Options:

  • --dry-run: Show the Canvas requests this would send, without sending any writes
  • --help: Show this message and exit.

cass canvas assignments unpublish

Unpublish an assignment.

Usage:

$ cass canvas assignments unpublish [OPTIONS] ID_OR_NAME

Arguments:

  • ID_OR_NAME: Assignment ID or name [required]

Options:

  • --dry-run: Show the Canvas requests this would send, without sending any writes
  • --help: Show this message and exit.

cass canvas assignments delete

Delete an assignment.

Usage:

$ cass canvas assignments delete [OPTIONS] ID_OR_NAME

Arguments:

  • ID_OR_NAME: Assignment ID or name [required]

Options:

  • -y, --yes: Skip confirmation
  • --dry-run: Show the Canvas requests this would send, without sending any writes
  • --help: Show this message and exit.

cass canvas assignments groups

Assignment groups — list, create, delete.

Usage:

$ cass canvas assignments groups [OPTIONS] COMMAND [ARGS]...

Options:

  • --help: Show this message and exit.

Commands:

  • list: Show assignment groups with weights.
  • create: Create an assignment group.
  • delete: Delete an assignment group and every...
cass canvas assignments groups list

Show assignment groups with weights.

Usage:

$ cass canvas assignments groups list [OPTIONS]

Options:

  • --csv TEXT: Export as CSV file
  • --save TEXT: Save output as markdown file
  • --json: Print JSON Lines: one Canvas object per line
  • --help: Show this message and exit.
cass canvas assignments groups create

Create an assignment group.

Usage:

$ cass canvas assignments groups create [OPTIONS] NAME

Arguments:

  • NAME: Group name (e.g. 'Homeworks') [required]

Options:

  • --weight FLOAT: Percent of final grade (weighted courses only)
  • --position INTEGER: Position in list
  • --dry-run: Show the Canvas requests this would send, without sending any writes
  • --help: Show this message and exit.
cass canvas assignments groups delete

Delete an assignment group and every assignment in it.

Usage:

$ cass canvas assignments groups delete [OPTIONS] ID_OR_NAME

Arguments:

  • ID_OR_NAME: Group ID or name [required]

Options:

  • -y, --yes: Skip confirmation
  • --dry-run: Show the Canvas requests this would send, without sending any writes
  • --help: Show this message and exit.

cass canvas quizzes

Quizzes — list, show, export, create, update, delete.

Usage:

$ cass canvas quizzes [OPTIONS] COMMAND [ARGS]...

Options:

  • --help: Show this message and exit.

Commands:

  • list: List quizzes.
  • show: Show settings and questions for one quiz.
  • questions: List a quiz's questions in quiz order,...
  • preview: Start a teacher preview and show the...
  • export: Export a quiz as a quiz file (settings and...
  • responses: Download every student's answers to a...
  • create: Create a quiz from a quiz file (--from) or...
  • update: Update a quiz's settings from a quiz file;...
  • publish: Publish a quiz.
  • unpublish: Unpublish a quiz.
  • delete: Delete a quiz.

cass canvas quizzes list

List quizzes.

Usage:

$ cass canvas quizzes list [OPTIONS]

Options:

  • --csv TEXT: Export as CSV file
  • --save TEXT: Save output as markdown file
  • --json: Print JSON Lines: one Canvas object per line
  • --help: Show this message and exit.

cass canvas quizzes show

Show settings and questions for one quiz.

Usage:

$ cass canvas quizzes show [OPTIONS] ID_OR_NAME

Arguments:

  • ID_OR_NAME: Quiz ID or title [required]

Options:

  • --csv TEXT: Export as CSV file
  • --save TEXT: Save output as markdown file
  • --json: Print JSON Lines: one Canvas object per line
  • --help: Show this message and exit.

cass canvas quizzes questions

List a quiz's questions in quiz order, with IDs and question groups.

Usage:

$ cass canvas quizzes questions [OPTIONS] ID_OR_NAME

Arguments:

  • ID_OR_NAME: Quiz ID or title [required]

Options:

  • --json: Print JSON Lines: one Canvas object per line
  • --help: Show this message and exit.

cass canvas quizzes preview

Start a teacher preview and show the questions in the order a student sees them.

Question groups and shuffling make each attempt differ. The preview submission stays on Canvas.

Usage:

$ cass canvas quizzes preview [OPTIONS] ID_OR_NAME

Arguments:

  • ID_OR_NAME: Quiz ID or title [required]

Options:

  • --json: Print JSON Lines: one Canvas object per line
  • --help: Show this message and exit.

cass canvas quizzes export

Export a quiz as a quiz file (settings and questions).

Usage:

$ cass canvas quizzes export [OPTIONS] ID_OR_NAME

Arguments:

  • ID_OR_NAME: Quiz ID or title [required]

Options:

  • -o, --output TEXT: Write to this file instead of stdout
  • --help: Show this message and exit.

cass canvas quizzes responses

Download every student's answers to a classic quiz or survey.

Times are in the course time zone. started_at and auto_submitted describe only each student's latest attempt, so they are blank while a newer attempt is open.

Usage:

$ cass canvas quizzes responses [OPTIONS] ID_OR_NAME

Arguments:

  • ID_OR_NAME: Quiz ID or title [required]

Options:

  • --all-attempts: Every attempt, not only each student's latest
  • --csv TEXT: Write responses to a CSV file
  • --wide: Canvas's report as is: one row per student, a column per question
  • --help: Show this message and exit.

cass canvas quizzes create

Create a quiz from a quiz file (--from) or as an empty placeholder.

Usage:

$ cass canvas quizzes create [OPTIONS] [TITLE]

Arguments:

  • [TITLE]: Quiz title (omit when using --from)

Options:

  • --from TEXT: Quiz file (TOML) with settings and questions
  • --type TEXT: Quiz type (practice_quiz, assignment, graded_survey, survey) [default: assignment]
  • --group TEXT: Assignment group name
  • --points FLOAT: Points (graded_survey only)
  • --due TEXT: Due (YYYY-MM-DD HH:MM in course time, or ISO 8601)
  • --unlock TEXT: Unlock time (course time or ISO 8601)
  • --lock TEXT: Lock time (course time or ISO 8601)
  • --attempts INTEGER: Allowed attempts (-1 = unlimited) [default: 1]
  • --time-limit INTEGER: Time limit in minutes (0 = none) [default: 0]
  • -d, --description TEXT: HTML description
  • --publish: Publish immediately
  • --create-groups: Create a missing assignment group
  • --dry-run: Show the Canvas requests this would send, without sending any writes
  • --help: Show this message and exit.

cass canvas quizzes update

Update a quiz's settings from a quiz file; a dry run unless --apply.

Only the settings the file sets are compared and sent. Questions are untouched unless --questions is given.

Usage:

$ cass canvas quizzes update [OPTIONS] ID_OR_NAME

Arguments:

  • ID_OR_NAME: Quiz ID or title [required]

Options:

  • --from TEXT: Quiz file with the desired settings [required]
  • --dry-run: Show the Canvas requests this would send, without sending any writes
  • --questions: Also reconcile questions and question groups (dry run unless --apply)
  • --apply: Send the changes
  • --prune: Delete questions and groups not in the file (with --questions)
  • --help: Show this message and exit.

cass canvas quizzes publish

Publish a quiz.

Usage:

$ cass canvas quizzes publish [OPTIONS] ID_OR_NAME

Arguments:

  • ID_OR_NAME: Quiz ID or title [required]

Options:

  • --dry-run: Show the Canvas requests this would send, without sending any writes
  • --help: Show this message and exit.

cass canvas quizzes unpublish

Unpublish a quiz.

Usage:

$ cass canvas quizzes unpublish [OPTIONS] ID_OR_NAME

Arguments:

  • ID_OR_NAME: Quiz ID or title [required]

Options:

  • --dry-run: Show the Canvas requests this would send, without sending any writes
  • --help: Show this message and exit.

cass canvas quizzes delete

Delete a quiz.

Usage:

$ cass canvas quizzes delete [OPTIONS] ID_OR_NAME

Arguments:

  • ID_OR_NAME: Quiz ID or title [required]

Options:

  • -y, --yes: Skip confirmation
  • --dry-run: Show the Canvas requests this would send, without sending any writes
  • --help: Show this message and exit.

cass canvas submissions

Submissions — list, excuse, clear-late.

Usage:

$ cass canvas submissions [OPTIONS] COMMAND [ARGS]...

Options:

  • --help: Show this message and exit.

Commands:

  • list: Show each student's submission status and...
  • excuse: Excuse submissions; a dry run unless --apply.
  • clear-late: Clear late flags and penalties; a dry run...

cass canvas submissions list

Show each student's submission status and score.

Usage:

$ cass canvas submissions list [OPTIONS] ASSIGNMENT

Arguments:

  • ASSIGNMENT: Assignment ID or name [required]

Options:

  • --student INTEGER: Canvas user ID; repeatable
  • --csv TEXT: Export as CSV file
  • --save TEXT: Save output as markdown file
  • --json: Print JSON Lines: one Canvas object per line
  • --help: Show this message and exit.

cass canvas submissions excuse

Excuse submissions; a dry run unless --apply.

Usage:

$ cass canvas submissions excuse [OPTIONS] [ASSIGNMENT]

Arguments:

  • [ASSIGNMENT]: Assignment ID or name (limits --enrolled-after)

Options:

  • --student INTEGER: Canvas user ID; repeatable (needs an ASSIGNMENT)
  • --enrolled-after TEXT: Students first enrolled after DATE (course time zone), on assignments due before they enrolled
  • --include-graded: Also excuse submissions that have a grade
  • --apply: Send the changes
  • --dry-run: Show what would change (the default)
  • --help: Show this message and exit.

cass canvas submissions clear-late

Clear late flags and penalties; a dry run unless --apply.

Usage:

$ cass canvas submissions clear-late [OPTIONS] [ASSIGNMENT]

Arguments:

  • [ASSIGNMENT]: Assignment ID or name (limits --enrolled-after)

Options:

  • --student INTEGER: Canvas user ID; repeatable (needs an ASSIGNMENT)
  • --enrolled-after TEXT: Students first enrolled after DATE (course time zone), on assignments due before they enrolled
  • --apply: Send the changes
  • --dry-run: Show what would change (the default)
  • --help: Show this message and exit.

cass canvas calendar

Course calendar — list, create, update, delete events.

Usage:

$ cass canvas calendar [OPTIONS] COMMAND [ARGS]...

Options:

  • --help: Show this message and exit.

Commands:

  • list: List course calendar events (all events...
  • create: Create a calendar event.
  • update: Update a calendar event (only the given...
  • delete: Delete a calendar event.

cass canvas calendar list

List course calendar events (all events unless a date range is given).

Usage:

$ cass canvas calendar list [OPTIONS]

Options:

  • --from TEXT: Only events on or after this date (YYYY-MM-DD)
  • --to TEXT: Only events on or before this date (YYYY-MM-DD)
  • --csv TEXT: Export as CSV file
  • --save TEXT: Save output as markdown file
  • --json: Print JSON Lines: one Canvas object per line
  • --help: Show this message and exit.

cass canvas calendar create

Create a calendar event.

Usage:

$ cass canvas calendar create [OPTIONS] TITLE

Arguments:

  • TITLE: Event title [required]

Options:

  • --start TEXT: Start (YYYY-MM-DD HH:MM in course time, or ISO 8601) [required]
  • --end TEXT: End (YYYY-MM-DD HH:MM in course time, or ISO 8601)
  • --location TEXT: Location name
  • -d, --description TEXT: HTML description
  • --all-day: All-day event (times ignored)
  • --dry-run: Show the Canvas requests this would send, without sending any writes
  • --help: Show this message and exit.

cass canvas calendar update

Update a calendar event (only the given fields change).

Usage:

$ cass canvas calendar update [OPTIONS] EVENT_ID

Arguments:

  • EVENT_ID: Calendar event ID [required]

Options:

  • --title TEXT: New title
  • --start TEXT: New start (course time or ISO 8601)
  • --end TEXT: New end (course time or ISO 8601)
  • --location TEXT: New location
  • -d, --description TEXT: New HTML description
  • --all-day / --timed: Make all-day or timed
  • --dry-run: Show the Canvas requests this would send, without sending any writes
  • --help: Show this message and exit.

cass canvas calendar delete

Delete a calendar event.

Usage:

$ cass canvas calendar delete [OPTIONS] EVENT_ID

Arguments:

  • EVENT_ID: Calendar event ID [required]

Options:

  • -y, --yes: Skip confirmation
  • --dry-run: Show the Canvas requests this would send, without sending any writes
  • --help: Show this message and exit.

cass canvas files

Course files — list, upload, move, rename, publish, delete; folders.

Usage:

$ cass canvas files [OPTIONS] COMMAND [ARGS]...

Options:

  • --help: Show this message and exit.

Commands:

  • list: Show course files as a tree.
  • upload: Upload a file to the course.
  • delete: Delete a file from the course.
  • mv: Move a file to another folder.
  • rename: Rename a file.
  • publish: Make a file visible to students.
  • unpublish: Hide a file from students (lock it).
  • folders: Course folders — list, create, delete.

cass canvas files list

Show course files as a tree.

Usage:

$ cass canvas files list [OPTIONS]

Options:

  • --folder TEXT: Only this folder (ID or path) and its subfolders
  • --csv TEXT: Export as CSV file
  • --save TEXT: Save output as markdown file
  • --json: Print JSON Lines: one Canvas object per line
  • --help: Show this message and exit.

cass canvas files upload

Upload a file to the course.

Usage:

$ cass canvas files upload [OPTIONS] PATH

Arguments:

  • PATH: Local file path to upload [required]

Options:

  • --folder TEXT: Destination folder in Canvas (created if missing)
  • --name TEXT: Name in Canvas (default: local file name)
  • --on-duplicate [rename|overwrite|skip]: If the name exists: overwrite (default; replaces the file, which gets a new ID), rename (keep both), or skip (same name and size) [default: overwrite]
  • --unpublished: Lock the file so students cannot see it
  • --dry-run: Show the Canvas requests this would send, without sending any writes
  • --help: Show this message and exit.

cass canvas files delete

Delete a file from the course.

Usage:

$ cass canvas files delete [OPTIONS] ID_OR_NAME

Arguments:

  • ID_OR_NAME: File ID or name [required]

Options:

  • -y, --yes: Skip confirmation
  • --dry-run: Show the Canvas requests this would send, without sending any writes
  • --help: Show this message and exit.

cass canvas files mv

Move a file to another folder.

Usage:

$ cass canvas files mv [OPTIONS] ID_OR_NAME FOLDER

Arguments:

  • ID_OR_NAME: File ID or name [required]
  • FOLDER: Destination folder path (created if missing); '' is the root [required]

Options:

  • --on-duplicate [rename|overwrite]: If the name exists in the destination: rename or overwrite
  • --dry-run: Show the Canvas requests this would send, without sending any writes
  • --help: Show this message and exit.

cass canvas files rename

Rename a file.

Usage:

$ cass canvas files rename [OPTIONS] ID_OR_NAME NEW_NAME

Arguments:

  • ID_OR_NAME: File ID or name [required]
  • NEW_NAME: New file name [required]

Options:

  • --on-duplicate [rename|overwrite]: If the name exists in the destination: rename or overwrite
  • --dry-run: Show the Canvas requests this would send, without sending any writes
  • --help: Show this message and exit.

cass canvas files publish

Make a file visible to students.

Usage:

$ cass canvas files publish [OPTIONS] ID_OR_NAME

Arguments:

  • ID_OR_NAME: File ID or name [required]

Options:

  • --dry-run: Show the Canvas requests this would send, without sending any writes
  • --help: Show this message and exit.

cass canvas files unpublish

Hide a file from students (lock it).

Usage:

$ cass canvas files unpublish [OPTIONS] ID_OR_NAME

Arguments:

  • ID_OR_NAME: File ID or name [required]

Options:

  • --dry-run: Show the Canvas requests this would send, without sending any writes
  • --help: Show this message and exit.

cass canvas files folders

Course folders — list, create, delete.

Usage:

$ cass canvas files folders [OPTIONS] COMMAND [ARGS]...

Options:

  • --help: Show this message and exit.

Commands:

  • list: Show course folders with their paths.
  • create: Create a folder.
  • delete: Delete a folder.
cass canvas files folders list

Show course folders with their paths.

Usage:

$ cass canvas files folders list [OPTIONS]

Options:

  • --json: Print JSON Lines: one Canvas object per line
  • --help: Show this message and exit.
cass canvas files folders create

Create a folder.

Usage:

$ cass canvas files folders create [OPTIONS] PATH

Arguments:

  • PATH: Folder path (missing parents are created) [required]

Options:

  • --dry-run: Show the Canvas requests this would send, without sending any writes
  • --help: Show this message and exit.
cass canvas files folders delete

Delete a folder.

Usage:

$ cass canvas files folders delete [OPTIONS] ID_OR_PATH

Arguments:

  • ID_OR_PATH: Folder ID or path [required]

Options:

  • --force: Delete even if the folder holds files or folders
  • -y, --yes: Skip confirmation
  • --dry-run: Show the Canvas requests this would send, without sending any writes
  • --help: Show this message and exit.

cass canvas announcements

Announcements — list, create, update, delete.

Usage:

$ cass canvas announcements [OPTIONS] COMMAND [ARGS]...

Options:

  • --help: Show this message and exit.

Commands:

  • list: List course announcements.
  • create: Create an announcement.
  • update: Update an announcement.
  • delete: Delete an announcement.

cass canvas announcements list

List course announcements.

Usage:

$ cass canvas announcements list [OPTIONS]

Options:

  • --csv TEXT: Export as CSV file
  • --save TEXT: Save output as markdown file
  • --json: Print JSON Lines: one Canvas object per line
  • --help: Show this message and exit.

cass canvas announcements create

Create an announcement.

Usage:

$ cass canvas announcements create [OPTIONS] TITLE

Arguments:

  • TITLE: Announcement title [required]

Options:

  • -m, --message TEXT: HTML message body [required]
  • --dry-run: Show the Canvas requests this would send, without sending any writes
  • --help: Show this message and exit.

cass canvas announcements update

Update an announcement.

Usage:

$ cass canvas announcements update [OPTIONS] ID_OR_TITLE

Arguments:

  • ID_OR_TITLE: Announcement ID or title [required]

Options:

  • --title TEXT: New title
  • -m, --message TEXT: New message body
  • --dry-run: Show the Canvas requests this would send, without sending any writes
  • --help: Show this message and exit.

cass canvas announcements delete

Delete an announcement.

Usage:

$ cass canvas announcements delete [OPTIONS] ID_OR_TITLE

Arguments:

  • ID_OR_TITLE: Announcement ID or title [required]

Options:

  • -y, --yes: Skip confirmation
  • --dry-run: Show the Canvas requests this would send, without sending any writes
  • --help: Show this message and exit.

cass canvas tabs

Navigation tabs — list, show, hide.

Usage:

$ cass canvas tabs [OPTIONS] COMMAND [ARGS]...

Options:

  • --help: Show this message and exit.

Commands:

  • list: List course navigation tabs.
  • show: Make a navigation tab visible.
  • hide: Hide a navigation tab.

cass canvas tabs list

List course navigation tabs.

Usage:

$ cass canvas tabs list [OPTIONS]

Options:

  • --csv TEXT: Export as CSV file
  • --save TEXT: Save output as markdown file
  • --json: Print JSON Lines: one Canvas object per line
  • --help: Show this message and exit.

cass canvas tabs show

Make a navigation tab visible.

Usage:

$ cass canvas tabs show [OPTIONS] ID_OR_LABEL

Arguments:

  • ID_OR_LABEL: Tab ID or label [required]

Options:

  • --dry-run: Show the Canvas requests this would send, without sending any writes
  • --help: Show this message and exit.

cass canvas tabs hide

Hide a navigation tab.

Usage:

$ cass canvas tabs hide [OPTIONS] ID_OR_LABEL

Arguments:

  • ID_OR_LABEL: Tab ID or label [required]

Options:

  • --dry-run: Show the Canvas requests this would send, without sending any writes
  • --help: Show this message and exit.

cass skill

Agent skill — install the Claude Code skill that ships with cass.

Usage:

$ cass skill [OPTIONS] COMMAND [ARGS]...

Options:

  • --help: Show this message and exit.

Commands:

  • install: Copy the cass skill to DIR/cass, asking...

cass skill install

Copy the cass skill to DIR/cass, asking before replacing an old copy.

Usage:

$ cass skill install [OPTIONS]

Options:

  • --dir TEXT: Skills directory to install into (default: ~/.claude/skills)
  • -y, --yes: Replace without asking
  • --help: Show this message and exit.