agentsclimarketplace

Ren refactor

Skill HubertBiyo/ren-flow/plugins/ren-flow/skills/ren-refactor

代码优化 / 重构 —— 处理「行为不变、结构变」的工作(结构拆分、性能、可读性),扫描 → 选定 → 逐步改。按规模分快路 / 全程。触发:用户说「优化一下」「重构」「拆一下」「这段太长了」「性能不行」,且不夹带行为改动。From its SKILL.md

Install
npx -y skills add HubertBiyo/ren-flow --skill ren-refactor

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

4.8 KB, ~1.7k tokens by cl100k_base, as published. Nobody here has run it

ren-refactor

启动必读

先 Read .ren-flow/attention.md。

工作区模式(根 attention.md 标 mode: workspace):制品按业务域分层 —— 本技能产物落到 .ren-flow/domains/{domain}/ 下而非 .ren-flow/。先确认本次业务域(域清单见根 attention),再 Read .ren-flow/domains/{domain}/attention.md 取该域约定。

这个技能干什么

处理「行为不变、结构变」的活 —— 拆胖文件、抽重复、调性能、改可读性。

底线:行为等价。 一旦会改外部可观察行为 —— 不走 ren-refactor:行为该变是需求,走 ren-spec;行为错了是 bug,走 ren-fix。

AI 自己重构有两个稳定翻车点:不清楚模块真实约束改出不等价的东西;一次吞太大改到后面忘了前面。本技能在「想优化」和「动手」之间塞一层扫描清单 + 用户勾选,让 AI 只接能稳定做对的活。产物:一个重构目录 .ren-flow/refactors/{YYYY-MM-DD}-{slug}/,主文件 {slug}-refactor.md;扫描清单、before/after 等伴生文件一并放进去。

先判规模:快路还是全程

快路(同时满足):单函数 / 单文件、1-3 处改动、有测试可自证、不改公开接口。 → 直接指出 1-3 条优化 → 用户一次确认 → 原地改 → 跑测试自证。

全程(任一命中):跨多文件、改动 > 3 处、改公开接口、需人工目视验证、无测试覆盖。 → 走下面三阶段。

三阶段

阶段 1:扫描(scan)

先锁定范围:用户点名的文件 / 「这个页面」(入口组件 + 直接 import,不追公共依赖)/「这个模块」(模块目录内,不出边界)。范围 > 15 文件先请用户缩小。

按四层找优化点(当模板用):

  • L1 行为等价迁移:接口要改但多处调用 → Parallel Change;整块旧逻辑被新实现替换 → Strangler Fig
  • L2 代码级:超长函数(>50 行 / 圈复杂度高)、重复片段、神秘临时变量、深层嵌套
  • L3 结构拆分:文件 / 组件偏胖、一个文件管多件事、容器与展示混杂、相同逻辑多处各写一份
  • L4 性能:重复计算、N+1 查询、列表无分页 / 虚拟化、监听无清理

产出清单交用户勾选 ✓/✗(✗ 写理由)。不替用户勾选。真没发现值得做的就老实说,不凑数。

阶段 2:定方案(design)

对勾选项:排顺序(有依赖的排前)、每条写「改什么 → 怎么改 → 怎么验证行为不变 → 谁验(AI 自证 / 人工目视)」。无测试覆盖的条目,前置「先补刻画测试」—— 否则「行为等价」只是口头承诺。整体交用户 review 放行。

阶段 3:逐步改(apply)

  • 一步一做不批量 —— 按顺序,当前步没验证通过不开下一步,保留单步可回滚
  • 每步验证:AI 自证的跑测试 / 类型检查 / lint;人工目视的停下来请用户确认(前端效果 AI 看不到,不能用「类型检查过了」替代)
  • 行为等价自检:每步问一句「这步有没有可能改了外部可观察行为?」有怀疑就退回
  • 偏离当场停 —— 发现方案没考虑的情况,停下汇报,不自己发挥
  • 全部做完跑全量测试 + 检查,写 refactor 记录 —— 模板与归档规则见 references/record-format.md(范围 / 执行记录 / 偏离三节 + frontmatter)。

与其他技能的边界

  • 改行为 → ren-spec(需求变)或 ren-fix(bug)
  • 重构中发现的 bug → 记成 ren-fix,不在重构里偷偷修
  • 重构中冒出「顺便加个 X」→ 停下,拆成 ren-spec
  • 跨模块的边界重划不是单次 refactor —— 拆成「ren-arch 更新 + 多个模块级 refactor」
  • 命名偏好 / 引号风格这类口味项不进清单 —— 要定就走 ren-note 的 decision

退出条件

  • 扫描清单用户已勾选(✓/✗)
  • 每条勾选项有「怎么验证行为不变」
  • 无测试覆盖的条目已前置补测试
  • 逐步改,每步有验证记录;人工目视项有用户确认
  • 全量测试 / 检查通过,无夹带的行为改动
  • refactor 记录已落盘

容易踩的坑

  • 夹带行为改动 —— 顺手修 bug / 改文案,该拆出去
  • 一次提交做多步 —— 失去单步回滚能力
  • 没测试覆盖硬上 ——「行为等价」变成空头承诺
  • 人工目视项自己跳过 —— 前端效果 AI 看不到
  • 扫大模块直接动手 —— 产出没法决策的长清单
  • 把口味项列进清单 —— 命名偏好走 decision

What ships with it: 1 file

883 B alongside SKILL.md

references/

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.