Skip to content
Back to skills

Rseng Notebooks

ASecurity

Covers engineering discipline for computational notebooks: execution-order and hidden-state pitfalls, restart-and-run-all hygiene, keeping notebooks in version control with jupytext, testing notebooks with nbval-style execution checks, parameterizing and batch-running them with papermill, refactoring mature notebook code into importable modules, and deciding what belongs in a notebook versus a package. Use PROACTIVELY when a project contains .ipynb files, when the user works in Jupyter or sim...

  • 20 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 19, 2026
ai-agentsrustgotestingrefactoringgit

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned September 19, 2026

npx -y skills add fdiblen/rseng-agent-skills --skill rseng-notebooks --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Rseng Notebooks?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Rseng Notebooks
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/fdiblen-rseng-notebooks/badge)](https://www.skillsdirectory.com/skills/fdiblen-rseng-notebooks)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: rseng-notebooks
description: >-
  Covers engineering discipline for computational notebooks: execution-order
  and hidden-state pitfalls, restart-and-run-all hygiene, keeping notebooks in
  version control with jupytext, testing notebooks with nbval-style execution
  checks, parameterizing and batch-running them with papermill, refactoring
  mature notebook code into importable modules, and deciding what belongs in a
  notebook versus a package. Use PROACTIVELY when a project contains .ipynb
  files, when the user works in Jupyter or similar notebooks, mentions
  notebook reproducibility, testing, version control or parameterization, when
  a notebook has grown into the de-facto pipeline, or when notebook results
  must become citable, reviewable artifacts.
license: CC-BY-4.0
metadata:
  version: 0.1.0
---

# Notebook engineering

Notebooks are where most research computing happens - and their
superpower (interactive, stateful, out-of-order execution) is
exactly their reproducibility hazard. The discipline is not "stop
using notebooks"; it is knowing what notebooks are FOR
(exploration, narrative, teaching) and applying engineering at the
point where a notebook turns into infrastructure without anyone
deciding it should. The
CodeRefinery Jupyter lesson teaches the same split.

## Hidden state: the core hazard

A notebook's on-screen code and its kernel's actual state can
disagree: cells run out of order, deleted cells leave live
variables, and a figure can come from code that no longer exists.
Working rules:

- Restart-and-run-all IS the test: before trusting, committing or
  sharing any notebook, restart the kernel and run top to bottom.
  A notebook that only works in one execution order is broken -
  fix the order now, while you still remember it.
- Keep cells re-runnable: no cell should break when run twice
  (guard appends, recreations, cumulative mutations); avoid
  mutating a variable across distant cells - derive new names
  instead.
- Definitions up top: imports, parameters and configuration in the
  first cells; a parameters cell makes intent explicit and enables
  parameterization later.
- Watch execution counts: out-of-sequence numbers in a "final"
  notebook are the tell (rseng-version-control-review reviewers can
  see them too).

## Version control that works

Raw .ipynb diffs are JSON noise with embedded outputs:

- Pair notebooks with a script/markdown twin via jupytext: the
  text twin is the reviewable, diffable, mergeable source; the
  .ipynb carries outputs locally.
- Decide the output policy explicitly: strip outputs before
  commit (clean diffs, smaller repos - a pre-commit hook
  automates it) OR commit executed notebooks deliberately as
  result records (rseng-reproducibility's compendium may want
  exactly that); mixing the two policies in one repo confuses
  everyone.
- Large embedded outputs (images, tables) are the notebook form
  of committed data - the same instincts apply
  (rseng-data-management).

## Testing and automation

- Execution tests: run notebooks in CI and fail on errors
  (nbval-style pytest integration checks stored outputs too;
  plain execution via papermill or nbconvert catches rot). A
  notebook that no longer runs is the most common form of
  repository decay (rseng-ci-cd; budget-conscious: run on reduced
  data - rseng-green-computing).
- Parameterize with papermill: a tagged parameters cell turns a
  notebook into a callable with arguments - the honest bridge
  from "notebook" to "batch job" (sweeps via rseng-hpc-computing
  job arrays or rseng-workflows without abandoning the notebook
  form).
- Environments: a notebook without a pinned environment is a
  screenshot; keep the kernel's environment in the repository's
  lockfile (rseng-reproducible-environments) and Binder-ready when
  sharing is the goal (rseng-reproducibility).
- Seeds and data paths follow the same rules as any code
  (rseng-defensive-coding) - notebooks get no exemption from
  provenance.

## The graduation path

Notebooks accumulate load-bearing code; the move is extraction,
not rewrite:

- When a function is used twice, or another notebook copies it,
  extract it to a module in the repository and import it - the
  notebook keeps the narrative, the module gets tests
  (rseng-testing) and design (rseng-software-design). Autoreload
  during development keeps the loop tight.
- When a notebook IS the pipeline (runs nightly, feeds a paper),
  graduate the computation to scripts/workflow stages
  (rseng-workflows) and keep a thin notebook as the exploratory
  window onto results.
- The notebook that remains is the good kind: narrative analysis,
  figures with their reasoning, teaching material
  (rseng-trainer) - prose and code interleaved doing what neither
  does alone (rseng-science-communication for the storytelling
  layer).

## Working with this skill

This skill is source-independent: its authority is the Jupyter
ecosystem tooling and the CodeRefinery lesson linked below.

Learn more (verified):
  - https://jupyter.org - Project Jupyter
  - https://jupytext.readthedocs.io - jupytext notebook/text
    pairing
  - https://github.com/computationalmodelling/nbval - nbval
    notebook validation
  - https://papermill.readthedocs.io - papermill parameterization
  - https://coderefinery.github.io/jupyter/ - CodeRefinery
    Jupyter lesson

<!-- related-skills:begin -->

## Related skills

Check whether any of these applies before moving on:

- rseng-hpc-computing - papermill batch sweeps on clusters
- rseng-reproducibility - executed notebooks as deliberate result records
- rseng-science-communication - narrative layer of analysis notebooks
- rseng-scientific-visualization - figure-producing notebook cells
- rseng-trainer - notebooks as teaching material
- rseng-version-control-review - jupytext twins make diffs reviewable

<!-- related-skills:end -->

Files in this skill

  • SKILL.md5.8 KB
  • references.md485 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…