@amoslee2026/bb-create-issue
BBabel 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.
Install
agr install @amoslee2026/bb-create-issue --target claudeWrites 1 file into .claude/skills/, pinned to git-db34e98b.
- .claude/skills/bb-create-issue/SKILL.md
Document
name: bb-create-issue description: "Babel internal issue protocol — create a labeled handoff between pipeline agents. Writes designs//.handoff/.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
Trustgrade B
- passBody integrity
Whether the stored document is plausibly the kind of file the artifact declares, rather than something fetched by mistake.
- passType matchnot applicable to this artifact type
Whether the artifact is really the kind of thing its metadata claims it is.
- passFreshness
How long since the source repository was last pushed to.
- passPrompt injection
Scans the artifact's own text for instructions aimed at your agent rather than at you.
- warnLicensecopyleft/unknown — index-and-link only
Whether the source repository declares an SPDX license permissive enough to redistribute.
How the grade is calculated
Each check contributes 0 points when it passes, 1 when it warns, and 2 when it fails. The total maps to a letter:
- Aevery check passed
- Bone warning
- Ctwo warnings
- Dprompt injection or body integrity failed, or three warnings
- Fone of those failed, and something else is wrong
These are automated hygiene checks, not a security audit, and not a dependency or vulnerability scan. A grade of A means nothing was flagged — not that the artifact is safe.
Versions
git-db34e98b407b2026-07-31