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 hamzabellouch/agent-skills --skill scorm-xapi-interoperabilitygit clone --depth 1 https://github.com/hamzabellouch/agent-skillsWrote 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/hamzabellouch/agent-skills/scorm-xapi-interoperability)<a href="https://agentmods.dev/skills/hamzabellouch/agent-skills/scorm-xapi-interoperability"><img src="https://agentmods.dev/badge/skills/hamzabellouch/agent-skills/scorm-xapi-interoperability/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/hamzabellouch/agent-skills/scorm-xapi-interoperability"><img src="https://agentmods.dev/badge/skills/hamzabellouch/agent-skills/scorm-xapi-interoperability.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.00109 | $0.01204 |
| Opus 5.5 | $0.00044 | $0.00482 |
| Sonnet 5.5 | $0.00022 | $0.00241 |
| Haiku 4.5 | $0.00011 | $0.00120 |
Grade A, and why
scorm-xapi-interoperability scanned grade A with 1 finding 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 17d 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.
Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
const response = await axios.post( How it starts
The opening of the file, as written. The whole thing — 145 lines — stays where its author put it; the contents beside it link to each section on GitHub.
SCORM & xAPI Interoperability Skill Guide
This skill governs standard implementation of interactive e-learning communication protocols, SCORM packaging manifests, and xAPI statement streaming to Learning Record Stores (LRS).
1. E-Learning Standard Architectural Comparison
+-----------------------+---------------------------------------+---------------------------------------+
| Feature | SCORM (1.2 / 2004) | xAPI (Tin Can) / CMI5 |
+-----------------------+---------------------------------------+---------------------------------------+
| Environment | Browser iframe inside LMS only | Anywhere (Web, Mobile, VR, Offline) |
| Communication | Window JavaScript object (`API_1484`) | REST API (HTTP JSON Statements) |
| Data Model | CMI data elements (pass/fail, score) | Actor-Verb-Object + Context Extensions|
| Storage Target | LMS Database | Learning Record Store (LRS) |
+-----------------------+---------------------------------------+---------------------------------------+
2. Production Code Implementations
A. SCORM 1.2 JavaScript Bridge Interface (Client-Side)
class SCORM12Bridge {
constructor() {
this.api = this.findLMSAPI(window);
this.isInitialized = false;
}
findLMSAPI(win) {
let attempts = 0;
while (!win.API && win.parent && win.parent !== win && attempts < 10) {
attempts++;
win = win.parent;
}
return win.API || null;
}
initialize() {
if (!this.api) {
console.warn("[SCORM] No LMS API found. Running in standalone preview mode.");
return false;
}
const result = this.api.LMSInitialize("");
this.isInitialized = result === "true";
return this.isInitialized;
}
setScore(scoreRaw, min = 0, max = 100) {
if (!this.isInitialized) return;
this.api.LMSSetValue("cmi.core.score.raw", String(scoreRaw));
this.api.LMSSetValue("cmi.core.score.min", String(min));
this.api.LMSSetValue("cmi.core.score.max", String(max));
}
completeCourse(passed = true) {
if (!this.isInitialized) return;
const status = passed ? "passed" : "failed";
this.api.LMSSetValue("cmi.core.lesson_status", status);
this.api.LMSCommit("");
}
terminate() {
if (!this.isInitialized) return;
this.api.LMSFinish("");
this.isInitialized = false;
}
}
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.
- 17d ago First seen · 145 lines · 109 tokens per session scan A 257f547b6174
scorm-xapi-interoperability is a skill published in the GitHub repository hamzabellouch/agent-skills (8 stars, last pushed 6d ago), licensed MIT. It adds 109 tokens to every session and 1,204 once invoked, about $0.0004 per session on Opus 5.5. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-29.
Other skills, from other repositories
polya-docs
Phase 6 of the Pólya Heuristic Coder: Technical Documentation via Diátaxis Framework (Tutorials, How-To Guides, Reference, Explanation).
jupyter
Expert Jupyter Notebook assistance covering interactive Python, kernels, ipywidgets, magic commands, and reproducible data science. Use when prototyping data analysis, ML experiments, and interactive visualizations.
adapted-physical-education-specialist
Use when a task needs the judgment of an Adapted Physical Education Specialist — writing a legally-defensible PE present level and annual goal from motor/fitness assessment data, choosing the right test battery and alternate items for a student's mobility profile, recommending a placement step on the PE…
agricultural-sciences-professor
Use when a task needs the judgment of a tenure-track or tenured Agricultural Sciences faculty member at a land-grant university — deciding whether to submit a grant this cycle versus wait, allocating time across the teaching/research/extension appointment split, diagnosing a stalled graduate student or field trial, or…
anthropology-archaeology-professor
Use when a task needs the judgment of a postsecondary Anthropology or Archaeology professor — designing a gen-ed or major-track course, building a tenure or promotion dossier, defending a department against an enrollment-driven program review, mentoring a graduate student's fieldwork grant application, or writing an…
area-ethnic-cultural-studies-professor
Use when a task needs the judgment of an Area, Ethnic, or Cultural Studies Professor — designing a joint-appointment course load across two departments, prepping a tenure or mid-tenure review file for interdisciplinary scholarship, deciding whether a course survives an enrollment or political-pressure threat…