Agent Skills by ALSEL
汎用ソフトウェア開発⭐ リポ 0品質スコア 65/100

ship

検証済みの作業をステージング、コミット、およびオプションでプッシュできます。複数ファイルのキャンペーン、コミットのグループ化、メッセージの作成、テンポラリファイルや機密ファイルの除外に対応しています。

description の原文を見る

Stage, commit, and optionally push validated work. Handles multi-file campaigns, commit grouping, message drafting, and exclusion of temp/sensitive files.

SKILL.md 本文

Ship — コミット & デリバリー

検証済みの作業をクリーンな git コミットにパッケージ化します。ステージング、コミットメッセージの作成、ファイルグループ化、およびコミットすべきでないファイルの除外を処理します。

push を除くすべてのコマンドは自動的に完了まで実行されます。push は常にユーザーに先に確認します。

設定: .claude/skills/project.toml — プロジェクト固有のパス、コマンド、モジュール

コマンド

コマンド使用方法目的
commit/ship または /ship commit現在のすべての変更をステージして 1 つのコミットで確定
split/ship split関心事ごとに変更をグループ化して複数のコミットを作成
preview/ship previewドライラン: コミットせずに何がコミットされるかを表示
push/ship push現在のブランチをリモートにプッシュ (先に確認)

コマンドが指定されない場合は commit がデフォルトです。


セットアップ: 設定を読み込む

すべてのコマンドの前に、プロジェクト設定を読み込みます:

  1. .claude/skills/project.toml を読み込む
  2. split モードでのファイルグループ化用に [modules] を抽出
  3. プロジェクト固有の除外および警告用に [ship] セクションを抽出:
    • exclude-extra — ユニバーサル除外を超えてコミットしないよう追加パス
    • warn — ステージするがレビュー用にフラグを立てるファイル
  4. 追加の除外用に .gitignore を読み込む

project.toml が存在しない場合は、ユニバーサル除外リストを使用し、ディレクトリ構造からファイルグループを自動検出します。


コマンド: commit — 単一コミット

すべての変更をステージして、構造が整った 1 つのコミットを作成します。

