Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
nousresearch avatar

Canvas

  • 14 installs
  • 226k repo stars
  • Updated August 5, 2026
  • nousresearch/hermes-agent

Helps with ai & agent building tasks.

About

canvas is a Claude Code skill for ai & agent building. It helps solo builders move faster with AI-assisted development.

  • canvas
  • AI & Agent Building
  • AI-coding skill

Canvas by the numbers

  • 14 all-time installs (skills.sh)
  • Ranked #11,275 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/nousresearch/hermes-agent --skill canvas

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs14
repo stars226k
Last updatedAugust 5, 2026
Repositorynousresearch/hermes-agent

What it does

Helps with ai & agent building tasks.

Files

SKILL.mdMarkdownGitHub ↗

Canvas LMS — Course & Assignment Access

Read-only access to Canvas LMS for listing courses and assignments.

Scripts

  • scripts/canvas_api.py — Python CLI for Canvas API calls

Setup

1. Log in to your Canvas instance in a browser 2. Go to Account → Settings (click your profile icon, then Settings) 3. Scroll to Approved Integrations and click + New Access Token 4. Name the token (e.g., "Hermes Agent"), set an optional expiry, and click Generate Token 5. Copy the token and add to ${HERMES_HOME:-~/.hermes}/.env:

CANVAS_API_TOKEN=your_token_here
CANVAS_BASE_URL=https://yourschool.instructure.com

The base URL is whatever appears in your browser when you're logged into Canvas (no trailing slash).

Usage

CANVAS="python $HERMES_HOME/skills/productivity/canvas/scripts/canvas_api.py"

# List all active courses
$CANVAS list_courses --enrollment-state active

# List all courses (any state)
$CANVAS list_courses

# List assignments for a specific course
$CANVAS list_assignments 12345

# List assignments ordered by due date
$CANVAS list_assignments 12345 --order-by due_at

Output Format

list_courses returns:

[{"id": 12345, "name": "Intro to CS", "course_code": "CS101", "workflow_state": "available", "start_at": "...", "end_at": "..."}]

list_assignments returns:

[{"id": 67890, "name": "Homework 1", "due_at": "2025-02-15T23:59:00Z", "points_possible": 100, "submission_types": ["online_upload"], "html_url": "...", "description": "...", "course_id": 12345}]

Note: Assignment descriptions are truncated to 500 characters. The html_url field links to the full assignment page in Canvas.

API Reference (curl)

# List courses
curl -s -H "Authorization: Bearer $CANVAS_API_TOKEN" \
  "$CANVAS_BASE_URL/api/v1/courses?enrollment_state=active&per_page=10"

# List assignments for a course
curl -s -H "Authorization: Bearer $CANVAS_API_TOKEN" \
  "$CANVAS_BASE_URL/api/v1/courses/COURSE_ID/assignments?per_page=10&order_by=due_at"

Canvas uses Link headers for pagination. The Python script handles pagination automatically.

Rules

  • This skill is read-only — it only fetches data, never modifies courses or assignments
  • On first use, verify auth by running $CANVAS list_courses — if it fails with 401, guide the user through setup
  • Canvas rate-limits to ~700 requests per 10 minutes; check X-Rate-Limit-Remaining header if hitting limits

Troubleshooting

ProblemFix
401 UnauthorizedToken invalid or expired — regenerate in Canvas Settings
403 ForbiddenToken lacks permission for this course
Empty course listTry --enrollment-state active or omit the flag to see all states
Wrong institutionVerify CANVAS_BASE_URL matches the URL in your browser
Timeout errorsCheck network connectivity to your Canvas instance

Related skills

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.