method-marimo skill
Creates, edits, validates, and exports reactive Python notebooks using text-native .py files and UI widgets.
- GitHub stars
- 6
- Files
- 1
- Last commit
- Oct 31, 2026
- License
- MIT
- Allowed tools
- —
What does the method-marimo skill do?
method-marimo is an agent skill. Creates, edits, validates, and exports reactive Python notebooks using text-native .py files and UI widgets.
Summary generated from the skill's SKILL.md.
About the method-marimo skill
Developing reactive Python research notebooks with text-native files is what this skill enables. It allows developers to create, edit, validate, and export marimo notebooks using .py files that incorporate UI widgets and PEP 723 dependency metadata. An agent should load this skill when a project contains marimo imports or existing .py notebooks, or when a user specifically requests a reactive research environment.
The workflow involves generating files with explicit @app.cell functions and managing data through declared restricted roots or verified connections. It relies on the marimo check command to validate notebooks and the marimo export command to produce files after successful validation. To maintain high standards, the skill works alongside method-notebook-standards, method-data-qa, method-plan, and method-review to ensure analytical integrity. It distinguishes itself by treating notebooks as pure, reactive code rather than opaque JSON files, ensuring that dependencies and cell inputs remain visible and reproducible.
What an agent can do with it
- 1Validate notebook integrityRun checks on an existing marimo notebook to identify dependency or execution order mistakes.
- 2Modify existing marimo filesPerform bounded edits on a marimo .py notebook while preserving the existing app structure.
Written from the skill's SKILL.md. Every use case is checked against a quote from it.
How to install the method-marimo skill
Each command copies the skill folder into the client's skills directory. Restart the client or start a new session to load it.Install the method-marimo skill in Plugin
/plugin marketplace add sajor2000/methodsmith /plugin install methodsmith@methodsmith
Install the method-marimo skill in Claude Code
~/.claude/skills/method-marimo/SKILL.md
$ npx degit sajor2000/methodsmith/plugins/methodsmith/skills/method-marimo ~/.claude/skills/method-marimoInstall the method-marimo skill in Claude Code (project)
.claude/skills/method-marimo/SKILL.md
$ npx degit sajor2000/methodsmith/plugins/methodsmith/skills/method-marimo .claude/skills/method-marimoInstall the method-marimo skill in Codex
~/.agents/skills/method-marimo/SKILL.md
$ npx degit sajor2000/methodsmith/plugins/methodsmith/skills/method-marimo ~/.agents/skills/method-marimoInstall the method-marimo skill in Gemini CLI
~/.gemini/skills/method-marimo/SKILL.md
$ npx degit sajor2000/methodsmith/plugins/methodsmith/skills/method-marimo ~/.gemini/skills/method-marimoInstall the method-marimo skill in Claude.ai
npx degit sajor2000/methodsmith/plugins/methodsmith/skills/method-marimo method-marimo && zip -r method-marimo.zip method-marimo # claude.ai → Customize → Skills → + → Create skill → Upload a skill → method-marimo.zip
SKILL.md
View on GitHubMarimo Research Notebooks
Skill Value
- Problem it solves: Reactive notebooks can hide dependency, mutation, and execution-order mistakes when treated like plain Python scripts or Jupyter JSON.
- Use when: The project has
import marimo, a Marimo.pynotebook, or the user asks for a reactive Python research notebook. - Output: A text-native Marimo notebook or bounded edit, with declared dependencies, validation results, and reproducibility notes.
- Ask only if: The intended output, data source, or new-versus-existing-notebook boundary is unclear.
- Do not do: Do not silently convert a Jupyter notebook, fabricate unavailable data, or use broad exception handling to hide a failed cell.
Workflow
- Inspect existing project evidence. Reuse the project's Marimo and Python environment when present; otherwise state the proposed dependency method before creating files.
- Load the
method-notebook-standardsskill before creating or materially extending a notebook. - For a new notebook, create a text-native
.pyfile withimport marimo as mo,app = mo.App(...), and explicit@app.cellfunctions. - Keep data loading, transformation, modeling, and reporting in separate cells with clear returned values. Let dependencies be visible through cell inputs and outputs.
- Treat widgets as user inputs, not hidden defaults. In edit, interactive-run, and script modes, resolve the declared restricted data root for file-backed data (or the registered verified data connection) before reading, creating, transforming, validating, or rendering analytical data or output. Synthetic data are allowed only when the user explicitly requests a clearly labeled test or demonstration; do not replace a failed production source or produce a synthetic study result. If the real source or its QA provenance is unavailable, do not run analytical code and do not persist output. An explicitly requested synthetic test/demo may persist only as a clearly labeled non-study artifact with synthetic fixture or generator provenance, never in a study-output location.
- Keep mutable state out of cross-cell objects when a pure derived value can represent the same result.
- Run
marimo check <notebook.py>through the project runner when available, then execute the notebook's non-interactive path or report the validation gap. Forexport, runmarimo exportthrough the project runner only after validation passes, and apply the persisted-output rules below to the exported file. - Load the
method-data-qa,method-plan, andmethod-reviewskills for analytical work inside the notebook; Marimo structure does not waive the data or method gates.
Existing notebooks
- For a bounded edit to an existing Marimo
.pynotebook, preserve the app structure and modify only the requested cells. - Load the
method-notebook-editskill when the target is Jupyter.ipynb; do not treat JSON notebook cells as Marimo functions. - Keep PEP 723 dependency metadata, if present, synchronized with imports. Do not pin or install packages unless the user asks.
Fail-loud rules
- Do not wrap ordinary reactive dependencies in broad
try/exceptblocks. - Do not gate output rendering behind unnecessary conditional cells.
- Surface missing files, invalid schemas, and failed assertions directly with the failed boundary and recovery options.
- Persisted study output must identify the real source location or registered extract ID/hash and the validation evidence used; synthetic test/demo output must instead identify its synthetic fixture or generator and remain clearly labeled non-study.
Files in this skill
1method-marimo skill questions
How do I install the method-marimo skill in Claude Code?
Run npx degit sajor2000/methodsmith/plugins/methodsmith/skills/method-marimo ~/.claude/skills/method-marimo. Claude Code loads skills from ~/.claude/skills (all projects) or .claude/skills (one project) and uses a skill when its description matches the task.
Which clients can use the method-marimo skill?
Any client that reads the Agent Skills format: Claude Code, Codex, Gemini CLI and claude.ai (upload as a ZIP). Scripts in the skill run only where the client allows code execution.
How should I create a new marimo notebook?
Create a text-native .py file containing 'import marimo as mo', 'app = mo.App(...)', and explicit '@app.cell' functions.
Can I use this skill to edit Jupyter notebooks?
No, you should use the method-notebook-edit skill for Jupyter .ipynb files instead of treating them as Marimo functions.
When is it safe to export a marimo notebook?
You should only run 'marimo export' through the project runner after the notebook has passed validation.