Agent Skillsninehills/skills › jupytext

jupytext

GitHub

该技能用于创建和转换 Jupyter Notebook,支持 .py (percent format) 与 .ipynb 双向互转。触发场景包括新建 notebook、格式转换及版本控制需求。核心流程为确认格式偏好后生成文件并提供同步配置。

jupytext/SKILL.md ninehills/skills

Trigger Scenarios

新建/创建 notebook Jupyter notebook 格式转换 notebook 版本控制

Install

npx skills add ninehills/skills --skill jupytext -g -y
More Options

Non-standard path

npx skills add https://github.com/ninehills/skills/tree/main/jupytext -g -y

Use without installing

npx skills use ninehills/skills@jupytext

指定 Agent (Claude Code)

npx skills add ninehills/skills --skill jupytext -a claude-code -g -y

安装 repo 全部 skill

npx skills add ninehills/skills --all -g -y

预览 repo 内 skill

npx skills add ninehills/skills --list

SKILL.md

Frontmatter
{
    "name": "jupytext",
    "description": "Jupyter Notebook 创建与格式转换技能。当用户提到以下任何请求时必须使用:新建\/创建 notebook、Jupyter notebook、.ipynb、jupytext、py:percent、# %% cell 格式、notebook 版本控制、paired notebook、notebook 转 Python、Python 转 notebook、用纯文本写 notebook。即使用户只说「新建一个 notebook」也应触发此技能——先询问用户选用 .py percent format 还是传统 .ipynb,再按选定格式生成。不用于调试已有 notebook 或写普通 Python 脚本。"
}

Jupytext:用纯 Python 写 Jupyter Notebook

本技能帮助用户用纯 Python 脚本编写 Jupyter Notebook,借助 Jupytext 实现 .py.ipynb 双向转换。

什么时候用这个技能

当用户提出以下请求时触发:

  • 创建新的 Jupyter notebook
  • 要求用 Python 写 notebook
  • 提到 jupytext、paired notebook、notebook 版本控制
  • 想把现有 notebook 转成纯 Python 脚本
  • 提到 # %% cell 分隔符(percent format)

核心流程

第一步:确认格式偏好

必须先问用户想要哪种格式:

格式 适用场景
.py(percent format) 需要版本控制、纯编辑器开发、code review 友好
.ipynb 需要 Jupyter 原生体验、包含大量输出/图表

