Fix Notebook Errors

Resolve Jupyter notebook execution errors by fixing cell code, JSON schema violations, or underlying library source code.

Sby Skills Guide Bot
DevelopmentIntermediate
1503/9/2026
Claude CodeCursorCopilot
#jupyter-notebook#debugging#json-schema#python-errors#notebook-maintenance

name: fix_notebook description: ノートブックのエラーを、そのノートブック自体の修正(セル内容・JSONスキーマ)またはソースコードの修正により解決する

Fix Notebook Errors

This skill handles fixing errors encountered during notebook execution, ranging from Python code bugs to Jupyter JSON schema violations.

Instructions

  1. Analyze the Failure:

    • Examine the traceback to determine if the error is in the notebook cell's logic, a JSON schema violation, or the underlying library.
  2. Strategy A: Fix Code Cell (Local):

    • If the usage is wrong, imports are missing, or data paths are incorrect, edit the .ipynb cells.
    • Modify the "source" field of the failing code cell in the notebook JSON.
    • Unit-Safe Assignment: When updating astropy.units objects, prefer series.value[:] = new_data to keep metadata.
  3. Strategy B: Fix JSON Schema:

    • If nbconvert or validators fail with "Additional properties are not allowed ('id' was unexpected)":
    • Remove Cell IDs: Delete the "id" key from all cells in the JSON.
    • Normalize nbformat_minor: Set nbformat_minor to 4 (if nbformat is 4) to prevent auto-adding IDs.
  4. Strategy C: Fix Library Source Code:

    • If the bug is in the gwexpy/ package, trace it to the source file and apply the fix.
  5. Verification:

    • Re-run the notebook using jupyter nbconvert --execute or test_notebooks to confirm it passes.
# Utility for Strategy B
import json
def fix_nb_schema(path):
    with open(path, 'r') as f:
        data = json.load(f)
    for cell in data.get('cells', []):
        cell.pop('id', None)
    if data.get('nbformat') == 4 and data.get('nbformat_minor', 0) >= 5:
        data['nbformat_minor'] = 4
    with open(path, 'w') as f:
        json.dump(data, f, indent=1)
Related skills