skills/cover_letter_generator/.claude/skills/github-assistant/SKILL.md
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.
npx skillsauth add alijilani-dev/claude github-assistantInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
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.
Trigger conditions:
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.
Ask the user to describe their issue or choose from common scenarios:
Present these options:
Wait for user response and route to appropriate solution workflow.
If user chooses "Other/Not Sure": Ask them to describe:
Based on their description, identify which of the 5 scenarios best matches and proceed to that workflow.
Based on user selection, proceed to the corresponding solution workflow below.
Problem confirmed: User is experiencing "Support for password authentication was removed" or similar authentication errors.
Inform the user:
Ask which authentication method they prefer:
Provide step-by-step instructions:
Generate a PAT on GitHub:
Use the token:
ghp_ or github_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.
Provide step-by-step instructions:
ls -al ~/.ssh
Offer to run this command for them.
ssh-keygen -t ed25519 -C "[email protected]"
Ask for their GitHub email and offer to run this command.
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
cat ~/.ssh/id_ed25519.pub
Offer to run this and display the public key for them to copy.
Add to GitHub:
Test connection:
ssh -T [email protected]
Offer to run this test.
Check their current remote:
git remote -v
If it shows HTTPS (https://github.com/...), offer to convert to SSH:
git remote set-url origin [email protected]:username/repo.git
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.
Problem confirmed: User is confused about the difference between Git and GitHub.
Provide clear explanation:
Git = The version control tool installed on your computer
git init, git add, git commit, git status, etc.GitHub = The hosting platform (website) for your code
The Connection:
git push send your local changes to GitHubgit pull download changes from GitHubShow 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 branchesGitHub 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 changesGitHub Web Interface:
Offer to demonstrate a typical workflow:
git add . → Git command (local)git commit -m "description" → Git command (local)git push → Git command that talks to GitHub (remote)Ask if they have any specific questions about:
Provide targeted answers based on their questions.
Problem confirmed: User wants to keep their local folder synchronized with a GitHub repository.
Explain that Git is not automatic cloud storage:
Ask: "Do you already have a GitHub repository created for this folder?"
If NO:
Create repository on GitHub:
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.
Before first commit, ask about files they DON'T want synced:
Common files to exclude:
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.
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.
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
Share important tips:
git status and git diff to see what you're committingOffer 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
Problem confirmed: User encountered merge conflict errors.
Reassure the user:
Ask clarifying questions:
Offer to run:
git status
This shows which files have conflicts.
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 versionAsk which approach they prefer:
Option A: Manual Resolution (Recommended)
git add <file>git commitOption 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
Based on their choice, guide step-by-step:
For Manual Resolution:
git add <resolved-file>
git commit -m "Resolved merge conflicts"
After resolution:
git status # Should show no conflicts
git push origin main # Upload the resolution
Offer to run these commands.
Share strategies to minimize future conflicts:
Problem confirmed: User accidentally committed sensitive information (passwords, API keys, tokens, etc.)
Ask critical questions:
CRITICAL: If pushed to public repository: Emphasize extreme urgency:
This is the most important step:
Instruct user to immediately:
Explain: Removing the file from Git history does NOT undo the exposure. Anyone who saw the commit still has the secret.
Offer to run:
git status
Ask them to identify which files contain sensitive data.
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:
Option A: Use BFG Repo-Cleaner (Recommended for large repos):
Provide instructions:
git clone --mirror https://github.com/username/repo.git
bfg --delete-files <filename> repo.git
# or for text replacement
bfg --replace-text passwords.txt repo.git
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.
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.
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.
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.
Confirm with user they've completed:
After completing any solution workflow:
If the user's issue doesn't fit the 5 main scenarios or solution didn't work:
Permission Denied Errors:
"Repository not found" Errors:
Detached HEAD State:
git checkout mainLarge File Errors:
Untracked Files Overwrite Errors:
git stash to save local changesgit stash popFor any issue, maintain the diagnostic approach:
git statusTone:
Command Execution:
Teaching Approach:
Safety:
Follow-through:
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 "[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.
data-ai
Orchestrate complex tasks by delegating work to parallel subagent teams, preserving the main context window and preventing auto-compact. This skill should be used when users ask to apply subagent-teams, when performing complex multi-step tasks, when context window is getting large, or when independent subtasks can run in parallel.
development
Generate new Claude Code skills with proper structure and standards. Use when the user requests skill creation, wants to generate a new skill, or mentions creating custom Claude Code functionality. Activated by phrases like "create a skill", "generate a skill", "make a new skill", or "build a skill for".
testing
Generate comprehensive educational quizzes based on Bloom's Taxonomy methodology (Remember, Understand, Apply, Analyze, Evaluate, Create). Creates structured True/False quizzes with detailed answer keys and explanations. Use when user requests quiz generation, assessment creation, test materials, practice questions, mentions Bloom's Taxonomy, or provides educational topics for quiz creation. Activates for study topics, course materials, reference files (.md, .txt, .pdf), or educational content requiring systematic assessment.
content-media
Generate comprehensive educational notes using Bloom's Taxonomy methodology. Creates structured learning materials with summaries, practice questions, and visual diagrams. Use when user requests notes generation, study materials, learning resources, mentions Bloom's Taxonomy, or provides topics for educational note-taking. Activates for .md files, study topics, course materials, or educational content creation.