github-assistant

Pass

Interactive troubleshooting assistant for the top 5 GitHub problems faced by new users. Diagnoses authentication failures, Git vs GitHub confusion, local-remote sync issues, merge conflicts, and accidental sensitive data commits. Provides step-by-step solutions with command execution. Use when users mention GitHub errors, password issues, sync problems, merge conflicts, or accidentally committing secrets.

@majiayu000
MIT2/22/2026
67out of 100
(0)
82
40
52

Install Skill

Skills are third-party code from public GitHub repositories. SkillHub scans for known malicious patterns but cannot guarantee safety. Review the source code before installing.

Install globally (user-level):

npx skillhub install majiayu000/claude-skill-registry/github-assistant

Install in current project:

npx skillhub install majiayu000/claude-skill-registry/github-assistant --project

Suggested path: ~/.claude/skills/github-assistant/

AI Review

Instruction Quality68
Description Precision72
Usefulness65
Technical Soundness62

A useful beginner-focused GitHub troubleshooter with good trigger phrases and comprehensive problem coverage. Score limited by text-only workflows (no automation), no error tables, and no negative triggers.

SKILL.md Content

---
name: github-assistant
description: Interactive troubleshooting assistant for the top 5 GitHub problems faced by new users. Diagnoses authentication failures, Git vs GitHub confusion, local-remote sync issues, merge conflicts, and accidental sensitive data commits. Provides step-by-step solutions with command execution. Use when users mention GitHub errors, password issues, sync problems, merge conflicts, or accidentally committing secrets.
---

# GitHub Assistant Skill

This skill provides interactive, diagnostic-driven troubleshooting for the most common GitHub problems faced by new users. It identifies which of the 5 major problem scenarios the user is experiencing and provides accurate, step-by-step solutions with command execution support.

## When to Activate This Skill

**Trigger conditions:**
- User mentions GitHub authentication errors: "password doesn't work", "authentication failed", "can't push"
- User is confused about Git vs GitHub: "is Git the same as GitHub?", "which commands are Git?"
- User wants to sync local folder with GitHub: "sync my folder", "automatically update GitHub", "keep in sync"
- User encounters merge conflicts: "merge conflict", "conflicting changes", "pull failed"
- User accidentally committed sensitive data: "committed password", "exposed API key", "sensitive file in GitHub"
- User asks general GitHub help questions for beginners

**Initial offer:**
Greet the user and explain this skill will help diagnose and solve their GitHub issue. Mention that you'll ask a few questions to identify the exact problem and then provide a step-by-step solution.

## Diagnostic Workflow

### Step 1: Problem Identification

Ask the user to describe their issue or choose from common scenarios:

Present these options:
1. **Authentication/Password Issues** - Can't push or clone, password doesn't work
2. **Understanding Git vs GitHub** - Confused about what commands to use where
3. **Syncing Local Folder with GitHub** - Want to keep local files in sync with repository
4. **Merge Conflicts** - Getting conflict errors when pulling or merging
5. **Sensitive Data Exposure** - Accidentally committed passwords, API keys, or secrets
6. **Other/Not Sure** - Describe the issue in your own words

Wait for user response and route to appropriate solution workflow.

**If user chooses "Other/Not Sure":**
Ask them to describe:
- What they were trying to do
- What command they ran (if any)
- The exact error message they received
- Their current situation

Based on their description, identify which of the 5 scenarios best matches and proceed to that workflow.

### Step 2: Route to Appropriate Solution

Based on user selection, proceed to the corresponding solution workflow below.

## Solution Workflow 1: Authentication Failures

**Problem confirmed:** User is experiencing "Support for password authentication was removed" or similar authentication errors.

### Step 1: Explain the Issue

Inform the user:
- GitHub removed password authentication on August 13, 2021
- They now need to use either Personal Access Token (PAT) or SSH keys
- Their GitHub account password will not work for Git operations

### Step 2: Recommend Approach

Ask which authentication method they prefer:
- **Personal Access Token (Recommended for beginners)** - Use a token instead of password
- **SSH Keys (More advanced)** - Set up SSH key authentication

### Step 3a: Personal Access Token Setup (if chosen)

Provide step-by-step instructions:

