Packages, protocols, and the difference between them.
A SCORM package is a zip a learning management system imports. cmi5 is also a package specification, but the course inside it sends xAPI statements. xAPI on its own is a statement protocol with no packaging — it needs a learning record store to send to. Pick per course; the same content can produce more than one output.
| Standard | Form | Reports through | In this build |
|---|---|---|---|
| SCORM 1.2 | Package (zip) | cmi.core.lesson_status, cmi.core.score.raw | Supported |
| SCORM 2004, 2nd–4th Ed | Package (zip) | cmi.completion_status, cmi.success_status, cmi.score.scaled | Supported |
| AICC | HACP exchange | HTTP form posts, no zip import | In test |
| cmi5 | Package (zip) | xAPI statements against an LRS | Supported |
| xAPI | Statement protocol, not a package | POST /xapi/statements to an LRS | Supported |
SCORM 1.2
The most widely imported package format. Completion and score report through cmi.core.lesson_status and cmi.core.score.raw. Suspend data is capped at 4 KB on strict runtimes, which is the most common reason a 1.2 course loses its bookmark.
SCORM 2004 (2nd–4th Edition)
Separates completion from success: cmi.completion_status, cmi.success_status, and a normalised cmi.score.scaled. Adds sequencing and navigation rules in the manifest and raises the suspend-data ceiling to 64 KB.
AICC
An HTTP form-post exchange (HACP) rather than a zip import. Still requested by some regulated-industry platforms. Currently in test: packages build, and we are completing profile coverage before marking it supported.
cmi5
A package the LMS imports, but the course inside it sends xAPI statements to an LRS. You get packaged distribution with statement-level reporting. Requires an LRS; the built-in one is used by default.
xAPI
A statement protocol, not a package. A plain xAPI course is launched from a link, records interactions, paths, and durations, and posts to /xapi/statements on an LRS. Use it when you want more than a single pass or fail.
Test profiles, not compatibility promises
Each profile is a saved set of runtime behaviours — commit timing, suspend data ceiling, how the platform handles a missing score — that the test suite can replay your package against. A passing profile means the package behaved correctly under those conditions, not that a given vendor has certified it.
- Moodle 4.x
- Cornerstone
- Docebo
- SuccessFactors
- Workday Learning
- TalentLMS
- Canvas
- Absorb
- Open edX
Start with one file.
Upload something you already have and see it as a package, with the conformance report and the runtime log alongside it.
→ upload handbook.pdf parsing … 14 sections building manifest … validating … 0 errors, 2 notes ✓ handbook-scorm2004.zip ✓ preview link ready