AGENT SKILL

canvas

Canvas LMS integration — fetch enrolled courses and assignments using API token authentication.

License 许可
MIT
所属仓库
ZDStudios/AIOS
最近更新
2026-10-06
Stars
★ 7
Forks
1

01 前言 Front Matter

name
canvas
author
community
license
MIT
version
1.0.0
metadata
{ "hermes": { "tags": [ "Canvas", "LMS", "Education", "Courses", "Assignments" ] } }
platforms
[ "linux", "macos", "windows" ]
description
Canvas LMS integration — fetch enrolled courses and assignments using API token authentication.
prerequisites
{ "env_vars": [ "CANVAS_API_TOKEN", "CANVAS_BASE_URL" ] }

02 资源文件 1

03 SKILL.md 正文

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

Problem Fix
401 Unauthorized Token invalid or expired — regenerate in Canvas Settings
403 Forbidden Token lacks permission for this course
Empty course list Try --enrollment-state active or omit the flag to see all states
Wrong institution Verify CANVAS_BASE_URL matches the URL in your browser
Timeout errors Check network connectivity to your Canvas instance

04 同仓库更多 Skills

ZDStudios
ZDStudios/AIOS

ruflo

Ruflo is a multi-agent orchestration platform for AI coding agents (Claude Code, Cursor, Codex, Copilot, Gemini, Amp, +12 more). Use this skill when the user wants to (1) install/init ruflo in a project, (2) run multi-agent swarms with hierarchical coordination, (3) use ruflo's 314+ MCP tools for memory, routing, hooks, sub-agents, or workflows, (4) check ruflo status/version/doctor health, or (5) discover which of ruflo's 30+ plugins fits their task.

★ 7
ZDStudios
ZDStudios/AIOS

ponytail

Forces the laziest solution that actually works, simplest, shortest, most minimal. Channels a senior dev who has seen everything: question whether the task needs to exist at all (YAGNI), reach for the standard library before custom code, native platform features before dependencies, one line before fifty. Supports intensity levels: lite, full (default), ultra. Use on ANY coding task: writing, adding, refactoring, fixing, reviewing, or designing code, and choosing libraries or dependencies. Also use whenever the user says "ponytail", "be lazy", "lazy mode", "simplest solution", "minimal solution", "yagni", "do less", or "shortest path", or complains about over-engineering, bloat, boilerplate, or unnecessary dependencies. Do NOT use for non-coding requests (general knowledge, prose, translation, summaries, recipes).

★ 7
ZDStudios
ZDStudios/AIOS

ponytail

Lazy senior dev mode for any coding task (write, refactor, fix, review): YAGNI, stdlib first, no unrequested abstractions. Not for non-coding requests.

★ 7
ZDStudios
ZDStudios/AIOS

ponytail-review

Review a diff for over-engineering. Finds what to delete: reinvented stdlib, needless deps, speculative abstractions. One line per finding.

★ 7
ZDStudios
ZDStudios/AIOS

ponytail-help

Quick reference for ponytail's modes, skills, and commands. One-shot display.

★ 7
ZDStudios
ZDStudios/AIOS

ponytail-gain

Show ponytail measured impact as a scoreboard: less code, less cost, more speed, from the benchmark medians. One-shot display.

★ 7