refactor-nb
Jupyter Notebook (.ipynb) 内の import 文やコードセルを一括置換・リファクタリングする
Installation
Follow the repository instructions for this skill and your agent. Review the files and dependencies before adding it to your workflow.
View source ↗GuidesSkill instructions
refactor_notebooks Skill
This skill is for programmatically analyzing Jupyter Notebook (.ipynb) files and performing batch replacement or modification of specific import patterns or code blocks.
Instructions
-
Analyze Notebook Structure:
- Load
.ipynbfiles as JSON using Python and iterate through thecellslist. - Verify if the
cell_typeof each cell iscode.
- Load
-
Filter and Match:
- Join the
sourcefield (list format) into a string and use regular expressions or keyword matching to identify target cells. - Target specific import statements (e.g.,
from gwexpy.noise import asd), function calls, or targeted comments.
- Join the
-
Implement Transformation:
- Create a transformation script to rewrite the
sourcelist of the cells in memory. - The updated source must be in list format (each element as a string ending with a newline).
- Create a transformation script to rewrite the
-
Write and Verify:
- Save the file using
json.dump, maintaining an indent of 1 (agwexpyconvention) and specifyingensure_ascii=False. - Verify that the resulting notebook is valid JSON and that the intended changes have been applied using
view_fileor similar.
- Save the file using
Usage Guidelines
- When modifying multiple notebooks across a directory, create a loop script that collects
.ipynbfiles usingglobor similar. - For complex refactoring, adopt a workflow of saving the logic as a temporary
.pyscript, executing it viarun_command, and then deleting the script.
Examples
Read the usage examples in the source repository.
View source ↗Source history
- Indexed on
- 2026-01-20
- Index updated
- 2026-01-26
- Branch
- main
Index and sync dates describe this directory. View the source repository for code history.
GitHub ↗chat Comments (0)
Sign in to join the discussion and leave a comment.
No comments yet. Be the first to share your thoughts!