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.
npx agentmods add skills/jasp-nerd/courseforge/canvas-course-buildernpx skills add jasp-nerd/courseforge --skill canvas-course-buildergit clone --depth 1 https://github.com/jasp-nerd/courseforgeWrote 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.
[](https://agentmods.dev/skills/jasp-nerd/courseforge/canvas-course-builder)<a href="https://agentmods.dev/skills/jasp-nerd/courseforge/canvas-course-builder"><img src="https://agentmods.dev/badge/skills/jasp-nerd/courseforge/canvas-course-builder.svg" alt="Measured on agentmods" height="20"></a>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.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00109 | $0.00828 |
| Opus 5 | $0.00055 | $0.00414 |
| Sonnet 5 | $0.00022 | $0.00166 |
| Haiku 4.5 | $0.00011 | $0.00083 |
Grade A, and why
canvas-course-builder 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 4d 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.
How it starts
The opening of the file, as written. The whole thing — 44 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Canvas course builder
You turn a teacher's raw material (syllabus, outline, slides, or just an idea) into a real Canvas course. The pipeline is: interview → CourseSpec → validate → preview → approval → build.
1. Gather what you need
Read whatever the teacher attached (syllabus, schedule, handbook). Then ask ONLY about gaps — don't interrogate. The essentials:
- Course title/code and rough weekly structure (how many modules? by week or by topic?)
- Assessment mix: assignments, quizzes, graded discussions? Weighted grading groups?
- Dates: term start, due-date rhythm (e.g. "Sundays 23:59")
- Styling: does their university have a color scheme/branding guide? Ask them to attach it or name the colors; offer a simple banner on every page (
styling.bannerHtml) - Delivery: do they have a Canvas API token configured (MCP tools / env), or do they want a downloadable
.imsccfile to upload manually?
2. Draft the CourseSpec
Write a CourseSpec JSON — the format is fully documented in references/course-spec.md. Rules of thumb:
- One module per week/topic; open each module with a
headeror overviewpage. - Real content, not lorem ipsum: write actual page bodies, assignment instructions, and quiz questions from the source material.
- Quizzes: 5–10 questions mixing types; every graded item gets points and (if dates are known)
dueAt. - Leave everything
published: false(the default) — the teacher reviews before going live.
3. Validate, preview, approve
- Validate: MCP tool
validate_course_spec, or CLInpx -y @courseforge/imscc build spec.json(validates on build). - Show the teacher a compact plan: modules → items with type/points/dates. Wait for explicit approval before creating anything.
4. Build
- Canvas API available (courseforge-mcp connected):
build_course_from_specwith the targetcourse_id(modeimportis default and best). The teacher does NOT need course-creation rights — building into an existing (practice) course is the normal flow. Then runcheck_course_setupand report findings. - No API access:
build_imscc_file(MCP) ornpx -y @courseforge/imscc build spec.json -o course.imscc, then tell the teacher: Canvas → Settings → Import Course Content → Common Cartridge 1.x Package → upload → import all.
What ships with it
1 file beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
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.
- 4d ago First seen · 44 lines · 109 tokens per session scan A 39fa3bb4bb1f
canvas-course-builder is a skill published in the GitHub repository jasp-nerd/courseforge (2 stars, last pushed 1mo ago), licensed Apache-2.0. It adds 109 tokens to every session and 828 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.
Other skills, from other repositories
canvas-admin-roster
Admin skill for walking the Canvas account hierarchy: list accounts and sub-accounts, see courses and users under each, look up which canned reports are available, and enroll or remove users from a specific course — one action at a time. Trigger phrases include "admin roster", "list accounts", "sub accounts", "account…
canvas-office-hours
Educator skill for running office hours through Canvas Scheduler appointment groups. Create and publish sign-up slots for a course, list existing groups and their time slots, and see which students (or student groups) have reserved — one confirmed action at a time. Trigger phrases include "office hours", "appointment…
canvas-peer-review-tracker
Educator skill for tracking peer-review assignments in Canvas. Lists who has been asked to review whom, who has submitted versus who is still pending, and lets you assign new reviewers or send reminder messages — one student at a time. Trigger phrases include "peer reviews", "who hasn't done their peer review", "peer…
canvas-accessibility-sweep
Educator and learning-designer skill for a pre-launch accessibility and broken-link sweep of a Canvas course. Walks the structural accessibility audit and the link audit over a course's pages, assignments, syllabus, announcements, and (optionally) quizzes, then produces a prioritised remediation list you can work…
canvas-course-pulse
Educator skill for tracking week-over-week course health trends in Canvas. Surfaces assignment performance trends, login activity, engagement gaps, and struggling students across a longer time horizon than a daily check. Trigger phrases include "course pulse", "course health", "course trends", "week-over-week…
canvas-discussion-facilitator
Educator skill for browsing, reading, replying to, and creating Canvas discussion topics. Surfaces active threads, unread entries, and announcement activity — then lets you post replies or create new topics without leaving your agent session. Trigger phrases include "discussion board", "course discussions", "reply to…