release-branch
Make the merge/PR/keep/discard decision for a feature branch, verify coverage gates, create the PR with gh, and clean up the worktree. Use when a feature is done and ready to ship, or when user says "release", "merge", or "open a PR".
- License 许可
- MIT
- 最近更新
- 2026-11-10
- Stars
- ★ 289
- Forks
- 24
01 前言 Front Matter
- name
- release-branch
- model
- haiku
- effort
- standard
- description
- Make the merge/PR/keep/discard decision for a feature branch, verify coverage gates, create the PR with gh, and clean up the worktree. Use when a feature is done and ready to ship, or when user says "release", "merge", or "open a PR".
02 资源文件 1
- 参考文档REFERENCE.md5.1 KB
03 SKILL.md 正文
<!-- story: e38s07 --> <!-- story: e45s15 --> <!-- story: e45s32 --> <!-- story: e45s39 --> <!-- story: e82s02 --> <!-- story: e20s02 -->
Release Branch
HARD GATE — Do NOT merge or release if tests fail or if coverage gates are not met. If the branch is red, return to
develop-tddto fix regressions or add missing tests before proceeding.
Finalize a completed feature branch: verify coverage gates, integrate onto main, and clean up the worktree.
Additional modes
--hotfix: Cherry-pick to main + tag. Skip PR in solo.--squash-state: Squashchore(state):commits before merge.
Integrate mode
Read specs/state.yaml key workflow_mode (team-pr | solo-git). Fall back to profiles/solo-git.md.
| Mode | When | Ship path |
|---|---|---|
| solo-local | workflow_mode: solo-git |
Auto: scripts/land-branch.sh if present, else fallback (Step 5) |
| team-pr | workflow_mode: team-pr (default) |
gh pr create → gh pr merge --squash |
If unsure, prefer solo-local. Also read state.yaml vcs.kind: Git follows the procedures below; Jujutsu uses workspaces/bookmarks and must not call Git-only landing scripts.
Process
Timing:
bash scripts/bp-timing.sh start release-branchat invocation;bash scripts/bp-timing.sh end release-branchbefore handoff.
1. Final verification
<full test command> && <typecheck command> && <lint command>
git log main...HEAD --oneline | grep -vE "^[a-f0-9]+ (feat|fix|docs|style|refactor|perf|test|build|ci|chore|revert)(\(.+\))?!?: .+$" && echo "❌ Non-conventional commits found" || echo "✅ Commits verified"
# Block AI agent attribution (P1)
git log main...HEAD --format="%B" | grep -qiE 'co[- ]authored[- ]by' && echo "❌ Co-authored-by footer found — blocked" || echo "✅ No AI attribution"
- [ ] All tests pass, no type errors, no lint violations, all commits follow Conventional Commits
- [ ] NO
Co-authored-byorCo-Authored-Byin any commit body — P1 rule (CONVENTIONS.md § Git Attribution).land-branch.shblocks the merge if found.
2. Coverage check
- [ ] Overall coverage ≥ 80%; business logic coverage ≥ 95%
2a. Security gate
- [ ]
specs/security/REVIEW.mdexists and is fresh (matches current branch diff)
2b. Audit-code & Traceability gates (HARD GATES — Issue #182)
- [ ] Run
bash scripts/lib/assert-epic-gate.sh release(assertsspecs/AUDIT_LATEST.mdpassed; blocks release on failure). - [ ] No unresolved HIGH security findings with confidence ≥ 8 (or documented in
specs/security/EXCEPTIONS.md). - [ ] Run
gate-trace. FAIL blocks merge; CONCERNS requires explicit override inspecs/state.yaml. WAIVED if no matrix available.
Adversarial refute framing (e45s32): The final pre-merge check is refute, not rubber-stamp. Before declaring ready, actively try to disprove traceability completeness — missing story tags, absent verify evidence, stale security review. Only proceed when refutation fails.
3. Diff review
- [ ] All commits intentional, no secrets, CONVENTIONS.md compliance
4. Decision
Options: Release (solo-local) / Open PR / Keep branch / Discard
5. Integrate
Run commit-message first. Git solo-local uses land-branch.sh. Jujutsu team mode explicitly advances and pushes a bookmark; -m is mandatory for commit/describe operations:
# Git solo-local
bash scripts/land-branch.sh <task-slug> "feat(scope): description"
# Jujutsu team PR
jj describe -m "feat(scope): description"
jj bookmark set <task-slug> -r @
jj git push -b <task-slug>
Jujutsu solo-local landing is unsupported: run bp_require_vcs_operation "$PWD" land-branch and stop with its remediation instead of invoking the Git backend.
6. Create PR (team-pr only)
Create the pull request with a literal provenance marker in the body so agent-generated PRs are identifiable and do not rot silently:
<!-- bigpowers-provenance: agent-generated -->
Place the marker on its own line immediately after the ## Summary heading. Then merge via gh:
gh pr create --title "..." --body "$(cat <<'EOF'
## Summary
<!-- bigpowers-provenance: agent-generated -->
- ...
## Test plan
- [ ] ...
EOF
)"
gh pr merge --squash --delete-branch
semantic-release auto-detects the commit, bumps SemVer, tags the repo, generates release notes.
7a. Archive completed epic capsule
HARD GATE — When all epic stories are done (all
doneinexecution-status.yaml), archive the capsule:
mv specs/epics/eNN-slug specs/epics/archive/
7b. CI verification & agent lock release (e39s02)
HARD GATE — Do NOT declare success until CI completes. Three-independent-facts (e45s15): commit landed, workflow green, registry visible — see REFERENCE.md.
bash scripts/wait-for-ci.sh --timeout 600 --interval 30
- [ ] CI passes;
release.ci_verified: truein state.yaml - On failure:
handoff.next_skill = fix-bug
8. Clean up & return
Git: prune worktree, delete branch, return to main. Jujutsu: jj workspace forget <workspace> only after integration; do not delete its bookmark implicitly. Cycle-time: see REFERENCE.md.
Report: "Branch released."
Verify
→ verify: command -v gh >/dev/null 2>&1 && test -f specs/state.yaml && test -d skills/verify-work
04 同仓库更多 Skills
skill-verify-fail-open-fixture
Negative-path fixture for run-skill-verify.sh — must never PASS.
negative-path
暂无简介
write-document
Write, organize, and sync high-integrity technical documents using the BMAD methodology. Ensures every document is Bold, Minimal, Actionable, and Durable. Use when creating architectural docs, technical guides, or organizing the specs/ directory.
wire-observability
Add structured JSON logging, observability commands, and idempotent setup scripts to a project. Use when a project needs production-readiness instrumentation, when user wants structured logging, or as a production-readiness gate at any phase of development.
wire-ci
CI pipeline setup with bundled, forge-neutral templates and local validation. Detects the forge from the git remote, generates workflows for supported forges, and skips honestly for the rest. The CI equivalent of wire-observability.
visual-dashboard
Start a browser-based dashboard that visualizes architecture, implementation plans, and project status. Persists artifacts in .bigpowers/dashboard/. Reads specs/state.yaml, release-plan.yaml, epics, and planning-status via HTTP API or opencode panel.