# Notebook Integration

> Guides creating clean, reproducible Jupyter notebooks with structured workflows, best practices, and IPython magic for analysis and presentation.

- Skill: `leandrobenjaminl/notebook-integration` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add leandrobenjaminl/notebook-integration`
- Raw SKILL.md: https://api.skillmd.com/api/skills/leandrobenjaminl/notebook-integration/raw
- Safety review: PASS (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Data & Analytics, Docs & Writing, Integrations & APIs, Data Analysis, Technical Writing
- Tags: Ipynb, Ipython, Jupyter, Nbstripout, Notebook, Quarto, Reproducible Analysis
- License: MIT
- Author: LeandroBenjaminL (https://skillmd.com/u/leandrobenjaminl)
- Updated: 2026-08-22
- Page: https://skillmd.com/skills/leandrobenjaminl/notebook-integration

---


# Skill: notebook-integration

Jupyter notebooks hechos como la gente. No son archivos basura.

## Trigger

- Trabajás en un .ipynb para análisis exploratorio
- Necesitás integrar código Python con visualizaciones inline
- Querés presentar resultados en formato reproducible
- Vas a commitear un notebook y no querés que sea un bardo

## Workflow LEND

```
1. ANALIZAR
   ├── Tipo: exploratorio (EDA), tutorial, o reporte
   ├── Estructura: celdas de texto y código, orden lógico
   ├── Dependencias: ¿qué librerías necesita el notebook?
   └── Versión: ¿notebook clásico (.ipynb) o Quarto (.qmd)?

2. OFRECER (Menú del Senior)
   ├── A) Notebook clásico — Jupyter Lab, .ipynb, análisis interactivo
   ├── B) Quarto — .qmd, texto + código, mejor versionado
   └── C) Script + nbconvert — .py con # %% celdas, convertido a notebook

3. ELEGIR → confirmación

4. HACER
   ├── Celda 1: imports (TODO en una celda, ordenadas: stdlib → externas → locales)
   ├── Celdas de texto: markdown con contexto, no solo código
   ├── Outputs: no imprimir DataFrames de 1000 filas — .head() o .sample()
   ├── Gráficos inline: %matplotlib inline o plotly.io.renderers.default = "notebook"
   ├── Limpiar: restart kernel + run all antes de commitear
   └── Outputs: si es para Git, limpiar outputs con nbstripout o Quarto

5. VERIFICAR
   ├── Run all pasa sin errores
   ├── Los outputs son los esperados
   └── El notebook se entiende sin ejecutarlo (texto + resultados)
```

## Patrones

- **Run all antes de commitear**: si no corre de principio a fin, no es reproducible
- **Markdown entre celdas de código**: el notebook debe contar una historia
- **Imports ordenados**: stdlib, externas, locales. Una celda, todas juntas.
- **nbstripout para Git**: no committear outputs de 10MB en el repo
- **Quarto > .ipynb**: mejor versionado, más flexible

## Anti-patrones

- ❌ Notebooks sin markdown — solo celdas de código sin contexto
- ❌ Outputs de 1000 filas en el notebook — usá .head() o .sample()
- ❌ Commitear notebooks con outputs sucios — outputs de errores, warnings, prints al pedo
- ❌ Celdas en desorden — imports mezclados, funciones definidas donde se usan
- ❌ No limpiar estado — restart kernel y correr todo de nuevo antes de entregar

