hezaohezao/github-auth
GitHub auth setup: HTTPS tokens, SSH keys, gh CLI.
npx skills add https://github.com/HezaoHezao/poirot --skill github-auth
Sets up authentication so the agent can work with GitHub repositories, PRs,
issues, and CI.
When a user asks to work with GitHub, run this check first:
git --version
gh --version 2>/dev/null || echo "gh not installed"
gh auth status 2>/dev/null || echo "gh not authenticated"
git config --global credential.helper 2>/dev/null || echo "no git credential helper"
Decision tree:
gh auth status shows authenticated → use gh for everythinggh installed but not authenticated → use "gh auth" methodgh not installed → use "git-only" methodStep 1: Create a token at https://github.com/settings/tokens (classic)
or https://github.com/settings/personal-access-tokens (fine-grained). Scope:
repo, workflow, read:org.
Step 2: Configure git credential helper:
# Store credentials (plaintext, dev machine only)
git config --global credential.helper store
# Or use a credential cache (timed, more secure)
git config --global credential.helper 'cache --timeout=3600'
Step 3: First push triggers prompt:
# Username: your GitHub username
# Password: paste your token (not your GitHub password)
git push origin main
Step 4 (optional): Set token as env var for API calls:
export GITHUB_TOKEN="ghp_xxxxxxxxxxxx"
# Add to .env for persistence
# Generate key (if no existing key)
ssh-keygen -t ed25519 -C "[email protected]" -f ~/.ssh/id_ed25519_github
# Start ssh-agent
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519_github
# Copy public key
cat ~/.ssh/id_ed25519_github.pub
# Paste at https://github.com/settings/keys
# Test
ssh -T [email protected]
# Set remote to SSH
git remote set-url origin [email protected]:owner/repo.git
# Install gh (if not present)
# macOS: brew install gh
# Linux: see https://github.com/cli/cli#installation
# Windows: winget install GitHub.cli
# Authenticate
gh auth login
# Follow prompts: choose HTTPS or SSH, authenticate via browser or token
# Verify
gh auth status
# Use gh for everything
gh repo clone owner/repo
gh pr create
gh issue list
# Test git auth
git ls-remote origin
# Test gh auth
gh api user --jq '.login'
# Test API token
curl -s -H "Authorization: token $GITHUB_TOKEN" https://api.github.com/user | python3 -c "import sys,json; print(json.load(sys.stdin)['login'])"
Many skills need owner/repo. Use this reusable block:
# Determine auth method
if command -v gh &>/dev/null && gh auth status &>/dev/null; then
AUTH="gh"
else
AUTH="git"
fi
# Extract owner/repo from remote
REMOTE_URL=$(git remote get-url origin)
OWNER_REPO=$(echo "$REMOTE_URL" | sed -E 's|.*github\.com[:/]||; s|\.git$||')
OWNER=$(echo "$OWNER_REPO" | cut -d/ -f1)
REPO=$(echo "$OWNER_REPO" | cut -d/ -f2)
personal access token, not password.
gh auth status orcurl -s -H "Authorization: token $GITHUB_TOKEN" https://api.github.com/user.
ssh-keygen in Git Bash or PowerShell (OpenSSHclient built into Windows 10+).
manager` uses Windows Credential Manager.
5000/hour.
Take hezaohezao/github-auth from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.
The instructions reference brew.
Without those the skill loads but fails at the first command.