{"slug":"jupyter-notebook","title":"jupyter-notebook","summary":"Use 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 `new_notebook.py` to generate a clean starting notebook.","platform":"ChatGPT","tags":[],"authorName":"LLM Mart","authorSlug":"llm-mart","score":0,"source":"github","price":null,"verified":false,"createdAt":"2026-08-12T22:20:08.254774Z","repo":{"url":"https://github.com/openai/skills","stars":27615,"forks":1868,"license":null,"updatedAt":"2026-09-08T20:35:26Z"},"bodyHtml":"<hr>\n<h2>name: \"jupyter-notebook\"\ndescription: \"Use when the user asks to create, scaffold, or edit Jupyter notebooks (<code>.ipynb</code>) for experiments, explorations, or tutorials; prefer the bundled templates and run the helper script <code>new_notebook.py</code> to generate a clean starting notebook.\"</h2>\n<h1>Jupyter Notebook Skill</h1>\n<p>Create clean, reproducible Jupyter notebooks for two primary modes:</p>\n<ul>\n<li>Experiments and exploratory analysis</li>\n<li>Tutorials and teaching-oriented walkthroughs</li>\n</ul>\n<p>Prefer the bundled templates and the helper script for consistent structure and fewer JSON mistakes.</p>\n<h2>When to use</h2>\n<ul>\n<li>Create a new <code>.ipynb</code> notebook from scratch.</li>\n<li>Convert rough notes or scripts into a structured notebook.</li>\n<li>Refactor an existing notebook to be more reproducible and skimmable.</li>\n<li>Build experiments or tutorials that will be read or re-run by other people.</li>\n</ul>\n<h2>Decision tree</h2>\n<ul>\n<li>If the request is exploratory, analytical, or hypothesis-driven, choose <code>experiment</code>.</li>\n<li>If the request is instructional, step-by-step, or audience-specific, choose <code>tutorial</code>.</li>\n<li>If editing an existing notebook, treat it as a refactor: preserve intent and improve structure.</li>\n</ul>\n<h2>Skill path (set once)</h2>\n<pre><code>export CODEX_HOME=\"${CODEX_HOME:-$HOME/.codex}\"\nexport JUPYTER_NOTEBOOK_CLI=\"$CODEX_HOME/skills/jupyter-notebook/scripts/new_notebook.py\"\n</code></pre>\n<p>User-scoped skills install under <code>$CODEX_HOME/skills</code> (default: <code>~/.codex/skills</code>).</p>\n<h2>Workflow</h2>\n<ol>\n<li><p>Lock the intent.\nIdentify the notebook kind: <code>experiment</code> or <code>tutorial</code>.\nCapture the objective, audience, and what \"done\" looks like.</p>\n</li>\n<li><p>Scaffold from the template.\nUse the helper script to avoid hand-authoring raw notebook JSON.</p>\n</li>\n</ol>\n<pre><code>uv run --python 3.12 python \"$JUPYTER_NOTEBOOK_CLI\" \\\n  --kind experiment \\\n  --title \"Compare prompt variants\" \\\n  --out output/jupyter-notebook/compare-prompt-variants.ipynb\n</code></pre>\n<pre><code>uv run --python 3.12 python \"$JUPYTER_NOTEBOOK_CLI\" \\\n  --kind tutorial \\\n  --title \"Intro to embeddings\" \\\n  --out output/jupyter-notebook/intro-to-embeddings.ipynb\n</code></pre>\n<ol start=\"3\">\n<li><p>Fill the notebook with small, runnable steps.\nKeep each code cell focused on one step.\nAdd short markdown cells that explain the purpose and expected result.\nAvoid large, noisy outputs when a short summary works.</p>\n</li>\n<li><p>Apply the right pattern.\nFor experiments, follow <code>references/experiment-patterns.md</code>.\nFor tutorials, follow <code>references/tutorial-patterns.md</code>.</p>\n</li>\n<li><p>Edit safely when working with existing notebooks.\nPreserve the notebook structure; avoid reordering cells unless it improves the top-to-bottom story.\nPrefer targeted edits over full rewrites.\nIf you must edit raw JSON, review <code>references/notebook-structure.md</code> first.</p>\n</li>\n<li><p>Validate the result.\nRun the notebook top-to-bottom when the environment allows.\nIf execution is not possible, say so explicitly and call out how to validate locally.\nUse the final pass checklist in <code>references/quality-checklist.md</code>.</p>\n</li>\n</ol>\n<h2>Templates and helper script</h2>\n<ul>\n<li>Templates live in <code>assets/experiment-template.ipynb</code> and <code>assets/tutorial-template.ipynb</code>.</li>\n<li>The helper script loads a template, updates the title cell, and writes a notebook.</li>\n</ul>\n<p>Script path:</p>\n<ul>\n<li><code>$JUPYTER_NOTEBOOK_CLI</code> (installed default: <code>$CODEX_HOME/skills/jupyter-notebook/scripts/new_notebook.py</code>)</li>\n</ul>\n<h2>Temp and output conventions</h2>\n<ul>\n<li>Use <code>tmp/jupyter-notebook/</code> for intermediate files; delete when done.</li>\n<li>Write final artifacts under <code>output/jupyter-notebook/</code> when working in this repo.</li>\n<li>Use stable, descriptive filenames (for example, <code>ablation-temperature.ipynb</code>).</li>\n</ul>\n<h2>Dependencies (install only when needed)</h2>\n<p>Prefer <code>uv</code> for dependency management.</p>\n<p>Optional Python packages for local notebook execution:</p>\n<pre><code>uv pip install jupyterlab ipykernel\n</code></pre>\n<p>The bundled scaffold script uses only the Python standard library and does not require extra dependencies.</p>\n<h2>Environment</h2>\n<p>No required environment variables.</p>\n<h2>Reference map</h2>\n<ul>\n<li><code>references/experiment-patterns.md</code>: experiment structure and heuristics.</li>\n<li><code>references/tutorial-patterns.md</code>: tutorial structure and teaching flow.</li>\n<li><code>references/notebook-structure.md</code>: notebook JSON shape and safe editing rules.</li>\n<li><code>references/quality-checklist.md</code>: final validation checklist.</li>\n</ul>\n","files":[{"path":"agents/openai.yaml","sizeBytes":325,"isText":true},{"path":"assets/experiment-template.ipynb","sizeBytes":2570,"isText":false},{"path":"assets/jupyter.png","sizeBytes":2713,"isText":false},{"path":"assets/jupyter-small.svg","sizeBytes":1043,"isText":false},{"path":"assets/tutorial-template.ipynb","sizeBytes":2490,"isText":false},{"path":"LICENSE.txt","sizeBytes":10776,"isText":true},{"path":"references/experiment-patterns.md","sizeBytes":699,"isText":true},{"path":"references/notebook-structure.md","sizeBytes":751,"isText":true},{"path":"references/quality-checklist.md","sizeBytes":572,"isText":true},{"path":"references/tutorial-patterns.md","sizeBytes":685,"isText":true},{"path":"scripts/new_notebook.py","sizeBytes":4086,"isText":true},{"path":"SKILL.md","sizeBytes":4154,"isText":true}],"reviewScore":null,"reviewSummary":null,"trust":{"provenance":"trusted-source-unreviewed","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow.","bodySource":null},"bodyLocked":false,"purchaseUrl":null,"sourceUrl":null,"report":{"provenance":"trusted-source-unreviewed","screen":{"ran":true,"outcome":"clean","suspicious":0,"notes":0,"hiddenCharacters":false},"virusScan":{"engine":"clamav","status":"clean","scannedAt":"2026-08-12T22:20:45.544117Z","sha256":"742028DF9A2F1DFB1E3D9B40E9A08EE66C6238FEB6CAE1BE7B4B1FD8E2708E72","sizeBytes":15145},"review":null,"source":{"repositoryUrl":"https://github.com/openai/skills","path":"skills/.curated/jupyter-notebook","license":null,"commit":"49f948faa9258a0c61caceaf225e179651397431","subtreeSha":"A21E05DF95259D7EB7EEC0D14D7AB3AC1260F06611F072222F267092AAB3A3AB","lastSyncedAt":"2026-09-25T06:49:08.341535Z"},"reviewedAt":"2026-08-12T22:21:41.804545Z","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow."},"install":[{"target":"skills-cli","command":"npx skills add https://github.com/openai/skills/tree/main/skills/.curated/jupyter-notebook"},{"target":"claude-code","command":"claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install openai-skills@llmmart"},{"target":"git","command":"git clone https://github.com/openai/skills.git"}]}