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:飛行前チェック
他の処理を実行する前に、これらのチェックを実行します。いずれかが失敗した場合は停止し、ユーザーに理由を伝えます。
- ブランチチェック:
git branch --show-currentを実行します。デタッチ HEAD 状態の場合は停止し、名前付きブランチをチェックアウトするようユーザーに指示します。 - リモートチェック:
git remote -vを実行します。リモートが設定されていない場合は停止し、ユーザーにリモートを追加するよう指示します。 - GitHub CLI チェック:
gh auth statusを実行します。認証されていない場合は停止し、ユーザーにgh auth loginを実行するよう指示します。
後で使用するため、現在のブランチ名を保存します。
ステップ 2:コミットされていない変更を処理
git status --porcelainを実行して、コミットされていない変更(ステージ済み、未ステージ、未追跡)をチェックします。- 作業ツリーがクリーン(出力がない)かつ
main上にない場合は、ステップ 3 をスキップします。作業ツリーがクリーン かつmain上にある場合は停止し、シップするものがないことをユーザーに伝えます。 - 変更がある場合は、変更されたファイルのリストを表示し、ユーザーに以下を尋ねます:
- A) すべての変更を含める — 表示されたものをすべてステージします
- B) 個別にファイルを選択 — 番号付きリストを表示し、ユーザーに含めるファイルを選択させます(例:「1, 3, 5」)
- C) キャンセル — ワークフロー全体を中止します
git add <file1> <file2> ...を使用して、明示的なファイルパスで選択したファイルをステージします。git add -Aやgit add .は絶対に使用しないでください。git diff --cached --statとgit diff --cachedを実行して、変更を理解します。main上にある場合、コミット前にフィーチャーブランチを作成します(下記のステップ 2b を参照)。- diff に基づいて、明確で説明的なコミットメッセージを生成します。
- コミットを作成します。
ステップ 2b:フィーチャーブランチを作成(main 上にある場合)
このステップは、現在のブランチが main の場合、ステップ 2.6 から呼び出されます。ブランチは コミット前に 作成する必要があるため、ローカル main がクリーンな状態を保ち、PR のスクワッシュマージ後の分岐を避けることができます。
- ステージされた変更からわかりやすいブランチ名を生成します(例:
feat/add-user-validation、fix/null-pointer-in-parser)。kebab-case で従来のプリフィックス(feat/、fix/、chore/、refactor/など)を使用します。 git checkout -b <branch-name>を実行して、新しいブランチを作成し、切り替えます。ステージされた変更は新しいブランチに引き継がれます。- ステップ 6 でクリーンアップするため、このブランチ名を保存します。
- ステップ 2.7 に戻り、新しいブランチでコミットします。
ステップ 3:プッシュと PR 作成
git push -u origin HEADを実行して、ブランチをリモートにプッシュします。- PR が既に存在するかチェックします:
gh pr view --json number,url 2>/dev/null。- PR が存在する場合は、その URL を表示し、ステップ 4 にスキップします。
- PR が存在しない場合:
git log main..HEAD --onelineでコミットを確認します。- 簡潔な PR タイトル(70 文字以下)と変更内容をまとめたボディを生成します。
- PR を作成します:
gh pr create --base main --title "<title>" --body "<body>"。
- PR URL をユーザーに表示します。
ステップ 4:CI/CD チェックをポーリング
- CI に時間を与えるため、最初のチェック前に 10 秒待機します。
gh pr checksを実行して、チェックステータスを取得します。- 結果を解析します:
- すべてのチェックが成功 → ステップ 5 に進みます。
- チェックが失敗 → 停止し、失敗をユーザーに報告します。チェック名、ステータス、リンクを含めます。進みません。
- チェックがまだ保留中 → 30 秒待機してから再度ポーリングします。
- チェックが設定されていない(出力なし) → マージを続行するか、停止するかをユーザーに尋ねます。
- 15 分のポーリング後もチェックが保留中の場合は停止し、ユーザーに伝えます。手動で監視できるよう PR URL を提供します。
ステップ 5:スクワッシュマージ
gh pr merge --squash --delete-branchを実行して、スクワッシュマージとリモートブランチの削除を行います。- マージが失敗した場合(マージコンフリクト、ブランチ保護ルールなど)、具体的なエラーをユーザーに報告し、停止します。
ステップ 6:クリーンアップ
git checkout mainを実行します。git pull origin mainを実行して、マージされた変更を取得します。- ローカルフィーチャーブランチを削除します:
git branch -d <branch-name>(ステップ 1 で保存したブランチ名を使用)。 - 以下のサマリーを含めて成功を報告します:
- PR URL
- マージステータス
- クリーンアップされたブランチ
エッジケース
- main 上に変更がある場合:コミット前に自動的にフィーチャーブランチを作成し(ステップ 2b)、ローカル
mainをクリーンな状態に保ちます。 - main 上に変更がない場合:停止し、シップするものがないことを伝えます。
- デタッチ HEAD:直ちに停止し、名前付きブランチをチェックアウトするメッセージを表示します。
- PR が既に存在:既存の PR を使用します。PR 作成をスキップし、CI ポーリングに進みます。
- CI チェックが設定されていない:チェックなしでマージするかをユーザーに尋ねます。
- CI タイムアウト(15 分):手動監視用に PR URL を報告します。マージしません。
- マージコンフリクト:エラーを報告します。自動的に解決を試みません。
- ブランチ保護ルールがマージをブロック:
ghからの具体的なエラーを報告します。 - ユーザーがファイル選択中にキャンセル:ワークフロー全体を正常に中止します。
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- CuriouslyCory
- ライセンス
- MIT
- 最終更新
- 2026/3/17
Source: https://github.com/CuriouslyCory/morse-bot / ライセンス: MIT
関連スキル
superpowers-streamer-cli
SuperPowers デスクトップストリーマーの npm パッケージをインストール、ログイン、実行、トラブルシューティングできます。ユーザーが npm から `superpowers-ai` をセットアップしたい場合、メールまたは電話でサインインもしくはアカウント作成を行いたい場合、ストリーマーを起動したい場合、表示されたコントロールリンクを開きたい場合、後で停止したい場合、またはソースコードへのアクセスなしに npm やランタイムの一般的な問題から復旧したい場合に使用します。
catc-client-ops
Catalyst Centerのクライアント操作・監視機能 - 有線・無線クライアントのリスト表示・フィルタリング、MACアドレスによる詳細なクライアント検索、クライアント数分析、時間軸での分析、SSIDおよび周波数帯によるフィルタリング、無線トラブルシューティング機能を提供します。MACアドレスやIPアドレスでのクライアント検索、サイト別やSSID別のクライアント数集計、無線周波数帯の分布分析、Wi-Fi信号の問題調査が必要な場合に活用できます。
ci-cd-and-automation
CI/CDパイプラインの設定を自動化します。ビルドおよびデプロイメントパイプラインの構築または変更時に使用できます。品質ゲートの自動化、CI内のテストランナー設定、またはデプロイメント戦略の確立が必要な場合に活用します。
shipping-and-launch
本番環境へのリリース準備を行います。本番環境へのデプロイ準備が必要な場合、リリース前チェックリストが必要な場合、監視機能の設定を行う場合、段階的なロールアウトを計画する場合、またはロールバック戦略が必要な場合に使用します。
linear-release-setup
Linear Releaseに向けたCI/CD設定を生成します。リリース追跡の設定、LinearのCIパイプライン構築、またはLinearリリースとのデプロイメント連携を実施する際に利用できます。GitHub Actions、GitLab CI、CircleCIなど複数のプラットフォームに対応しています。
tracking-application-response-times
API エンドポイント、データベースクエリ、サービスコール全体にわたるアプリケーションのレスポンスタイムを追跡・最適化できます。パフォーマンス監視やボトルネック特定の際に活用してください。「レスポンスタイムを追跡する」「API パフォーマンスを監視する」「遅延を分析する」といった表現で呼び出せます。