一键导入
git-gh-operations
git / gh コマンド実行時の共通エラーパターンと正しい操作方法。CWD 問題、パス解決ルール、gh CLI / GitHub API の正しい使い方、過去のエラー事例と対策を扱う。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
git / gh コマンド実行時の共通エラーパターンと正しい操作方法。CWD 問題、パス解決ルール、gh CLI / GitHub API の正しい使い方、過去のエラー事例と対策を扱う。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
修正を複数ブランチに適用する際のブランチ戦略。featureブランチへの先行commitとcherry-pickによる短命branchへの適用手順。環境別branch(qa/staging/epsilon等)への修正適用時に参照する。
DeepWiki (Devin MCP) のドキュメント内容を対象リポジトリの Markdown ファイルとして転載する。セクション構成維持・番号付きファイル分割・GFM 準拠補正・日本語翻訳 (オプション) まで自動処理。
PRのレビューコメントを確認し、優先度に応じてコード修正を実行する。サブエージェント (general-purpose) 起動にも対応。--defer-nit / --severity-min で対応範囲を制御。
実装プランファイル作成・更新の手順。実装開始時およびPR作成時にissues/配下の実装プランの有無を確認し、なければ会話履歴・git log・git diffから生成する。複数ファイル変更・新規機能追加・DBマイグレーション伴う変更が対象。
調査レポート作成のルール。否定的結論のエビデンス要件、残課題の記載フォーマット、ハルシネーション防止のための裏取り原則を扱う。DB調査に限らずコードベース調査・仕様調査一般に適用。
ログを追加・修正する際のガイドライン。ログレベルの選択基準、ループ内ログの制御、エラー蓄積パターン、機密情報の扱いを扱う。言語/FW非依存の原則。
| name | git-gh-operations |
| description | git / gh コマンド実行時の共通エラーパターンと正しい操作方法。CWD 問題、パス解決ルール、gh CLI / GitHub API の正しい使い方、過去のエラー事例と対策を扱う。 |
| when_to_use | git / gh コマンドでエラーが出た or 操作方法に迷うとき。Triggers: 'git add', 'git commit', 'git push', 'gh pr', 'gh api', 'GitHub操作', 'gitエラー', 'fatal:', 'pathspec' |
| allowed-tools | ["Bash","Read"] |
git コマンドはすべて CWD からの相対パス で解決される。
操作前に必ず pwd で CWD を確認すること。
# CWD: /work/repo/lambda-batch/MyProject/
# リポジトリルート: /work/repo/
# NG: リポジトリルートからのパスを指定
git add lambda-batch/MyProject/src/foo.py
# => fatal: pathspec did not match any files
# OK: CWDからの相対パスを指定
git add src/foo.py
# OK: 絶対パスを指定
git add /work/repo/lambda-batch/MyProject/src/foo.py
# 方法A: git -C でリポジトリルートを指定
git -C /work/repo add lambda-batch/MyProject/src/foo.py
# 方法B: CWD を変更せずに絶対パスを使用
git add "$(git rev-parse --show-toplevel)/lambda-batch/MyProject/src/foo.py"
# 方法C(推奨): CWDからの相対パスを使用
# まず pwd で確認してからパスを組み立てる
pwd で CWD を確認git status で変更ファイルのパスを確認(表示されるパスはリポジトリルートからの相対パス)git status の出力パスと CWD の関係を計算してから git add するgit diff --cached でステージング内容を確認git commit -m "$(cat <<'EOF'
コミットメッセージ
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
EOF
)"
-f vs -F# -f: 文字列パラメータ
gh api repos/OWNER/REPO/pulls/PR/comments -f body="テキスト"
# -F: 非文字列パラメータ(数値、boolean、null、ファイル)
gh api repos/OWNER/REPO/pulls/PR/comments -F in_reply_to=2826074026
# 混在OK
gh api repos/OWNER/REPO/pulls/PR/comments -f body="返信テキスト" -F in_reply_to=2826074026
# コメント一覧を取得(id, path, body の先頭を表示)
gh api repos/OWNER/REPO/pulls/PR/comments \
--jq '.[] | {id: .id, path: .path, body: (.body | split("\n")[0][:80])}'
# NG: /replies エンドポイントは存在しない(404になる)
gh api repos/OWNER/REPO/pulls/comments/{id}/replies -f body='...'
# => 404 Not Found
# NG: -X POST を付けても同じ(エンドポイント自体が存在しない)
gh api -X POST repos/OWNER/REPO/pulls/comments/{id}/replies -f body='...'
# => 404 Not Found
# OK: in_reply_to パラメータを使って新規コメントとして投稿
gh api repos/OWNER/REPO/pulls/PR/comments \
-f body="返信テキスト" \
-F in_reply_to=COMMENT_ID
# 1. 未解決スレッドのID一覧を取得
gh api graphql -f query='
query {
repository(owner: "OWNER", name: "REPO") {
pullRequest(number: PR) {
reviewThreads(first: 50) {
nodes {
id
isResolved
comments(first: 1) {
nodes { path body }
}
}
}
}
}
}' --jq '.data.repository.pullRequest.reviewThreads.nodes[] | select(.isResolved == false) | {id, path: .comments.nodes[0].path}'
# 2. スレッドを Resolve
gh api graphql -f query='
mutation {
resolveReviewThread(input: {threadId: "PRRT_xxx"}) {
thread { isResolved }
}
}'
gh pr checks は1つでもfailがあると exit code 1 で終了する。
Claude Codeではコマンド失敗と判定されて処理が止まるため、必ず || true を付ける。
# NG: failがあるとexit code 1で止まる
gh pr checks PR --repo OWNER/REPO
# OK: exit codeを常に0にして出力を取得
gh pr checks PR --repo OWNER/REPO 2>&1 || true
# OK: 失敗のみフィルタ
gh pr checks PR --repo OWNER/REPO 2>&1 | grep -i fail || true
--watch や完了までのポーリングは 禁止。現在のステータスを一度スナップショットするだけでよい。in_progress / queued / pending の場合は 完了を待たず次のステップへ進む。check_pr_requirements 等、PR要件・メタ情報のみ検証するもの# 失敗ジョブのログ(エラー行のみ抽出)
gh run view RUN_ID --repo OWNER/REPO --log-failed 2>&1 \
| grep -E '(FAIL|Error|Tests:)' | head -20 || true
# GitHub の制約: 自分で作成した PR に APPROVE レビューは不可
# => "Can not approve your own pull request"
# 対策: event を "COMMENT" に変更して送信
# NG: \n がリテラルで混入する可能性
gh pr create --title "タイトル" --body "行1\n行2"
# OK: HEREDOC形式
gh pr create --title "タイトル" --body "$(cat <<'EOF'
## Summary
- 変更内容
## Test plan
- [ ] テスト項目
EOF
)"
# NG: --query で [$LATEST] を含む文字列がパースエラー
aws logs get-log-events --query 'events[*].message' --output text
# OK: --output json にして python でパース
aws logs get-log-events --output json | python3 -c "
import sys,json
data = json.loads(sys.stdin.read())
for e in data['events']:
print(e['message'].strip())
"
| エラーメッセージ | 原因 | 対策 |
|---|---|---|
fatal: pathspec '...' did not match any files | CWD とパスの不一致 | pwd 確認後、CWD相対パスで指定 |
404 Not Found (gh api replies) | /comments/{id}/replies は存在しない | in_reply_to パラメータで投稿 |
422 Unprocessable (gh api) | -f で数値を渡した | 数値は -F を使う |
Can not approve your own pull request | 自己 Approve 不可 | COMMENT イベントに変更 |
gh pr checks が exit code 1 | 1つでもfailがあると非0終了 | gh pr checks ... 2>&1 || true |
Unknown options: , , , (aws cli) | [$LATEST] のシェルエスケープ | --output json + python パース |
| ファイル | 内容 | 参照タイミング |
|---|---|---|
01-common-errors.md | 詳細なエラー事例と再現手順 | エラー発生時 |