This skill should be used when the user asks to "use marimo", "create a marimo notebook", "debug a marimo notebook", "inspect cells", "understand reactive execution", "fix marimo errors", "convert from jupyter to marimo", or works with marimo reactive Python notebooks.
View on GitHubFebruary 4, 2026
Select agents to install to:
npx add-skill https://github.com/edwinhu/workflows/blob/main/skills/marimo/SKILL.md -a claude-code --skill marimoInstallation paths:
.claude/skills/marimo/## Contents - [Editing and Verification Enforcement](#editing-and-verification-enforcement) - [Key Concepts](#key-concepts) - [Cell Structure](#cell-structure) - [Editing Rules](#editing-rules) - [Core CLI Commands](#core-cli-commands) - [Export Commands](#export-commands) - [Data and Visualization](#data-and-visualization) - [Debugging Workflow](#debugging-workflow) - [Common Issues](#common-issues) - [Additional Resources](#additional-resources) # Marimo Reactive Notebooks Marimo is a reactive Python notebook where cells form a DAG and auto-execute on dependency changes. Notebooks are stored as pure `.py` files. ## Editing and Verification Enforcement ### IRON LAW #1: NEVER MODIFY CELL DECORATORS OR SIGNATURES Only edit code INSIDE `@app.cell` function bodies. This is not negotiable. **NEVER modify:** - Cell decorators (`@app.cell`) - Function signatures (`def _(deps):`) - Return statements structure (trailing commas required) **ALWAYS verify:** - All used variables are in function parameters - All created variables are in return statement - Trailing comma for single returns: `return var,` ### IRON LAW #2: NO EXECUTION CLAIM WITHOUT OUTPUT VERIFICATION Before claiming ANY marimo notebook works: 1. **VALIDATE** syntax and structure: `marimo check notebook.py` 2. **EXECUTE** with outputs: `marimo export ipynb notebook.py -o __marimo__/notebook.ipynb --include-outputs` 3. **VERIFY** using notebook-debug skill's verification checklist 4. **CLAIM** success only after verification passes This is not negotiable. Claiming "notebook works" without executing and inspecting outputs is LYING to the user. ### Rationalization Table - STOP If You Think: | Excuse | Reality | Do Instead | |--------|---------|------------| | "marimo check passed, so it works" | Syntax check ≠ runtime correctness | EXECUTE with --include-outputs and inspect | | "Just a small change, can't break anything" | Reactivity means small changes propagate everywhere | VERIFY with full execution