Author, execute, and deliver reproducible analysis notebooks in marimo (default) or Jupyter, with all cells run end-to-end and figures embedded.

MITAuto-check passedData & Analytics

Install Notebooks

skills CLI
$ npx skills add majiayu000/claude-skill-registry --skill notebooks -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install majiayu000/claude-skill-registry notebooks --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/majiayu000/claude-skill-registry.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/bash/notebooks .claude/skills/notebooks && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
notebooks
GitHub stars
666
Used in
1 other repo
Token cost
~2.9k tokens
SKILL.md length
1,278 words
Files
2
Skills in repo
1,273
Repo updated
First seen
Licence
MIT

At a glance

Author, execute, and deliver reproducible analysis notebooks in marimo (default) or Jupyter, with all cells run end-to-end and figures embedded.

  • Works in 9 steps: Pick the format. → Outline before coding. Write the… → Keep marimo cells clean. These are hard… → …
  • Tasks that involve Jupyter notebooks
  • SKILL.md covers Instructions, Quick Reference, Input Requirements and Output, plus 3 more sections
  • Calls uvx, uv and python

What it does

Notebooks is an agent skill from majiayu000/claude-skill-registry. Author, execute, and deliver reproducible analysis notebooks in marimo (default) or Jupyter, with all cells run end-to-end and figures embedded. Also converts between marimo and Jupyter on request.

Its SKILL.md is about 2.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 1 other file (for example `metadata.json`).

It sits in Data & Analytics, covering Jupyter notebooks. It works with Jupyter, marimo and Bash. The repository describes itself as: Searchable Claude Code skills catalog with source-linked guides and generated registry artifacts. The licence is MIT.

When your agent uses it

  • Tasks that involve Jupyter notebooks

Example prompts

  • “/notebooks”

Requirements

  • Python 3

Workflow steps

9 steps, taken from the first numbered list in SKILL.md.

  1. Pick the format.
  2. Outline before coding. Write the notebook plan (purpose, data sources, analysis steps, expected outputs/plots) as the first markdown cell…
  3. Keep marimo cells clean. These are hard rules for every .py notebook
  4. Set up the kernel and dependencies.
  5. Load data with project-relative paths. Prefer DuckDB for TSV/Parquet (duckdb.read_csv, duckdb.read_parquet). Avoid absolute paths and ~…
  6. Run checks and all cells to generate plots. Execute the notebook headlessly on a fresh kernel before delivery
  7. Evaluate the plots, then refine. This step is required, not optional. After the run-all execution
  8. Deliver pre-executed notebooks. The artifact handed back to the user must
  9. Convert between marimo and Jupyter when the user asks for it

What it can do on your machine

Read from SKILL.md and the folder at commit 2d14a69. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • uvx
    • uv
    • python
    • jupyter

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use uvx and uv, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Notebooks loads about 2.9k tokens when it runs. Until then it costs about 52 tokens; SKILL.md has 1,278 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~52
When it runs · the whole SKILL.md, loaded when a task matches
~2.9k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from majiayu000/claude-skill-registry at commit 2d14a69, republished under its MIT licence (© majiayu000). 1,278 words, ~2,916 tokens.

Download SKILL.mdSave it as .claude/skills/notebooks/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
notebooks
description
Author, execute, and deliver reproducible analysis notebooks in marimo (default) or Jupyter, with all cells run end-to-end and figures embedded. Also converts between marimo and Jupyter on request.

Notebooks

A single skill for authoring, validating, and delivering reproducible analysis notebooks. Marimo is the default format; Jupyter is supported for existing .ipynb files and when a downstream tool requires JSON. Conversion between the two formats is part of this skill.

A notebook is not "done" until it has been executed end-to-end on a fresh kernel and every figure is embedded in the delivered file.

