courseforge CLAUDE.md

Project instructions for CourseForge, a tool that creates courses for Canvas, a learning-management system. They describe a pnpm and Turborepo monorepo, meaning one repository containing multiple related packages, plus its architecture and working rules.

In plain words
What is it for?
Use them when changing CourseForge code, building or testing packages, working with Canvas connections, or adding features that need specifications and tests.
Why use it?
They give coding agents a shared map of the project, including which packages depend on each other, which checks to run, and how to handle tests and secrets.

Instructions file

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 instructions/jasp-nerd/courseforge/claude-md
Clone the repo
git clone --depth 1 https://github.com/jasp-nerd/courseforge
Per session 671 This file is loaded in full into every session.
When invoked 671 The same file — it is already loaded in full.
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.00671 $0.00671
Opus 5 $0.00336 $0.00336
Sonnet 5 $0.00134 $0.00134
Haiku 4.5 $0.00067 $0.00067

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

Security

Grade A, and why

courseforge CLAUDE.md 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.

CLAUDE.md · 25 lines

How it starts

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

CourseForge — agent guide

AI-powered Canvas LMS course creator. pnpm + Turborepo monorepo, TypeScript, Node ≥ 22, ESM-first (dual CJS via tsup), Zod v4, Vitest, Biome.

Commands

  • pnpm build / pnpm test / pnpm lint / pnpm typecheck (all turbo-cached)
  • Single package: pnpm --filter @courseforge/imscc test
  • Single test file: pnpm --filter @courseforge/imscc exec vitest run src/builder.test.ts

Architecture (dependency order)

shared (CourseSpec Zod schemas) → imscc (cartridge build/parse/modify/validate) → canvas-client (REST, zero MCP deps) → mcp (MCP server). skills/ are SKILL.md dirs that call the package CLIs. Never import MCP SDK code outside packages/mcp.

Rules

  • Spec first: features get a docs/specs/<name>.md (contract + test matrix) before implementation.
  • Tests required: imscc changes need round-trip and/or golden-file coverage; client changes need MSW-mocked tests; MCP tools need schema contract + handler tests. Don't weaken snapshots to make tests pass — investigate.
  • Small iterations: don't bulk-generate modules; build one unit, test it, move on.
  • No secrets: Canvas tokens/API keys only via env (.env is gitignored). Never log tokens. Never hardcode a Canvas URL outside tests/fixtures.
  • Untrusted-file hardening (packages/imscc): .imscc files are untrusted input. Guard against zip-slip (reject ../absolute entry paths), zip bombs (entry count + uncompressed-size caps), and XXE (fast-xml-parser with DTD processing off). Never eval or execute cartridge content.
  • Canvas API invariants (packages/canvas-client): always send User-Agent; never send a body on GET (CloudFront 403s); form-encode repeated-key params (module[prerequisite_module_ids][]); paginate via RFC-5988 Link headers with per_page=100; honor 429 Retry-After with backoff; cap concurrency (semaphore, default 5).
  • MCP conventions (packages/mcp): every tool has Zod inputSchema, annotations (readOnlyHint for reads, destructiveHint for all writes, openWorldHint: true), and an audience. Content is created unpublished by default. Long-running jobs (imports/exports) are create → poll → report, never one blocking call.
  • IMSCC ground truth: when a cartridge field is ambiguous, check docs/imscc-format.md first, then Canvas's own exporter (instructure/canvas-lms lib/cc/). The course_settings/canvas_export.txt flag file and cccv1p0 extension XMLs are what make Canvas restore full fidelity — never drop them.

Read the full file on GitHub · 25 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. 2d ago First seen · 25 lines · 671 tokens per session scan A 7965610cd60d

Subscribe to this mod's changes

courseforge CLAUDE.md is an instructions file published in the GitHub repository jasp-nerd/courseforge (2 stars, last pushed 1mo ago), licensed Apache-2.0. It adds 671 tokens to every session, about $0.0034 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 instructions, from other repositories

canvas-lms-mcp AGENTS.md

Instructions for bruchris/canvas-lms-mcp, covering agents.md — canvas lms mcp server, quick start, run with npx (no install needed), or install globally and architecture.

bruchris/canvas-lms-mcp · 1,800 tokens

chip CLAUDE.md

Instructions for 98ping/chip, covering chip, when the assignment turns out to be a quiz and key facts / conventions.

98ping/chip · 1,378 tokens

canvas-lms-mcp CLAUDE.md

Claude Code instructions for sweeden-ttu/canvas-lms-mcp, covering claude.md - canvas lms mcp server development guide, project overview, milestone status, ✅ milestone 2: interactive test suite (complete) and ✅ milestone 3: specification generator (complete).

sweeden-ttu/canvas-lms-mcp · 4,747 tokens

Tutorial_AwesomeModernCPP AGENTS.md

Instructions for Awesome-Embedded-Learning-Studio/Tutorial_AwesomeModernCPP, covering agents.md, 这是什么, 通用 essentials(所有 agent 必读) and 你来做什么?(按场景路由).

Awesome-Embedded-Learning-Studio/Tutorial_AwesomeModernCPP · 778 tokens

open-dictionary AGENTS.md

Instructions for ahpxex/open-dictionary, covering open dictionary rewrite charter, product framing, core workflow, technical framework and 1. raw ingestion layer.

ahpxex/open-dictionary · 1,906 tokens

obsidian-university-workflow CLAUDE.md

Instructions for ABO896/obsidian-university-workflow, covering obsidian university workflow, project structure, rules for working on this project, templater api — always read the docs first and config alignment.

ABO896/obsidian-university-workflow · 810 tokens