bb-close-issue

star 0

Babel internal issue protocol — close a handoff after downstream agent picked it up or user signed off. Moves designs/<name>/.handoff/<label>.md to .handoff/closed/ (using mv per CLAUDE.md), appends to handoff_log.jsonl.

05shygo By 05shygo schedule Updated 6/3/2026

name: bb-close-issue description: "Babel internal issue protocol — close a handoff after downstream agent picked it up or user signed off. Moves designs//.handoff/

bb-close-issue

Inputs

  • --label <label> — handoff label to close
  • --design-name <name> — required
  • --reason <text> (optional) — close reason
  • --close-gh (flag) — also close paired gh issue

Output Contract

field
closed_path designs/<name>/.handoff/closed/<label>_<stamp>.md
log_path designs/<name>/.handoff/handoff_log.jsonl
gh_closed bool
valid bool

4-Phase 执行

Phase 1 — validate

src="designs/<name>/.handoff/<label>.md"
[ -f "$src" ] || exit 2  # nothing to close

Phase 2 — move (mv 不 rm)

Bash

STAMP=$(date -u +'%Y%m%d-%H%M%SZ')
mkdir -p designs/<name>/.handoff/closed
mv designs/<name>/.handoff/<label>.md designs/<name>/.handoff/closed/<label>_${STAMP}.md

Phase 3 — append_log

LINE=$(printf '{"ts":"%s","action":"close","label":"%s","reason":"%s"}' \
  "$(date -u +'%Y-%m-%dT%H:%M:%SZ')" "<label>" "<reason>")
echo "$LINE" >> designs/<name>/.handoff/handoff_log.jsonl

Phase 4 — gh (optional)

if [ "<close-gh>" = "true" ] && command -v gh >/dev/null 2>&1; then
  gh issue list --label "<label>" --state open --json number \
    | python3 -c "import sys,json; [print(i['number']) for i in json.load(sys.stdin)]" \
    | xargs -I{} gh issue close {} --comment "Closed by bb-close-issue: <reason>"
fi

Failure Modes

状态 退出码
handoff 文件不存在 2
mv 失败 4
gh 不可用且 --close-gh 指定 warning(exit 0)
Install via CLI
npx skills add https://github.com/05shygo/mmu_verification --skill bb-close-issue
Repository Details
star Stars 0
call_split Forks 0
navigation Branch main
article Path SKILL.md
More from Creator