审查前 Shell 脚本格式化
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/format-shell-scripts-into-a-stable-house-style-before-review-with-shfmt
技能介绍
审查里的格式噪音
Shell 脚本长期靠团队约定和编辑器默认值维护,Bash、POSIX shell、Zsh 的缩进、引号、管道续行风格并不统一。同一段逻辑在 PR 里表现为「改一行,重排十行」,审查者要逐行 diff 才能确认实际行为变化,维护成本被噪声放大。更麻烦的是,不同的 shfmt 配置或语言版本会让格式结果漂移,同一份脚本在不同机器上格式化后仍然不一致。
技能如何工作
这个技能把 shfmt 的规范化流程固定到审查前:先在本地或 CI 中识别脚本类型,再统一缩进、引号、控制结构与续行方式,最后把格式化结果作为独立步骤暴露给评审者。
- 识别范围:Bash、POSIX shell、Zsh 与 mksh 脚本,覆盖多数仓库中的
*.sh与内嵌脚本。 - 执行时机:pre-commit、独立 CI job 或审查前本地命令,避免把格式变更混入功能提交。
- 结果呈现:让 diff 只显示真正的逻辑变化,格式差异单独成一个可跳过的 commit。
- 可选集成:通过 Docker 镜像或 Go 二进制接入流水线,保证不同环境使用同一版本。
适用边界
shfmt 只负责语法层面的统一,不会补全变量定义、不会改写脚本语义,也不能保证跨 shell 行为一致;它覆盖的是书写风格,不是运行时差异。另外,上游要求较新的 Go 工具链,容器或二进制版本不一致时,格式化结果仍可能产生额外 diff。团队在接入前应先固定配置与版本,否则噪声只是换了个地方出现。
使用场景
- 在 Git 提交前用 pre-commit 钩子运行该技能,让 shell 脚本风格统一后再进入审查。
- CI 新增独立 job,对 Bash、POSIX shell、Zsh 脚本执行格式化并报告未格式化文件。
- 维护跨平台发布脚本时,用固定版本统一 Bash、POSIX shell、Zsh 和 mksh 的写法。
- 合并大型 PR 前分离格式变更,让 diff 只显示真实的逻辑修改。
适合人员
- 负责维护 CI 流水线的开发者,需要统一仓库内 shell 脚本风格并避免无关 diff。
- 经常审查 Shell 脚本的技术负责人,希望 diff 只呈现真实逻辑修改。
- 打包命令行工具或容器镜像的维护者,需要在不同环境保持脚本可复现格式。
- 同时维护 Bash 与 Zsh 脚本的工程师,希望降低跨 shell 语法差异带来的混乱。