Instructions

  1. Pick the format.

    • New notebook: write a marimo .py notebook. Use the canonical cell layout (one concept per cell, final expression renders, no if guards around outputs, no try/except for control flow).
    • Existing .ipynb to extend or polish: keep it as Jupyter unless the user asks to convert.
    • Conversion: see "Convert between marimo and Jupyter" below.
  2. Outline before coding. Write the notebook plan (purpose, data sources, analysis steps, expected outputs/plots) as the first markdown cell, then implement against that plan.

  3. Keep marimo cells clean. These are hard rules for every .py notebook:

    • Markdown cells use one plain triple-quoted string: mo.md(r"""...""") or mo.md(f"""...""") only when interpolation is required. Put the prose directly inside the string; never paste quoted string fragments such as " ... " lines inside the markdown body.
    • Do not leave empty generated cells, whitespace-only cells, or @app.cell def _(): return placeholders. Remove them before final verification.
    • Do not accept a marimo "fix" prompt blindly. If one is accepted during interactive editing, inspect the diff immediately and remove unintended PEP 723/header/cell churn.
  4. Set up the kernel and dependencies.

    • Marimo. Pin dependencies in the PEP 723 script header at the top of the .py file:
      python
      # /// script
      # requires-python = ">=3.12"
      # dependencies = [
      #     "marimo",
      #     "polars",
      #     "duckdb",
      #     "matplotlib",
      #     # ... add every import used in the notebook
      # ]
      # ///
      Run with uv run marimo run <notebook.py> (uv reads the header and resolves the env automatically) or with marimo edit --sandbox <notebook.py> for interactive work.
    • Jupyter. Register a named ipykernel for the project's pixi env before the first execution and pin the kernel in the notebook metadata. The kernel name is mandatory — the generic python3 kernel leaks the system interpreter:
      bash
      pixi run python -m ipykernel install --user --name <project> --display-name "<project> (pixi)"
      Then in <notebook>.ipynb confirm:
      json
      "kernelspec": {"name": "<project>", "display_name": "<project> (pixi)"}
      Add every import used in the notebook to pixi.toml (or the project's requirements.txt / environment.yml) so the kernel can resolve it from a clean install.
  5. Load data with project-relative paths. Prefer DuckDB for TSV/Parquet (duckdb.read_csv, duckdb.read_parquet). Avoid absolute paths and ~. Avoid hidden state from the runtime working directory.

  6. Run checks and all cells to generate plots. Execute the notebook headlessly on a fresh kernel before delivery:

    • Marimo: run uvx marimo check <notebook.py> before export and fix every reported issue or warning, including empty-cells and markdown formatting. Then run uv run marimo export ipynb <notebook.py> -o <notebook.executed.ipynb> or uv run marimo run <notebook.py> for a non-interactive smoke run; for a deterministic HTML artifact, uv run marimo export html <notebook.py> -o <notebook.html>. Run uvx marimo check <notebook.py> again after the final edit/export cycle.
    • Jupyter: python scripts/execute_notebook.py <notebook.ipynb> (writes <notebook>.executed.ipynb) or pixi run jupyter nbconvert --to notebook --execute --inplace <notebook.ipynb>.
  7. Evaluate the plots, then refine. This step is required, not optional. After the run-all execution:

    • Open the executed notebook (or exported HTML) and visually inspect every figure.
    • Check for: empty axes, mis-scaled axes (log when linear was intended or vice versa), missing labels/legends, overlapping ticks, illegible font sizes at target output size, ambiguous palettes, colorbars without units, NaN-driven gaps, axis ranges clipping data, broken layouts.
    • If a figure is wrong or unclear, edit the source cell and re-run end-to-end. Repeat until each figure communicates what the surrounding markdown says it communicates.
    • Record what changed between revisions in a brief "Figure revision log" markdown cell or in the run log.
  8. Deliver pre-executed notebooks. The artifact handed back to the user must:

    • Have every cell executed against the registered kernel.
    • Embed every figure (PNG / SVG cell outputs) directly in the .ipynb (or in the marimo HTML export).
    • Be reproducible from a clean clone: a new environment built from the PEP 723 header (marimo) or pixi install + jupyter nbconvert --to notebook --execute (Jupyter) must reproduce the same notebook end-to-end.
  9. Convert between marimo and Jupyter when the user asks for it:

    • .ipynb → marimo .py: uvx marimo convert <notebook.ipynb> -o <notebook.py>, then uvx marimo check <notebook.py>, then clean up Jupyter artifacts (display() calls, %magics, indented final expressions, ipywidget usage). See references/widgets.md and references/latex.md for ipywidget→marimo and MathJax→KaTeX mappings.
    • marimo .py → .ipynb: uvx marimo export ipynb <notebook.py> -o <notebook.ipynb>.
    • After conversion, re-run step 6 (check/execute), step 7 (inspect plots), and step 8 (deliver pre-executed).
Show full SKILL.md (518 more words)Show less

Quick Reference

TaskAction
Author marimo notebookEdit .py, run uv run marimo edit --sandbox <notebook.py>
Author Jupyter notebookRegister pixi kernel, set notebook kernelspec, edit .ipynb
Lint marimo notebookuvx marimo check <notebook.py>
Execute marimo headlesslyuv run marimo export ipynb <notebook.py> -o <executed.ipynb>
Execute Jupyter headlesslypython scripts/execute_notebook.py <notebook.ipynb>
Convert .ipynb → marimouvx marimo convert <notebook.ipynb> -o <notebook.py>
Convert marimo → .ipynbuv run marimo export ipynb <notebook.py> -o <notebook.ipynb>
Marimo referencesreferences/MARIMO.md, references/UI.md, references/SQL.md, references/STATE.md, references/EXPORTS.md, references/PYTEST.md, references/TOP-LEVEL-IMPORTS.md, references/DEPLOYMENT.md
Conversion referencesreferences/widgets.md, references/latex.md
Pixi + Jupyterreferences/pixi_jupyter.md
Plot stylereferences/plot_style.md
Templatestemplates/marimo_notebook_template.py, templates/jupyter_kiss_template.py
Headless executorscripts/execute_notebook.py

Input Requirements

  • Notebook scope and goals (what question, what data, what output).
  • Data file paths (TSV/Parquet preferred for DuckDB ingestion).
  • For marimo: uv available on PATH, or marimo installed in the environment.
  • For Jupyter: pixi available and a pixi.toml (or equivalent env spec) for the project.

Output

  • A reproducible notebook (.py for marimo, .ipynb for Jupyter) with narrative markdown cells, code cells, and embedded figures.
  • A pre-executed copy (<notebook>.executed.ipynb or an .html export) where every cell has been run on a fresh kernel.
  • A short "Figure revision log" recording any plot-revision rounds.

Quality Gates

  • Notebook format chosen explicitly (marimo by default; Jupyter only when justified or when the input is .ipynb).
  • Kernel registered and pinned: marimo PEP 723 header complete, or Jupyter kernelspec set to a named pixi kernel.
  • Every Python import used in the notebook is declared in the dependency spec (PEP 723 header or pixi.toml).
  • Data paths are project-relative and verified to exist.
  • Headless run-all succeeds on a fresh kernel: marimo marimo export ipynb or Jupyter nbconvert --execute exits zero.
  • Every figure is inspected after execution; any figure that fails the visual checks above triggers a code revision and re-run.
  • Delivered notebook has every cell pre-executed with figures embedded; users do not have to run the notebook to see the plots.
  • For marimo: uvx marimo check <notebook.py> is run by default and reports no issues or warnings; do not treat exit code zero as enough if the output says "Found issues."
  • For marimo: no malformed markdown cells, quoted-string fragments inside mo.md(...), trailing empty cells, or return-only placeholder cells remain.

Examples

Example 1: New marimo notebook
python
# /// script
# requires-python = ">=3.12"
# dependencies = ["marimo", "polars", "duckdb", "matplotlib"]
# ///

import marimo
app = marimo.App(width="medium")

@app.cell
def _():
    import marimo as mo
    import polars as pl
    import duckdb
    import matplotlib.pyplot as plt
    return mo, pl, duckdb, plt

@app.cell(hide_code=True)
def _(mo):
    mo.md(r"""
    # Analysis notebook

    This notebook loads project data, validates it, and renders the requested figures.
    """)
    return

@app.cell
def _(duckdb):
    df = duckdb.read_parquet("data/measurements.parquet").pl()
    df.head()
    return (df,)

@app.cell
def _(df, plt):
    fig, ax = plt.subplots(figsize=(5, 3.2))
    ax.scatter(df["x"], df["y"], s=10)
    ax.set_xlabel("x (units)"); ax.set_ylabel("y (units)")
    fig
    return

Then:

bash
uvx marimo check notebook.py
uv run marimo export ipynb notebook.py -o notebook.executed.ipynb
uvx marimo check notebook.py
Example 2: Jupyter notebook with a named pixi kernel
bash
# One-time kernel registration in the project root:
pixi run python -m ipykernel install --user --name myproject --display-name "myproject (pixi)"

# After authoring, run end-to-end on a fresh kernel:
python skills/notebooks/scripts/execute_notebook.py notebooks/analysis.ipynb \
  --kernel myproject \
  --out notebooks/analysis.executed.ipynb
Example 3: Convert .ipynb to marimo
bash
uvx marimo convert notebooks/legacy.ipynb -o notebooks/legacy.py
uvx marimo check notebooks/legacy.py
uv run marimo export ipynb notebooks/legacy.py -o notebooks/legacy.executed.ipynb

Troubleshooting

Issue: Jupyter notebook executes locally but fails on a teammate's machine. Solution: The kernel was unpinned (python3) or used a packaged interpreter outside the project's pixi env. Re-register a named kernel and pin it in the notebook kernelspec.

Issue: Marimo cell does not render a figure. Solution: The figure must be the final expression of the cell. Indented expressions inside if blocks or expressions buried before other statements will not render.

Issue: Figures look correct interactively but the executed file shows empty plots. Solution: Code is mutating shared state across cells (e.g. plt.gcf() reuse). Build a fresh fig, ax = plt.subplots(...) per cell and return / display fig as the final expression.

Issue: Converted notebook fails marimo check. Solution: Remove leftover display(...) calls, drop %magic lines that have no marimo equivalent, and rewrite ipywidget usage using mo.ui.* per references/widgets.md.

© majiayu000, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file in skills/bash/notebooks of majiayu000/claude-skill-registry.

  • SKILL.md
  • metadata.json

Open the folder on GitHubat commit 2d14a69

Used in 1 other repository

We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in majiayu000/claude-skill-registry, which our catalogue first saw on October 8, 2026.

Compare with similar skills

Notebooks next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Notebooks compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Notebooks this skillmajiayu000/claude-skill-registry6661 repos~2.9kAutomated safety check: PassMIT
Jupyter To Marimoericmjl/llamabot1822 repos~475Automated safety check: PassNone
Marimobrycewang-stanford/Auto-Empirical-Research-Skills4.5k—~2.8kAutomated safety check: PassCustom licence
Jupyter Notebookmicrosoft/ai-agents-for-beginners77k8 repos~1kAutomated safety check: PassApache-2.0
Wasm Compatibilityericmjl/llamabot1822 repos~1.6kAutomated safety check: PassNone
Marimo Paircosanlab/nltools1311 repos~3kAutomated safety check: PassMIT

Similar skills

  • Jupyter To Marimo

    ericmjl/llamabot

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

    182 GitHub starsUsed in 2 repos~475 tokens
    Data & AnalyticsAuto-check passed
  • Marimo

    brycewang-stanford/Auto-Empirical-Research-Skills

    Reactive Python notebook system. An agent skill from brycewang-stanford/Auto-Empirical-Research-Skills.

    4.5k GitHub stars~2.8k tokensUpdated 2 days ago
    Data & AnalyticsAuto-check passed
  • Jupyter Notebook

    microsoft/ai-agents-for-beginners

    Official

    A skill your agent uses when the user asks to create, scaffold, or edit Jupyter notebooks (.ipynb) for experiments, explorations, or tutorials; prefer the bundled templates and run the helper script…

    77k GitHub starsUsed in 8 repos~1k tokens
    Data & AnalyticsAuto-check passed
  • Wasm Compatibility

    ericmjl/llamabot

    Check if a marimo notebook is compatible with WebAssembly (WASM) and report any issues.

    182 GitHub starsUsed in 2 repos~1.6k tokens
    Data & AnalyticsAuto-check passed
  • Marimo Pair

    cosanlab/nltools

    Work inside a running marimo notebook's kernel — execute code, create cells, and build a notebook as an artifact.

    131 GitHub starsUsed in 1 repo~3k tokens
    Data & AnalyticsAuto-check passed
  • Marimo Notebook

    cosanlab/nltools

    Write a marimo notebook in a Python file in the right format.

    131 GitHub starsUsed in 4 repos~2.1k tokens
    Data & AnalyticsAuto-check passed

More from majiayu000/claude-skill-registry

All 1,273 skills in this repo
  • Deep Research

    majiayu000/claude-skill-registry

    Multi-source deep research using firecrawl and exa MCPs. An agent skill from majiayu000/claude-skill-registry.

    666 GitHub starsUsed in 6 repos~1.1k tokens
    Auto-check passed
  • Exa Search

    majiayu000/claude-skill-registry

    Neural search via Exa MCP for web, code, and company research.

    666 GitHub starsUsed in 5 repos~856 tokens
    Auto-check passed
  • Fal AI Media

    majiayu000/claude-skill-registry

    Unified media generation via fal.ai MCP — image, video, and audio.

    666 GitHub starsUsed in 5 repos~1.7k tokens
    Auto-check passed
  • Pyzotero

    majiayu000/claude-skill-registry

    Interact with Zotero reference management libraries using the pyzotero Python client.

    666 GitHub starsUsed in 5 repos~1.6k tokens
    Auto-check: notes
  • Bgpt Paper Search

    majiayu000/claude-skill-registry

    Search scientific papers and retrieve structured experimental data extracted from full-text studies via the BGPT MCP server.

    666 GitHub starsUsed in 4 repos~619 tokens
    Auto-check: notes
  • Bio Alignment Pairwise

    majiayu000/claude-skill-registry

    Perform pairwise sequence alignment using Biopython Bio.Align.PairwiseAligner.

    666 GitHub starsUsed in 4 repos~1.7k tokens
    Auto-check passed

Questions about Notebooks

What does Notebooks do?

Author, execute, and deliver reproducible analysis notebooks in marimo (default) or Jupyter, with all cells run end-to-end and figures embedded. Notebooks is an agent skill from majiayu000/claude-skill-registry. Author, execute, and deliver reproducible analysis notebooks in marimo (default) or Jupyter, with all cells run end-to-end and figures embedded.

When should I use Notebooks?

Notebooks fits situations like: tasks that involve Jupyter notebooks.

How do I install Notebooks in Claude Code?

Run `npx skills add majiayu000/claude-skill-registry --skill notebooks -a claude-code`. Or copy the skill folder (skills/bash/notebooks in majiayu000/claude-skill-registry) into .claude/skills/notebooks in your project. Claude Code loads it when a task matches its description.

How do I install Notebooks in Codex?

Run `npx skills add majiayu000/claude-skill-registry --skill notebooks -a codex`. Or copy the skill folder (skills/bash/notebooks in majiayu000/claude-skill-registry) into .agents/skills/notebooks in your project. Codex loads it when a task matches its description.

Can I use Notebooks in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add majiayu000/claude-skill-registry --skill notebooks -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/notebooks, .gemini/skills/notebooks, .github/skills/notebooks and .opencode/skills/notebooks in your project.

What does Notebooks need to run?

Going by SKILL.md and its folder, Notebooks needs the command-line tools its instructions call (uvx, uv, python and jupyter). Our summary lists: Python 3.

Does Notebooks access the network?

SKILL.md contains no URLs. Its commands use uvx and uv, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Notebooks safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Notebooks use?

Notebooks is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Notebooks use?

About 2.9k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Notebooks?

Skills that share tags, products or a category with Notebooks: Jupyter To Marimo (ericmjl/llamabot, 182 stars), Marimo (brycewang-stanford/Auto-Empirical-Research-Skills, 4.5k stars), Jupyter Notebook (microsoft/ai-agents-for-beginners, 77k stars) and Wasm Compatibility (ericmjl/llamabot, 182 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Notebooks?

majiayu000 (a GitHub user) maintains it in majiayu000/claude-skill-registry, which has 666 GitHub stars. The repository holds 1,273 skills in this directory. The repository was last updated on October 7, 2026.

Source: majiayu000/claude-skill-registry on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.