Skip to content
Back to skills

Jupyter To Marimo

ASecurity

Convert a Jupyter notebook (.ipynb) to a marimo notebook (.py).

  • 1,124 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added September 19, 2026
ai-agentsbashexpressgit

Works with

  • terminal

Security analysis

A100/100

Pro scans all 3 files and shows the line behind each finding

Scanned September 19, 2026

npx -y skills add autonomous-ai/openharness --skill jupyter-to-marimo --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Jupyter To Marimo?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Jupyter To Marimo
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/autonomous-ai-jupyter-to-marimo/badge)](https://www.skillsdirectory.com/skills/autonomous-ai-jupyter-to-marimo)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
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.

Files in this skill

  • SKILL.md2.7 KB
  • references/latex.md1.7 KB
  • references/widgets.md7.7 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…