imscc-editor

A tool for inspecting, editing, validating, and repairing Canvas LMS course export files in IMS Common Cartridge format. An .imscc file is a ZIP archive containing course structure and content files.

In plain words
What is it for?
Listing course modules, adding or removing pages, quizzes, assignments, or modules, and validating a modified cartridge before importing it into Canvas.
Why use it?
It helps find and fix cross-file consistency problems that can cause a course import into Canvas to fail.

Skill for Claude CodeCodex

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.

agentmods
npx agentmods add skills/jasp-nerd/courseforge/imscc-editor
Any agent
npx skills add jasp-nerd/courseforge --skill imscc-editor
Clone the repo
git clone --depth 1 https://github.com/jasp-nerd/courseforge

Made for: Claude Code, Codex.

Per session 112 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 739 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
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 $0.00112 $0.00739
Opus 5 $0.00056 $0.00369
Sonnet 5 $0.00022 $0.00148
Haiku 4.5 $0.00011 $0.00074

Measured 2d ago against content hash 72cbd561b1cb, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

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 2d 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/imscc-editor/SKILL.md · 54 lines

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.xml stay consistent
  • removing an item removes its resources and files only when nothing else references them

Repair a failing import

  1. validate — every error names the dangling reference or missing file.
  2. Typical causes: an identifierref pointing at a deleted resource, a <file href> missing from the zip, imsmanifest.xml not at the zip root, ids starting with a digit.
  3. Fix via CartridgeEditor (or parse with readCartridge, adjust, re-serialize), re-validate, then re-import.
  4. 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.

Read the full file on GitHub · 54 lines

Files

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.

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. 2d ago First seen · 54 lines · 112 tokens per session scan A 72cbd561b1cb

Subscribe to this mod's changes

imscc-editor is a skill published in the GitHub repository jasp-nerd/courseforge (2 stars, last pushed 1mo ago), licensed Apache-2.0. It adds 112 tokens to every session and 739 once invoked, about $0.0006 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

canvas-reading-annotation

Use for an approved short academic-reading assignment routed by canvas-execute, including in-place PDF annotation, answer blanks, video worksheets, or short reflection drafts. Verify sources and artifacts locally and stop without submitting.

X-isdoingreat/canvas-pilot · 46 tokens

html-ppt-course-module

A first-30-days onboarding module for new hospitality hires — the behaviors, the practice, the checks, and the manager follow-up. Built as a decision-grade professional training deck for new hires, managers.

nexu-io/open-design · 47 tokens

pptx-import

会话里有上传的 .pptx,且用户要把这份幻灯片填进一节已建的课(先 createstage 建课,再 importpptx 把页面追加进这节课堂,保留原版排版;课堂标题以 createstage 为准,PPT 不接管)。随后逐页检查(有 renderscenepreview 就渲染看)并修 bad case,理解整课之后才写旁白/spotlight,最后 TTS。仅在用户要求时插入 quiz 或 interactive。不要重新规划整课。.

THU-MAIC/OpenMAIC · 125 tokens

create-lecture

Create a new Beamer lecture .tex from source papers and materials, with notation consistency checks and the project's preamble wired in. Use when user says "create a lecture on X", "new lecture from these papers", "start a deck on topic Y", "scaffold a new Beamer file", "build me a lecture from these PDFs". Scaffolds…

pedrohcgs/claude-code-my-workflow · 96 tokens

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…

coreyhaines31/makerskills · 192 tokens

training-report

Produce a professional training/workshop report as a .docx file. Use this skill whenever the user mentions "training report", "workshop report", "compte rendu", "compte rendu de formation", "formation report", "debriefing a workshop", "write up a training session", "résumé de formation", or any request to document a…

samber/cc-skills · 179 tokens