canvas-office-hours

canvas-office-hours is a skill for Claude Code from bruchris/canvas-lms-mcp. It costs 103 tokens per session (1,994 once invoked), scanned A, original, MIT.

A Canvas Scheduler skill for managing course office-hour appointment groups. It can list groups and reservations, create or publish sign-up slots, update groups, and delete them; students reserve individual slots themselves.

In plain words
What is it for?
Use it to review existing office hours, create and publish new time slots, update or remove groups, and see which students or student groups have reserved.
Why use it?
Office-hour availability can be difficult to organise and check across a course. This keeps the appointment groups and their sign-up status in one workflow.

Skill for Claude Code

Written for Claude Code: shipped in a Claude Code plugin.

Part of the canvas-lms-mcp plugin — 16 skills, 5 agents, 2 MCP servers shipped together

Good fit Use it to review existing office hours, create and publish new time slots, update or remove groups, and see which students or student groups have reserved.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/bruchris/canvas-lms-mcp/canvas-office-hours
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Any agent
npx skills add bruchris/canvas-lms-mcp --skill canvas-office-hours
Clone the repo
git clone --depth 1 https://github.com/bruchris/canvas-lms-mcp

Made for: Claude Code.

Or install canvas-lms-mcp, the plugin that ships this one along with the rest of its 16 skills, 5 agents, 2 MCP servers.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for canvas-office-hours

README.md
[![agentmods](https://agentmods.dev/badge/skills/bruchris/canvas-lms-mcp/canvas-office-hours/github.svg)](https://agentmods.dev/skills/bruchris/canvas-lms-mcp/canvas-office-hours)
Your own site
<a href="https://agentmods.dev/skills/bruchris/canvas-lms-mcp/canvas-office-hours"><img src="https://agentmods.dev/badge/skills/bruchris/canvas-lms-mcp/canvas-office-hours/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for canvas-office-hours

Your own site · 80×15
<a href="https://agentmods.dev/skills/bruchris/canvas-lms-mcp/canvas-office-hours"><img src="https://agentmods.dev/badge/skills/bruchris/canvas-lms-mcp/canvas-office-hours.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 103 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,994 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00103 $0.01994
Opus 5 $0.00051 $0.00997
Sonnet 5 $0.00021 $0.00399
Haiku 4.5 $0.00010 $0.00199

Measured 12d ago against content hash 98a97e3af118, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-12, from the pricing page.

Security

Grade A, and why

canvas-office-hours scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 12d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

skills/canvas-office-hours/SKILL.md · 125 lines

How it starts

The opening of the file, as written. The whole thing — 125 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Canvas Office Hours

Manage office hours as Canvas Scheduler appointment groups: review the groups you already run, create new sign-up slots for a course, publish a draft so students can see it, and check who has reserved. Read paths are free; every write (create, update/publish, delete) is gated by an explicit per-action confirmation, clearly separated from the read paths.

What this skill can and cannot do

canvas-lms-mcp exposes eight appointment-group tools. This skill covers the full surface:

  • Read: list_appointment_groups, get_appointment_group, list_appointment_group_users, list_appointment_group_groups, next_appointment.
  • Write (confirmed per action): create_appointment_group, update_appointment_group, delete_appointment_group.

It does NOT reserve slots on a student's behalf. Reservations live in the Canvas Calendar Events API and were explicitly out of scope for this domain — there is no reserve_appointment tool. Students sign up themselves via the Canvas Calendar ("Find Appointment"). Do not promise to book, cancel, or move an individual student's reservation; you can only manage the group and read who has reserved.

Prerequisites

  • Canvas MCP server must be running and connected.
  • Instructor or TA role on the target course is required for the write tools and for list_appointment_group_users / list_appointment_group_groups. list_appointment_groups and get_appointment_group are available more broadly, but managing groups requires teaching permissions.
  • Student names appear when you list who signed up — only run those steps in a private or educator-only session.

Steps

1. Identify the Course

Ask the educator which course the office hours are for. You need its Canvas ID to build the context_code (format: course_<id>, e.g. course_123). If unclear, call list_courses and let them pick.

2. Review Existing Appointment Groups

Call list_appointment_groups with scope=manageable to list the groups the educator manages (use scope=reservable instead to see groups a user could sign up for). Present each group's title, status (published vs. draft), and slot/participant counts.

Read the full file on GitHub · 125 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 12d ago First seen · 125 lines · 103 tokens per session scan A 98a97e3af118

Subscribe to this mod's changes

canvas-office-hours is a skill published in the GitHub repository bruchris/canvas-lms-mcp (5 stars, last pushed today), licensed MIT. It adds 103 tokens to every session and 1,994 once invoked, about $0.0005 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.

Related

Other skills, from other repositories

education-expert

Expert-level education technology, learning management systems, and ed-tech platforms. Use when the user mentions edtech, lms, e learning, or assessment, or when the task involves Educational Technology or Standards.

personamanagmentlayer/pcl · 45 tokens

emil-design-eng

This skill encodes Emil Kowalski's philosophy on UI polish, component design, animation decisions, and the invisible details that make software feel great.

classroomio/classroomio · 35 tokens

humanizer

Remove signs of AI-generated writing from text. Use when editing or reviewing text to make it sound more natural and human-written. Based on Wikipedia's comprehensive "Signs of AI writing" guide. Detects and fixes patterns including: inflated symbolism, promotional language, superficial -ing analyses, vague…

classroomio/classroomio · 93 tokens

apple-design

Apple's approach to interface design and fluid, physical motion, translated for the web. Use when building or reviewing gesture-driven UI, spring animations, drag/swipe/sheet interactions, momentum and interruptible transitions, translucent materials and depth, typography (optical sizing, tracking, leading)…

classroomio/classroomio · 80 tokens

add-landing-template

Add a new org landing-page template to the ClassroomIO monorepo. Use when the user asks to "create/add a new landing template", "add a new template like X to the org landing pages", "build a new theme for the org landing page", or hands over a design reference (image, URL, prototype) for a new landing visual style.

classroomio/classroomio · 78 tokens

animation-vocabulary

Reverse-lookup glossary that turns a vague description of a web animation or motion effect into its exact term ("the bouncy thing when a popover opens" → Pop in; "the iOS rubber-band scroll" → Rubber-banding). Use when the user asks "what's it called when…", or describes a motion effect without knowing its name and…

classroomio/classroomio · 98 tokens