Install any skill in seconds. Free to start, no credit card required.
Get Started Free →GitHub auth setup: HTTPS tokens, SSH keys, gh CLI.
.claude/skills/hezaohezao-github-auth/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-16 | ✗→✓ | ▲ Improved | 343% | 0% |
| case-17 | ✗→✓ | ▲ Improved | 149% | 0% |
| case-05 | ✓→✓ | = Same ✓ | 31% | 0% |
| case-06 | ✓→✓ | = Same ✓ | 27% | 0% |
| case-07 | ✓→✓ | = Same ✓ | 71% | 0% |
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:
bashgit --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:
bash# 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:
bash# 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:
bashexport GITHUB_TOKEN="ghp_xxxxxxxxxxxx" # Add to .env for persistence
bash# Generate key (if no existing key) ssh-keygen -t ed25519 -C "your_email@example.com" -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 git@github.com # Set remote to SSH git remote set-url origin git@github.com:owner/repo.git
bash# 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
bash# 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:
bash# 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.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 17,702 | 4,370 | -75% | 1 | 1 | 0% | 1,965 | 1,406 | -28% | 0 | 0 | — |
case-02 | fail→fail | 15,407 | 4,671 | -70% | 1 | 1 | 0% | 2,738 | 1,399 | -49% | 0 | 0 | — |
case-03 | fail→fail | 8,286 | 5,448 | -34% | 1 | 1 | 0% | 1,490 | 1,535 | +3% | 0 | 0 | — |
case-04 | fail→fail | 22,777 | 18,628 | -18% | 1 | 1 | 0% | 3,937 | 4,658 | +18% | 0 | 0 | — |
case-05 | pass→pass | 14,921 | 10,839 | -27% | 1 | 1 | 0% | 2,396 | 3,137 | +31% | 0 | 0 | — |
case-06 | pass→pass | 28,398 | 11,171 | -61% | 1 | 1 | 0% | 2,418 | 3,081 | +27% | 0 | 0 | — |
case-07 | pass→pass | 8,697 | 12,475 | +43% | 1 | 1 | 0% | 1,387 | 2,366 | +71% | 0 | 0 | — |
case-08 | pass→pass | 7,893 | 4,679 | -41% | 1 | 1 | 0% | 1,223 | 1,517 | +24% | 0 | 0 | — |
case-09 | pass→pass | 7,577 | 8,187 | +8% | 1 | 1 | 0% | 1,315 | 2,279 | +73% | 0 | 0 | — |
case-10 | pass→pass | 7,512 | 11,772 | +57% | 1 | 1 | 0% | 1,216 | 1,778 | +46% | 0 | 0 | — |
case-11 | pass→pass | 25,001 | 10,274 | -59% | 1 | 1 | 0% | 2,078 | 2,622 | +26% | 0 | 0 | — |
case-12 | pass→pass | 3,742 | 4,811 | +29% | 1 | 1 | 0% | 579 | 1,791 | +209% | 0 | 0 | — |
case-13 | pass→pass | 7,659 | 3,871 | -49% | 1 | 1 | 0% | 1,345 | 1,766 | +31% | 0 | 0 | — |
case-14 | pass→pass | 14,995 | 3,865 | -74% | 1 | 1 | 0% | 932 | 1,567 | +68% | 0 | 0 | — |
case-15 | pass→pass | 5,442 | 4,859 | -11% | 1 | 1 | 0% | 961 | 1,885 | +96% | 0 | 0 | — |
case-16 | fail→pass | 43,170 | 6,617 | -85% | 1 | 1 | 0% | 320 | 1,418 | +343% | 0 | 0 | — |
case-17 | fail→pass | 4,502 | 3,826 | -15% | 1 | 1 | 0% | 657 | 1,633 | +149% | 0 | 0 | — |
case-18 | pass→pass | 15,852 | 4,492 | -72% | 1 | 1 | 0% | 1,297 | 1,664 | +28% | 0 | 0 | — |
case-19 | pass→pass | 5,496 | 4,384 | -20% | 1 | 1 | 0% | 816 | 1,529 | +87% | 0 | 0 | — |
case-20 | pass→pass | 12,335 | 10,324 | -16% | 1 | 1 | 0% | 2,032 | 2,624 | +29% | 0 | 0 | — |
case-21 | pass→pass | 19,203 | 5,442 | -72% | 1 | 1 | 0% | 1,319 | 1,610 | +22% | 0 | 0 | — |
case-22 | pass→pass | 9,585 | 5,515 | -42% | 1 | 1 | 0% | 1,641 | 1,973 | +20% | 0 | 0 | — |
case-23 | pass→pass | 12,749 | 21,159 | +66% | 1 | 1 | 0% | 2,314 | 3,731 | +61% | 0 | 0 | — |
case-24 | pass→pass | 11,054 | 14,870 | +35% | 1 | 1 | 0% | 1,697 | 2,648 | +56% | 0 | 0 | — |
case-25 | pass→pass | 12,484 | 12,283 | -2% | 1 | 1 | 0% | 2,389 | 3,239 | +36% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 25 cases were attempted. The headline lift of +8 percentage points is the difference between those two pass rates over the 25 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.