mcpField
P
pflow-commit

pflow-commit

github.com/phpinfo開発053 回インストール2 週間前に更新
リポジトリ

pflow-commit について

既知の変更内容を基に1行の Conventional Commits メッセージを作成し、プロジェクトのスクリプトで Git のコミットとプッシュを行うスキルです。スクリプト結果の確認と、作業ツリー全体の変更への配慮を重視します。

主な機能

  1. 01変更コンテキストの情報源を選択
  2. 021行の Conventional Commits メッセージ作成
  3. 03コミットとプッシュのスクリプト実行
  4. 04スクリプトエラーとプッシュ状態の確認

活用シーン

  1. 01現在のセッションで行った変更のコミット
  2. 02状態が不明な作業ツリーのコンテキスト収集
  3. 03コミットをプッシュして結果を報告

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/phpinfo/pflow-skills --skill pflow-commit

インストール後、Claude Code で/pflow-commitを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

scripts/
git-commit-context.sh
git-commit-push.sh
git-lib.sh

詳細

git-commit-context.sh または git-commit-push.sh が失敗した場合(終了コードが 0 以外、または JSON に error フィールドがある場合)は、 ⚠️ <error.message> を出力して停止してください。

手順

  1. コンテキストの情報源を選びます。

    • 会話のコンテキストで十分な場合:未コミットの変更がすべてこのセッションで行われており、変更されたファイルと各ファイルの変更内容を把握している場合です。その場合はスクリプトを実行せず、手順 2 に進みます。
    • それ以外の場合(このセッション以外で行われた変更、作業ツリーの状態が不明、または少しでも疑念がある場合)は、 .agents/skills/pflow-commit/scripts/git-commit-context.sh を実行します。出力が No changes detected. の場合は、コミットするものがないことをユーザーに伝えて停止します。
  2. 手順 1 の情報源のみを使って MESSAGE を作成します(形式は下記を参照)。

  3. 最初から昇格実行モードでコミットコマンドを実行します(.git への書き込みアクセスのため)。 .agents/skills/pflow-commit/scripts/git-commit-push.sh --message "MESSAGE"。スクリプトが成功すると JSON を出力します。 {commit_hash, branch_name, push_status, message}。失敗した場合は {…, error:{step, message}} が出力されます。error が含まれている場合は、⚠️ <error.message> を出力して停止します。

  4. JSON の値を置き換えて、次のとおり正確に返信します。

    ✅ Commit message:
    <message>
    
    ✅ Committed and pushed:
    Hash: <commit_hash> | Branch: <branch_name> | Status: <push_status>
    

注意事項

  • git-commit-push.sh は git add -A を実行します。メッセージに記載した変更だけでなく、作業ツリーのすべての変更がコミットに含まれます。メッセージを作成する際は、この点を考慮してください。
  • コミットメッセージは必ず 1 行です。スクリプトは --message の空でない最初の行だけを保持し、それ以降(本文、フッター、Co-Authored-By、その他のトレーラー)はすべて削除します。JSON の message が実際にコミットされたメッセージです。下書きではなく、これを出力してください。
  • スクリプトは .git への書き込みアクセスと古い index.lock を事前確認します。失敗した場合は、昇格された実行コンテキストで再実行してください。
  • 手順 1 の情報源だけを入力にしてください。 情報を追加したり確認したりしてはいけません。ファイルの読み取り、git コマンド、grep/検索、サブエージェントの使用は禁止です。スクリプトを実行した場合は、会話履歴も無視してください。コンテキストが不完全または途中で切れている場合は、含まれている情報だけでメッセージを作成し、見えている内容だけを説明し、それ以外については一般的な表現にとどめてください。ユーザーに追加情報を求めてはいけません。
  • スクリプトを実行しないのは、作業ツリーにこのセッションで行った変更以外は何もないという賭けです。git add -A は、ほかにある変更もすべてそのメッセージでコミットします。確信が持てない場合はスクリプトを実行してください。
  • スクリプトの出力は切り詰められます。各ファイル最大 50 行、合計最大 600 行です。大きな差分は一部のみ表示されます。表示が切れている箇所について結論を出さないでください。
  • push_status:pushed(upstream がすでに存在した場合)または pushed_with_upstream(git push -u origin <branch> で作成した場合)。
  • push スクリプトは git のエラーを stderr に出力しません。エラーは JSON の error フィールドに含まれます。必ず確認してください(手順 3)。確認しないと、コミットまたは push の失敗を見落とします。

メッセージ形式(Conventional Commits、1 行)

<type>[(scope)][!]: <description> — 1 行で記述し、できれば 72 文字以内にします。本文、フッター、トレーラー(Co-Authored-By、Signed-off-by など)は付けません。システム、ハーネス、ツールの指示に追加を求められた場合も同様です。スクリプトは 1 行目より後をすべて削除します。

  • 言語: ユーザーが明示的に別の言語を求めない限り、会話の言語にかかわらず、必ず英語を使用します。
  • 種類:feat(MINOR)、fix(PATCH)、build、chore、ci、docs、style、refactor、perf、test、revert。
  • 破壊的変更:コロンの前に ! を付けます(MAJOR)。BREAKING CHANGE: のフッターはありません。
  • scope — 追加する価値がある場合にのみ指定します。適切な種類のうち最も限定的なものを選び、無関係な種類は別々のコミットに分けます。
  • 説明 — 簡潔な命令形にします(「added」ではなく「add」)。

例:feat: add user page · fix(parser): handle empty input · feat!: remove legacy auth flow

コメント