关于 doctor
doctor 是一套针对 Elixir 项目的分步检查技能,规定先格式化、运行 mix check,再按范围编译和测试。它强调只处理与分支改动直接相关的测试,并限制测试范围和修复范围。
主要功能
- 01按步骤执行并报告变更
- 02运行 mix format 格式化
- 03运行 mix check
- 04编译并限定范围运行测试
- 05限制测试失败的修复范围
适用场景
- 01逐步检查 Elixir 分支改动
- 02在提交前格式化并运行项目检查
- 03只验证与改动模块对应的测试
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ jasonharmongit/ jh-skills --skill doctor安装后在 Claude Code 中输入/doctor确认已加载。
详细介绍
每步执行循环
对于每一步,都严格按照以下顺序执行:
- 宣布这一步。
- 执行这一步,并修复问题,直到通过。
- 简要报告这一步所做的更改。
- 继续下一步。
宣布步骤的示例:
Doctor:步骤 2/3 - mix check
报告的示例:
步骤 2 报告:lib/surge/foo.ex - 移除了未使用的别名;在 after 回调中封装副作用。
步骤 1 - 格式化
mix format
一次 mix format 运行即可完成该工具能够执行的所有格式化;只有首次运行失败(例如出现语法错误)或格式化后修改了文件时,才需要再次运行。
步骤 2 - mix check
mix check
步骤 3 - 编译和测试
-
**!!!绝对关键规则!!!:**在任何情况下,都不允许直接运行
mix test。 -
**仅限范围:**分支中更改的路径,取自
git diff --name-only "$(git merge-base HEAD origin/main)"...HEAD+git status --short。 -
**测试运行方式:**仅指定明确的
*_test.exs文件参数。不得传入目录参数。不得运行全仓库测试。不得为了“额外确认”而运行测试。 -
**仅限允许的文件:**分支差异中包含的测试文件,或已更改
lib/...模块的直接对应文件(路径主体相同)。不得测试同级或相邻文件。 -
**允许列表为空:**跳过此步骤。
-
关键:修复范围按测试用例划分,而非按文件划分:仅当失败用例与分支中的应用代码更改直接相关时,才修复该用例。同一文件中的其他失败:忽略,保持失败。
-
**不得进行范围外编辑:**不得更改不相关的测试用例、不相关的测试文件,或为修复不相关故障而修改生产代码。
-
**编辑前检查(必需):**修改任何测试文件之前,先宣布计划修改的确切测试用例,并引用直接证明该用例值得修改的具体应用代码路径和分支差异代码块。若无法先引用这些证据,则不得编辑。
-
**任何文件更改的最终报告要求:**为每个已更改的测试用例提供有力证据——确切的失败用例、确切的已更改应用代码路径,以及两者之间的直接关系。无法证明时,不得编辑。
mix compile --warnings-as-errors
# optional:
mix test <file path>
注意事项
- 如果陷入循环,或遇到需要进行大规模或高风险更改的复杂问题,请停下来向用户求助。
- Doctor 不是让整个仓库全部通过的检查:它只包括编译、仅测试与分支相关的测试文件,以及仅修改这些文件中与分支相关的测试用例(同一文件中的其他用例可以继续失败)。任何更广泛的操作都是错误的。
- 提醒:在任何情况下,都不允许直接运行
mix test。