skills/kang-chen/agent-skills/jupyter-notebooks

jupyter-notebooks

SKILL.md

Jupyter Notebook Operations

Decision Tree

Need to edit a notebook?
├─ In Cursor IDE? → Use EditNotebook tool directly
├─ Structural changes (add/delete/reorder)? → Jupytext workflow
├─ Small edit in single cell? → nbformat micro-edit
├─ Execute and capture outputs? → papermill
└─ Convert format? → nbconvert

EditNotebook Tool (Cursor IDE)

Preferred method in Cursor. Parameters:

Parameter Required Description
target_notebook Yes Path to .ipynb
cell_idx Yes 0-based cell index
is_new_cell Yes true = new cell, false = edit existing
cell_language Yes python, markdown, r, sql, shell, raw, other
old_string Yes Text to replace (empty for new cells)
new_string Yes Replacement content

Critical rules:

  • Set is_new_cell correctly
  • Include 3-5 lines context in old_string
  • Cannot delete cells (clear content with new_string="")

Jupytext (Structural Edits)

Setup & Sync

# Pair notebook (one-time)
python -m jupytext --set-formats ipynb,py:percent notebook.ipynb

# Always sync before reading .py
python -m jupytext --sync notebook.ipynb
# Or fallback:
python -m jupytext --to py:percent notebook.ipynb -o notebook.py

Edit .py with percent-format

# %% [markdown]
# # Section Title

# %%
import pandas as pd

# %% tags=["parameters"]
param1 = "default"

Sync back (preserve outputs)

python -m jupytext --to ipynb --update notebook.py -o notebook.ipynb

nbformat (Micro-Edits & Batch)

Edit single cell

import nbformat

nb = nbformat.read("notebook.ipynb", as_version=4)
nb["cells"][3]["source"] = nb["cells"][3]["source"].replace("old", "new", 1)
nbformat.write(nb, "notebook.ipynb")

Add new cell

new_cell = nbformat.v4.new_code_cell(source="print('Hello')")
nb["cells"].insert(5, new_cell)

Delete cell

del nb["cells"][3]

papermill (Execute Notebooks)

# Basic
papermill input.ipynb output.ipynb

# With parameters
papermill input.ipynb output.ipynb -p data_path "/path" -p n_samples 1000
import papermill as pm
pm.execute_notebook("input.ipynb", "output.ipynb", parameters={"n_samples": 1000})

nbconvert (Format Conversion)

Format Command
HTML jupyter nbconvert --to html notebook.ipynb
PDF jupyter nbconvert --to pdf notebook.ipynb
Script jupyter nbconvert --to script notebook.ipynb
Markdown jupyter nbconvert --to markdown notebook.ipynb

Execute and convert: jupyter nbconvert --execute --to html notebook.ipynb

Clear outputs: jupyter nbconvert --ClearOutputPreprocessor.enabled=True --inplace notebook.ipynb


Common Issues

Issue Solution
Outputs lost after sync Use --update flag with Jupytext
Kernel not found jupyter kernelspec list then specify -k python3
Large file size Clear outputs before git commit
Windows venv Use .\.venv\Scripts\activate
Weekly Installs
3
GitHub Stars
1
First Seen
14 days ago
Installed on
gemini-cli3
opencode3
codebuddy3
github-copilot3
codex3
kimi-cli3