marimo skills
Skills from the marimo team: the right notebook format, migration from Jupyter and Streamlit, scheduled runs, WASM
- 177 ★ on the repository
- Last commit
- Apache-2.0
Extended access
Why this level
- The skills have the agent run notebooks through `uv run` and `marimo`, which executes your project's code.
Install
- Works in
In your terminal, with SkillFoxx CLI
npx skillfoxx add skills/marimo-skillsDetects the agents on your machine, shows the access level and pins the version.
Other ways to install
Access and checks
How we reviewExtended accessThe tool runs code or makes network calls and only reads external data.
- The skills have the agent run notebooks through `uv run` and `marimo`, which executes your project's code.
This is third-party code. Review the repository files before installing.
What it does
marimo skills is a set of skills from the marimo team for agents that write reactive Python notebooks. The `marimo-notebook` skill sets the format: a notebook is a plain `.py` file, each cell is a function with the `@app.cell` decorator and dependencies are declared in a PEP 723 block. It also explains running through `uv run` and `marimo run`, a script mode for testing and the rule to always show every UI element. Migration is handled by `jupyter-to-marimo` and `streamlit-to-marimo`. The `marimo-batch` skill prepares a notebook for a scheduled run with parameters declared in a Pydantic model. `wasm-compatibility` checks a notebook for WebAssembly compatibility with marimo's lint rules. `implement-paper` turns a research paper fetched through alphaxiv into an interactive notebook together with you. `anywidget` generates widgets and `add-molab-badge` adds a molab badge.
Who it is for. Data analysts and researchers who keep notebooks in marimo and want Claude Code or Codex to write them in the right format.
Good fit when
- The agent writes a marimo notebook but produces Jupyter-style code without `@app.cell` and without a PEP 723 dependency block.
- An old Jupyter notebook or a Streamlit app is moving to marimo.
- You want to explore a paper through an interactive example, and `implement-paper` builds the notebook with you.
- A notebook has to run on a schedule, and `marimo-batch` moves the run parameters into a Pydantic model.
- Before publishing to a WASM sandbox you need a compatibility check: `wasm-compatibility` runs marimo's lint rules.
Not a fit when
- You are staying on Jupyter: the skills are built for the marimo format and its reactive cells.
- You need marimo server setup or deployment: the skills cover writing and migrating notebooks.
- The task is general pandas analytics without a notebook: the marimo format is not in play.
Example request
Convert analysis.ipynb to marimo, split the computations into cells and move the parameters into sliders.Limitations
The README does not list the set's contents, which are visible only in the repository's `skills/` folder. The `marimo-notebook` template shows marimo 0.20.4 and Python 3.14, and projects on older versions change them by hand. The `implement-paper` skill fetches papers through alphaxiv and works when that service is reachable. The examples run notebooks with `uv`, and installing the skills needs Node.js with `npx`. The skills target agents supported by `npx skills`, and the README says nothing about other tools.
How to disable. Remove the skills with the same CLI you installed them with or by hand from the agent's skills directory. The notebooks themselves stay plain `.py` files and keep working.
FAQ
How do I install the skills for Claude Code only?
Run `npx skills add marimo-team/skills --agent claude-code`. For OpenCode change the flag value to `opencode`.
How is a marimo notebook stored differently from Jupyter?
It is a plain `.py` file, while Jupyter stores JSON: cells are functions with `@app.cell`, their inputs and outputs define links, and marimo tracks dependencies itself. The `# /// script` block at the top holds package versions.
How do I tell that a notebook runs as a script?
The check `mo.app_meta().mode == "script"` separates a `uv run` run from an interactive one. The skill advises changing only the data source in that mode and always showing every UI element.
How do I check a notebook for WASM compatibility?
Ask the agent to apply the `wasm-compatibility` skill: it reads the notebook, runs marimo's lint rules and reports the problems it finds.
How do I prepare a notebook for a scheduled run?
The `marimo-batch` skill advises declaring parameters in a Pydantic model with a default and a description for each field. The model then becomes the single source of truth for the batch job.
Discussion
No questions or reviews yet.
Related
SkillsAn agent shares a live marimo notebook session with you, running code in the same kernel and editing cells as you watch
Probabl skills for machine learning experiments: a scikit-learn and skrub pipeline, evaluation, audit and a link to Skore Hub
17 skills for computational biology: RNA-seq, single-cell, protein structure, docking, literature and figures
pymc-modeling is a set of five PyMC Labs skills that teach an agent to build Bayesian models, check priors and read diagnostics.
NVIDIA BioNeMo Agent Toolkit: skills for life sciences
NVIDIA BioNeMo Agent Toolkit
NVIDIA skills for biology and chemistry: the agent predicts protein structures, docks molecules and designs proteins
24 skills for numerical methods and materials science: the agent checks stability, meshes, convergence and cluster runs.
README in short
The README is short: the install command, the agents supported through npx skills and links to explanations of skills in Claude's help. The authors ask for feedback through issues, Discord or Reddit.
README badge
Original SKILL.md
---
name: marimo-notebook
description: Write a marimo notebook in a Python file in the right format.
---
# Notes for marimo Notebooks
marimo uses Python to create notebooks, unlike Jupyter which uses JSON. Here's an example notebook:
```python
# /// script
# dependencies = [
# "marimo",
# "numpy==2.4.3",
# ]
# requires-python = ">=3.14"
# ///
import marimo
__generated_with = "0.20.4"
app = marimo.App(width="medium")
@app.cell
def _():
import marimo as mo
import numpy as np
return mo, np
@app.cell
def _():
print("hello world")
return
@app.cell
def _(np, slider):
np.array([1,2,3]) + slider.value
return
@app.cell
def _(mo):
slider = mo.ui.slider(1, 10, 1, label="number to add")
slider
return (slider,)