GitHub イシュー作成プロトコル
GitHub CLI (gh) を使用してコマンドラインからイシューを作成する際は、シェルの解釈による意図しない文字列の欠落を防ぐため、以下のルールを遵守する。
1. バッククォートの扱い
シェル(bash/zsh等)において、バッククォート (`) はコマンド置換として解釈されます。イシューの本文やタイトルにコードブロック等の意味でバッククォートを含める場合は、必ず以下のいずれかの方法でエスケープまたは回避してください。
推奨:ヒアドキュメントの使用
--body 引数に直接長い文字列を渡すのではなく、標準入力またはヒアドキュメントを使用します。これにより、クォートによる囲みやエスケープの複雑さを回避できます。
bash
gh issue create --title "タイトル" --label "bug" --body-file - <<EOF ## 概要 \`Hakodate\` のようにバッククォートを含めても安全です。 EOF
バッククォートのエスケープ
ダブルクォート内の文字列として直接渡す場合は、バッククォートをバックスラッシュでエスケープします。
bash
gh issue create --title "タイトル" --body "例:\`Hakodate\`"
2. 内容の精査と清書
ユーザーから提供された情報をそのまま投稿するのではなく、以下の構成で清書してください。
- •概要: 何が起きているか(要約)
- •本来あるべき挙動: 期待される動作
- •再現手順 / 発生している事象: 具体的な例(バッククォートでのコード形式などを活用)
4. コミットとクローズの順序管理(重要)
作業完了時にコミットやプッシュを行う際、GitHubの自動クローズ機能(Close #XX など)による意図しない順序でのイシュー終了を防ぐため、以下の手順を厳守する。
- •コミットメッセージの記述:
- •コミットメッセージには
Close #XXやFixes #XX等のキーワードを含めないようにする。 - •代わりに、
Issue #XX: [内容]のように、参照に留める記述を使用する。
- •コミットメッセージには
- •内容の報告(コメント):
- •
gh issue commentを使用し、対応内容の詳細(実施した変更、削除した依存関係、最適化した点など)をイシューに投稿する。
- •
- •手動クローズ:
- •ユーザーからの指示、または対応内容の投稿が完了したことを確認した後、
gh issue closeを使用して手動でイシューをクローズする。
- •ユーザーからの指示、または対応内容の投稿が完了したことを確認した後、
順守すべき原則: ユーザーから「コメントした後にクローズしてほしい」といった具体的な手順の指示がある場合、いかなる自動化機能よりもその手順の遵守を最優先すること。
3. 自動実行の注意点
gh コマンドで引数に複雑な文字列を渡す際は、実行前にコマンドラインが正しく組み立てられているか、特に特殊文字($, `, \)が意図通りに扱われているかを慎重に確認してください。