commit-push-pr-workflow について
特定のリポジトリで、機能ブランチの作成からコミット、プッシュ、プルリクエストまでを進めるスキルです。コミットや PR の規約、確認項目、複数の作成方法を示し、Windows PowerShell の手順も含みます。
主な機能
- 01機能ブランチのワークフロー
- 02コミットメッセージの規約
- 03コミット前・プッシュ前の確認
- 04プッシュ承認チェックリスト
- 05草案 PR を既定で作成
- 06PowerShell と API の手順
活用シーン
- 01機能ブランチでリポジトリの変更を準備
- 02確認結果を記録してコミット文を整備
- 03利用可能な方法で草案 PR を作成
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ yiyousiow000814/ xauusd-calendar-agent --skill commit-push-pr-workflowインストール後、Claude Code で/commit-push-pr-workflowを入力して読み込まれたか確認します。
詳細
コミット、プッシュ、PR のワークフロー
このリポジトリの規約を適用します。
mainに直接コミットしないでください。フィーチャーブランチと PR を使用します。- PR/イシューのタイトル:英語。PR の本文/コメント:デフォルトでは簡体字中国語(リクエストが
[EN]で始まる場合を除く)。 - GitHub CLI の
--bodyにエスケープされた改行を指定しないでください。実際の\\nが出力されるのを防ぐため、--body-fileまたは標準入力を使用してください。
このスキルは Windows(PowerShell 5.1 以降)で快適に使えるように作成されています。Bash の例は任意です。
ブランチ
- 変更を行う前に、
mainからフィーチャーブランチを作成します。git fetch origin --prunegit switch maingit pull --ff-onlygit switch -c docs/example-change
コミット
- コミットする前に、現在の変更範囲に必要なチェックが実行済みであることを確認します(実行した正確なコマンドを記録します)。
- 変更対象のファイルだけをステージングします(
git add -pを推奨)。 - コミットメッセージはファイルを使って記述します(複数の
-mによる書式設定の問題を避けます)。 - コミットタイトル:
prefix: subjectまたはprefix(scope): subject。英語のみとし、できれば 50 文字以下(最大 72 文字で折り返し)、末尾にピリオドを付けません。 - 重要な変更には本文を含めます。タイトルの後に空行を入れ、72 桁で折り返し、リスク/検証に関するメモを記載します。
テンプレート(PowerShell、BOM なし UTF-8)
$msg = @'
fix(scope): concise subject
What changed, why, how (if relevant). Wrap at 72 columns.
Risks/side effects if any.
'@
$path = Join-Path $env:TEMP 'commit_msg.txt'
[System.IO.File]::WriteAllText($path, $msg, [System.Text.UTF8Encoding]::new($false))
git commit -F $path
Remove-Item -Force $path
テンプレート(Bash、任意)
cat <<'EOF' > /tmp/commit_msg.txt
fix(scope): concise subject
What changed, why, how (if relevant). Wrap at 72 columns.
Risks/side effects if any.
EOF
git commit -F /tmp/commit_msg.txt
rm -f /tmp/commit_msg.txt
プッシュ
- チェックに合格した後にのみプッシュします。
- 新しいブランチには
git push -u origin <branch>を推奨します。 - 強制プッシュは避けてください。
- 履歴の書き換えが必要な場合(例:認証情報の漏えいを除去する場合)は、明示的に確認してください。また、ブランチルール(例:デフォルトブランチへの非早送り更新)により、設定を一時的に変更しない限り強制プッシュがブロックされることを想定してください。
git-filter-repoを使用した場合、originが自動的に削除されることがあります。プッシュする前に再追加してください。
プッシュ前のチェックリスト
- チェックを実行済み(正確なコマンドを記録済み)。
- コミットのタイトル/本文がリポジトリのルールに準拠している。
- ユーザーがプッシュを明示的に承認している(特に
--forceの場合)。
PR
- デフォルトではドラフト PR を作成します。
オプション A:GitHub CLI(gh)
gh --version
gh auth status
@'
Summary:
- ...
Verification:
- ...
'@ | gh pr create --draft --base main --title "docs: ..." --body-file -
オプション B:ブラウザー(追加ツール不要)
- ブランチをプッシュしてから、次を開きます。
https://github.com/<owner>/<repo>/pull/new/<branch>
オプション C:GitHub API(PowerShell、エンコーディング安全)
- 環境変数のトークンを使用することを推奨します(ログに出力しないでください)。
$env:GITHUB_TOKEN = '...'
$headers = @{
Authorization = "token $env:GITHUB_TOKEN"
'User-Agent' = 'codex-cli'
Accept = 'application/vnd.github+json'
}
$payload = @{
title = 'docs: ...'
head = '<branch>'
base = 'main'
body = @"
Summary:
- ...
Verification:
- ...
"@
draft = $true
} | ConvertTo-Json
$bytes = [System.Text.Encoding]::UTF8.GetBytes($payload)
Invoke-RestMethod -Method Post `
-Uri 'https://api.github.com/repos/<owner>/<repo>/pulls' `
-Headers $headers `
-ContentType 'application/json; charset=utf-8' `
-Body $bytes
オプション D:git の認証情報を使った GitHub API(PowerShell、環境変数のトークンなし)
ghがインストールされておらず、GITHUB_TOKENも設定されていない場合は、gitがすでに保持している GitHub の認証情報を再利用できます。
$cred = "protocol=https`nhost=github.com`n`n" | git credential fill
$token = (($cred | Select-String -Pattern '^password=').Line).Substring(9)
$headers = @{
Authorization = "token $token"
'User-Agent' = 'codex-cli'
Accept = 'application/vnd.github+json'
}
$payloadObj = @{
title = 'docs: ...'
head = '<branch>'
base = 'main'
body = "Summary:`n- ...`n"
draft = $true
}
$json = $payloadObj | ConvertTo-Json -Depth 5
$bytes = [System.Text.Encoding]::UTF8.GetBytes($json)
Invoke-RestMethod -Method Post `
-Uri 'https://api.github.com/repos/<owner>/<repo>/pulls' `
-Headers $headers `
-ContentType 'application/json; charset=utf-8' `
-Body $bytes
PowerShell から GitHub API を使って PR の本文を編集する場合:
- 中国語のテキストを確実に保持するため、JSON は BOM なしの UTF-8 バイトとしてシリアル化します。
- トークンや Authorization ヘッダーを出力しないでください。
コメント
Markdown 対応