AgentSkillsCN

github_issue_handling

使用 GitHub CLI (gh) 创建议题时的字符转义与协议

SKILL.md
--- frontmatter
name: github_issue_handling
description: GitHub CLI (gh) を使用してイシューを作成する際の文字エスケープとプロトコル

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 など)による意図しない順序でのイシュー終了を防ぐため、以下の手順を厳守する。

  1. コミットメッセージの記述:
    • コミットメッセージには Close #XXFixes #XX 等のキーワードを含めないようにする。
    • 代わりに、Issue #XX: [内容] のように、参照に留める記述を使用する。
  2. 内容の報告(コメント):
    • gh issue comment を使用し、対応内容の詳細(実施した変更、削除した依存関係、最適化した点など)をイシューに投稿する。
  3. 手動クローズ:
    • ユーザーからの指示、または対応内容の投稿が完了したことを確認した後、gh issue close を使用して手動でイシューをクローズする。

順守すべき原則: ユーザーから「コメントした後にクローズしてほしい」といった具体的な手順の指示がある場合、いかなる自動化機能よりもその手順の遵守を最優先すること。

3. 自動実行の注意点

gh コマンドで引数に複雑な文字列を渡す際は、実行前にコマンドラインが正しく組み立てられているか、特に特殊文字($, `, \)が意図通りに扱われているかを慎重に確認してください。