Agent Skills by ALSEL
OpenAIDevOps・インフラ⭐ リポ 2品質スコア 69/100

ship-it

PRの作成とマージを自動化します。コミットされていない変更をコミットし、mainをターゲットとするPRを作成し、CI/CDチェックの完了を待機してから、成功時にスクワッシュマージを実行します。「ship it」「ship this」「create and merge pr」「ship pr」「merge to main」のトリガーに対応しています。

description の原文を見る

Automate PR creation and merging. Commits uncommitted changes, creates a PR targeting main, waits for CI/CD checks, and squash merges on success. Triggers on: ship it, ship this, create and merge pr, ship pr, merge to main.

SKILL.md 本文

Ship It

PR のフルライフサイクルを自動化します:変更をコミット、PR を作成、CI/CD を待機、main へのスクワッシュマージを実行します。

ワークフロー

各ステップを順番に実行します。いずれかのステップが失敗した場合は停止し、ユーザーに報告します。

ステップ 1:飛行前チェック

他の処理を実行する前に、これらのチェックを実行します。いずれかが失敗した場合は停止し、ユーザーに理由を伝えます。

  1. ブランチチェックgit branch --show-current を実行します。デタッチ HEAD 状態の場合は停止し、名前付きブランチをチェックアウトするようユーザーに指示します。
  2. リモートチェックgit remote -v を実行します。リモートが設定されていない場合は停止し、ユーザーにリモートを追加するよう指示します。
  3. GitHub CLI チェックgh auth status を実行します。認証されていない場合は停止し、ユーザーに gh auth login を実行するよう指示します。

後で使用するため、現在のブランチ名を保存します。

ステップ 2:コミットされていない変更を処理

  1. git status --porcelain を実行して、コミットされていない変更(ステージ済み、未ステージ、未追跡)をチェックします。
  2. 作業ツリーがクリーン(出力がない)かつ main 上にない場合は、ステップ 3 をスキップします。作業ツリーがクリーン かつ main 上にある場合は停止し、シップするものがないことをユーザーに伝えます。
  3. 変更がある場合は、変更されたファイルのリストを表示し、ユーザーに以下を尋ねます:
    • A) すべての変更を含める — 表示されたものをすべてステージします
    • B) 個別にファイルを選択 — 番号付きリストを表示し、ユーザーに含めるファイルを選択させます(例:「1, 3, 5」)
    • C) キャンセル — ワークフロー全体を中止します
  4. git add <file1> <file2> ... を使用して、明示的なファイルパスで選択したファイルをステージします。git add -Agit add . は絶対に使用しないでください
  5. git diff --cached --statgit diff --cached を実行して、変更を理解します。
  6. main 上にある場合、コミット前にフィーチャーブランチを作成します(下記のステップ 2b を参照)。
  7. diff に基づいて、明確で説明的なコミットメッセージを生成します。
  8. コミットを作成します。

ステップ 2b:フィーチャーブランチを作成(main 上にある場合)

このステップは、現在のブランチが main の場合、ステップ 2.6 から呼び出されます。ブランチは コミット前に 作成する必要があるため、ローカル main がクリーンな状態を保ち、PR のスクワッシュマージ後の分岐を避けることができます。

  1. ステージされた変更からわかりやすいブランチ名を生成します(例:feat/add-user-validationfix/null-pointer-in-parser)。kebab-case で従来のプリフィックス(feat/fix/chore/refactor/ など)を使用します。
  2. git checkout -b <branch-name> を実行して、新しいブランチを作成し、切り替えます。ステージされた変更は新しいブランチに引き継がれます。
  3. ステップ 6 でクリーンアップするため、このブランチ名を保存します。
  4. ステップ 2.7 に戻り、新しいブランチでコミットします。

ステップ 3:プッシュと PR 作成

  1. git push -u origin HEAD を実行して、ブランチをリモートにプッシュします。
  2. PR が既に存在するかチェックします:gh pr view --json number,url 2>/dev/null
    • PR が存在する場合は、その URL を表示し、ステップ 4 にスキップします。
  3. PR が存在しない場合:
    • git log main..HEAD --oneline でコミットを確認します。
    • 簡潔な PR タイトル(70 文字以下)と変更内容をまとめたボディを生成します。
    • PR を作成します:gh pr create --base main --title "<title>" --body "<body>"
  4. PR URL をユーザーに表示します。

ステップ 4:CI/CD チェックをポーリング

  1. CI に時間を与えるため、最初のチェック前に 10 秒待機します。
  2. gh pr checks を実行して、チェックステータスを取得します。
  3. 結果を解析します:
    • すべてのチェックが成功 → ステップ 5 に進みます。
    • チェックが失敗 → 停止し、失敗をユーザーに報告します。チェック名、ステータス、リンクを含めます。進みません。
    • チェックがまだ保留中 → 30 秒待機してから再度ポーリングします。
    • チェックが設定されていない(出力なし) → マージを続行するか、停止するかをユーザーに尋ねます。
  4. 15 分のポーリング後もチェックが保留中の場合は停止し、ユーザーに伝えます。手動で監視できるよう PR URL を提供します。

ステップ 5:スクワッシュマージ

  1. gh pr merge --squash --delete-branch を実行して、スクワッシュマージとリモートブランチの削除を行います。
  2. マージが失敗した場合(マージコンフリクト、ブランチ保護ルールなど)、具体的なエラーをユーザーに報告し、停止します。

ステップ 6:クリーンアップ

  1. git checkout main を実行します。
  2. git pull origin main を実行して、マージされた変更を取得します。
  3. ローカルフィーチャーブランチを削除します:git branch -d <branch-name>(ステップ 1 で保存したブランチ名を使用)。
  4. 以下のサマリーを含めて成功を報告します:
    • PR URL
    • マージステータス
    • クリーンアップされたブランチ

エッジケース

  • main 上に変更がある場合:コミット前に自動的にフィーチャーブランチを作成し(ステップ 2b)、ローカル main をクリーンな状態に保ちます。
  • main 上に変更がない場合:停止し、シップするものがないことを伝えます。
  • デタッチ HEAD:直ちに停止し、名前付きブランチをチェックアウトするメッセージを表示します。
  • PR が既に存在:既存の PR を使用します。PR 作成をスキップし、CI ポーリングに進みます。
  • CI チェックが設定されていない:チェックなしでマージするかをユーザーに尋ねます。
  • CI タイムアウト(15 分):手動監視用に PR URL を報告します。マージしません。
  • マージコンフリクト:エラーを報告します。自動的に解決を試みません。
  • ブランチ保護ルールがマージをブロックgh からの具体的なエラーを報告します。
  • ユーザーがファイル選択中にキャンセル:ワークフロー全体を正常に中止します。

ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
CuriouslyCory
リポジトリ
CuriouslyCory/morse-bot
ライセンス
MIT
最終更新
2026/3/17

Source: https://github.com/CuriouslyCory/morse-bot / ライセンス: MIT

本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: CuriouslyCory · CuriouslyCory/morse-bot · ライセンス: MIT