Development
#api
canvas
Fetch Canvas LMS courses and assignments via API token.
DeepseekModel
Curated skill
Quality Excellent · 90
v1.0.0
Get
https://deepseekmodel.com/api/download.php?id=nousresearch-hermes-agent-optional-skills-productivity-canvas-skill-md&format=skill
Download .skill
Standard format with system_prompt and model_config, ready for any agent framework
The actual content of the system_prompt field in the .skill file.
name canvas description Fetch Canvas LMS courses and assignments via API token. version 1.0.0 author community license MIT platforms ["linux","macos","windows"] prerequisites {"env_vars":["CANVAS_API_TOKEN","CANVAS_BASE_URL"]} metadata {"hermes":{"tags":["Canvas","LMS","Education","Courses","Assignments"]}} 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 Log in to your Canvas instance in a browser Go to Account → Settings (click your profile icon, then Settings) Scroll to Approved Integrations and click + New Access Token Name the token (e.g., "Hermes Agent"), set an optional expiry, and click Generate Token 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
Keywords that activate this skill. Click one to copy it.
This skill does not provide trigger words.
The downloaded .skill package contains the following fields.
| Field | Description |
|---|---|
| format | Format tag (skill/v1) |
| skill_id | Unique skill ID |
| name | Skill name |
| version | Version |
| description | Description |
| category | Categories (array) |
| trigger_words | Trigger words |
| tags | Tags |
| source | Source |
| source_url | Source URL (this page) |
| exported_at | Exported at (set per download) |
| system_prompt | System prompt body |
| model_config | Model config: provider / model / temperature / max_tokens / top_p |
| examples | Examples |
| install_guide | Import guide for Coze / Dify / Claude / custom frameworks |
The same skill can be exported in different platform formats.