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 skills add jasp-nerd/courseforge --skill imscc-editorgit 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/imscc-editor)<a href="https://agentmods.dev/skills/jasp-nerd/courseforge/imscc-editor"><img src="https://agentmods.dev/badge/skills/jasp-nerd/courseforge/imscc-editor/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.
<a href="https://agentmods.dev/skills/jasp-nerd/courseforge/imscc-editor"><img src="https://agentmods.dev/badge/skills/jasp-nerd/courseforge/imscc-editor.svg" alt="Reviewed on agentmods" width="80" 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.1 | $0.00112 | $0.00739 |
| Opus 5.5 | $0.00045 | $0.00296 |
| Sonnet 5.5 | $0.00022 | $0.00148 |
| Haiku 4.5 | $0.00011 | $0.00074 |
Grade A, and why
imscc-editor 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 1mo 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 — 54 lines — stays where its author put it; the contents beside it link to each section on GitHub.
IMSCC editor
A .imscc is a ZIP with imsmanifest.xml plus Canvas extension XMLs. The @courseforge/imscc library understands both; the full format anatomy is in references/imscc-format.md — consult it whenever a field is ambiguous.
Inspect
npx -y @courseforge/imscc inspect course.imscc # structure as JSON
npx -y @courseforge/imscc validate course.imscc # cross-reference invariants (the #1 import-failure cause)
Modify (export → modify → re-import loop)
Use the library in a small Node script (pnpm add @courseforge/imscc or run inside the CourseForge repo):
import { readFileSync, writeFileSync } from 'node:fs';
import { CartridgeEditor, validateCartridge } from '@courseforge/imscc';
const ed = CartridgeEditor.fromBytes(readFileSync('export.imscc'));
console.log(ed.listModules());
ed.addItem('Week 1', { type: 'page', title: 'Office hours', body: '<p>Tue 14:00</p>' });
ed.addModule('Week 9 — Review');
ed.removeItem('Week 2', 'Old quiz');
const bytes = ed.toBytes();
console.log(validateCartridge(bytes)); // must have zero errors before shipping
writeFileSync('export-modified.imscc', bytes);
Item inputs are CourseSpec module items (see the canvas-course-builder skill's course-spec reference): page, assignment, quiz (+questions), discussion, link, file, header.
Key rules the editor enforces for you — don't work around them by hand-editing XML:
- identifiers stay stable across edits, so Canvas updates instead of duplicating on re-import
- manifest organization ↔
module_meta.xmlstay consistent - removing an item removes its resources and files only when nothing else references them
Repair a failing import
validate— every error names the dangling reference or missing file.- Typical causes: an
identifierrefpointing at a deleted resource, a<file href>missing from the zip,imsmanifest.xmlnot at the zip root, ids starting with a digit. - Fix via
CartridgeEditor(or parse withreadCartridge, adjust, re-serialize), re-validate, then re-import. - If Canvas imported but content is missing: check the migration issues (MCP tool
list_migration_issues) and whether the cartridge lacked the Canvas flag file (course_settings/canvas_export.txt) — without it Canvas ignores all module/assignment settings.
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.
- 1mo ago First seen · 54 lines · 112 tokens per session scan A 72cbd561b1cb
imscc-editor is a skill published in the GitHub repository jasp-nerd/courseforge (3 stars, last pushed 3mo ago), licensed Apache-2.0. It adds 112 tokens to every session and 739 once invoked, about $0.0004 per session on Opus 5.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
stage-dsl
The map for reading and editing an OpenMAIC stage document with readstage, patchstage, and grepstage. Load it before patching a structure you have not patched before, when patchstage rejects an operation, or whenever the path from a stage, outline, scene, content object, or action to the field you need is uncertain.…
pptx-import
A method for adding an uploaded PowerPoint presentation to an existing classroom as extra pages while keeping the slides' original layout. PowerPoint is Microsoft's presentation file format.
annotate-paper
Read the open paper and write study annotations into its PDF with zotero-cli - a context box on the title, a four-part summary on the abstract, role-coded abstract highlights, one box per figure panel with a teaching comment, colour-coded body highlights, and a reading note. Use when asked to "annotate", "read and…
dev-camp-deck
Creates a professional PowerPoint presentation about a Copilot Dev Camp lab or topic. Researches Microsoft Learn documentation, organizes content into a slide structure, and generates a polished deck with speaker notes. Use when user asks to "create a presentation on", "make a deck about", "build a slideshow for"…
dedao-dl
A command-line downloader for purchased courses, audiobooks, and ebooks from 得到 (dedao.cn), a Chinese learning platform. It can save audio and documents such as MP3, PDF, Markdown, HTML, and EPUB files.
read-book
When you want to read and extract structured notes from a book — PDF, EPUB, MOBI, markdown, .txt, pasted text, or URL to a public-domain work. Reads in chunks (by chapter when a TOC exists, by 50-page blocks otherwise), extracts per-chapter TL;DR + key concepts + quotes + action items + frameworks, and offers to…