done について
コミット済みの Git ブランチを公開するスキルです。既存 PR の更新、ローカルでのマージ、デフォルトブランチ保護時の PR 作成に対応し、確認とコミットをスクリプトによる処理から分けています。
主な機能
- 01リポジトリ規則の事前確認
- 02内容確認と選択的なステージング
- 03ファストフォワードのマージとプッシュ
- 04例外状態での引き継ぎ
- 05関連チケットのステータス更新
活用シーン
- 01既存 PR を更新してブランチを公開
- 02保護されていないブランチからマージとプッシュ
- 03デフォルトブランチ保護時の PR 作成
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ bonkey/ skills --skill doneインストール後、Claude Code で/doneを入力して読み込まれたか確認します。
同梱ファイルreferences/worktrunk.mdscripts/ship.sh
詳細
完了
現在のブランチをリリースします。既存の PR を更新するか、ローカルで main にマージするか、main が保護されている場合は PR を作成します。
決定論的な処理(PR の確認 → 保護状態の確認 → ファストフォワードマージ → プッシュ)は scripts/ship.sh にまとめられているため、一般的なローカルマージの手順を何度もモデルとやり取りすることなく、一度に実行できます。何をリリースするかは判断が必要なため、スクリプトがステージングやコミットを行うことはありません。意図を持ってコミットしてください。スクリプトは作業ツリーがクリーンで、コミット済みであることを要件とし、その後マージとプッシュを行います。スクリプトが自動で完了するのは、十分に把握されている正常系の手順だけです。通常と異なる状況では HANDOFF(必要な状態情報はすでにすべて収集済み)を出力し、以降はユーザーが対応します。
ワークフロー
0. 事前確認 — リポジトリの要件を確認する
このリポジトリとハーネスに適用される規約や指示ファイル(例:AGENTS.md、CLAUDE.md、CONTRIBUTING.md、.cursor/rules/*、.github/copilot-instructions.md、.clinerules など)を探して読み、@ によるインクルードもすべて確認してください。ブランチがルールを満たしているか確認し、先へ進む前に不足を修正するか、明示してください。リポジトリでリリース前のチェック(例:just ci)が必須の場合は、ここで実行してください。
1. レビューしてコミットする
git status と差分を確認し、作業ツリーにリリースする意図の変更だけが含まれていることを確認してください。無関係な編集や、紛れ込んだ未追跡ファイルがないか注意してください。内容を慎重に確認してからステージングしてください(リリース対象外のものがないと確認できた場合に限り git add -A を一度だけ実行し、それ以外の場合は対象パスを指定してステージングします)。続いて、内容を適切に表すメッセージでコミットしてください。作業ツリーはクリーンな状態にしてください。
2. リリーススクリプトを実行する
ブランチのワークツリー内から実行します。
skills/done/scripts/ship.sh
スクリプトは === SHIP: STATE === ブロックを出力し、その後、次のいずれかを出力します。
=== SHIP: DONE ===— ローカルマージの正常系が完了しました(デフォルトブランチをコミットにファストフォワードし、origin にプッシュ済みです。ワークツリーは保持されています)。ステップ 3 に進みます。=== SHIP: HANDOFF ===— スクリプトは意図的に停止しました。suggested_path:とreason:の行を確認し、以下の手順に進んでください。STATE ブロックには必要な情報がすべて含まれているため、再収集する必要はありません。=== SHIP: ERROR ===— 手順が失敗しました。step:/detail:を確認し、調査して手動で解決してください。
suggested_path に応じた対応:
suggested_path | 意味 | 対応 |
|---|---|---|
update-pr | オープンな PR がすでにあります | ステップ 2a |
create-pr | デフォルトブランチが保護されています | ステップ 2b |
commit | 作業ツリーに未コミットの変更があります | 内容を確認し(ステップ 1)、無関係なものを除外してコミットした後、ステップ 2 を再実行します |
resolve | マージ、リベース、またはコンフリクトの処理中です | 解決した後、ステップ 2 を再実行します |
manual | HEAD が切り離されている、デフォルトブランチ上にいる、origin より遅れている、または分岐しています | 該当する状態を解消した後、ステップ 2 を再実行します |
nothing | リリースするものがありません | ユーザーに確認してください。すでにリリース済みの可能性があります |
2a. 既存の PR を更新する
現在のブランチをリモートにプッシュして、PR を更新します。
wt step push
その後、変更内容を要約したコメントを PR に投稿してください。
2b. PR を作成する(main が保護されている場合)
現在のブランチをプッシュし、PR を作成します。
wt step push
gh pr create --fill
3. 関連チケットを更新する
関連チケット(Jira、Linear、GitHub issue など)がわかっている場合(ブランチ名、コミットメッセージ、PR 本文、会話の文脈から判断)、リリース状況が反映されるようにステータスを更新します。
- PR を更新した → まだの場合は、チケットを「In Review」(または同等のステータス)に移動します
- main にマージした(ローカルマージまたは PR のマージ)→ チケットを「Done」/「Closed」/「Shipped」に移動します
明らかに関連するチケットがない場合は、この手順を省略してください。推測で判断しないでください。
4. 結果を報告する
スクリプトの出力(または実行した PR の手順)から事実を確認し、何が行われたかを報告します。
- ローカルでマージした(
SHIP: DONE):デフォルトブランチでのold → newコミットと変更概要を出力します - PR を更新した:PR の URL を出力します
- PR を作成した:PR の URL を出力します
- チケットを更新した:該当する場合、チケット ID と新しいステータスを出力します
参考資料
scripts/ship.sh— 決定論的なローカルマージ手順です。判断フローの信頼できる情報源として参照してください。wtコマンドの詳細については、references/worktrunk.mdを参照してください。