[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71K8T896YNTEXKYBBC577Y8":3,"skill-same:01M71K8T896YNTEXKYBBC577Y8":74},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":45,"commitSha":46,"skillDirectory":47,"forksCount":48,"repositoryHtmlUrl":49,"repositoryHomepageUrl":50,"ownerHtmlUrl":51,"ownerBlogUrl":52,"ownerDescription":6,"updatedAt":53,"install":54,"resources":67},"01M71K8T896YNTEXKYBBC577Y8","release-branch",null,"Make the merge\u002FPR\u002Fkeep\u002Fdiscard 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\".","danielvm-git\u002Fbigpowers","danielvm-git","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F1020864?v=4","01M71H1N1CTQ529S0KN7KETVG6","Daniel V M","01M71H1N218Y3S8WHCJ58NPRSW",289,"MIT","https:\u002F\u002Fgithub.com\u002Fdanielvm-git\u002Fbigpowers\u002Fblob\u002Fmain\u002Fskills\u002Frelease-branch\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"release","release branch","branch","feature","pr","make","ship","merge","worktree","haiku","verify coverage","create","done","when","open","clean","decision","up","ready","coverage","2026-11-10 10:12:30",false,"---\nname: release-branch\n# story: e14s01 e15s03\nmodel: haiku\neffort: standard\ndescription: Make the merge\u002FPR\u002Fkeep\u002Fdiscard 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\".\n---\n\n\u003C!-- story: e38s07 -->\n\u003C!-- story: e45s15 -->\n\u003C!-- story: e45s32 -->\n\u003C!-- story: e45s39 -->\n\u003C!-- story: e82s02 -->\n\u003C!-- story: e20s02 -->\n\n\n# Release Branch\n\n> **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-tdd` to fix regressions or add missing tests before proceeding.\n\nFinalize a completed feature branch: verify coverage gates, integrate onto `main`, and clean up the worktree.\n\n## Additional modes\n- `--hotfix`: Cherry-pick to main + tag. Skip PR in solo.\n- `--squash-state`: Squash `chore(state):` commits before merge.\n\n## Integrate mode\n\nRead `specs\u002Fstate.yaml` key `workflow_mode` (`team-pr` | `solo-git`). Fall back to `profiles\u002Fsolo-git.md`.\n\n| Mode | When | Ship path |\n|------|------|-----------|\n| **solo-local** | `workflow_mode: solo-git` | Auto: `scripts\u002Fland-branch.sh` if present, else fallback (Step 5) |\n| **team-pr** | `workflow_mode: team-pr` (default) | `gh pr create` → `gh pr merge --squash` |\n\nIf unsure, prefer **solo-local**. Also read `state.yaml` `vcs.kind`: Git follows the procedures below; Jujutsu uses workspaces\u002Fbookmarks and must not call Git-only landing scripts.\n\n## Process\n\n> **Timing:** `bash scripts\u002Fbp-timing.sh start release-branch` at invocation; `bash scripts\u002Fbp-timing.sh end release-branch` before handoff.\n\n### 1. Final verification\n\n```bash\n\u003Cfull test command> && \u003Ctypecheck command> && \u003Clint command>\ngit 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\"\n# Block AI agent attribution (P1)\ngit log main...HEAD --format=\"%B\" | grep -qiE 'co[- ]authored[- ]by' && echo \"❌ Co-authored-by footer found — blocked\" || echo \"✅ No AI attribution\"\n```\n\n- [ ] All tests pass, no type errors, no lint violations, all commits follow Conventional Commits\n- [ ] **NO `Co-authored-by` or `Co-Authored-By`** in any commit body — P1 rule (CONVENTIONS.md § Git Attribution). `land-branch.sh` blocks the merge if found.\n\n### 2. Coverage check\n\n- [ ] Overall coverage ≥ 80%; business logic coverage ≥ 95%\n\n### 2a. Security gate\n\n- [ ] `specs\u002Fsecurity\u002FREVIEW.md` exists and is fresh (matches current branch diff)\n\n### 2b. Audit-code & Traceability gates (HARD GATES — Issue #182)\n\n- [ ] Run `bash scripts\u002Flib\u002Fassert-epic-gate.sh release` (asserts `specs\u002FAUDIT_LATEST.md` passed; blocks release on failure).\n- [ ] No unresolved HIGH security findings with confidence ≥ 8 (or documented in `specs\u002Fsecurity\u002FEXCEPTIONS.md`).\n- [ ] Run `gate-trace`. FAIL blocks merge; CONCERNS requires explicit override in `specs\u002Fstate.yaml`. WAIVED if no matrix available.\n\n> **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.\n\n### 3. Diff review\n\n- [ ] All commits intentional, no secrets, CONVENTIONS.md compliance\n\n### 4. Decision\n\nOptions: **Release (solo-local)** \u002F **Open PR** \u002F **Keep branch** \u002F **Discard**\n\n### 5. Integrate\n\nRun `commit-message` first. Git solo-local uses `land-branch.sh`. Jujutsu team mode explicitly advances and pushes a bookmark; `-m` is mandatory for commit\u002Fdescribe operations:\n\n```bash\n# Git solo-local\nbash scripts\u002Fland-branch.sh \u003Ctask-slug> \"feat(scope): description\"\n# Jujutsu team PR\njj describe -m \"feat(scope): description\"\njj bookmark set \u003Ctask-slug> -r @\njj git push -b \u003Ctask-slug>\n```\n\nJujutsu solo-local landing is unsupported: run `bp_require_vcs_operation \"$PWD\" land-branch` and stop with its remediation instead of invoking the Git backend.\n\n### 6. Create PR (team-pr only)\n\nCreate the pull request with a **literal provenance marker** in the body so agent-generated PRs are identifiable and do not rot silently:\n\n```markdown\n\u003C!-- bigpowers-provenance: agent-generated -->\n```\n\nPlace the marker on its own line immediately after the `## Summary` heading. Then merge via `gh`:\n\n```bash\ngh pr create --title \"...\" --body \"$(cat \u003C\u003C'EOF'\n## Summary\n\u003C!-- bigpowers-provenance: agent-generated -->\n\n- ...\n\n## Test plan\n- [ ] ...\n\nEOF\n)\"\ngh pr merge --squash --delete-branch\n```\n\n`semantic-release` auto-detects the commit, bumps SemVer, tags the repo, generates release notes.\n\n### 7a. Archive completed epic capsule\n\n> **HARD GATE** — When all epic stories are done (all `done` in `execution-status.yaml`), archive the capsule:\n\n```bash\nmv specs\u002Fepics\u002FeNN-slug specs\u002Fepics\u002Farchive\u002F\n```\n\n### 7b. CI verification & agent lock release (e39s02)\n\n> **HARD GATE** — Do NOT declare success until CI completes. **Three-independent-facts** (e45s15): commit landed, workflow green, registry visible — see [REFERENCE.md](REFERENCE.md#three-independent-facts-release).\n\n```bash\nbash scripts\u002Fwait-for-ci.sh --timeout 600 --interval 30\n```\n\n- [ ] CI passes; `release.ci_verified: true` in state.yaml\n- On failure: `handoff.next_skill = fix-bug`\n\n### 8. Clean up & return\n\nGit: prune worktree, delete branch, return to main. Jujutsu: `jj workspace forget \u003Cworkspace>` only after integration; do not delete its bookmark implicitly. Cycle-time: see [REFERENCE.md](REFERENCE.md#cycle-time).\n\nReport: \"Branch released.\"\n\n## Verify\n\n→ verify: `command -v gh >\u002Fdev\u002Fnull 2>&1 && test -f specs\u002Fstate.yaml && test -d skills\u002Fverify-work`\n","\u003C!-- story: e38s07 -->\n\u003C!-- story: e45s15 -->\n\u003C!-- story: e45s32 -->\n\u003C!-- story: e45s39 -->\n\u003C!-- story: e82s02 -->\n\u003C!-- story: e20s02 -->\n\n\n# Release Branch\n\n> **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-tdd` to fix regressions or add missing tests before proceeding.\n\nFinalize a completed feature branch: verify coverage gates, integrate onto `main`, and clean up the worktree.\n\n## Additional modes\n- `--hotfix`: Cherry-pick to main + tag. Skip PR in solo.\n- `--squash-state`: Squash `chore(state):` commits before merge.\n\n## Integrate mode\n\nRead `specs\u002Fstate.yaml` key `workflow_mode` (`team-pr` | `solo-git`). Fall back to `profiles\u002Fsolo-git.md`.\n\n| Mode | When | Ship path |\n|------|------|-----------|\n| **solo-local** | `workflow_mode: solo-git` | Auto: `scripts\u002Fland-branch.sh` if present, else fallback (Step 5) |\n| **team-pr** | `workflow_mode: team-pr` (default) | `gh pr create` → `gh pr merge --squash` |\n\nIf unsure, prefer **solo-local**. Also read `state.yaml` `vcs.kind`: Git follows the procedures below; Jujutsu uses workspaces\u002Fbookmarks and must not call Git-only landing scripts.\n\n## Process\n\n> **Timing:** `bash scripts\u002Fbp-timing.sh start release-branch` at invocation; `bash scripts\u002Fbp-timing.sh end release-branch` before handoff.\n\n### 1. Final verification\n\n```bash\n\u003Cfull test command> && \u003Ctypecheck command> && \u003Clint command>\ngit 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\"\n# Block AI agent attribution (P1)\ngit log main...HEAD --format=\"%B\" | grep -qiE 'co[- ]authored[- ]by' && echo \"❌ Co-authored-by footer found — blocked\" || echo \"✅ No AI attribution\"\n```\n\n- [ ] All tests pass, no type errors, no lint violations, all commits follow Conventional Commits\n- [ ] **NO `Co-authored-by` or `Co-Authored-By`** in any commit body — P1 rule (CONVENTIONS.md § Git Attribution). `land-branch.sh` blocks the merge if found.\n\n### 2. Coverage check\n\n- [ ] Overall coverage ≥ 80%; business logic coverage ≥ 95%\n\n### 2a. Security gate\n\n- [ ] `specs\u002Fsecurity\u002FREVIEW.md` exists and is fresh (matches current branch diff)\n\n### 2b. Audit-code & Traceability gates (HARD GATES — Issue #182)\n\n- [ ] Run `bash scripts\u002Flib\u002Fassert-epic-gate.sh release` (asserts `specs\u002FAUDIT_LATEST.md` passed; blocks release on failure).\n- [ ] No unresolved HIGH security findings with confidence ≥ 8 (or documented in `specs\u002Fsecurity\u002FEXCEPTIONS.md`).\n- [ ] Run `gate-trace`. FAIL blocks merge; CONCERNS requires explicit override in `specs\u002Fstate.yaml`. WAIVED if no matrix available.\n\n> **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.\n\n### 3. Diff review\n\n- [ ] All commits intentional, no secrets, CONVENTIONS.md compliance\n\n### 4. Decision\n\nOptions: **Release (solo-local)** \u002F **Open PR** \u002F **Keep branch** \u002F **Discard**\n\n### 5. Integrate\n\nRun `commit-message` first. Git solo-local uses `land-branch.sh`. Jujutsu team mode explicitly advances and pushes a bookmark; `-m` is mandatory for commit\u002Fdescribe operations:\n\n```bash\n# Git solo-local\nbash scripts\u002Fland-branch.sh \u003Ctask-slug> \"feat(scope): description\"\n# Jujutsu team PR\njj describe -m \"feat(scope): description\"\njj bookmark set \u003Ctask-slug> -r @\njj git push -b \u003Ctask-slug>\n```\n\nJujutsu solo-local landing is unsupported: run `bp_require_vcs_operation \"$PWD\" land-branch` and stop with its remediation instead of invoking the Git backend.\n\n### 6. Create PR (team-pr only)\n\nCreate the pull request with a **literal provenance marker** in the body so agent-generated PRs are identifiable and do not rot silently:\n\n```markdown\n\u003C!-- bigpowers-provenance: agent-generated -->\n```\n\nPlace the marker on its own line immediately after the `## Summary` heading. Then merge via `gh`:\n\n```bash\ngh pr create --title \"...\" --body \"$(cat \u003C\u003C'EOF'\n## Summary\n\u003C!-- bigpowers-provenance: agent-generated -->\n\n- ...\n\n## Test plan\n- [ ] ...\n\nEOF\n)\"\ngh pr merge --squash --delete-branch\n```\n\n`semantic-release` auto-detects the commit, bumps SemVer, tags the repo, generates release notes.\n\n### 7a. Archive completed epic capsule\n\n> **HARD GATE** — When all epic stories are done (all `done` in `execution-status.yaml`), archive the capsule:\n\n```bash\nmv specs\u002Fepics\u002FeNN-slug specs\u002Fepics\u002Farchive\u002F\n```\n\n### 7b. CI verification & agent lock release (e39s02)\n\n> **HARD GATE** — Do NOT declare success until CI completes. **Three-independent-facts** (e45s15): commit landed, workflow green, registry visible — see [REFERENCE.md](REFERENCE.md#three-independent-facts-release).\n\n```bash\nbash scripts\u002Fwait-for-ci.sh --timeout 600 --interval 30\n```\n\n- [ ] CI passes; `release.ci_verified: true` in state.yaml\n- On failure: `handoff.next_skill = fix-bug`\n\n### 8. Clean up & return\n\nGit: prune worktree, delete branch, return to main. Jujutsu: `jj workspace forget \u003Cworkspace>` only after integration; do not delete its bookmark implicitly. Cycle-time: see [REFERENCE.md](REFERENCE.md#cycle-time).\n\nReport: \"Branch released.\"\n\n## Verify\n\n→ verify: `command -v gh >\u002Fdev\u002Fnull 2>&1 && test -f specs\u002Fstate.yaml && test -d skills\u002Fverify-work`\n",{"name":5,"model":28,"effort":44,"description":7},"standard","main","72f5e4c8b43f60cf86b37078ad8cd7e22daf67aa","skills\u002Frelease-branch",24,"https:\u002F\u002Fgithub.com\u002Fdanielvm-git\u002Fbigpowers","https:\u002F\u002Fdanielvm-git.github.io\u002Fbigpowers\u002F","https:\u002F\u002Fgithub.com\u002Fdanielvm-git","danielvm.net","2026-11-10 01:18:54",{"source":8,"skillName":5,"commands":55,"prompt":65,"zipAvailable":66},[56,59,62],{"tool":57,"command":58},"npx","npx skills add danielvm-git\u002Fbigpowers --skill release-branch",{"tool":60,"command":61},"bunx","bunx skills add danielvm-git\u002Fbigpowers --skill release-branch",{"tool":63,"command":64},"pnpm","pnpm dlx skills add danielvm-git\u002Fbigpowers --skill release-branch","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fdanielvm-git\u002Fbigpowers\u002Fblob\u002Fmain\u002Fskills\u002Frelease-branch\u002FSKILL.md",true,[68],{"path":69,"resourceType":70,"resourceTypeDesc":71,"sizeBytes":72,"sourceHtmlUrl":73},"REFERENCE.md","REFERENCE","参考文档",5228,"https:\u002F\u002Fgithub.com\u002Fdanielvm-git\u002Fbigpowers\u002Fblob\u002Fmain\u002Fskills\u002Frelease-branch\u002FREFERENCE.md",[75,95,102,130,153,174],{"skillNo":76,"name":77,"nameZh":6,"description":78,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":79,"categories":80,"keywords":86,"publishedAt":39},"01M71KBG9F8X644MJB16H4V8M7","skill-verify-fail-open-fixture","Negative-path fixture for run-skill-verify.sh — must never PASS.","https:\u002F\u002Fgithub.com\u002Fdanielvm-git\u002Fbigpowers\u002Fblob\u002Fmain\u002Fspecs\u002Fverifications\u002Ffixtures\u002Fskill-verify-fail-open\u002FSKILL.md",[81],{"categoryNo":82,"categoryName":83,"taxonomyType":84,"taxonomyTypeDesc":85},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[87,33,88,89,90,91,92,93,94],"fixture","verify","skill verify fail open fixture","skill verify","path","run","for","never",{"skillNo":96,"name":97,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":98,"categories":99,"keywords":100,"publishedAt":39},"01M71KBE3BKEMKNE0C5DGVDWZH","negative-path","https:\u002F\u002Fgithub.com\u002Fdanielvm-git\u002Fbigpowers\u002Fblob\u002Fmain\u002Fspecs\u002Fverifications\u002Ffixtures\u002Fnegative-path\u002FSKILL.md",[],[101,91],"negative path",{"skillNo":103,"name":104,"nameZh":6,"description":105,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":106,"categories":107,"keywords":111,"publishedAt":39},"01M71KBBGF7Y4EB4AMHBZ8CJFC","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\u002F directory.","https:\u002F\u002Fgithub.com\u002Fdanielvm-git\u002Fbigpowers\u002Fblob\u002Fmain\u002Fskills\u002Fwrite-document\u002FSKILL.md",[108],{"categoryNo":109,"categoryName":110,"taxonomyType":84,"taxonomyTypeDesc":85},"01JBSEEDCAT000000000000002","文档处理",[112,113,114,115,116,117,118,119,120,44,121,32,122,123,124,125,126,127,128,129],"write","write document","document","documents","actionable","technical","methodology","high","bmad","use","minimal","bold","sonnet","integrity","organize","sync","directory","guides",{"skillNo":131,"name":132,"nameZh":6,"description":133,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":134,"categories":135,"keywords":136,"publishedAt":39},"01M71KB8TM089JJD5AY5KAFSDM","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.","https:\u002F\u002Fgithub.com\u002Fdanielvm-git\u002Fbigpowers\u002Fblob\u002Fmain\u002Fskills\u002Fwire-observability\u002FSKILL.md",[],[137,138,139,44,140,121,141,142,143,144,124,145,146,147,148,149,150,32,151,152],"observability","wire observability","readiness","commands","development","as","logging","add","instrumentation","at","structured logging","production-readiness","idempotent","phase","project","scripts",{"skillNo":154,"name":155,"nameZh":6,"description":156,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":157,"categories":158,"keywords":159,"publishedAt":39},"01M71KB6CNRANP449DQA3NJZ96","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.","https:\u002F\u002Fgithub.com\u002Fdanielvm-git\u002Fbigpowers\u002Fblob\u002Fmain\u002Fskills\u002Fwire-ci\u002FSKILL.md",[],[160,161,162,163,164,165,166,167,168,169,170,44,171,93,137,124,172,173],"wire ci","ci","remote","local","pipeline","forge","validation","setup","templates","REST","with","ci pipeline setup","git","workflows",{"skillNo":175,"name":176,"nameZh":6,"description":177,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":178,"categories":179,"keywords":191,"publishedAt":39},"01M71KB2ZV98P03X88QR8MT9F1","visual-dashboard","Start a browser-based dashboard that visualizes architecture, implementation plans, and project status. Persists artifacts in .bigpowers\u002Fdashboard\u002F. Reads specs\u002Fstate.yaml, release-plan.yaml, epics, and planning-status via HTTP API or opencode panel.","https:\u002F\u002Fgithub.com\u002Fdanielvm-git\u002Fbigpowers\u002Fblob\u002Fmain\u002Fskills\u002Fvisual-dashboard\u002FSKILL.md",[180,183,188],{"categoryNo":181,"categoryName":182,"taxonomyType":84,"taxonomyTypeDesc":85},"01JBSEEDCAT000000000000013","分析与可视化",{"categoryNo":184,"categoryName":185,"taxonomyType":186,"taxonomyTypeDesc":187},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",{"categoryNo":189,"categoryName":190,"taxonomyType":186,"taxonomyTypeDesc":187},"01JBSEEDCAT000000000000033","数据分析师",[192,193,194,195,196,197,198,199,200,124,201,19,202,203,204,205,206,151,207,208],"dashboard","visual","visual dashboard","status","artifacts","http","plans","planning","panel","start","opencode","plan","browser","api","architecture","project status","http api"]