Skip to content
Skill

marimo-notebook-dev

by majiayu000

Install

Copy this and paste it into Claude Code, Cursor, or any AI assistant:

I want to install the "marimo-notebook-dev" skill in my project.
Repository: https://github.com/majiayu000/claude-skill-registry

Please read the repo to find the SKILL.md file(s), then:
1. Download them into the correct skills directory (.claude/skills/ or .cursor/skills/)
2. Include any companion files referenced by the skill
3. Confirm what was installed and where

Description

ALWAYS use when: creating/editing marimo notebooks, working with any .py file containing @app.cell decorators, building reactive Python notebooks, doing exploratory data analysis in notebook form, converting Jupyter (.ipynb) to marimo, or when user mentions "marimo", "reactive notebook", or asks for an interactive Python notebook. Covers marimo CLI (edit, run, convert, export), UI components (mo.ui.*), layout functions, SQL integration, caching, state management, and wigglystuff widgets. If a task involves notebooks and Python, invoke this skill first.

Marimo Notebooks

Marimo notebooks are reactive Python notebooks stored as pure .py files. Cells auto-execute when dependencies change, modeled as a directed acyclic graph (DAG).

Reactivity Model

• marimo uses static analysis to build a dependency graph from variable references and definitions • When a cell runs, all cells referencing its defined variables automatically re-run • Execution order follows the dependency graph, not visual cell order • Each global variable must be defined by exactly one cell • marimo does not track object mutations (like list.append())—mutate in the same cell that creates the object, or create new variables

Avoiding Variable Name Conflicts

Each global variable must be defined by exactly one cell. Two strategies to avoid conflicts: • Wrap code in functions (preferred for reusable patterns): `python @app.cell def _(data): def compute_mean_with_new_col(df): temp = df.copy() temp["new_col"] = temp["x"] * 2 return temp.mean() return (compute_mean_with_new_col(data),) ` • Use meaningful, unique variable names: `python @app.cell def _(model1_data): model1_transformed = model1_data.copy() model1_transformed["new_col"] = model1_transformed["x"] * 2 return (model1_transformed,) @app.cell def _(model2_data): model2_transformed = model2_data.copy() model2_transformed["new_col"] = model2_transformed["x"] * 2 return (model2_transformed,) ` Never use underscore prefixes to generate unique variable names. No exceptions.

Notebook Structure

`python import marimo __generated_with = "0.10.0" app = marimo.App(width="medium") @app.cell def _(): import marimo as mo return (mo,) @app.cell def _(mo): mo.md("# Hello") return if __name__ == "__main__": app.run() ` Key rules: • Each cell is a function decorated with @app.cell • Variables shared by returning tuples: return (var1, var2,) • Cells receive variables as parameters: def _(mo, df): • Execution order follows dependency graph, not position • Name cells descriptively for CellTour targeting: def model_specification():

Discussion

0/2000
Loading comments...

Health Signals

MaintenanceCommitted 6d ago
Active
Adoption100+ stars on GitHub
119 ★ · Growing
DocsREADME + description
Well-documented

GitHub Signals

Stars119
Forks20
Issues1
Updated6d ago
View on GitHub
MIT License

My Fox Den

Community Rating

Sign in to rate this booster

Works With

Claude Code
Copilot