Skip to main content

harness-release

Generic release automation for projects using Keep a Changelog + GitHub. Single confirmation gate then end-to-end automation: bump detection, CHANGELOG promotion, PR/main merge, tag, GitHub Release. Trigger: release, version bump, publish. Do NOT load for: implementation, review, planning, setup.

Quellinformationen

Repository
Chachamaru127/claude-code-harness
Letzte QuellaktivitÀt
6. September 2026 um 02:09
Erkannte Sprache von SKILL.md
Japanisch
Sterne
3.159
Forks
301

Installationsoptionen

StandardmÀßig ist der Prompt ausgewÀhlt, der zuerst die Quelle prÃŒft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prÃŒfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich fÃŒr eine Installation entscheiden.

Datei-Explorer
7 Dateien

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · SchreibgeschÌtzte Vorschau
name
harness-release
description
Generic release automation for projects using Keep a Changelog + GitHub. Single confirmation gate then end-to-end automation: bump detection, CHANGELOG promotion, PR/main merge, tag, GitHub Release. Trigger: release, version bump, publish. Do NOT load for: implementation, review, planning, setup.
# Harness Release (汎甚) Keep a Changelog + GitHub を䜿う**あらゆるプロゞェクト向け**の汎甚リリヌス自動化スキル。 **蚭蚈原則**: 単䞀確認ゲヌト。ナヌザヌは 1 回だけ党䜓蚈画を芋お承認する。承認埌はファむル曞き換え → commit → branch push → PR 䜜成/曎新 → default branch ぞ merge → default branch 䞊で tag → GitHub Release たでを䞭断なく実行する。 **Release complete の定矩**: release は「tag ず GitHub Release を䜜った」だけでは完了ではない。察象 work ず release bump が default branch通垞 `main`に merge 枈みで、release tag が default branch 到達可胜 commit を指し、GitHub Release がその tag を公開しおいる状態を完了ずする。 ## PR ready vs release ready Harness V2 では PR closeout ず release closeout を混同しない。 | Gate | 意味 | 必須条件 | 停止 lane | |------|------|----------|-----------| | **PR ready** | ブランチが review 可胜で merge 刀断できる | `harness-review` `APPROVE`、focused tests PASS、evidence pack 完備accepted/rejected findings、tests、release-preflight warnings 凊理、residual risk | `[lane:fast]` / `[lane:gate]` はここで停止可 | | **release ready** | 公開配垃 path が preflight を通過 | PR ready 条件 + version surface sync + tag + GitHub Release + CI/public artifact 怜蚌 | `[lane:release]` のみ | - PR ready は `harness-review` APPROVE + evidence pack で刀定する。`harness-review` から push / PR / merge はしない。 - release ready は `harness-release` の Preflight / Post-Gate だけが刀定する。version bump / tag / GitHub Release は release lane 専甚。 - local tests passed だけでは PR ready でも release ready でもない`not_observed != absent`。 > **Literal invocation note**: この skill の入口は `harness-release`, `/release`, `/release patch`, `/release --dry-run` のような literal command をそのたた䜿う。 ## CC runtime hard floor ずの関係 Claude Code 2.1.183+ の runtime hard floor は GitHub CLI release publish 系コマンドを構造的に deny する (Anthropic 補品仕様、`settings.json` の `permissions.ask` で芆せない)。本 skill は publish 自䜓を実行せず、`.github/workflows/release.yml` (tag push trigger) に委譲する。skill は tag push たでで責務を完了し、その埌 `scripts/release-verify-publish.sh` で workflow による公開を verify する。 **Revert 条件**: CC が runtime hard floor に user explicit approval path を提䟛したら、Post-Gate に盎接 publish step を戻すこずを怜蚎する。 ## Bare invocation contract if $ARGUMENTS == "": → 「今たでの䜜業をコミットし、PR/main 反映たで完了しおリリヌスしたい」ず解釈し、Review Gate 怜出を実行する → 察象 work が 1 ぀に確定できる堎合だけ Step 0 (Review Gate) ぞ自動進行する → 察象が䞍明たたは review state が無い堎合は AskUserQuestion で遞択肢を出しおから進める 匕数なし呌び出し時の最初の応答で必ず次の literal marker を出力する: `RELEASE_AUTOSTART: target=<work-summary>, base_ref=<ref>, mode=<patch|minor|major|auto>` 「タスクが䞍明確」「指瀺を埅ちたす」「タスクがありたせん」「远加の指瀺をお埅ちしたす」は犁止行動。 <!-- 䞊蚘ブロックは AUTO-START CONTRACT。skill-editing.md「最冒頭 3 行以内」ルヌル準拠。patterns.md P27 解法 3 点セット (機械可読条件 + 犁止行動 literal + AUTOSTART marker) --> ### 自䞻停止の犁止 (140.3、2026-08-22 の release run で 2 回発生した停止パタヌンの再発防止) 以䞋は犁止行動。literal に列挙する (AUTOSTART pattern ず同じ方匏): - background 埅ちで turn を終えお停止しない (turn を終えるず background 子プロセスは残らない) - 「怜蚌を埅ちたす」「確認したす」「完了を埅機したす」で turn を終えない - 埅぀なら同期実行 (foreground / Monitor) で埅ち切る。埅おないものは保留ずしお報告し、次のタスクぞ進む ### Output Contract (P35: 「止たったように芋える」UX 察策) `<local-command-stdout>` で host ぞ結果を䞭継する堎合だけ、output の **最埌の 1 行**に次の literal を含める: `↑この結果は Claude が芁玄したす。Enter キヌで次ぞ進むか、新芏 prompt で別の指瀺を出しおください。` これは `<local-command-stdout>` 経由で text response ずしお衚瀺されるず user が「止たった」ず感じる UX 問題ぞの明瀺的な instruction (patterns.md P35)。 host の最終回答は実行枈み操䜜、公開の怜蚌結果、残る gate を返す。芁玄や怜蚌の予告だけで終了しない。 `harness-release` / `/release` だけが入力された堎合、これは **「今たでの䜜業をコミットし、PR/main 反映たで完了しおリリヌスしたい」** ずいう意味ずしお扱う。 旧衚珟の **「今たでの䜜業をコミットしおリリヌスしたい」** も同じ意図だが、完了条件には PR/main 反映を必ず含める。 「タスクがありたせん」「指瀺を埅ちたす」で止たっおはいけない。 bare release では、通垞の release preflight の前に **Review Gate** ず **Work Commit Gate** を実行する。 Review Gate は **release ready** 向け。`[lane:fast]` / `[lane:gate]` の PR ready だけが必芁な work には、ナヌザヌが release を明瀺しない限り `harness-release` を起動しない。 1. `git status --porcelain` ず `git log @{upstream}..HEAD` / `main..HEAD` を確認し、「今たでの䜜業」の察象を特定する 2. `.claude/state/review-result.json` ず `.claude/state/review-approved.json` を確認し、察象 work に `APPROVE` 枈み review ず evidence pack があるか確認する 3. APPROVE 枈み review が無い堎合は `AskUserQuestion` で確認する 4. ナヌザヌが「レビュヌから開始」を遞んだら、`harness-review` を起動し、`APPROVE` になるたで release ぞ進たない 5. `harness-review` が `REQUEST_CHANGES` を返した堎合は release を保留し、`harness-work` で修正しおから `harness-review` を再実行する。これを `APPROVE` たでルヌプする 6. `harness-review` が `APPROVE` を返した埌、working tree の䜜業 commit を䜜る 7. working tree clean になっおから通垞の release preflight / confirmation gate / PR merge / tag / GitHub Release ぞ進む ### Review Gate AskUserQuestion `harness-release` 実行時に review approval が確認できない堎合は、掚枬で release しない。 次の Ask を出す。 ```text question: "harness-release は今たでの䜜業をコミットしおリリヌスしたすが、この䜜業の APPROVE review が芋぀かりたせん。どう進めたすか" options: - label: "レビュヌから開始 (Recommended)" description: "harness-review を実行し、APPROVE になった堎合だけ commit/release ぞ進みたす。" - label: "release dry-run" description: "ファむルを曞き換えず、release 蚈画ず䞍足 gate だけ確認したす。" - label: "äž­æ­¢" description: "review も release も行わず止めたす。" ``` ナヌザヌが「レビュヌから開始」を遞んだ堎合は、同じセッション内で `harness-review` から始める。 `harness-review` の察象決定は `harness-review` 偎の bare review contract に埓う。 review が `APPROVE` なら、そのたた `harness-release` の Work Commit Gate ぞ戻る。 review が `REQUEST_CHANGES` なら release は保留し、`harness-work` で修正しおから `harness-review` を再実行する。 この修正埌再レビュヌ loop は `APPROVE` たで継続する。 ナヌザヌに戻しおよいのは次の堎合だけ。 1. 修正に仕様正本 / Plans.md / API / permission / migration / billing などの意思決定が必芁で、`AskUserQuestion` が必芁 2. 修正方針が耇数あり、どれを採るかでナヌザヌ䟡倀や互換性が倉わる 3. ナヌザヌが Ask で `release dry-run` たたは `äž­æ­¢` を遞んだ `REQUEST_CHANGES` 単䜓を最終停止理由にしおはいけない。 ### Work Commit Gate bare release で working tree に未コミット倉曎がある堎合、release version bump commit ずは別に、 review 枈み work commit を先に䜜る。 ```bash git status --short git diff --stat git add <reviewed files> git commit -m "<type>: <summary>" ``` commit message は review summary / Plans.md task / branch name から短く生成する。 衚珟だけが未決なら既存の commit 芏玄に沿っお生成する。review 枈みの察象そのものが曖昧な堎合だけ、その察象を確認する。 work commit 䜜成埌に `.claude/state/review-result.json` の `commit_hash` を確認たたは曎新し、 release preflight ぞ進む。 通垞の release preflight に入った埌は、これたで通り working tree dirty を fail ずする。 dirty tree のたた version bump / tag / GitHub Release に進たない。 ## Quick Reference ```bash /release # 今たでの䜜業を review gate → commit → PR/main merge → release する /release patch # bump を patch に明瀺指定 /release minor # bump を minor に明瀺指定 /release major # bump を major に明瀺指定 /release --dry-run # 蚈画の衚瀺のみ、実行しない ``` ## 前提条件 このスキルが動くプロゞェクトは以䞋を満たす必芁がありたす: 1. `CHANGELOG.md` が [Keep a Changelog](https://keepachangelog.com/) 圢匏 2. `[Unreleased]` セクションが存圚する 3. 以䞋のいずれかの version file を持぀: - `VERSION` (単独ファむル) - `package.json` (npm) - `pyproject.toml` (Python, `[project]` たたは `[tool.poetry]`) - `Cargo.toml` (Rust, `[package]`) 4. `gh` CLI がむンストヌル枈みで、認蚌枈み 5. git リモヌト `origin` が GitHub を指す 6. Claude Code plugin project の堎合は、`claude` CLI が `plugin validate` をサポヌトしおいる これらが満たされない堎合、Preflight で detect しお abort したす。 `prUrlTemplate` による multi-host review URL は将来候補ずしお認識するが、 このスキルの release automation は今も `gh` CLI ず GitHub remote を primary path ずする。 owner / branch / release asset / CI metadata の自動取埗は host ごずの差が倧きいため、Phase 56.2.3 では docs-only に留める。 ## 単䞀ゲヌトフロヌ Bare release0. Review Gate → 0.5 Work Commit Gate→ Pre-Gate1. Preflight → 2. Version file 怜出 → 3. バヌゞョン読み取り → 4. plugin version sync preflight → 5. bump 掚定 → 6. 新バヌゞョン算出 → 7. CHANGELOG ドラフト → 8. CHANGELOG release body preview→ **単䞀確認ゲヌト**䞋蚘「Confirmation Gate」参照、`yes` / `<修正指瀺>` / `cancel` の 3 択→ Post-Gate9. Version file 曞き換え → 10. CHANGELOG 昇栌 → 11. commit → 12. branch push → 13. PR 䜜成/曎新 → 14. default branch merge → 15. 到達可胜性確認 → 16. semver tag → 17. tag push → 18. workflow publish verify → 19. 完了報告 の 3 段階で進む。各段の詳现は「Pre-Gate 詳现」「Confirmation Gate」「Post-Gate 詳现」を参照。 ## Pre-Gate 詳现 ### 1. Preflight release ready gate: PR ready 条件に加え、version / tag / GitHub Release / CI artifact path を確認する。 ```bash # 必須ツヌル command -v gh >/dev/null || { echo "gh CLI がありたせん"; exit 1; } command -v python3 >/dev/null || { echo "python3 が必芁です"; exit 1; } # working tree if [ -n "$(git status --porcelain)" ]; then echo "working tree に未コミット倉曎がありたす"; exit 1; fi # CHANGELOG [ -f CHANGELOG.md ] || { echo "CHANGELOG.md がありたせん"; exit 1; } grep -q "^## \[Unreleased\]" CHANGELOG.md || { echo "[Unreleased] セクションがありたせん"; exit 1; } # plugin/mirror projects scripts/release-preflight.sh ``` この working tree clean check は通垞 release preflight の gate である。 bare release で「今たでの䜜業」を commit したい堎合は、この check の前に Review Gate ず Work Commit Gate を完了させる。 未レビュヌの dirty tree をこの check だけで abort しお終わらせおはいけない。 `scripts/release-preflight.sh` は tag 䜜成前に `opencode/`, `skills-codex/`, `codex/.codex/skills/` の mirror drift も怜出する。`node scripts/build-opencode.js` が差分を生成した堎合は release を止め、その差分を commit しおから tag に進む。 release preflight は host workflow smoke を `REQUIRED=1`fail-closedで党 dist host に察しお実行する。1 host でも FAIL なら release を止める。これは multi-host bar H7release-preflight consumes host gates fail-closedの充足配線である。`scripts/release-preflight-host-smoke.sh` 参照。fail-closed の正本は operator マシンの preflight であり、GitHub runner`GITHUB_ACTIONS=true`では CLI 未 provision の host を明瀺 SKIP 行぀きで飛ばすtag-triggered workflow の再実行が党 release を塞がないため。v5.3.0 run 29679591686 の regression 察応。 ### 2. Version File 自動怜出 `VERSION` → `package.json` → `pyproject.toml``[project]` / `[tool.poetry]`→ `Cargo.toml` の優先順で探玢し、最初に芋぀かったものを正本ずする。 怜出スニペット・読み取りロゞックの詳现: [version-files.md](${CLAUDE_SKILL_DIR}/references/version-files.md) ### 3. Claude Plugin Version Sync Preflight `.claude-plugin/plugin.json` が存圚する project では、semver tag を切る前に plugin manifest の validation ず党 version surface の同期を確認する。 > **plugin tag (`{plugin-name}--v{version}`) は 2026-08-17 に廃止**。`marketplace.json` の `source` が盞察パス (`"./"`) で install は tag を参照しないため、実効性が無いたた v5.6.0 以降 3 リリヌス連続で欠番になっおいた。GitHub Release 甹 semver tag `vX.Y.Z` に䞀本化する (decisions.md D69)。 Pre-Gate ではファむルを曞き換えず、以䞋を確認する。 version sync は `grep` / `sed` で拟わず、JSON は structured parser で読む: ```bash command -v claude >/dev/null || { echo "claude CLI がありたせん"; exit 1; } claude plugin validate .claude-plugin/plugin.json HARNESS_PLUGIN_ROOT="${CLAUDE_PLUGIN_ROOT:-.}" python3 "${HARNESS_PLUGIN_ROOT}/scripts/check-release-version-sync.py" --root . ``` `${HARNESS_PLUGIN_ROOT}/scripts/check-release-version-sync.py` は、存圚する release surface をすべお読み取り、canonical を `VERSION > package.json > .claude-plugin/plugin.json > .codex-plugin/plugin.json` の順で決める。 そのうえで、以䞋の䞍䞀臎・欠萜が 1 ぀でもあれば tag / release に進たない: - `VERSION` - `package.json` の `.version` - `.claude-plugin/plugin.json` の `.version` - `.codex-plugin/plugin.json` の `.version` - `.claude-plugin/marketplace.json` の `.metadata.version` - `.claude-plugin/marketplace.json` の `.plugins[].version`配列内の各 plugin entry 䞍䞀臎時は、どの surface が canonical ず違うか、たたはどの field が missing / invalid かを衚瀺する。 機械凊理や CI で読む堎合は `--json` を䜿う: ```bash python3 "${HARNESS_PLUGIN_ROOT}/scripts/check-release-version-sync.py" --root . --json ``` この check は 3 ぀の事故を防ぐためにある: - `VERSION` ず `.claude-plugin/plugin.json` の version がずれたたた tag を切る事故 - `package.json` / marketplace entry の version が叀いたた release workflow に進む事故 - plugin manifest / marketplace entry の validation を通さず、あずで plugin install / update 偎で詰たる事故 この check の結果 (canonical version ず各 surface の䞀臎) を Confirmation Gate の plan に含める。 ### 4. Bump 自動掚定 `[Unreleased]` 盎䞋の芋出し`### Breaking Changes`/`### Removed` → major、`### Added` → minor、`### Fixed`/`### Changed`/`### Security` のみ → patch、空セクション → errorを解析しお bump level を決定する。 ナヌザヌが `/release patch|minor|major` で明瀺指定した堎合はそちらを優先。 詳现: [bump-detection.md](${CLAUDE_SKILL_DIR}/references/bump-detection.md) ### 5. CHANGELOG ドラフト䜜成 (メモリ䞊) `[Unreleased]` の内容を切り出し、`[<new>] - YYYY-MM-DD` セクションず compare link を組み立おるただ曞き蟌たない。 詳现: [release-notes.md](${CLAUDE_SKILL_DIR}/references/release-notes.md#changelog-ドラフト䜜成メモリ䞊pre-gate-ステップ-7) ### 6. CHANGELOG release body preview (メモリ䞊) tag-triggered workflow が公開する本文は、昇栌埌の `## [<new>]` セクション本文そのもの。 別の英蚳・芁玄・フッタヌを生成せず、workflow ず同じ抜出境界の本文をそのたた preview する。 抜出方法・怜蚌チェックの詳现: [release-notes.md](${CLAUDE_SKILL_DIR}/references/release-notes.md) ## Confirmation Gate すべおのドラフトが揃ったら、ナヌザヌに 1 回だけ提瀺: ``` ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Release Plan: v<old> → v<new> (<bump>) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Version file: <detected file> Bump reason: <why this level was chosen> CHANGELOG changes: [Unreleased] に <N> 項目の倉曎を怜出 [<new>] - YYYY-MM-DD ずしお確定 Compare link を远加 CHANGELOG release body preview (workflow が公開する本文): <workflow が公開する本文の党行> Files to modify: - <version file> - CHANGELOG.md Final actions: - git commit -m "chore: release v<new>" - git push origin <release-branch> - gh pr create/update + gh pr merge into <default-branch> - git fetch origin <default-branch> && git checkout <default-branch> - git tag -a v<new> # GitHub Release 甹 semver tag。default branch 䞊で䜜成 - git push origin <default-branch> --tags - (tag push 埌は GitHub Actions release workflow が自動で release 公開) Proceed? [yes / cancel / <修正指瀺>] ``` ## Post-Gate 詳现 承認埌は䞭断なしで実行。倱敗時は以䞋の方針: | 倱敗箇所 | 埩旧 | |---------|------| | ファむル曞き換え倱敗 | そこで abort、ロヌカルは dirty なたた人間が刀断 | | commit 倱敗 | hook 拒吊等。ナヌザヌに原因を提瀺しお修正を促す | | PR 䜜成/merge 倱敗 | release を未完了ずしお停止。tag / GitHub Release には進たない | | plugin version sync 倱敗 | `VERSION` / `.claude-plugin/plugin.json` / marketplace entry の䞍䞀臎を修正し、tag 䜜成には進たない | | push 倱敗 | リモヌト偎の問題。ロヌカル commit/tag は残す | ### PR / Main Merge Gate、semver tag、Verify Publish Post-Gate の release commit 埌、tag を䜜る前に GitHub PR を default branch ぞ merge する`gh pr create` → `gh pr merge --merge` → default branch fetch/checkout で release commit の到達可胜性を確認。release branch 䞊だけに存圚する commit を指す tag で GitHub Release を䜜っおはいけない。 `.claude-plugin/plugin.json` がある project では、merge 埌に default branch 䞊で version sync を再確認しおから semver tag `vX.Y.Z` を䜜る (plugin tag は 2026-08-17 廃止、D69)。 tag push 埌は `bash scripts/release-verify-publish.sh` で `.github/workflows/release.yml` の公開結果を verify する5 秒間隔 × 60 回 polling、exit 0=PASS / 2=WARN(timeout) / 3=ERROR。 コマンド党文・倱敗時の刀断基準は [post-gate-detail.md](${CLAUDE_SKILL_DIR}/references/post-gate-detail.md) を参照。 ## `--dry-run` モヌド Pre-Gate 党おを実行し、Confirmation Gate たでの内容を衚瀺するが、**gate で止たり Post-Gate に進たない**。 Claude plugin project の堎合、dry-run でも `python3 "${HARNESS_PLUGIN_ROOT}/scripts/check-release-version-sync.py" --root .` を実行し、canonical version ず各 surface の䞀臎を衚瀺する。ここで `VERSION` / `package.json` / `.claude-plugin/plugin.json` / `.codex-plugin/plugin.json` / `.claude-plugin/marketplace.json` の version surface が䞍䞀臎たたは欠萜しおいれば、dry-run の時点で止める。 ## 環境倉数 プロゞェクトごずの調敎に䜿甚: | 倉数 | 説明 | |------|------| | `HARNESS_RELEASE_PROJECT_ROOT` | リポゞトリルヌト (デフォルト: `$(pwd)`) | | `HARNESS_RELEASE_BRANCH` | push 察象ブランチ (デフォルト: 珟圚のブランチ) | | `HARNESS_RELEASE_DEFAULT_BRANCH` | PR merge 先 default branch (デフォルト: `main`) | | `HARNESS_RELEASE_HEALTHCHECK_CMD` | Preflight で远加実行するコマンド | | `HARNESS_RELEASE_SKIP_GH` | `1` で GitHub publication verification をスキップ | ## CHANGELOG 曞き方ルヌル `[Unreleased]` セクションは KaCL 暙準サブセクション`### Added`=minor / `### Changed`・`### Fixed`・`### Security`=patch / `### Deprecated`=minor / `### Removed`・`### Breaking Changes`=majorのいずれかを持぀必芁がある。 このスキルはこれらの芋出しを機械的に解析するため、衚蚘揺れ`### Fix` / `### Bug Fixes` 等は認識できない。 CHANGELOG release body の preview 契玄・CHANGELOG の曞き方・merge 方匏squash 䞍採甚の詳现は [github-release.md](${CLAUDE_SKILL_DIR}/references/github-release.md) を参照。 SemVer 刀定基準・バッチリリヌス方針・Release Train Proposal の詳现は
Auf GitHub ansehen
Diese SKILL.md ist sehr gross, daher zeigt SkillsMP hier nur den ersten Abschnitt. Auf GitHub ansehen