add-molab-badge
Add "Open in molab" badge(s) linking to marimo notebooks. Works with READMEs, docs, websites, or any markdown/HTML target.
Check if a marimo notebook is compatible with WebAssembly (WASM) and report any issues.
$ npx -y skills add marimo-team/skills --skill wasm-compatibility --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/wasm-compatibilityContext preview
The summary Claude sees to decide when to auto-load this skill.
Check if a marimo notebook is compatible with WebAssembly (WASM) and report any issues.
name: wasm-compatibility description: Check if a marimo notebook is compatible with WebAssembly (WASM) and report any issues.
Check whether a marimo notebook can run in a WebAssembly (WASM) environment — the marimo playground, community cloud, or exported WASM HTML.
Read the target notebook file. If the user doesn't specify one, ask which notebook to check.
marimo ships three lint rules that catch most WASM incompatibilities automatically. Run them first, and build the report from their output instead of re-deriving these checks by hand:
marimo check <notebook> --select MW --format json
**Caveat:** MW001 flags import statements (`from multiprocessing import Lock`, `import multiprocessing.synchronize`), not later attribute access. A bare `import multiprocessing` followed by `multiprocessing.Lock()` deeper in the code can slip through. For notebooks with concurrency code, skim for this by hand too.
**Caveat:** a clean MW003 result does not by itself mean a package is safe to use in the browser. If a notebook marks a package `sys_platform != 'emscripten'`, MW003 skips it entirely — that only tells you the package will not be *installed* in WASM, not that the notebook is free to use it. Check whether the notebook also has `cache_cells = true` and was exported with `--execute` (see step 4). If so, the excluded package can still be used, through caching. If not, any code path that imports or touches the excluded package will fail in the browser, and MW003 will not have warned about it.
These stay manual, agent-driven checks:
Output a clear, actionable report:
**Compatibility: PASS / FAIL / WARN**
**Lint findings** — paste the diagnostics from step 2 verbatim (file, line, code, message).
**Manual findings** — list anything from step 3, with the cell or line and a suggested fix.
**Recommendations** — for FAIL/WARN notebooks, suggest concrete fixes:
For a package with no WASM build, there is no drop-in replacement. Two escape hatches exist, and they solve different problems — check which one the notebook actually needs:
1. **Precompute every reachable result and cache it.** Exclude the package from WASM with a `sys_platform != 'emscripten'` marker. marimo then runs the real computation once, server-side, and bundles the result into the export:
# /// script # dependencies = [ # "marimo", # "torch; sys_platform != 'emscripten'", # ] # # [tool.marimo.runtime] # cache_cells = true # ///
marimo export html-wasm notebook.py -o output_dir --execute
This covers a single static result (a plot, a one-off computation) directly. For a small, enumerable set of results — a dropdown or slider over a fixed list of options — decorate the computation with `@mo.persistent_ca
This repository contains skills for use with marimo. Install these skills with: The benefit of npx skills is that it supports many agents. So you can do things like: We welcome feedback: issues and pull requests are welcome.
Add "Open in molab" badge(s) linking to marimo notebooks. Works with READMEs, docs, websites, or any markdown/HTML target.
Make a demo of a research paper in a marimo notebook fully automatically without extra user input.
Implement a research paper in a marimo notebook fully automatically without extra user input.
Implement a research paper as an interactive marimo notebook together with the user. Start by understanding what the user wants to explore, fetch the paper via…
Convert a Jupyter notebook (.ipynb) to a marimo notebook (.py).