1. **Generate a PAT on GitHub:**
   - Go to: https://github.com/settings/tokens
   - Click "Generate new token" → "Generate new token (classic)"
   - Give it a descriptive name (e.g., "My Laptop Git Access")
   - Set expiration (recommend 90 days for security)
   - Select scopes: Check "repo" for full repository access
   - Click "Generate token" at the bottom
   - **IMPORTANT:** Copy the token immediately - you won't see it again!

2. **Use the token:**
   - When Git prompts for a password, paste the token instead
   - The token should start with `ghp_` or `github_pat_`

3. **Store credentials (optional but recommended):**

Ask if they want help setting up credential caching so they don't have to enter the token every time.

If yes, detect their operating system and provide appropriate command:

**For Windows:**
```bash
git config --global credential.helper wincred
```

**For macOS:**
```bash
git config --global credential.helper osxkeychain
```

**For Linux:**
```bash
git config --global credential.helper cache
# Or for permanent storage:
git config --global credential.helper store
```

Offer to run the appropriate command if they're in a terminal environment.

### Step 3b: SSH Key Setup (if chosen)

Provide step-by-step instructions:

1. **Check for existing SSH keys:**
```bash
ls -al ~/.ssh
```

Offer to run this command for them.

2. **Generate new SSH key (if needed):**
```bash
ssh-keygen -t ed25519 -C "[email protected]"
```

Ask for their GitHub email and offer to run this command.

3. **Add SSH key to ssh-agent:**
```bash
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
```

4. **Copy public key:**
```bash
cat ~/.ssh/id_ed25519.pub
```

Offer to run this and display the public key for them to copy.

5. **Add to GitHub:**
   - Go to: https://github.com/settings/keys
   - Click "New SSH key"
   - Paste the public key
   - Give it a title and save

6. **Test connection:**
```bash
ssh -T [email protected]
```

Offer to run this test.

7. **Update remote URL (if needed):**

Check their current remote:
```bash
git remote -v
```

