name: bb-create-issue description: "Babel internal issue protocol — create a labeled handoff between pipeline agents. Writes designs/<name>/.handoff/<label>.md and appends to handoff_log.jsonl; best-effort gh issue create if gh available. Triggered by every guru/architect agent at handoff time."
bb-create-issue
Inputs
--label <label>— one ofready-for-rtl | ready-for-verification | ready-for-synth | ready-for-pd | signoff | arch-needs-fix | rtl-needs-fix | synth-needs-fix | escalate-user | pd-rework--artifact <path>— canonical artifact path (e.g.designs/<name>/mas/mas.json)--body-file <path>(optional) — markdown body source--correlation-id <sha256>(optional) — sha256 of failing artifact for dedup (fix M-07)--design-name <name>(optional) — derived from artifact path if absent--summary <one-liner>(optional) — placed at top of body
Output Contract
| field | 值 |
|-------|----|
| artifact_path | designs/<name>/.handoff/<label>.md |
| log_path | designs/<name>/.handoff/handoff_log.jsonl |
| gh_issue_url | URL|null |
| valid | bool |
4-Phase 执行
Phase 1 — derive_design_name
if --design-name absent:
parse from --artifact: matches "designs/([^/]+)/" → design_name
if no match: error "cannot derive design_name", exit 2
Phase 2 — write_handoff
LLM 直接调 Write 工具写出 designs/<design_name>/.handoff/<label>.md:
# <label>
- timestamp: <ISO 8601 Beijing time>
- artifact: <path>
- correlation_id: <sha or NA>
- summary: <one-liner or "">
- body: <body-file content or stdin>
Phase 3 — append_log
调 Bash:
mkdir -p designs/<design_name>/.handoff
LINE=$(printf '{"ts":"%s","label":"%s","artifact":"%s","correlation_id":"%s"}' \
"$(date -u +'%Y-%m-%dT%H:%M:%SZ')" "<label>" "<artifact>" "<correlation_id_or_NA>")
echo "$LINE" >> designs/<design_name>/.handoff/handoff_log.jsonl
Phase 4 — gh_best_effort
if command -v gh >/dev/null 2>&1; then
gh issue create \
--label "<label>" \
--title "<label>: <design_name>" \
--body-file designs/<design_name>/.handoff/<label>.md \
2>/dev/null || true
fi
返回 {artifact_path, log_path, gh_issue_url|null, valid:true}。
Failure Modes
- design_name 不可推导 → exit 2
- label 不在 allow-list → exit 3
- Write 失败 → 返回
{valid:false, error:"write failed"}
与 PostToolUse hook 联动
写入 <label>.md 后由 bb-hook-pipeline-advance.sh 自动提示用户下一步 agent;写 *-needs-fix.md 由 bb-hook-create-fix-issue.sh 记录 escalation。
Allow-list
ready-for-rtl, ready-for-verification, ready-for-synth, ready-for-pd, signoff,
arch-needs-fix, rtl-needs-fix, synth-needs-fix, pd-rework, escalate-user
Docker Compose Architect
DevOps
Designs optimized Docker Compose configurations.
Incident Postmortem Writer
DevOps
Writes structured and blameless incident postmortem reports.
Runbook Creator
DevOps
Creates clear operational runbooks for common DevOps procedures.