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
Skill

Extended access

Why this level

  • The skills have the agent run notebooks through `uv run` and `marimo`, which executes your project's code.
All reasons and checks

marimo-team/skills

Install

In your terminal, with SkillFoxx CLI

npx skillfoxx add skills/marimo-skills

Detects the agents on your machine, shows the access level and pins the version.

Other ways to install

Access and checks

How we review

Extended 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.

Skills
Official

An agent shares a live marimo notebook session with you, running code in the same kernel and editing cells as you watch

SkillBroad access432Repository stars
Official

Probabl skills for machine learning experiments: a scikit-learn and skrub pipeline, evaluation, audit and a link to Skore Hub

PluginMinimal access145Repository stars

17 skills for computational biology: RNA-seq, single-cell, protein structure, docking, literature and figures

SkillExtended access75Repository stars

pymc-modeling is a set of five PyMC Labs skills that teach an agent to build Bayesian models, check priors and read diagnostics.

SkillMinimal access95Repository stars

24 skills for numerical methods and materials science: the agent checks stability, meshes, convergence and cluster runs.

PluginExtended access83Repository stars

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,)

Report a problem