如果用户只说「新建一个 notebook」,默认推荐 .py(percent format),因为:

  1. Git diff 友好,方便 code review
  2. 编辑器支持好(VS Code、PyCharm、Spyder 原生识别 # %%
  3. 无需额外工具即可阅读和编辑

第二步:生成文件

A. 创建 .py percent format 文件

一个完整的 percent format Python 文件长这样:

# ---
# jupytext:
#   formats: ipynb,py:percent
#   notebook_metadata_filter: -all
# ---

# %% [markdown]
# # 标题
# 这是一段 Markdown 说明

# %% [markdown]
"""
也可以用三引号写多行 Markdown,
这在 Python 中更易读。
"""

# %%
import numpy as np
import pandas as pd

# %%
data = pd.DataFrame({
    "x": np.random.randn(100),
    "y": np.random.randn(100),
})
data.head()

关键语法:

语法 含义
# %% 代码 cell 开始
# %% [markdown] Markdown cell 开始
# %% 标题文字 [markdown] 带标题的 Markdown cell
# %% [markdown] + """...""" 用三引号包裹多行 Markdown(推荐)
# %% key="value" 带 cell metadata

B. 创建 .ipynb 文件

如果用户选择传统 notebook,使用 nbformat 或直接构造 JSON。参考 references/nbformat-guide.md 了解如何用 Python 构造 .ipynb

第三步:提供配套操作

根据用户需求,告知或执行:

  1. 安装 Jupytextpip install jupytext
  2. 转换为 notebookjupytext --to notebook script.py
  3. 双向同步:先在文件头部加 YAML front matter 声明 formats: ipynb,py:percent,之后 jupytext --sync script.py 即可同步两端
  4. 在 JupyterLab 中打开 .py 为 notebook:右键 → Open With → Notebook(需安装 jupytext 扩展)

YAML Front Matter 详解

YAML front matter 是 .py 文件头部用 # --- 包围的元数据块:

# ---
# jupytext:
#   formats: ipynb,py:percent
#   notebook_metadata_filter: -all
#   cell_metadata_filter: -all
# ---

# %% [markdown]
# # My Notebook

常用配置:

配置 作用
formats: ipynb,py:percent 启用 paired notebook(保存时双向更新)
notebook_metadata_filter: -all 不在 .py 中输出 notebook 级元数据
cell_metadata_filter: -all 不在 .py 中输出 cell 级元数据
cell_markers: '"""' Markdown cell 用三引号而非 # 注释

配置文件

在项目根目录创建 jupytext.toml 可设置全局默认:

# 所有 notebook 自动 paired
formats = "ipynb,py:percent"

# Markdown cell 用三引号
cell_markers = '"""'

pyproject.toml

[tool.jupytext]
formats = "ipynb,py:percent"
cell_markers = '"""'

常用 CLI 命令

# .py → .ipynb
jupytext --to notebook script.py

# .ipynb → .py (percent format)
jupytext --to py:percent notebook.ipynb

# 启用 paired notebook
jupytext --set-formats ipynb,py:percent notebook.ipynb

# 同步 paired notebook(以较新文件为准)
jupytext --sync notebook.ipynb

# 测试 round-trip 一致性
jupytext --test notebook.ipynb --to py:percent

# 用 black 格式化
jupytext --sync --pipe black notebook.ipynb

# 设置 kernel 信息
jupytext --set-kernel - notebook.py

light format 补充

除了 percent format (# %%),Jupytext 还支持 light format,用 # + / # - 标记 cell 边界:

# +
import numpy as np

# + [markdown]
# 这是一段说明

由于 light format 不如 percent format 通用(仅 Jupytext 原生支持),一般不推荐,除非用户明确要求。

注意事项

  1. 永远先问用户要哪种格式,不要默认帮用户做决定
  2. .py 文件中不要混用 percent format 和 light format 的分隔符
  3. 如果用户已有 .ipynb 文件想版本控制,推荐 jupytext --set-formats ipynb,py:percent 转为 paired notebook
  4. 三引号 Markdown 写法更易读,但需要在 front matter 或配置中声明 cell_markers: '"""'
  5. .py percent format 文件可以在 VS Code 中直接作为 Interactive Window cell 运行,无需启动 Jupyter

参考资源

Version History

  • f3e82a7 Current 2026-07-25 11:14

Same Skill Collection

agent-browser/SKILL.md
alphaear-deepear-lite/SKILL.md
alphaear-logic-visualizer/SKILL.md
alphaear-news/SKILL.md
alphaear-predictor/SKILL.md
alphaear-reporter/SKILL.md
alphaear-search/SKILL.md
alphaear-sentiment/SKILL.md
alphaear-signal-tracker/SKILL.md
alphaear-stock/SKILL.md
ask-matt/SKILL.md
baseline-ui/SKILL.md
better-goal/SKILL.md
bggg-creator-image2ppt/SKILL.md
bggg-creator-image2psd/SKILL.md
bggg-skill-taotie/SKILL.md
brainstorming-cn/SKILL.md
check/SKILL.md
codebase-design/SKILL.md
design/SKILL.md
deslop-en/SKILL.md
deslop-zh/SKILL.md
diagnosing-bugs/SKILL.md
diagram-design/diagram-design/SKILL.md
domain-modeling/SKILL.md
fireworks-tech-graph/SKILL.md
frontend-design/SKILL.md
gpt-image-gen/SKILL.md
gpt-image2-ppt/SKILL.md
grilling/SKILL.md
handoff/SKILL.md
herdr/SKILL.md
hunt/SKILL.md
implement/SKILL.md
improve-codebase-architecture/SKILL.md
jupyter-notebook/SKILL.md
karpathy-guidelines/SKILL.md
learn/SKILL.md
lightpanda/SKILL.md
officecli/SKILL.md
officecli/skills/morph-ppt-3d/SKILL.md
officecli/skills/officecli-docx/SKILL.md
officecli/skills/officecli-pptx/SKILL.md
oracle/SKILL.md
patent-draft-agent/SKILL.md
ppt-tts-script/SKILL.md
pptx-generator/SKILL.md
prototype/SKILL.md
read/SKILL.md

Metadata

Files
0
Version
f3e82a7
Hash
8a9a1bcf
Indexed
2026-07-25 11:14

- 위키
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-08-20 13:49
浙ICP备14020137号-1 $방문자$