github-auth について
github-auth は、GitHub API、リポジトリ管理、git 操作に必要な認証情報の安全な利用方法を示すスキルです。.env の PAT、gh CLI、SSH キー、認証情報の取り扱いを扱います。
主な機能
- 01.env から GitHub 認証情報を読み込み
- 02gh による認証済み操作
- 03API 経由の GitHub アクセス
- 04SSH キーまたは認証情報ヘルパーの推奨
- 05トークンの安全管理とトラブル対応
活用シーン
- 01リポジトリの作成や Issue・PR・Release の管理
- 02API 経由でのリポジトリ一覧取得
- 03プライベートリポジトリのクローンと git 操作
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ jackspace/ claudeskillz --skill github-authインストール後、Claude Code で/github-authを入力して読み込まれたか確認します。
同梱ファイルSKILL.json
詳細
GitHub 認証
このスキルは、API 操作、リポジトリ管理、git コマンドのために GitHub 認証情報へ安全にアクセスできるようにします。
手順
認証が必要な GitHub 操作を支援する場合:
認証情報の保存場所
-
認証情報はプロジェクトルートの
.envファイルに保存されています -
クロスプラットフォームでのパスの例:
- Linux/macOS:
~/apps/your_claude_skills/.envまたは相対パス:./.env - Windows:
%USERPROFILE%\apps\your_claude_skills\.envまたは相対パス:.\.env
- Linux/macOS:
-
認証情報の読み込み:
# Linux/macOS: source ./.env # Windows PowerShell: # Get-Content .\.env | ForEach-Object { if ($_ -match '^([^=]+)=(.*)$') { [Environment]::SetEnvironmentVariable($matches[1], $matches[2]) } } -
スクリプトからのアクセス:
# Linux/macOS: GITHUB_USERNAME=$(grep GITHUB_USERNAME ./.env | cut -d= -f2) GITHUB_PAT=$(grep GITHUB_PAT ./.env | cut -d= -f2) # Windows PowerShell: # $GITHUB_USERNAME = (Get-Content .\.env | Select-String "GITHUB_USERNAME").Line.Split("=")[1] # $GITHUB_PAT = (Get-Content .\.env | Select-String "GITHUB_PAT").Line.Split("=")[1]
GitHub API 操作
認証が必要な操作には GitHub CLI(gh)を使用します:
# Authenticate gh with stored PAT
echo "$GITHUB_PAT" | gh auth login --with-token
# Or use API directly with curl
curl -H "Authorization: token $GITHUB_PAT" https://api.github.com/user/repos
認証を使った Git 操作
⚠️ セキュリティに関する警告:URL に認証情報を埋め込むのはセキュリティ上のリスクです。代わりに SSH キーまたは git credential helper を使用してください。
推奨:SSH キーを使用
# Setup SSH key for GitHub (one-time setup)
ssh-keygen -t ed25519 -C "[email protected]"
cat ~/.ssh/id_ed25519.pub # Add this to GitHub Settings > SSH Keys
# Clone with SSH (RECOMMENDED)
git clone [email protected]:owner/repo.git
# Add SSH remote
git remote add origin [email protected]:owner/repo.git
代替方法:Git Credential Helper を使用
# Configure git credential helper (stores credentials securely)
git config --global credential.helper store
# First time will prompt for credentials, then stores them securely
git clone https://github.com/owner/repo.git
非推奨:URL に認証情報を埋め込む(自動化/CI の場合に限る)
# WARNING: Credentials in URLs can leak in logs/history
# Only use in secure, automated environments
git clone https://$GITHUB_USERNAME:[email protected]/owner/repo.git
GitHub の一般的な操作
-
リポジトリを作成
gh repo create owner/repo --private --description "Description" -
リポジトリを一覧表示
gh repo list -
プルリクエストを作成
gh pr create --title "Title" --body "Description" -
Issue を管理
gh issue create --title "Issue" --body "Description" gh issue list -
リリースを管理
gh release create v1.0.0 --title "Release 1.0.0" --notes "Release notes"
セキュリティのベストプラクティス
-
PAT をエコーまたは表示しない
echo $GITHUB_PATを実行したり、トークンを表示したりしないでください- コマンドで直接使用するか、標準入力にパイプしてください
.envファイルの権限を制限してください(chmod 600)
-
可能な限り gh CLI を使用
- 生の API 呼び出しよりも
ghコマンドを優先してください - gh は認証情報を安全に保存します
- エラー処理が優れており、出力も分かりやすくなります
- 生の API 呼び出しよりも
-
Git URL に認証情報を含めない
- URL 内の認証情報は git の履歴、ログ、エラーメッセージから漏洩する可能性があります
- 代わりに SSH キーまたは git credential helper を使用してください
- URL に認証情報を含めるのは、安全な CI/CD 環境でのみ使用してください
-
.env が Git の追跡対象外であることを確認
.gitignoreに.envが含まれていることを必ず確認してください- 認証情報を git にコミットしないでください
- ドキュメントには
.env.exampleを使用してください
-
トークンを定期的にローテーション
- GitHub PAT は定期的にローテーションしてください
- ローテーション後は古いトークンを無効化してください
- 新しいトークンで
.envファイルを更新してください
エラー処理
認証に失敗した場合:
.envファイル内の PAT が有効であることを確認します- PAT に必要なスコープ(repo、workflow など)があることを確認します
- PAT の有効期限が切れていないことを確認します
gh auth statusでテストします
例
例 1:新しいリポジトリを作成してプッシュ
# Load credentials (Linux/macOS):
source ./.env
# Load credentials (Windows PowerShell):
# Get-Content .\.env | ForEach-Object { if ($_ -match '^([^=]+)=(.*)$') { [Environment]::SetEnvironmentVariable($matches[1], $matches[2]) } }
# Create private repository
gh repo create yourusername/my-new-repo --private --description "My new project"
# Initialize local repo and push
git init
git add .
git commit -m "Initial commit"
git branch -M main
git remote add origin https://github.com/yourusername/my-new-repo.git
git push -u origin main
例 2:プライベートリポジトリをクローン(SSH - 推奨)
# Clone with SSH (most secure)
git clone [email protected]:yourusername/private-repo.git
例 2b:Credential Helper を使ってクローン
# First time setup (one-time)
git config --global credential.helper store
# Clone - will prompt for credentials first time, then cache
git clone https://github.com/yourusername/private-repo.git
例 3:API リクエスト
# Load credentials (Linux/macOS):
source ./.env
# Load credentials (Windows PowerShell):
# Get-Content .\.env | ForEach-Object { if ($_ -match '^([^=]+)=(.*)$') { [Environment]::SetEnvironmentVariable($matches[1], $matches[2]) } }
# List user's repositories (Linux/macOS):
curl -s -H "Authorization: token $GITHUB_PAT" \
https://api.github.com/user/repos | jq -r '.[].full_name'
# Windows PowerShell:
# $headers = @{ Authorization = "token $env:GITHUB_PAT" }
# (Invoke-RestMethod -Uri "https://api.github.com/user/repos" -Headers $headers).full_name
メモ
- GitHub CLI(gh)は GitHub 操作に推奨される方法です
- PAT には必要な操作に応じた適切なスコープを設定してください
- 認証情報ファイルは
.gitignoreによって保護されています - CI/CD では
.envファイルの代わりに GitHub Actions secrets を使用してください - PAT を使った HTTPS の代替として、git 操作には SSH キーの使用を検討してください
コメント
Markdown 対応