بنقرة واحدة
python-refactor
使用 rope 库编写 Python 代码重构脚本。触发词:「重构」、「使用 rope」、「重命名」、「移动模块」、「提取方法」、「内联变量」、「批量重构」。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
使用 rope 库编写 Python 代码重构脚本。触发词:「重构」、「使用 rope」、「重命名」、「移动模块」、「提取方法」、「内联变量」、「批量重构」。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
垂直领域搜索和批量并行搜索。当通用搜索(tavily)无法满足时使用。 触发场景: 1. 金融数据——股票代码、汇率、行情(finance.us_stock / cn_stock / forex) 2. 学术检索——论文、DOI(academic.search / academic.biomedical) 3. 安全漏洞——CVE、文件哈希、IP/域名扫描(security.scan / security.cve) 4. 法律、专利、教育、健康等其他垂直领域 5. 批量并行搜索——同时查 2-5 个独立问题 6. 中国国内信息——A 股、国内资讯(需 zone=cn) 触发词:"股票"、"行情"、"汇率"、"CVE"、"漏洞"、"论文"、"DOI"、 "学术"、"专利"、"批量搜索"、"A股"、"anysearch"。 不触发场景:通用 web 搜索、新闻浏览、代码搜索、网页内容提取、网站爬取—— 这些由 tavily skill 处理。
Use when starting a new Remotion video project, adding scenes to an existing video, or converting a script into a video. Handles creative direction, script review, scene planning, pronunciation pre-check, segment-based voiceover generation, subtitle-based timeline calculation, and produces a complete design spec. Required before remotion-video-development. Also handles voiceover generation and timeline alignment via remotion-tools scripts.
Use when implementing Remotion video scenes from an approved design spec. Executes scene-by-scene with flex-first layout, subtitle-based timing, multi-segment audio playback, and per-scene verification. Requires completed design from remotion-video-design. Also use when regenerating voiceover segments, fixing pronunciation, or re-aligning timeline.
思维框架,帮助跳出局部修补的循环。两种触发模式。 模式一(用户主动):当用户说"rethink"、"重新思考"、 "跳出来看"、"全局视角"、"这个问题我们是不是想错了"时加载, 直接进入完整分析。 模式二(AI 提议):当你检测到以下信号时, 在回复末尾加一句提议 "我觉得我们可能在局部修补,要不要退一步重新看?": 你对同一个文件做了 3 次以上修改仍未解决, 或用户连续 2 次否定你的方案, 或你发现方案里 workaround 和 edge case 越来越多。 用户同意后再执行完整分析。用户说不用则继续正常工作。
本地语义代码搜索。当需要按意图定位代码、查找实现、理解代码结构时使用,优先于 grep/read 用于探索性搜索。触发词:"搜代码"、"code search"、"find implementation"、"理解代码实现"、"semble"、"语义搜索"、"search code"。
通用 Web 搜索、URL 内容提取、网站爬取。这是默认的搜索工具。 当用户需要:快速查事实、搜索新闻、fact-checking、提取网页内容、 爬取网站、深度研究(advanced 模式)时使用。 触发词:"搜索"、"查一下"、"搜一下"、"lookup"、"search"、"research"、 "fact-check"、"联网搜索"、"查资料"、"提取网页"、"爬取网站"、 "tavily"、"网页内容"。 不触发场景:股票/金融数据查询、学术论文检索、CVE/安全漏洞查询、 批量并行搜索——这些场景由 anysearch skill 处理。
| name | python-refactor |
| description | 使用 rope 库编写 Python 代码重构脚本。触发词:「重构」、「使用 rope」、「重命名」、「移动模块」、「提取方法」、「内联变量」、「批量重构」。 |
使用 rope 库编写安全、可靠的 Python 代码重构脚本。
所有 API 文档已移至 reference/ 目录,使用前请查阅对应文档。
rope 源代码位于 ~/GitApp/rope,遇到疑难问题可查阅源码。
一旦开启此 Skill,必须且只能使用 rope 进行重构
⛔ 绝对禁止:
• 脚本执行出错后,立刻换用正则表达式/str.replace()等其他方法
• 绕过 rope 直接修改代码文件
✅ 遇到错误时:
1. 仔细阅读错误信息
2. 查阅 reference/ 目录中的 API 文档
3. 检查代码问题(参数错误?路径错误?)
4. 尝试不同的 rope API 用法
5. 启动 subagent 查看 ~/GitApp/rope 源代码实现
6. 穷尽所有 rope 方案后,才能向用户说明情况
1. 收到重构需求
↓
2. 查找 API 文档:在 reference/ 目录
↓
3. 找到 API?
├── 是 → 使用 rope API → 结束
└── 否 → 查看负向用例 → 启动 subagent 查阅 ~/GitApp/rope 源码 → 继续尝试 rope 方法
| 禁止的方法 | 原因 |
|---|---|
re.sub() / 正则 | 无法区分代码、字符串、注释 |
str.replace() | 会误改无关的同名文本 |
shutil.move() 移动 .py | 不会更新导入语句 |
直接 open() 读写代码 | 绕过 rope 语义分析 |
reference/ 目录negative-case/raw-case/~/GitApp/rope 源码.claude/tmp/refactor/{yyyyMMdd-HHmmss}-{kebab-case}.py--dry-run 预览| 操作 | API | 文档 |
|---|---|---|
| 重命名符号 | Rename | reference/rename.md |
| 重命名模块 | Rename(offset=None) | reference/rename.md |
| 移动模块 | MoveModule | reference/move_module.md |
| 移动方法/全局 | create_move | reference/create_move.md |
| 提取方法 | ExtractMethod | reference/extract_method.md |
| 提取变量 | ExtractVariable | reference/extract_variable.md |
| 内联 | create_inline | reference/create_inline.md |
| 改变签名 | ChangeSignature | reference/change_signature.md |
| 查找引用 | create_finder | reference/create_finder.md |
MoveModule 只能移动位置,不能改变文件名Rename(offset=None) → MoveModulerope 是重量级工具,默认配置下可能非常慢。以下优化建议可以显著提升性能:
问题:频繁创建 Project 对象会导致重复解析 AST
# ❌ 错误做法
for operation in operations:
project = Project("/path/to/project") # 每次都重新解析
# ... 执行操作
project.close()
# ✅ 正确做法
project = Project("/path/to/project")
try:
for operation in operations:
# ... 执行操作
finally:
project.close()
问题:ropefolder=None(默认)不会持久化缓存,每次运行都重新解析
# ❌ 默认配置(无缓存)
project = Project("/path/to/project", ropefolder=None)
# ✅ 启用持久化缓存
project = Project(
"/path/to/project",
ropefolder=".ropeproject", # 缓存会保存到项目根目录的 .ropeproject/
)
效果:首次运行建立缓存后,后续运行速度提升 50-80%
问题:rope 会扫描整个项目,包括无关目录
# ✅ 使用 ignored_resources 排除无关目录
project = Project(
project_path,
ropefolder=".ropeproject",
ignored_resources=[
"*.pyc", "__pycache__", ".git", ".venv", "venv",
"frontend", "docs", "node_modules", "tests",
],
)
对于已知只影响少数文件的重构,明确指定 resources 参数:
# ❌ 扫描整个项目
changes = renamer.get_changes("new_name")
# ✅ 只处理受影响的文件
affected_files = [source_file, dest_file]
changes = renamer.get_changes("new_name", resources=affected_files)
from rope.base.project import Project
# 创建项目(启用所有优化)
project = Project(
project_path,
ropefolder=".ropeproject", # 持久化缓存
ignored_resources=[
"*.pyc", "__pycache__", ".git", ".venv", "venv",
"frontend", "docs", "node_modules", "tests",
],
prefs={
"automatic_soa": False, # 禁用自动结构分析
"import_dynload_stdmods": False, # 不动态加载标准库
}
)
try:
# 执行你的重构操作...
# changes = ...
# project.do(changes)
finally:
project.close()
对于简单的文件移动 + 导入更新场景,如果 rope 性能仍然不可接受:
git mvsed 或 ruff但对于复杂的语义重构(提取方法、改变签名、内联变量等),rope 仍然是唯一安全的选择。
| 文档 | 位置 |
|---|---|
| API 文档 | reference/*.md |
| 负向用例 | negative-case/raw-case/ |
| FastAPI 支持 | references/fastapi-support.md |
| rope 源代码 | ~/GitApp/rope |