If it shows HTTPS (https://github.com/...), offer to convert to SSH:
```bash
git remote set-url origin [email protected]:username/repo.git
```

### Step 4: Verify Solution

Ask user to try their original operation (push, pull, clone) and confirm it works.

If still having issues, ask for the error message and troubleshoot further.

## Solution Workflow 2: Git vs GitHub Confusion

**Problem confirmed:** User is confused about the difference between Git and GitHub.

### Step 1: Explain the Difference

Provide clear explanation:

**Git** = The version control tool installed on your computer
- Command-line tool you run locally
- Commands: `git init`, `git add`, `git commit`, `git status`, etc.
- Works entirely offline
- Manages your local repository

**GitHub** = The hosting platform (website) for your code
- Remote server accessible at github.com
- Stores your code in the cloud
- Provides web interface for collaboration
- Your code lives here so others can access it

**The Connection:**
- You use Git (locally) to interact with GitHub (remotely)
- Git commands like `git push` send your local changes to GitHub
- Git commands like `git pull` download changes from GitHub

### Step 2: Common Command Breakdown

Show which commands are used for what:

**Local Git Operations (no internet needed):**
- `git init` - Initialize a new repository
- `git add <file>` - Stage files for commit
- `git commit -m "message"` - Save changes locally
- `git status` - Check what's changed
- `git log` - View commit history
- `git branch` - Manage branches

**GitHub Operations (require internet):**
- `git clone <url>` - Download repository from GitHub
- `git push` - Upload your commits to GitHub
- `git pull` - Download changes from GitHub
- `git fetch` - Check for remote changes

**GitHub Web Interface:**
- Creating repositories
- Managing collaborators
- Viewing pull requests
- Adjusting settings

### Step 3: Practical Example

Offer to demonstrate a typical workflow:

1. Create or modify files → **You do this in your editor**
2. `git add .` → **Git command (local)**
3. `git commit -m "description"` → **Git command (local)**
4. `git push` → **Git command that talks to GitHub (remote)**

### Step 4: Address Specific Questions

Ask if they have any specific questions about:
- Which tool to use for their current task
- Where to find certain features
- How to accomplish a specific goal

Provide targeted answers based on their questions.

## Solution Workflow 3: Syncing Local Folder with GitHub

**Problem confirmed:** User wants to keep their local folder synchronized with a GitHub repository.

### Step 1: Set Expectations

Explain that Git is not automatic cloud storage:
- Unlike Dropbox or Google Drive, Git requires manual synchronization
- This is intentional - you control exactly what gets saved and when
- The workflow has three steps: stage → commit → push

### Step 2: Check Current Setup

Ask: "Do you already have a GitHub repository created for this folder?"

**If NO:**

1. **Create repository on GitHub:**
   - Go to: https://github.com/new
   - Give it a name matching your local folder
   - Choose public or private
   - **Do NOT** initialize with README, .gitignore, or license (since you have local files)
   - Click "Create repository"

2. **Initialize local folder:**

Ask for their local folder path and offer to run:
```bash
cd /path/to/their/folder
git init
git remote add origin https://github.com/username/repo-name.git
```

**If YES:**

Check if folder is already initialized:
```bash
git status
```

Offer to run this. If it shows "not a git repository", proceed with initialization.

### Step 3: Configure .gitignore

Before first commit, ask about files they DON'T want synced:

Common files to exclude:
- System files (.DS_Store, Thumbs.db)
- Dependencies (node_modules/, venv/, .venv/)
- Build outputs (dist/, build/, *.pyc)
- Environment files (.env, .env.local)
- IDE settings (.vscode/, .idea/)
- Logs (*.log)

Offer to create a .gitignore file with appropriate exclusions based on their project type.

Ask: "What type of project is this?" (Python, JavaScript, Java, etc.)

Generate appropriate .gitignore template and offer to create the file.

### Step 4: Initial Sync

Walk through the first synchronization:

```bash
# 1. Stage all files
git add .

# 2. Create first commit
git commit -m "Initial commit"

# 3. Push to GitHub
git branch -M main
git push -u origin main
```

Offer to run these commands step by step, explaining what each does.

### Step 5: Regular Workflow

Teach the ongoing synchronization routine:

**Before starting work each day:**
```bash
git pull origin main
```
This downloads any changes from GitHub (in case you worked elsewhere or teammates contributed).

**After making changes:**
```bash
# 1. Check what changed
git status

# 2. Review changes (optional but recommended)
git diff

# 3. Stage specific files or all changes
git add <file>  # for specific file
# or
git add .  # for all changes

# 4. Commit with descriptive message
git commit -m "Describe what you changed and why"

# 5. Push to GitHub
git push origin main
```

### Step 6: Best Practices

Share important tips:
- **Commit frequently:** Small, logical commits are better than large ones
- **Write good messages:** Describe WHAT and WHY, not just what files changed
- **Pull before push:** Always pull latest changes before pushing
- **Review before commit:** Use `git status` and `git diff` to see what you're committing

### Step 7: Create Quick Reference

Offer to create a cheat sheet file in their directory with the common commands.

If accepted, create `GIT_WORKFLOW.md`:
```markdown
# Git Sync Workflow

## Daily Routine

### Before Starting Work
git pull origin main

### After Making Changes
git status              # See what changed
git diff                # Review changes
git add .               # Stage all changes
git commit -m "message" # Commit with description
git push origin main    # Upload to GitHub

## Tips
- Commit frequently (multiple times per day)
- Pull before starting work
- Write clear commit messages
- Review changes before committing
```

## Solution Workflow 4: Merge Conflicts

**Problem confirmed:** User encountered merge conflict errors.

### Step 1: Calm and Explain

Reassure the user:
- Merge conflicts are normal and expected in collaborative work
- They happen when the same lines of code are edited in different ways
- They're not dangerous - just need manual resolution
- Git is asking you to choose which version to keep

### Step 2: Understand the Situation

Ask clarifying questions:
- What were you doing when this happened? (pulling, merging, rebasing)
- Are you working alone or with others?
- Do you know what changes exist on GitHub vs your local files?

### Step 3: Show Current Status

Offer to run:
```bash
git status
```

This shows which files have conflicts.

### Step 4: Explain Conflict Markers

Explain what they'll see in conflicted files:

```
<<<<<<< HEAD
Your local changes are here
=======
The changes from GitHub are here
>>>>>>> branch-name
```

- `<<<<<<< HEAD` marks the start of your local version
- `=======` separates the two versions
- `>>>>>>>` marks the end of the remote version

### Step 5: Resolution Strategy

Ask which approach they prefer:

**Option A: Manual Resolution (Recommended)**
1. Open each conflicted file
2. Find the conflict markers
3. Decide what to keep:
   - Keep your version (delete the other and markers)
   - Keep their version (delete yours and markers)
   - Combine both (merge the logic and delete markers)
4. Save the file
5. Stage the resolved file: `git add <file>`
6. Complete the merge: `git commit`

**Option B: Choose All Yours**
```bash
git checkout --ours <file>
git add <file>
```

**Option C: Choose All Theirs**
```bash
git checkout --theirs <file>
git add <file>
```

**Option D: Abort the Merge**
```bash
git merge --abort
# or
git rebase --abort
```

### Step 6: Guide Through Resolution

Based on their choice, guide step-by-step:

**For Manual Resolution:**
1. Offer to read the conflicted file and show them the conflicts
2. For each conflict, ask: "Do you want to keep your version, their version, or combine them?"
3. Offer to make the edits for them
4. After all conflicts resolved, run:
```bash
git add <resolved-file>
```
5. Complete the merge:
```bash
git commit -m "Resolved merge conflicts"
```

### Step 7: Verify and Complete

After resolution:
```bash
git status  # Should show no conflicts
git push origin main  # Upload the resolution
```

Offer to run these commands.

### Step 8: Prevention Tips

Share strategies to minimize future conflicts:
- **Pull frequently:** Get changes before they pile up
- **Communicate:** Let teammates know what files you're working on
- **Keep commits small:** Easier to resolve smaller conflicts
- **Work on different files:** When possible, divide work to avoid same-file edits

## Solution Workflow 5: Sensitive Data Exposure

**Problem confirmed:** User accidentally committed sensitive information (passwords, API keys, tokens, etc.)

### Step 1: Assess Urgency

Ask critical questions:
- Have you pushed this to GitHub yet?
- Is the repository public or private?
- What type of sensitive data? (password, API key, private key, credentials)

**CRITICAL: If pushed to public repository:**
Emphasize extreme urgency:
- Assume the secrets are already compromised
- They need to rotate/change all exposed credentials IMMEDIATELY
- Bots scan public GitHub commits for secrets within minutes

### Step 2: Immediate Action - Rotate Credentials

**This is the most important step:**

Instruct user to immediately:
1. **Change the exposed password** (if it's a password)
2. **Revoke and regenerate API keys** (if API keys)
3. **Rotate tokens** (if tokens/secrets)
4. **Disable compromised credentials** (if service accounts)

Explain: Removing the file from Git history does NOT undo the exposure. Anyone who saw the commit still has the secret.

### Step 3: Identify Affected Files

Offer to run:
```bash
git status
```

Ask them to identify which files contain sensitive data.

### Step 4: Removal Strategy

**If NOT yet pushed:**

Explain this is much simpler since it's only local.

**Option A: Remove from last commit (if just committed):**
```bash
# Remove file from tracking but keep locally
git rm --cached <sensitive-file>

# Amend the previous commit
git commit --amend -m "Remove sensitive file"
```

**Option B: Completely remove file:**
```bash
git rm --cached <sensitive-file>
git commit -m "Remove sensitive file"
```

Offer to run these commands.

**If ALREADY pushed:**

Explain this is more complex and requires rewriting history.

**Important warnings:**
- This will rewrite commit history
- If others have pulled the commits, they'll need to re-clone
- This should only be done if absolutely necessary

**Option A: Use BFG Repo-Cleaner (Recommended for large repos):**

Provide instructions:
1. Download BFG: https://rtyley.github.io/bfg-repo-cleaner/
2. Clone a fresh mirror:
```bash
git clone --mirror https://github.com/username/repo.git
```
3. Run BFG:
```bash
bfg --delete-files <filename> repo.git
# or for text replacement
bfg --replace-text passwords.txt repo.git
```
4. Clean up and push:
```bash
cd repo.git
git reflog expire --expire=now --all
git gc --prune=now --aggressive
git push --force
```

**Option B: Use git filter-branch (Built-in but slower):**
```bash
git filter-branch --force --index-filter \
  "git rm --cached --ignore-unmatch <path-to-file>" \
  --prune-empty --tag-name-filter cat -- --all

git push --force --all
```

Offer to help run these commands but warn about the implications.

### Step 5: Prevent Future Exposure

**Create/Update .gitignore:**

Offer to create or update .gitignore with common sensitive file patterns:
```
# Environment variables
.env
.env.local
.env.*.local

# Credentials
**/credentials.json
**/secrets.yml
**/*secret*
**/*credentials*

# Private keys
*.pem
*.key
*.p12
*.pfx

# API keys
**/apikeys.txt

# Config files with secrets
config/database.yml
config/secrets.yml
```

Ask about their specific project needs and customize accordingly.

### Step 6: Implement Pre-commit Checks

Suggest using tools to prevent future accidents:

**Option 1: git-secrets**
```bash
# Install git-secrets
# macOS
brew install git-secrets

# Configure for repo
git secrets --install
git secrets --register-aws
```

**Option 2: detect-secrets**
```bash
pip install detect-secrets
detect-secrets scan > .secrets.baseline
```

Offer to help set these up.

### Step 7: Verify Removal

After cleanup, verify the sensitive data is gone:
```bash
git log --all --full-history -- <path-to-file>
```

Should show no commits.

Search for the sensitive string in history:
```bash
git log -S "sensitive-string" --all
```

Should return no results.

### Step 8: Final Checklist

Confirm with user they've completed:
- [ ] Rotated/changed all exposed credentials
- [ ] Removed sensitive files from Git history
- [ ] Added files to .gitignore
- [ ] Pushed the cleanup (if applicable)
- [ ] Verified removal with git log
- [ ] Set up pre-commit hooks (optional)
- [ ] Documented which credentials were exposed for their records

## Ongoing Support and Follow-up

After completing any solution workflow:

1. **Verify Success:** Ask user to confirm the problem is resolved
2. **Test the Solution:** Encourage them to test the operation that was failing
3. **Provide Resources:** Share relevant GitHub documentation links
4. **Offer Additional Help:** Ask if they have other GitHub-related questions
5. **Teach Prevention:** Share best practices to avoid the issue in the future

## Additional Troubleshooting

If the user's issue doesn't fit the 5 main scenarios or solution didn't work:

### Common Additional Issues

**Permission Denied Errors:**
- Check repository access permissions on GitHub
- Verify correct username/organization
- Confirm repository exists and URL is correct

**"Repository not found" Errors:**
- Verify repository URL spelling
- Check if repository is private (requires authentication)
- Confirm user has access to the repository

**Detached HEAD State:**
- Explain what detached HEAD means
- Guide back to branch: `git checkout main`

**Large File Errors:**
- Explain GitHub's file size limits (100MB)
- Suggest Git LFS for large files
- Help remove large files if needed

**Untracked Files Overwrite Errors:**
- Use `git stash` to save local changes
- Pull, then apply stash: `git stash pop`

For any issue, maintain the diagnostic approach:
1. Ask for exact error message
2. Check current state with `git status`
3. Understand what they were trying to do
4. Provide step-by-step solution
5. Verify resolution

## Best Practices for This Skill

**Tone:**
- Patient and encouraging - users are learning
- Non-judgmental about mistakes (everyone makes them)
- Clear and specific with instructions
- Celebrate successes when issues are resolved

**Command Execution:**
- Always explain what a command does before running it
- Offer to run commands but let user decide
- Show expected output so they know what's normal
- If a command fails, read the error and adjust approach

**Teaching Approach:**
- Explain the "why" not just the "how"
- Connect actions to concepts
- Build mental models of how Git/GitHub work
- Empower users to solve similar issues themselves

**Safety:**
- Warn before destructive operations (force push, filter-branch)
- Recommend backups when rewriting history
- Double-check before rotating credentials
- Verify commands in safe environments first

**Follow-through:**
- Don't leave users hanging at any step
- Verify each step completed before moving to next
- Offer alternatives if primary solution doesn't work
- Ensure problem is fully resolved, not just partially

## Quick Reference Commands

For easy copy-paste during troubleshooting:

**Status Checks:**
```bash
git status
git remote -v
git branch -a
git log --oneline -5
```

**Common Fixes:**
```bash
# Undo last commit (keep changes)
git reset --soft HEAD~1

# Discard all local changes
git reset --hard HEAD

# View what will be pushed
git diff origin/main main

# Update remote tracking
git fetch --prune

# Sync fork with upstream
git fetch upstream
git merge upstream/main
```

**Config:**
```bash
# Set username
git config --global user.name "Your Name"

# Set email
git config --global user.email "[email protected]"

# View all config
git config --list
```

This comprehensive skill should handle the vast majority of GitHub issues faced by new users with accuracy and clarity.