用途
scratch-status 回答“.scratch/ 里还剩什么没做”,且不写入、不删除任何内容。它只做汇报;需要完整清理(归档研究、移除已完成 effort、判断矛盾)时,应使用 scratch-cleanup。
主要能力
- 范围控制:$ARGUMENTS 为 effort slug 时只检查 .scratch/<slug>/;为空时检查全部 effort。
- 清单盘点:从 .agents/issue-tracker.md(备用 docs/agents/issue-tracker.md、setup/issue-tracker.md)读取跟踪器布局,从对应 triage-labels.md 读取状态词表;遍历 .scratch/ 或指定子目录,找出包含 map、spec、decisions、tickets 或 triage 请求文件的每个 effort。旧 effort 可能用 issues/ 代替 tickets/,按 tickets 处理。跳过 research/ 与未分类文件。
- 变更日期:对受版本控制的文件用
git log -1 --format=%cs -- <path>取最后变更日期,否则用文件修改时间。 - 逐项读取:对 effort 内每个文件读取状态,支持 YAML frontmatter 的 status: 字段,或正文顶部旧式 Status: / Status: 行;同时读取 Blockers(Blocked by 行或对其他工单 id 的显式依赖)、Claimed-by(是否被认领及认领人)、提交引用(7–40 位十六进制 SHA,出现在状态行、## Resolution 或 ## Comments 中)。
- 提交归属检查:用
git merge-base --is-ancestor <sha> <default-branch>判断提交是否在默认分支上(默认分支通过git symbolic-ref --short refs/remotes/origin/HEAD去掉远端前缀取得,否则为 main)。squash-merged 或 rebased 的提交不算缺失;在判定提交不在分支上之前,依次检查:合并的 PR 是否包含它(gh api repos/{owner}/{repo}/commits/<sha>/pulls)、git cherry <default-branch> <sha> <sha>~1是否以 - 输出、默认分支是否有同主题提交;三项全失败才算缺失。 - 分类判定:
- done:所有文件状态为 closed 或 wontfix 角色字符串,所有引用提交都在默认分支上,且无矛盾(例如 spec 仍为 ready-for-agent 但所有工单已关闭,或已关闭工单的提交缺失,均属矛盾)。
- mismatched:未通过矛盾检查,或存在无法读取状态的文件。
- open:存在任何 open 文件;若一个工单阻塞多个其他工单,记录最受阻塞的一条链。
- 陈旧:open effort 的最晚文件日期早于 30 天(与 scratch-cleanup 默认一致)。
- 报告输出:只打印一张表,每个 effort 一行,按紧急程度排序(未阻塞的开放式工作、受阻的开放式工作、陈旧、不匹配、完成)。列为 Effort、Open work、Blocked by、Claimed by、Last change、Stale、Next。Next 给出一个具体命令:未认领未阻塞的构建工单用 /implement <ticket>,开放决策用 /grill-me <decision>,尚无工单的 map 用 /wayfinder <map>,已解决但无 spec 的 map 用 /to-spec,无工单的 spec 用 /to-tickets <spec>;done 的 Next 为 /scratch-cleanup;mismatched 的 Next 为该一行矛盾本身。表格下方为无任何可读状态文件的 effort 各输出一行并指出文件;Stale 写 ⚠️ yes 或 no,mismatched 行的 Next 以 ⚠️ 开头;结尾一行总计:<n> open, <n> stale, <n> mismatched, <n> done,不再输出计划、问题、确认提示或复述 Next 列。
使用方式
在 Claude Code 中配合 leek-skills 插件时,/scratch [slug] 可在面板中实时显示步骤 1–2,便于快速查看;但该面板无法被本技能读取,因此仍需执行上述步骤,以补充提交祖先检查与面板没有的表格。
适用场景与限制
适用于需要快速了解 .scratch/ 中各 effort 剩余工作、阻塞、认领与陈旧情况,并决定下一步运行哪个技能时。限制:只读,不做清理或修改;不报告 research/ 与未分类文件;分类规则以本文档为准,/scratch 面板的 hooks/mods/scratch-scan.ts 需同步修改,否则会与报告不一致。文档未提供安装命令、平台支持、收费或效果信息。