关于 shunk031-herdr-tab-status
Herdr Tab Status 是一项用于管理 Herdr 标签页状态的技能,供 worker 标记当前任务进度。它规定状态标签,并验证重命名是否作用于当前窗格对应的标签页。
主要功能
- 01设置任务进度状态标签
- 02解析当前窗格的标签页 ID
- 03验证标签页重命名结果
- 04区分编排者与 worker 标签
- 05说明受阻状态及原因
适用场景
- 01显示 worker 正在推进还是受阻
- 02窗格移动后确认重命名了正确标签页
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ shunk031/ skills --skill shunk031-herdr-tab-status安装后在 Claude Code 中输入/shunk031-herdr-tab-status确认已加载。
附带文件agents/openai.yaml
详细介绍
说明
阅读此
SKILL.md后,请说:🚦 I read shunk031-herdr-tab-status.
Herdr 标签页状态
工作者负责管理自己的当前标签页,并遵循 herdr 技能,在进度状态发生变化时重命名标签页,包括进入或退出重试时。开头的表情符号是主要状态标识,因为任务标签可能会被截断。状态只放在标签页标签中;工作区和工作树标签不要使用表情符号。
每次重命名自己的标签页之前,都要从当前窗格解析其 ID。窗格移动后,可能仍保留过时的继承值 HERDR_TAB_ID;herdr pane current --current 返回的实时 ID 位于 .result.pane.tab_id。重命名该标签页,并验证 Herdr 返回的标签页 ID 和标签内容均与预期一致:
label="🚧 <current step>"
rename_result=""
tab_id="$(herdr pane current --current | jq -er '.result.pane.tab_id')" &&
rename_result="$(herdr tab rename "$tab_id" "$label")" &&
printf '%s\n' "$rename_result" |
jq -e --arg tab_id "$tab_id" --arg label "$label" \
'.result.tab | .tab_id == $tab_id and .label == $label' >/dev/null ||
{ printf 'tab rename not verified: %s\n' "${rename_result:-no response}" >&2; false; }
如果退出码非零,说明标签内容没有设置到你的标签页上。不要声称已设置。
🚧、✅ 和 ⛔ 仅用于工作者标签页。当前 Agent 是协调者时,请根据 shunk031-herdr-orchestrate-workers 保留或设置 🤖 Orchestrator;分派工作时,切勿将其替换为工作者状态。
只能使用以下状态:
🚧 <current step>表示工作正在积极推进,包括正在进行的重试或诊断。⛔ <next action>表示工作者无法继续推进或结束:正在等待答复、审查、批准或合并;受到外部依赖阻碍;或者已停止/被取代,等待交接或清理。✅ <task> <PR number>表示工作者的工作和必要交接均已完成,没有剩余操作。
已发布但仍未关闭、且报告为 DONE 的 PR,如果审查或合并只能由用户完成,仍属于受阻状态;在该操作完成前,工作者应继续使用 ⛔ 下一步操作标签。只有在没有剩余操作时,才使用完成状态。工作者负责重命名自己的标签页。仅当工作者无响应或已失效时,协调者才可以使用其 pane move 返回的目标标签页 ID 设置受阻标签;pane current --current 解析的是协调者自己的标签页,因此无法识别工作者标签页以进行重命名。正常工作期间,协调者不得更改其他仍在工作的工作者的标签页。完成标签始终包含简明任务和 PR 编号,绝不能使用笼统的 DONE。
被要求选择标签时,第一行写出标签原文,然后再解释。
报告 BLOCKED 之前,必须在一个受保护的序列中执行重命名并报告。只有在 Herdr 返回所请求的标签页 ID 和标签内容后,才发送常规 BLOCKED 报告。失败时,应报告重命名未经验证:
label="⛔ <next action>"
report="BLOCKED <worker>: <reason>"
failure_report="BLOCKED <worker>: tab lookup or rename failed, so the label was not set. <reason>"
rename_result=""
if tab_id="$(herdr pane current --current | jq -er '.result.pane.tab_id')" &&
rename_result="$(herdr tab rename "$tab_id" "$label")" &&
printf '%s\n' "$rename_result" |
jq -e --arg tab_id "$tab_id" --arg label "$label" \
'.result.tab | .tab_id == $tab_id and .label == $label' >/dev/null; then
herdr agent prompt <orchestrator> "$report"
else
printf 'tab rename not verified: %s\n' "${rename_result:-no response}" >&2
herdr agent prompt <orchestrator> "$failure_report"
false
fi
BLOCKED 原因必须说明工作者为何无法继续推进或结束,例如外部依赖不可用,或工作已停止/被取代,正在等待交接。
发出标签页命令前,请遵循 herdr 技能中关于 Herdr 环境和当前标签页安全性的要求。