Agent skill
github-assistant
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.
Install this agent skill to your Project
npx add-skill https://github.com/alijilani-dev/Claude/tree/main/skills/cover_letter_generator/.claude/skills/github-assistant
SKILL.md
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:
- Authentication/Password Issues - Can't push or clone, password doesn't work
- Understanding Git vs GitHub - Confused about what commands to use where
- Syncing Local Folder with GitHub - Want to keep local files in sync with repository
- Merge Conflicts - Getting conflict errors when pulling or merging
- Sensitive Data Exposure - Accidentally committed passwords, API keys, or secrets
- 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:
-
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!
-
Use the token:
- When Git prompts for a password, paste the token instead
- The token should start with
ghp_orgithub_pat_
-
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:
git config --global credential.helper wincred
For macOS:
git config --global credential.helper osxkeychain
For Linux:
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:
- Check for existing SSH keys:
ls -al ~/.ssh
Offer to run this command for them.
- Generate new SSH key (if needed):
ssh-keygen -t ed25519 -C "their-email@example.com"
Ask for their GitHub email and offer to run this command.
- Add SSH key to ssh-agent:
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
- Copy public key:
cat ~/.ssh/id_ed25519.pub
Offer to run this and display the public key for them to copy.
-
Add to GitHub:
- Go to: https://github.com/settings/keys
- Click "New SSH key"
- Paste the public key
- Give it a title and save
-
Test connection:
ssh -T git@github.com
Offer to run this test.
- Update remote URL (if needed):
Check their current remote:
git remote -v
If it shows HTTPS (https://github.com/...), offer to convert to SSH:
git remote set-url origin git@github.com: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 pushsend your local changes to GitHub - Git commands like
git pulldownload 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 repositorygit add <file>- Stage files for commitgit commit -m "message"- Save changes locallygit status- Check what's changedgit log- View commit historygit branch- Manage branches
GitHub Operations (require internet):
git clone <url>- Download repository from GitHubgit push- Upload your commits to GitHubgit pull- Download changes from GitHubgit 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:
- Create or modify files → You do this in your editor
git add .→ Git command (local)git commit -m "description"→ Git command (local)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:
-
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"
-
Initialize local folder:
Ask for their local folder path and offer to run:
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:
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:
# 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:
git pull origin main
This downloads any changes from GitHub (in case you worked elsewhere or teammates contributed).
After making changes:
# 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 statusandgit diffto 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:
# 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:
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
<<<<<<< HEADmarks 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)
- Open each conflicted file
- Find the conflict markers
- 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)
- Save the file
- Stage the resolved file:
git add <file> - Complete the merge:
git commit
Option B: Choose All Yours
git checkout --ours <file>
git add <file>
Option C: Choose All Theirs
git checkout --theirs <file>
git add <file>
Option D: Abort the Merge
git merge --abort
# or
git rebase --abort
Step 6: Guide Through Resolution
Based on their choice, guide step-by-step:
For Manual Resolution:
- Offer to read the conflicted file and show them the conflicts
- For each conflict, ask: "Do you want to keep your version, their version, or combine them?"
- Offer to make the edits for them
- After all conflicts resolved, run:
git add <resolved-file>
- Complete the merge:
git commit -m "Resolved merge conflicts"
Step 7: Verify and Complete
After resolution:
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:
- Change the exposed password (if it's a password)
- Revoke and regenerate API keys (if API keys)
- Rotate tokens (if tokens/secrets)
- 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:
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):
# 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:
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:
- Download BFG: https://rtyley.github.io/bfg-repo-cleaner/
- Clone a fresh mirror:
git clone --mirror https://github.com/username/repo.git
- Run BFG:
bfg --delete-files <filename> repo.git
# or for text replacement
bfg --replace-text passwords.txt repo.git
- Clean up and push:
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):
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
# Install git-secrets
# macOS
brew install git-secrets
# Configure for repo
git secrets --install
git secrets --register-aws
Option 2: detect-secrets
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:
git log --all --full-history -- <path-to-file>
Should show no commits.
Search for the sensitive string in history:
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:
- Verify Success: Ask user to confirm the problem is resolved
- Test the Solution: Encourage them to test the operation that was failing
- Provide Resources: Share relevant GitHub documentation links
- Offer Additional Help: Ask if they have other GitHub-related questions
- 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 stashto save local changes - Pull, then apply stash:
git stash pop
For any issue, maintain the diagnostic approach:
- Ask for exact error message
- Check current state with
git status - Understand what they were trying to do
- Provide step-by-step solution
- 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:
git status
git remote -v
git branch -a
git log --oneline -5
Common Fixes:
# 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:
# Set username
git config --global user.name "Your Name"
# Set email
git config --global user.email "your.email@example.com"
# 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.
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
docker-rocker
Production-grade Docker containerization for FastAPI, Pytest, SQLModel, and Pydantic projects. This skill should be used when users ask to dockerize FastAPI applications, create multi-stage Docker builds, optimize Docker images for Python APIs, set up CI/CD Docker pipelines, or deploy containerized Python web APIs with maximum performance and minimal image size.
fastapi-helper
FastAPI development assistant for building modern Python web APIs. Provides guidance on routing, request/response handling, dependency injection, authentication, middleware, WebSockets, testing, and Pydantic models. Use when: (1) Creating FastAPI applications or endpoints, (2) Implementing CRUD operations, (3) Setting up authentication/authorization, (4) Working with request parameters (path, query, body, headers, cookies, forms, files), (5) Configuring middleware or CORS, (6) Implementing WebSocket connections, (7) Writing tests for FastAPI apps, (8) Defining Pydantic models for validation.
doc-coauthoring
Guide users through a structured workflow for co-authoring documentation. Use when user wants to write documentation, proposals, technical specs, decision docs, or similar structured content. This workflow helps users efficiently transfer context, refine content through iteration, and verify the doc works for readers. Trigger when user mentions writing docs, creating proposals, drafting specs, or similar documentation tasks.
internal-comms
A set of resources to help me write all kinds of internal communications, using the formats that my company likes to use. Claude should use this skill whenever asked to write some sort of internal communications (status reports, leadership updates, 3P updates, company newsletters, FAQs, incident reports, project updates, etc.).
cover-letter-generator
Generate tailored AI-focused cover letters using the PSI (Problem-Solution-Impact) methodology. Use when: (1) User wants to create cover letters for AI/ML job applications, (2) User provides a resume and wants LinkedIn job matching, (3) User asks for personalized cover letters based on job postings, (4) User mentions applying for AI Engineer, ML Engineer, or similar technical roles. Integrates market intelligence, LinkedIn research via Playwright, and professional writing standards.
skill-validator
Validates skills against production-level criteria with 9-category scoring. This skill should be used when reviewing, auditing, or improving skills to ensure quality standards. Evaluates structure, content, user interaction, documentation, domain standards, technical robustness, maintainability, zero-shot implementation, and reusability. Returns actionable validation report with scores and improvement recommendations.
Didn't find tool you were looking for?