用途
start 是 Elixir 重写工作流的前门技能,用于启动新的重写,或恢复已有的重写,并报告其当前状态。它面向希望把任意语言编写的应用(如 Rails、Django、PHP、Node、Go、Java、.NET 等)改写为 Elixir 的场景。
主要能力
- 阶段路由:按 /rewrite:start → /rewrite:analyze → /rewrite:architect → /rewrite:roadmap,再按切片进入 /phx:plan → /phx:work → /rewrite:verify 的顺序推进,每次只路由到一个阶段。
- 状态检测:读取 .claude/rewrite/ 下的 status.md、architecture/ 等产物,并按固定优先级判断当前处于新建、分析未完成、已分析、架构未完成、已架构、待验收、构建中、切片中或已完成等状态,给出唯一的下一步命令。
- 恢复校验:恢复前先比对 status.md 中记录的 Source path 与 Target path,确认当前目录为目标路径;再用 inventory.py --compare 对比源码清单,识别身份字段变化;对 git 源可用 git diff --stat 显示自记录 sha 以来的变更,并询问是否重新分析受影响区域。
- 状态报告(--status 或恢复时始终执行):通过 ledger.py stats 与 roadmap.md 汇总阶段、ADR-000 状态(accepted 或 ASSUMED)、账本已验证数与分母、UNDECIDED 与已接受风险数量、各状态切片、待处理分歧,以及下一步命令。
- --auto 链式执行:依次以 --auto 运行 analyze、architect、roadmap,任一阶段报告阻塞即提前停止;结束时列出需用户批准的 ASSUMED 决策与下一步命令,不会自行批准假定决策,也不会启动 /phx:work、部署或接触生产数据。
使用方式
- 新重写:用不超过五行的说明解释方法(功能即目标、先恢复每个机制的目的再移植、兼容性标准先于架构、切片交给 /phx:plan、对等性需要证据),然后运行 /rewrite:analyze 并传入旧版应用路径;产物写入当前目录下的 ./.claude/rewrite/,该目录必须是 Elixir 项目或空工作区,不能是旧版应用。
- 参数:<legacy-app-path> 为要重写的应用;--steering <dir> 与 --oracle <dir> 传给 analyze,前者是引导文档,后者是应用之外的测试或 API 套件(只读取评分,不运行);--status 仅报告;--auto 无提问地串联 analyze → architect → roadmap,默认项记为 ASSUMED。
- 依赖检查:若当前会话技能列表中没有 phx:plan,需先安装 elixir-phoenix 插件(如 /plugin install elixir-phoenix@oliver-kriska 或对应市场名),再运行 /reload-plugins,否则架构咨询与 /phx:plan 交接会失败,--auto 在 analyze 后停止。
- 无头或 CI 运行(claude -p)会在最后一轮后 10 分钟停止后台代理,可用 CLAUDE_CODE_PRINT_BG_WAIT_CEILING_MS=0 解除限制,例如:CLAUDE_CODE_PRINT_BG_WAIT_CEILING_MS=0 claude -p "/rewrite:start /path/to/legacy --auto"。
产物
- analyze 写入:status.md、charter.md、inventory/、kb/、analysis/(含 budget.md)。
- architect 写入:ledger.md、architecture/(ADR-000-compatibility-bar.md、architecture.md、decisions.md、divergences.md、adr/、consults/)。
- roadmap 写入:roadmap.md、../plans/rewrite-NN-*/interview.md 与 scratchpad.md。
- verify 写入:verify/NN/(preflight、evidence、idiom、parity、report)与 verify/accepted-risks.md(风险仅由用户接受)。
限制
- 一次只推进一个阶段;--auto 仅在分析、架构、路线图之间串联。
- 恢复前必须校验源身份,状态只来自 .claude/rewrite/ 与账本脚本,不依赖上一次会话记忆。
- --auto 遇到需决策处即停止,不自动批准 ASSUMED 选择,不启动 /phx:work,不部署、不接触生产数据。
- 旧版应用只读,不得写入或执行源应用。