手順:

  1. ワーキングツリーを調査:

    git status --short
    git diff --stat HEAD
    
  2. すべてのファイルを次のいずれかに分類:

    カテゴリアクション
    shipステージしてコミットソースファイル、設定、ドキュメント
    skipステージしないテンポラリファイル、ビルド出力、シークレット、DB ファイル
    warnステージするがフラグを立てる[ship].warn 設定のファイル

    ユニバーサル除外 (いかなるプロジェクトでもコミットしない):

    • __pycache__/, *.pyc — Python バイトコード
    • .env, credentials.*, *.key, *.pem — シークレット
    • node_modules/ — JS 依存関係
    • dist/, bin/, obj/ — ビルド出力
    • *.db, *.db-wal, *.db-shm — データベースファイル
    • .gitignore にマッチするファイル

    project.toml の [ship].exclude-extra からのプロジェクト固有の除外。

    project.toml の [ship].warn からの警告ファイル。

  3. カテゴリごとにファイルをステージ。 git add -A ではなく明示的なファイルパスを使用:

    git add <file1> <file2> ...
    

    大規模な場合はディレクトリごとにバッチ処理:

    git add agents/*.md
    git add tests/test_*.py
    
  4. コミットメッセージを作成。 ステージされた変更を分析して以下を決定:

    • : 変更の種類 (feature、refactor、fix、test、docs、chore)
    • スコープ: コードベースのどの領域
    • サマリー: 1 行の説明 (72 文字以下)
    • 本文: 変更内容と理由の箇条書き

    プロジェクトの既存のコミットスタイルに従う (git log から):

    <サマリー行 — 何が変わり、なぜか>
    
    - 詳細 1
    - 詳細 2
    
  5. HEREDOC を使用してコミットを作成:

    git commit -m "$(cat <<'EOF'
    サマリー行
    
    - 詳細 1
    - 詳細 2
    EOF
    )"
    
  6. 検証:

    git log --oneline -1
    git status --short
    

    コミットハッシュと残りのステージされていないファイルをレポートします。


コマンド: split — 関心事ごとの複数コミット

変更を論理的なコミットにグループ化し、関心事ごとに 1 つのコミットを作成します。

手順:

  1. ワーキングツリーを調査 (commit の手順 1 と同じ)。

  2. ファイルをグループに分類。 project.toml から [modules] を利用可能な場合は使用します — 各モジュールカテゴリがコミットグループになります。モジュール設定が存在しない場合は、ディレクトリ構造からグループを推測:

    ヒューリスティックグループ名
    ルートレベルのソースファイルcore
    tests/ ディレクトリtests
    docs/、ルートの *.mddocs
    scripts/ ディレクトリscripts
    設定ファイル (.gitignorerequirements.txt など)infra
    その他のディレクトリディレクトリ名をグループとして使用

    ファイルが複数のグループに属する場合は、最も影響が大きいグループに割り当てます。大規模で混在したコミットより、小規模で焦点を絞ったコミットを優先します。

  3. 各グループについて (依存順 — infra 優先、state 最後): a. そのグループのファイルのみをステージ b. そのグループ固有のコミットメッセージを作成 c. コミットを作成 d. 成功を検証

  4. 作成されたコミットの完全なリストをレポート:

    git log --oneline -N
    

グループの順序:

各コミットが前のコミットの上に構築されるように、この順序でコミット:

  1. infra — 設定、依存関係
  2. コアソースファイル (バックエンド、ライブラリ)
  3. API / ルーティングレイヤー
  4. フロントエンド / UI
  5. スクリプト / ツール
  6. テスト
  7. ドキュメント
  8. エージェント仕様 (存在する場合)
  9. 状態/トラッカーファイル (常に最後)

エッジケース:

  • グループに重要でないファイルが 1 つだけ含まれている場合は、最も関連のあるグループにマージ
  • すべての変更が 1 つのグループに含まれている場合は、単一コミットにフォールバック (commit と同じ)
  • 空のコミットを作成しない

コマンド: preview — ドライラン

変更を加えずに何がコミットされるかを表示します。

手順:

  1. ワーキングツリーを調査

  2. すべてのファイルを分類 (ship / skip / warn)。

  3. split モードが適用される場合は、提案されたグループとコミットメッセージを表示。

  4. レポート:

    • コミットするファイル (分割する場合はグループ割り当て付き)
    • スキップするファイル (理由付き)
    • 警告するファイル
    • 提案されたコミットメッセージ
    • 問題 (コミットされていないシークレット、大規模ファイルなど)

ステージ、コミット、または変更を行わない。


コマンド: push — リモートにプッシュ

現在のブランチをリモートにプッシュします。常にユーザーに先に確認します。

手順:

  1. デフォルトブランチを検出してリモートステータスを確認:

    git remote -v
    BASE=$(git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null | sed 's|refs/remotes/origin/||') || BASE="main"
    git rev-list --count "origin/$BASE..HEAD" 2>/dev/null
    
  2. プッシュされる内容を表示:

    git log --oneline "origin/$BASE..HEAD"
    
  3. プッシュの前にユーザーに確認を要求。 以下を表示:

    • コミット数
    • ブランチ名
    • リモート名
    • 強制プッシュのリスク
  4. 確認時:

    git push -u origin <branch>
    
  5. プッシュ結果をレポート。

安全ルール:

  • ユーザーが明示的にリクエストしない限り 強制プッシュしない
  • main/master へのプッシュ時に 常にユーザーに警告
  • プッシュを実行する前に 常に何がプッシュされるかを表示
  • このコマンドはユーザー確認が必要な唯一のコマンド

ファイル分類

ユニバーサル除外 (ステージしない):

  • __pycache__/, *.pyc — バイトコード
  • .env, credentials.*, *.key, *.pem — シークレット
  • dist/, bin/, obj/ — ビルド出力
  • node_modules/ — 依存関係
  • *.db, *.db-wal, *.db-shm — データベースファイル
  • .claude/worktrees/ — エージェントワークツリー
  • .gitignore 内のファイル

プロジェクト固有の除外:

project.toml の [ship].exclude-extra から読み込みます。これらはコミットすべきでないプロジェクト固有のパス (テンポラリディレクトリ、ローカル設定など)。

警告ファイル:

project.toml の [ship].warn から読み込みます。これらのファイルはステージされますが、ユーザーがレビュー用にフラグを立てられます (状態ファイル、トラッカーファイルなど)。

その他すべて:

ソースファイル、設定、ドキュメント、テスト — 通常通りステージしてコミット。


規約

  • プロジェクトの既存のコミットメッセージスタイルに従う (git log から確認)
  • HEREDOC をコミットメッセージに使用してフォーマットを保持
  • git フックをスキップしない (--no-verify)
  • 明示的なリクエストなしにコミットを修正しない
  • プロジェクトまたはユーザーが明示的に要求しない限り共著者行を含めない
  • git add -A より git add <file> を優先
  • プロジェクトスタイルの規約ファイルを読み込む (project.toml の [project].conventions)

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

詳細情報

作者
espensev
リポジトリ
espensev/ai-skills
ライセンス
MIT
最終更新
2026/3/25

Source: https://github.com/espensev/ai-skills / ライセンス: MIT

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