Skip to main content
skill CX Codex

jupyter-to-marimo — Claude Code skill: what it does, how to install

Guides coding agents to convert Jupyter .ipynb notebooks into marimo .py files and adapt their structure to a reactive dependency graph.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add marimo-team/skills --skill jupyter-to-marimo -a claude-code
Open on GitHub

What jupyter-to-marimo does

The skill establishes a strict migration workflow from Jupyter to marimo. The agent runs uvx marimo convert <notebook.ipynb> -o <notebook.py> before inspecting the source notebook, treating the generated code as a first draft. It reads the raw .ipynb file only if conversion fails.

In marimo, variable references dictate execution order rather than visual cell placement. Because of this, the skill instructs the agent to audit PEP 723 metadata, remove stale package installation cells, and put rendered values in the final expression of each cell. Heavy operations are gated with mo.stop().

Without uvx installed in the environment, the CLI converter cannot run. The agent validates all edits by executing uvx marimo check <notebook.py>.

What it helps with

  • convert a Jupyter .ipynb notebook into a marimo .py file
  • reorganize cells to match marimo variable dependency graph
  • clean up residual package install commands and unnecessary display() calls
  • gate expensive cell executions using mo.stop()
  • validate dependencies in PEP 723 inline script metadata

Example prompts for the agent

  • Convert eda.ipynb into a marimo notebook and review the dependency order
  • Migrate training.ipynb to marimo using --sandbox for PEP 723 metadata
  • Clean up redundant display calls in dashboard.py and run marimo check

How to install jupyter-to-marimo

1Skills CLI (Vercel)

npx skills add marimo-team/skills --skill jupyter-to-marimo -a claude-code

2Manually: put the files in place

~/.claude/skills/jupyter-to-marimo/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/jupyter-to-marimo/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about jupyter-to-marimo

How do I install jupyter-to-marimo in Claude Code?

Run npx skills add marimo-team/skills --skill jupyter-to-marimo -a claude-code in your terminal. The configuration is stored at ~/.claude/skills/jupyter-to-marimo/SKILL.md.

What does jupyter-to-marimo do?

It provides procedural rules for converting Jupyter notebooks to marimo. The agent runs the CLI converter, cleans up artifacts, and restructures cells according to marimo dataflow.

How does cell ordering work after conversion?

Marimo calculates execution order from variable definitions and references, not visual placement. A cell can safely appear above the cell that defines its input arguments.

Source text

SKILL.md · Apache-2.0
---
name: jupyter-to-marimo
description: Convert a Jupyter notebook (.ipynb) to a marimo notebook (.py).
---

# Converting Jupyter Notebooks to Marimo

## Convert first

**Important:** Run the converter before you read the source notebook:

```bash
uvx marimo convert <notebook.ipynb> -o <notebook.py>
```

Read the `.ipynb` file only if conversion fails or the generated file omits required information. Treat the generated file as a first draft.

Run this command after conversion and after substantial edits:

```bash
uvx marimo check <notebook.py>
```

## Review the conversion

- Verify all required packages in the PEP 723 metadata. The converter can miss some package-installation forms.
- Remove residual installation cells and stale installation prose. Add version constraints only when required.
- Use `--sandbox` when a notebook uses PEP 723 metadata.
- Preserve the purpose and intended workflow of the source notebook.
- Arrange cells for presentation. marimo determines execution order from variable definitions and references.
- A cell can appear before a cell that defines its input.
- Merge or split cells when the current boundaries reduce clarity.
- Remove redundant Jupyter artifacts, such as unnecessary `display()` calls.
- Review converted magic commands. Keep valid conversions, and resolve comments that report unsupported magics.
- Put the value to render in the final expression of each cell.
- Keep added UI and helper functions proportional to the notebook purpose.
- Replace interactive input methods that wait for terminal input or do not work in the target interface. Use suitable UI controls, script parameters, or environment values.
- Do not print, log, or save secrets. Consider [EnvConfig](https://koaning.github.io/wigglystuff/reference/env-config.md) for multiple environment values.
- Identify expensive work and external side effects. If work must wait, gate it with `mo.stop()` and a suitable UI element.
- Use a form if the user must submit multiple values together.
- Define downstream values after the gate so the dependency graph defers dependent cells.
- Present useful results with simple native components. Add live refresh only when the intended workflow requires it.
- For ipywidgets, read [`references/widgets.md`](references/widgets.md).
- For LaTeX and MathJax, read [`references/latex.md`](references/latex.md).

## Validate the result

- **Run `marimo check` again** after all edits.
- Run the notebook in each intended mode. Confirm that it has the intended behavior.
- When practical, open the source and converted notebooks side by side and invite the user to review.
- Compare content, controls, outputs, and workflow. Cell order and layout can differ.
- Inspect changed files for secrets, generated data, caches, logs, and other runtime files.

© marimo-team · Apache-2.0 · marimo-team/skills

Similar skills

All skills for Data and databases →

From the same set8

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor