mcpField
G
github-auth

github-auth

github.com/jackspace開発1657 回インストール12 週間前に更新
リポジトリ

github-auth について

github-auth は、GitHub API、リポジトリ管理、git 操作に必要な認証情報の安全な利用方法を示すスキルです。.env の PAT、gh CLI、SSH キー、認証情報の取り扱いを扱います。

主な機能

  1. 01.env から GitHub 認証情報を読み込み
  2. 02gh による認証済み操作
  3. 03API 経由の GitHub アクセス
  4. 04SSH キーまたは認証情報ヘルパーの推奨
  5. 05トークンの安全管理とトラブル対応

活用シーン

  1. 01リポジトリの作成や Issue・PR・Release の管理
  2. 02API 経由でのリポジトリ一覧取得
  3. 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:
    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 の一般的な操作
  1. リポジトリを作成

    gh repo create owner/repo --private --description "Description"
    
  2. リポジトリを一覧表示

    gh repo list
    
  3. プルリクエストを作成

    gh pr create --title "Title" --body "Description"
    
  4. Issue を管理

    gh issue create --title "Issue" --body "Description"
    gh issue list
    
  5. リリースを管理

    gh release create v1.0.0 --title "Release 1.0.0" --notes "Release notes"
    
セキュリティのベストプラクティス
  1. PAT をエコーまたは表示しない

    • echo $GITHUB_PAT を実行したり、トークンを表示したりしないでください
    • コマンドで直接使用するか、標準入力にパイプしてください
    • .env ファイルの権限を制限してください(chmod 600)
  2. 可能な限り gh CLI を使用

    • 生の API 呼び出しよりも gh コマンドを優先してください
    • gh は認証情報を安全に保存します
    • エラー処理が優れており、出力も分かりやすくなります
  3. Git URL に認証情報を含めない

    • URL 内の認証情報は git の履歴、ログ、エラーメッセージから漏洩する可能性があります
    • 代わりに SSH キーまたは git credential helper を使用してください
    • URL に認証情報を含めるのは、安全な CI/CD 環境でのみ使用してください
  4. .env が Git の追跡対象外であることを確認

    • .gitignore に .env が含まれていることを必ず確認してください
    • 認証情報を git にコミットしないでください
    • ドキュメントには .env.example を使用してください
  5. トークンを定期的にローテーション

    • GitHub PAT は定期的にローテーションしてください
    • ローテーション後は古いトークンを無効化してください
    • 新しいトークンで .env ファイルを更新してください
エラー処理

認証に失敗した場合:

  1. .env ファイル内の PAT が有効であることを確認します
  2. PAT に必要なスコープ(repo、workflow など)があることを確認します
  3. PAT の有効期限が切れていないことを確認します
  4. 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 キーの使用を検討してください

コメント