关于 finish-work
面向仓库或单体仓库包开发者的收尾技能,用于验证改动、暂存相关文件并规范提交信息,同时遵守不提交请求且未经允许不推送。
主要功能
- 01运行项目检查并修复失败
- 02仅暂存相关改动
- 03使用结构化提交信息
- 04遵守明确的不提交请求
- 05未经允许不推送
适用场景
- 01完成一项已实现的改动
- 02验证并提交修复
- 03准备提交说明但不提交
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ fixmyberlin/ fixmyskills --skill finish-work安装后在 Claude Code 中输入/finish-work确认已加载。
详细介绍
原文在翻译后有更新,译文可能不是最新。
完成工作
在项目根目录运行,或在每个有变更的 monorepo 包(app/、processing/ 等)中运行。
工作流
- 验证:读取
package.json中的scripts.check,运行bun run check,修复根本原因,然后重新运行,直到检查通过。lint/format可能会重写文件。 - 将修复放在一起:把 lint/format 变更与功能变更一起暂存;不要单独提交“lint”或“format”提交。
- 按照下方格式编写提交消息。
- 默认:提交。 除非用户明确表示不想提交,否则按下方的提交流程操作。
- 只有在明确表示不提交时才仅起草。 显示提交消息并停止;不要运行
git commit。
不提交的意图包括:明确推迟(“不要提交”“仅起草”“仅要消息”“提交消息会是什么”)、仅要求检查/修复(未要求收尾的“运行检查”“修复 lint”“修复 CI”)、仅审查或提问,或用户表示会自行提交。
意图模糊时,优先提交——尤其是在实现变更后,或用户调用 finish-work 来收尾时。
提交流程:并行运行 git status、git diff 和 git log -5;仅暂存相关文件;通过 HEREDOC 运行 git commit;运行 git status 进行验证。
安全须知:未经要求不要推送。不要使用 --no-verify。不要 amend 已推送的提交。不要暂存密钥或无关的未提交文件。
如果已经提交,而验证仅修复了 lint/format:当 HEAD 尚未推送时,运行 git commit --amend --no-edit;否则暂存后先询问是否要 amend。
E2E 不在 check 中。对于 UI/路由/认证变更,还要运行 bun run e2e(或在有定义时运行 check-full)。参阅 playwright-skill。
脚本名称:参阅 package-json-scripts.md。
提交消息
<Topic>: <Desc>
- <user-facing outcome bullet>
Ping https://github.com/org/repo/pull/123
- Topic: 范围(
Map、Auth、Processing、Dev等)。FMC 仅限内部的变更(依赖项、CI、工具)使用Dev。 - Desc: 描述期望结果,使用祈使语气,而非文件名。
- Body: 使用项目符号说明合并后用户/运维人员能看到、执行或获得什么。如对话中已说明原因,请一并写明。聚焦结果;不要罗列文件、符号、重构或 diff 步骤。Body 会用于 user-changelog,因此即使不看补丁也应清晰易懂。
- Ping: 如果用户提到了 PR/issue,为每项添加一行
Ping <full-url>。
示例:
Region map: clamp initial viewport to bounds
- Users: map fits selected region on load instead of generic Germany view (confusing deep links)
- Preserve explicit zoom in URL so shared links do not jump
Ping https://github.com/FixMyBerlin/tilda-geo/issues/5678
仅限内部的变更(没有面向用户的变化):可以使用维护者视角的项目符号;若没有相关内容,则省略面向用户的项目符号。
相关
close-worktree(将 worktree 合并到 develop;有未提交变更时会调用此技能) | unslop-code(LLM 后清理;每个阶段提交时都会调用此技能) | playwright-skill | tech-stack | review-dependabot / babysit | user-changelog