How to use this guide: Find your problem in the Table of Contents, or use
Ctrl+F(browser) to search by keyword or error message. Every problem follows the same format: Symptoms → Cause → Solution → Prevention (where applicable).
- Setup and Installation
- Git Configuration and Operations
- GitHub Authentication
- GitHub Web Interface
- Repository Navigation and Cloning
- Branches, Merging, and Conflicts
- Issues and Pull Requests
- Templates and YAML
- VS Code Setup and Configuration
- VS Code Extensions
- VS Code Source Control
- Screen Readers - General
- NVDA-Specific Issues
- JAWS-Specific Issues
- VoiceOver-Specific Issues
- GitHub Copilot
- Copilot Chat
- Accessibility Agents
- Exercises and the Learning Room
- HTML Build System
- GitHub Pages and Online Access
- Performance and Network
- Getting More Help
Symptoms: Terminal shows git: command not found, 'git' is not recognized, or similar error.
Solution:
- Windows: Download and install Git for Windows from the Git for Windows download page. During installation, accept the defaults. Restart your terminal after installation.
- macOS: Run
xcode-select --install(installs Git as part of Command Line Tools), or download from the Git for macOS download page, or runbrew install gitif Homebrew is installed. - Linux (Debian/Ubuntu):
sudo apt update && sudo apt install git - Linux (Fedora):
sudo dnf install git - Verify: Close and reopen your terminal, then type
git --version
If it still does not work after installation:
- Windows: Git may not be in your PATH. Search for "Git Bash" in the Start menu and use that terminal instead. Or add Git to PATH: Settings → System → Advanced → Environment Variables → edit PATH → add
C:\Program Files\Git\cmd - macOS: If
xcode-selecthangs, trysudo xcode-select --resetfirst
Prevention: Complete Pre-Workshop Setup before starting.
Symptoms: npm: command not found or node: command not found when trying to build HTML files.
Solution:
- Download Node.js LTS from the Node.js download page
- Install with default settings
- Close and reopen your terminal
- Verify:
node --versionandnpm --version
Note: Node.js is only needed if you want to build the HTML versions of the workshop documents. It is not required for the workshop itself.
Symptoms: gh issue list or other gh commands show "command not found."
Solution:
- Install GitHub CLI from https://cli.github.com/
- Windows: Download the
.msiinstaller or usewinget install --id GitHub.cli - macOS:
brew install gh - Linux: See the GitHub CLI Linux installation guide
- Authenticate:
gh auth login→ follow prompts → choose HTTPS or SSH → authenticate via browser - Verify:
gh --version
Note: GitHub CLI is optional but helpful for faster issue and PR workflows from the terminal.
Symptoms: Cannot clone, push, fork, or make pull requests.
Solution:
- Create a free account at https://github.com/signup
- Verify your email address (check inbox for confirmation)
- Optionally enable two-factor authentication (recommended): https://github.com/settings/security
Security: We strongly recommend enabling Two-Factor Authentication (2FA) on your GitHub account. If you cannot enable 2FA, add an SSH key or create a Personal Access Token (PAT) with repo scope before contributing. If you need help, contact the workshop organizers.
Symptoms: Click "Fork" but nothing happens, or you see an error message.
Solution:
- Verify you are signed in to GitHub
- Check if you already have a fork: Go to your profile → Repositories → search for the repo name
- If you already forked it, navigate to your existing fork instead
- If the Fork button is not visible, the repository may be restricted - contact the facilitator
Symptoms: Installation fails, or you are on a restricted device.
Solution:
- Corporate/restricted device: Ask your IT department to allow VS Code, or use the portable ZIP version: https://code.visualstudio.com/docs/editor/portable
- Chromebook: Use github.dev (press
.on any repo) for Day 1. For Day 2, consider GitHub Codespaces: see Appendix N - Older OS: VS Code requires Windows 10+, macOS 10.15+, or a modern Linux distribution
Symptoms: Please tell me who you are error when running git commit.
Solution:
git config --global user.name "Your Name"
git config --global user.email "your_email@example.com"Use the same email address as your GitHub account so commits are attributed to your profile.
Symptoms: Any git command returns fatal: not a git repository (or any of the parent directories): .git
Solution:
-
You are not inside a Git repository. Check your current folder:
- Windows PowerShell:
Get-Location - macOS/Linux:
pwd
- Windows PowerShell:
-
Navigate to your cloned repository:
cd path/to/your-repo -
Verify it is a Git repo:
git status -
If the folder does not contain a
.gitdirectory, you need to clone the repository again:git clone https://github.com/YOUR-USERNAME/REPO-NAME.git cd REPO-NAME
Symptoms: You know changes were made upstream, but git pull reports no changes.
Solution:
-
Check which remote you are pulling from:
git remote -v -
If you forked the repo, you need to pull from upstream, not your fork:
git remote add upstream https://github.com/ORIGINAL-OWNER/REPO.git git fetch upstream git merge upstream/main
-
Verify you are on the correct branch:
git branch(the current branch has a*)
Symptoms: Git says You are in 'detached HEAD' state and your commits may be lost.
Solution:
-
This means you are not on a branch. Create one to save your work:
git checkout -b my-new-branch
-
If you want to return to main:
git checkout main -
If you already made commits in detached HEAD, create a branch first (step 1), then those commits are safe.
Symptoms: Your changes are on main instead of a feature branch.
Solution (if you have not pushed yet):
- Create a new branch from your current position:
git branch my-feature - Reset main back:
git reset --hard HEAD~1(undoes the last commit on main) - Switch to your feature branch:
git checkout my-feature - Your commit is now on
my-featureandmainis clean
If you already pushed: Do not force-push. Instead, create a new branch from main, cherry-pick your commit, and open a PR from that branch.
Symptoms: error: insufficient permission or Permission denied on local git operations.
Solution:
- Windows: Run your terminal as Administrator, or check that the repository folder is not read-only (right-click folder → Properties → uncheck Read-only)
- macOS/Linux: Check folder ownership:
ls -la .git/. If owned by root, fix with:sudo chown -R $(whoami) . - Antivirus: Some antivirus software blocks Git operations on
.gitdirectories. Add your repository folder to the antivirus exclusion list.
Symptoms: Git shows warnings about line endings when staging files.
Solution:
- This is informational, not an error. Git is converting line endings for your platform.
- To suppress the warning:
git config --global core.autocrlf true(Windows) orgit config --global core.autocrlf input(macOS/Linux) - In VS Code, the bottom-right shows "LF" or "CRLF" - click to change per file if needed
Symptoms: "Permission denied," "Authentication failed," or "Could not read from remote repository" when running git push.
Cause A: No SSH key set up (if using SSH URLs)
- Generate key:
ssh-keygen -t ed25519 -C "your_email@example.com" - Press Enter three times to accept defaults
- Copy your public key:
- Windows:
type %USERPROFILE%\.ssh\id_ed25519.pub(then select and copy) - macOS:
cat ~/.ssh/id_ed25519.pub | pbcopy - Linux:
cat ~/.ssh/id_ed25519.pub(then copy the output)
- Windows:
- Add to GitHub: https://github.com/settings/ssh/new → paste key
- Test:
ssh -T git@github.com→ should say "Hi [USERNAME]!"
Cause B: Using HTTPS with a password instead of a token
- GitHub no longer accepts account passwords for HTTPS Git operations
- Generate a Personal Access Token: https://github.com/settings/tokens → "Generate new token (classic)" → select
reposcope → generate - Use the token as your password when Git prompts
- Store credentials securely:
- Windows:
git config --global credential.helper manager - macOS:
git config --global credential.helper osxkeychain - Linux:
git config --global credential.helper cache(temporary) or use a keyring helper
- Windows:
Cause C: Wrong remote URL
- Check:
git remote -v - If URLs point to the wrong repository, fix:
git remote set-url origin YOUR-CORRECT-URL
Cause D: Expired token or revoked SSH key
- Check SSH keys: https://github.com/settings/keys - is your key listed and not expired?
- Check tokens: https://github.com/settings/tokens - is your token still active?
- Regenerate if expired
See Appendix D (Git Authentication) for complete setup instructions.
Symptoms: Git asks for your SSH passphrase on every push/pull operation.
Solution: Add your key to the SSH agent so it is remembered:
-
Windows (Git Bash):
eval "$(ssh-agent -s)" ssh-add ~/.ssh/id_ed25519
-
macOS:
ssh-add --apple-use-keychain ~/.ssh/id_ed25519Then add to
~/.ssh/config:Host github.com AddKeysToAgent yes UseKeychain yes IdentityFile ~/.ssh/id_ed25519 -
Linux:
eval "$(ssh-agent -s)" ssh-add ~/.ssh/id_ed25519
Symptoms: Git prompts for a password and rejects it with a message about deprecation.
Solution: You need a Personal Access Token instead of your password. See "Authentication fails when pushing" → Cause B above.
Symptoms: Buttons, menus, or sections are in different positions than described.
Solution: GitHub updates its interface regularly. The core structure (tabs, headings, landmarks) remains consistent. Navigate by role instead of position:
- Use
Bfor buttons,Hfor headings,Dfor landmarks - Use
?on any GitHub page to see current keyboard shortcuts - Use the Elements List (
NVDA+F7/Insert+F3/VO+U) to find specific elements
Symptoms: When arrowing through links, a popup overlay appears and disrupts reading flow.
Solution:
- Go to https://github.com/settings/accessibility
- Uncheck "Hovercards" (or the equivalent setting for reducing motion/overlays)
- Save changes
- This is covered in Pre-Workshop Setup, Step 4
Symptoms: Parts of a GitHub page do not render, or show a loading spinner indefinitely.
Solution:
- Hard refresh:
Ctrl+Shift+R(orCmd+Shift+Ron Mac) - Clear browser cache:
Ctrl+Shift+Delete→ clear cached files - Try a different browser (Chrome, Firefox, Edge, Safari)
- Check https://www.githubstatus.com/ for outages
- Disable browser extensions that might interfere (ad blockers, privacy extensions)
Symptoms: Pressing T on a repository page does not open the file search.
Solution:
- Make sure you are in Browse Mode (screen reader), not Focus Mode
- Click somewhere on the page first to ensure GitHub has keyboard focus
- Try
Shift+TifTalone does not trigger it - As an alternative, use the search bar (
/) and typefilename:followed by the name
Symptoms: You are on a repository page but cannot locate the Fork button.
Solution:
- The Fork button is near the top of the repository page, after the Star and Watch buttons
- Screen reader: Press
Brepeatedly to find buttons - look for "Fork" - If the button says "Forked from..." instead, you already have a fork. Navigate to your fork at
github.com/YOUR-USERNAME/REPO-NAME
Symptoms: git clone returns ERROR: Repository not found or fatal: remote error: Repository not found.
Solution:
- Check the URL: Copy it directly from the GitHub page (Code button → HTTPS or SSH tab)
- Private repository: You need read access. Ask the owner to add you as a collaborator.
- Typo in username or repo name: URLs are case-sensitive for SSH
- Authentication: If using HTTPS, verify your credentials are correct (see GitHub Authentication section)
Symptoms: git clone starts but takes a very long time or hangs.
Solution:
- The repository may be very large. Try a shallow clone:
git clone --depth 1 URL - Check your internet connection - try cloning a small test repo first
- If behind a corporate proxy, configure Git:
git config --global http.proxy http://proxy-address:port - Try switching between HTTPS and SSH - one may be faster on your network
Symptoms: A chapter says "open file X" but the file does not exist in the repository.
Solution:
- Verify you are on the correct branch:
git branch→git checkout main - Pull the latest changes:
git pull origin main - Check spelling and case - filenames are case-sensitive on macOS and Linux
- The file may be in a subfolder - use
git ls-files | grep -i filenameto search - In VS Code, use
Ctrl+Pand type part of the filename
Symptoms: File shows <<<<<<< HEAD ... ======= ... >>>>>>> branch-name markers. Multiple files may be affected.
Solution - Quick approach (choose one version):
- Keep YOUR changes:
git checkout --ours [filename]→git add [filename] - Keep THEIR changes:
git checkout --theirs [filename]→git add [filename] - Abort the merge entirely:
git merge --abort(returns to pre-merge state, nothing lost)
Solution - Manual merge (combine both):
- Open the file in VS Code
- Screen reader users: search for
<<<<<<<to find each conflict - Each conflict has three parts:
- Between
<<<<<<<and=======→ your changes - Between
=======and>>>>>>>→ their changes
- Between
- Edit the file to keep what you want
- Delete all conflict markers (
<<<<<<<,=======,>>>>>>>) - Save, then:
git add [filename]→git commit -m "Resolved merge conflict"
In VS Code: VS Code detects conflicts and shows "Accept Current Change," "Accept Incoming Change," and "Accept Both Changes" buttons above each conflict. Screen reader users: these are announced as CodeLens actions above the conflict markers.
Prevention:
- Pull from upstream regularly:
git pull upstream main - Keep PRs small and focused
- Communicate with teammates about which files you are editing
Symptoms: git push is rejected because your branch is behind the remote.
Solution:
- Pull first:
git pull origin your-branch - Resolve any conflicts if prompted
- Then push:
git push origin your-branch
Do not force-push (git push --force) unless you understand the consequences - it overwrites the remote branch and can destroy other people's work.
Symptoms: You ran git branch -D branch-name and lost commits.
Solution: Git keeps deleted branch commits for ~30 days. Recover with:
git reflog # Find the commit hash of your work
git checkout -b recovered-branch COMMIT-HASHSymptoms: git checkout other-branch fails because you have uncommitted changes.
Solution (choose one):
- Commit your work:
git add .→git commit -m "WIP: saving progress" - Stash your work:
git stash→ switch branches →git stash popwhen you return - Discard changes (irreversible):
git checkout -- .(discards all uncommitted changes)
Symptoms: The Issues tab is missing or says issues are disabled.
Solution: The repository owner has disabled issues. You can:
- Check if the project uses Discussions instead (look for a Discussions tab)
- Open an issue on the parent repository (if this is a fork)
- Contact the maintainer through other channels listed in the repository's README
Symptoms: The merge button is grayed out or shows a warning.
Cause A: Merge conflicts
- Resolve conflicts first (see "Branches, Merging, and Conflicts" section)
Cause B: Required status checks failing
- Scroll to the "Checks" section of the PR
- Click the failing check to see the error
- Fix the issue and push a new commit
Cause C: Required reviews
- The repository requires one or more approving reviews before merging
- Request a review from a teammate or the maintainer
Cause D: Branch protection rules
- The main branch may have protection rules. See Appendix K (Branch Protection)
Symptoms: Your PR targets the wrong branch (e.g., targeting your fork's main instead of the upstream main).
Solution:
- On the PR page, click "Edit" next to the base branch
- Change the base repository and branch to the correct target
- If you cannot edit it, close the PR and create a new one with the correct base
Symptoms: Your PR shows changes you did not make - dozens or hundreds of files.
Solution:
-
Your branch likely diverged from main. Update it:
git checkout your-branch git fetch upstream git rebase upstream/main git push --force-with-lease origin your-branch
-
The PR should now show only your changes
-
If you are unsure, close the PR, create a fresh branch from main, re-apply your changes, and open a new PR
Symptoms: Click "New Issue" but your custom template does not appear - only "Blank" shows.
Cause A: File in wrong location
- Must be:
.github/ISSUE_TEMPLATE/your-template.yml - Not:
.github/ISSUE_TEMPLATE/your-template.md(wrong extension for form templates) - Not:
.github/your-template.yml(wrong folder) - Not:
.github/issue_template/(case-sensitive on some systems)
Cause B: YAML syntax errors
- Check for:
- Missing colons:
name:notname - Tabs instead of spaces (YAML requires spaces)
- Mismatched or unclosed quotes
- Wrong indentation level
- Missing colons:
- Validate at: https://www.yamllint.com/
Cause C: Not on the default branch
- Templates must be on the
main(ormaster) branch - Verify:
git branch→ push to main:git push origin main - Check on GitHub.com: browse to
.github/ISSUE_TEMPLATE/folder
Cause D: Browser cache
- Hard refresh:
Ctrl+Shift+R - Or try incognito/private browsing mode
Cause E: config.yml blocks blank issues but no templates exist
- Check
.github/ISSUE_TEMPLATE/config.yml- ifblank_issues_enabled: falseand no valid templates exist, the "New Issue" page will be empty
Symptoms: A field marked required: true allows submission without being filled.
Solution: The validations key must be at the same level as attributes, not inside it:
Correct:
- type: input
id: version
attributes:
label: Version
validations:
required: trueWrong (too nested):
- type: input
attributes:
label: Version
validations: # Wrong: inside attributes
required: trueAfter fixing, commit and push to main, then hard-refresh the browser.
Symptoms: Raw *asterisks* and #hashes appear instead of formatted text.
Solution:
-
Use
type: markdownfor instructional text (nottype: inputortype: textarea) -
Use the pipe
|for multi-line content:- type: markdown attributes: value: | ## Instructions **Bold text** and *italic text*
-
The
|aftervalue:tells YAML the content is multi-line and should preserve formatting
Symptoms: Template fails to load or GitHub shows a YAML parse error.
Solution:
- YAML uses spaces only - never tabs. Configure your editor to insert spaces for tabs.
- In VS Code: look at the bottom-right status bar - click "Spaces: 2" or "Tab Size" to set to spaces
- Each nesting level should be 2 spaces
- Validate your YAML at https://www.yamllint.com/ before committing
Symptoms: VS Code opens but screen reader mode is not active - announcements are minimal or missing.
Solution:
- Press
Shift+Alt+F1to manually enable screen reader mode - Verify:
Ctrl+Shift+P→ type "accessibility" → "Toggle Screen Reader Accessibility Mode" should have a checkmark - Check setting:
Ctrl+,→ searcheditor.accessibilitySupport→ set toon - If NVDA or JAWS was started after VS Code, restart VS Code
Symptoms: Too many announcements, or important things are not announced.
Solution:
- Too verbose: Open Settings (
Ctrl+,) → searchaccessibility.verbosity→ reduce verbosity for specific features - Too quiet: Check that
editor.accessibilitySupportis set toon(notautooroff) - Audio signals: Search
accessibility.signalsin Settings → enable or disable specific sounds (error, warning, breakpoint, diff changes, etc.)
See Appendix M (VS Code Accessibility Reference) for all settings.
Symptoms: You know a command exists but cannot find it.
Solution:
- Open Command Palette:
Ctrl+Shift+P - Start typing any part of the command name
- Arrow through results - your screen reader announces each one
- Press Enter to execute
- If still not found, the command may require an extension to be installed
Symptoms: Ctrl+` (backtick) does not open the terminal, or the terminal panel is not accessible.
Solution:
- Try the command palette:
Ctrl+Shift+P→ "Terminal: Create New Terminal" - If the terminal opens but screen reader does not read it: the terminal uses a specialized accessibility mode. Press
Alt+F2to open the Accessible View of the terminal output. - Check that your default shell is configured:
Ctrl+,→ search "terminal.integrated.defaultProfile"
Symptoms: Colors, font size, or behavior changed without you doing anything.
Solution:
- A workspace settings file (
.vscode/settings.json) may have been loaded when you opened the repository - Check:
Ctrl+Shift+P→ "Preferences: Open Workspace Settings" - Workspace settings override user settings. Remove entries you do not want.
- To open your user settings instead:
Ctrl+Shift+P→ "Preferences: Open User Settings"
Symptoms: Copilot or other extensions crash, do not appear, or show errors.
Solution:
- Reload the window:
Ctrl+Shift+P→ "Developer: Reload Window" - Check extension status:
Ctrl+Shift+X→ search for the extension → verify it shows as installed and enabled - Check for errors: View → Output → select the extension name from the dropdown
- If an extension keeps crashing:
- Disable it:
Ctrl+Shift+X→ find extension → click Disable - Re-enable it and reload
- If still broken, uninstall and reinstall the extension
- Disable it:
- Check VS Code version:
Ctrl+Shift+P→ "About" - some extensions require recent VS Code versions
Symptoms: The extension is installed but no PRs appear in the sidebar.
Solution:
- Verify you are signed in: Click the GitHub icon in the lower-left → sign in if prompted
- Make sure you opened a Git repository (not just a folder):
Ctrl+Shift+Gshould show Source Control - Check that the repository has open PRs on GitHub
- Reload:
Ctrl+Shift+P→ "Developer: Reload Window"
Symptoms: Two extensions interfere with each other - duplicate features, broken shortcuts, or errors.
Solution:
- Open Extensions:
Ctrl+Shift+X - Disable extensions one at a time to identify the conflict
- Check the extension's marketplace page for known conflicts
- If two extensions bind the same shortcut:
Ctrl+Shift+P→ "Preferences: Open Keyboard Shortcuts" → search for the shortcut → reassign one
Symptoms: Ctrl+Shift+G opens Source Control but no files or changes appear.
Solution:
- Verify you opened a Git repository: is there a
.gitfolder in the root? - Make sure you made changes: edit a file, save it, then check Source Control again
- If VS Code says "No source control providers registered": install the Git extension (usually built-in) or reload the window
Symptoms: You saved your work but git status says the file is changed.
Solution:
- Check for unsaved files: Look for a white dot on the editor tab (indicates unsaved)
- Check line endings: The bottom-right of VS Code shows "LF" or "CRLF." If you changed the line ending, Git sees it as a modification.
- Check for invisible whitespace changes: Open the diff in Source Control to see exactly what changed
- If the diff shows no visible changes, it is likely a line ending or trailing whitespace issue
Symptoms: You made changes but Git does not see them.
Solution:
- Verify the file was saved:
Ctrl+S - Check you are in the correct repository folder
- Check if the file is in
.gitignore:git status --ignored - If the file is new, it needs to be staged with
git add [filename]before it appears
Symptoms: Screen reader launches but GitHub content is silent or skips sections.
Solution:
- Verify you are in Browse Mode (document/virtual mode), not Focus Mode
- Wait for the page to fully load - GitHub uses JavaScript rendering that may take a few seconds
- Try refreshing:
Ctrl+RorF5 - Use heading navigation (
H) to find the main content - skip past the navigation menus - Use landmark navigation (
D) to jump to themainlandmark - If a specific section is empty, it may be in a dynamically loaded area - press
Tabto see if interactive elements appear
Symptoms: Every page starts with a long list of links and menus before reaching the actual content.
Solution:
- Press
D(landmark navigation) to jump directly to themaincontent area - Or press
1to jump to the first H1 heading (usually the page title) - GitHub pages have a "Skip to content" link - it is the first focusable element. Press
Enteron it.
Symptoms: After filtering issues or searching, the screen reader says how many results but does not navigate to them.
Solution:
- The search results are usually in a list below the search bar
- Press
Lto jump to the next list, then use arrow keys to navigate items - Or use
Kto jump through links - each result is a link - On the Issues/PRs page, press
JandShift+Jto navigate between items (GitHub shortcut)
Symptoms: A menu opens but closes immediately when you try to navigate it.
Solution:
- For dropdown menus: activate the button, then use
Arrow Downto navigate options - For dialog popups: press
Tabto move between elements inside the dialog - If the popup closes on focus loss, try
Escapeto close it, thenEnterto reopen, and immediately arrow into it - Some GitHub menus require Focus Mode - press
NVDA+Space(NVDA) orInsert+Z(JAWS) to switch
Symptoms: Screen reader says "clickable" instead of "button," "link," or "checkbox."
Solution:
- Try pressing
EnterorSpaceto activate the element - This indicates a potential accessibility issue with the page - the element is missing proper ARIA roles
- If this happens consistently on a specific page, file an accessibility issue on the project with the page URL and element description
Symptoms: NVDA is running but produces no speech on GitHub pages.
Solution:
- Press
NVDA+Spaceto verify you are in Browse Mode - Press
NVDA+F7to open the Elements List - if it shows headings and links, NVDA can see the page - Press
Ctrl+Hometo go to the top of the page, thenDown Arrowthrough content - Try a different browser (Firefox often works best with NVDA)
- Check NVDA preferences → Browse Mode → verify "Use browse mode on page load" is checked
Symptoms: When typing in a GitHub comment box, NVDA reads each character but you cannot review what you wrote.
Solution:
- You are in Focus Mode (correct for typing). To review your text without leaving, press
NVDA+Up Arrowto read the current line - Press
NVDA+Spaceto switch to Browse Mode temporarily to review, thenNVDA+Spaceagain to return to Focus Mode for typing - In VS Code, use
Alt+F2(Accessible View) to review Copilot responses or other content
Symptoms: VS Code behaves strangely with certain NVDA add-ons enabled.
Solution:
- Temporarily disable add-ons: NVDA Menu → Tools → Manage Add-ons → disable suspected add-ons → restart NVDA
- Common culprits: BrowserNav, Enhanced Touch Gestures, or older add-ons not updated for the current NVDA version
- Update all add-ons to the latest versions compatible with NVDA 2025.3.3
Symptoms: JAWS skips form inputs, does not say "required," or reads field labels incorrectly.
Solution:
- Toggle Forms Mode:
Insert+Z - List all form controls on the page:
Insert+F6 - Navigate form fields with
F(next form field) orTab - If labels are not announced, the HTML may be missing proper
<label>elements - this is a page accessibility issue - Check JAWS version: ensure you are running JAWS 2026 or later for best GitHub compatibility
Symptoms: Pressing G in JAWS reads it as a virtual cursor command instead of triggering GitHub's keyboard shortcuts.
Solution:
- Toggle virtual cursor off:
Insert+Z(enters Forms Mode / Application mode) - With virtual cursor off,
GthenIwill trigger GitHub's "Go to Issues" shortcut - Toggle back to virtual cursor when done
Symptoms: JAWS reads every ARIA attribute, region name, and role, making navigation slow.
Solution:
- Adjust verbosity:
Insert+V→ cycle through verbosity levels - Or go to JAWS Settings Center → Web/HTML/PDF → adjust "Navigation" and "Reading" verbosity
- Use Skim Reading:
Insert+Shift+Down Arrowto get a summary of the page
Symptoms: VoiceOver skips buttons, links, or form fields on GitHub.
Solution:
- Open Rotor:
VO+U(VO key is usuallyCaps LockorControl+Option) - Use Left/Right arrows to switch rotor categories (Headings, Links, Form Controls)
- Use Up/Down arrows to navigate within a category
- If the rotor shows fewer elements than expected, the page may need to finish loading - wait and try again
- Test in Safari first - it has the best VoiceOver compatibility among browsers
Symptoms: Single-letter navigation (H, B, K) is consumed by VoiceOver Quick Nav instead of GitHub.
Solution:
- Quick Nav on (default for web): Single letters are VoiceOver navigation commands (H for headings, etc.) - this is usually what you want for web browsing
- Quick Nav off: Toggle with
Left Arrow + Right Arrowsimultaneously. With Quick Nav off, single letters type into the page - needed for some GitHub shortcuts - For GitHub shortcuts like
GthenI: turn Quick Nav off first
Symptoms: VoiceOver cannot leave the editor area to reach the sidebar or other panels.
Solution:
- Press
VO+Shift+F5to exit the current interaction context - Use
VO+F6to cycle between VS Code panels (sidebar, editor, terminal, etc.) - Use VS Code keyboard shortcuts directly:
Ctrl+Shift+E(Explorer),Ctrl+Shift+G(Source Control), etc.
Symptoms: Ctrl+Shift+I does nothing, or the Copilot Chat icon is grayed out.
Solution:
- Verify extension installed:
Ctrl+Shift+X→ search "GitHub Copilot Chat" → should show installed - If not installed, install both "GitHub Copilot" and "GitHub Copilot Chat"
- If installed but grayed out:
Ctrl+Shift+P→ "Developer: Reload Window" - Verify you are signed in to GitHub: look for the GitHub icon in the status bar (bottom-left). Click to sign in if needed.
- Check subscription: Copilot requires a paid plan, organization access, or the free tier. See https://github.com/features/copilot
Symptoms: Chat says you do not have Copilot access, even though the extension is installed.
Solution:
- Check your subscription at https://github.com/settings/copilot
- GitHub Copilot offers a free tier with limited usage - verify you have not exceeded limits
- For full access: Copilot Individual (~$10/month), Copilot Business (via organization), or Copilot Enterprise
- Students/educators: Free access at https://education.github.com/
- If your organization provides Copilot, ask your admin to enable it for your account
Symptoms: Copilot is installed and signed in, but no code suggestions appear while typing.
Solution:
- Verify Copilot is enabled for the current file type: check the Copilot icon in the status bar - it should show a checkmark
- Click the Copilot icon to see if suggestions are enabled or disabled for this language
- Check Settings:
Ctrl+,→ searchgithub.copilot.enable→ verify your language is not disabled - Open a new file and type a comment like
// function to add two numbers- suggestions should appear below - Copilot needs an active internet connection
Symptoms: Copilot generates irrelevant or incorrect code/text.
Solution:
- This is normal - Copilot is a suggestion tool, not a decision-maker. Always review its output.
- Press
Alt+]orAlt+[to cycle through alternative suggestions - Provide more context: add comments explaining what you want, open related files, or use Copilot Chat for more detailed instructions
- Reject suggestions with
Escape
Symptoms: Chat input becomes unresponsive, or it shows a loading spinner indefinitely.
Solution:
- Wait 10-15 seconds - the API may be processing a complex request
- Close and reopen Chat: click the X on the Chat panel → reopen with
Ctrl+Shift+I - Check your internet connection
- Check for errors: View → Output → select "GitHub Copilot" from the dropdown → look for error messages
- If the problem persists, restart VS Code: save all work → close completely → reopen
Symptoms: Copilot starts answering but stops mid-sentence.
Solution:
- Type "continue" in the chat to ask Copilot to continue its response
- If the response is consistently too long, break your question into smaller parts
- Try a different model (click the model selector in Chat) - some models handle longer outputs better
Symptoms: Copilot Chat gives generic answers that do not reference your repository.
Solution:
- Use
@workspacebefore your question:@workspace how is authentication handled? - Open relevant files in the editor before asking - Copilot uses open files as context
- Select specific code, then ask about it - Copilot uses the selection as context
- Make sure you opened the correct folder in VS Code (not a parent folder)
Symptoms: Copilot Chat outputs formatted content that the screen reader does not navigate well.
Solution:
- Press
Alt+F2(Accessible View) - this renders the response as plain, navigable text - In the Accessible View, use standard screen reader commands (arrows, H for headings) to read the response
- This is the recommended workflow for all screen reader users using Copilot Chat
Symptoms: Typing @template-builder in Copilot Chat does not autocomplete or does not trigger the agent.
Solution:
- Verify the
.agent.mdfile exists: check.github/agents/template-builder.agent.mdin your repository - Verify you have GitHub Copilot with agent support (requires a qualifying plan)
- Reload VS Code:
Ctrl+Shift+P→ "Developer: Reload Window" - Open Copilot Chat:
Ctrl+Shift+I→ type@→ scroll through available agents - If the file exists but the agent does not appear:
- Verify the file is on your current branch
- Wait 2-3 minutes for the agent index to refresh
- Check that the YAML frontmatter in the
.agent.mdfile is valid
Symptoms: You ask @template-builder a question but it responds like a general-purpose assistant.
Solution:
- Close and reopen Copilot Chat:
Ctrl+Shift+I - Verify you typed the agent name exactly:
@template-builder(with the hyphen) - Type
/to see available slash commands for that agent - Check the
.agent.mdfile: the YAML frontmatter must include the agent's name and description - Try a simpler query to test if the agent responds correctly
Symptoms: Agent says it cannot find your repositories or data.
Solution:
- Verify you are signed in to GitHub in VS Code
- Check
.github/agents/preferences.md- is it configured with your repositories? - If
preferences.mddoes not exist, copy frompreferences.example.mdand customize it - The agent needs read access to the repositories listed in preferences
Symptoms: Typing / in Chat does not show the expected custom commands.
Solution:
- Custom slash commands come from
.github/prompts/in your repository - Verify the prompt files exist and are on your current branch
- Reload VS Code:
Ctrl+Shift+P→ "Developer: Reload Window" - Type
/in Chat and wait - the list may take a moment to populate
Symptoms: An exercise says "open the template file" but the file is not in the expected location.
Solution:
- Check the exercise prerequisites - some files are created in earlier exercises
- For templates: check
.github/ISSUE_TEMPLATE/folder - For agents: check
.github/agents/folder - List all files:
git ls-filesor in VS Code useCtrl+Pand type part of the filename - You may be on the wrong branch:
git checkout main - The Learning Room files are in
learning-room/docs/(not in the rootdocs/folder)
Symptoms: Exercise steps are confusing or the goal is unclear.
Solution:
- Read the prerequisites section at the start of each exercise
- Each exercise follows a pattern: Try It → You're done when → What success feels like
- Look for the "What you should see" checkpoint after each step
- If your results do not match, re-read the step - the issue is usually a small detail
- Check if there is an "If you're stuck" section within the exercise
- Ask for help: open an issue describing the step you are on and what you see
Symptoms: You opened a PR but the automated bot did not post a review comment.
Solution:
- Wait 30-60 seconds - the bot runs via GitHub Actions and may take a moment
- Check the Actions tab on the repository - is there a workflow run for your PR?
- If the workflow failed, click it to see the error
- Verify your PR targets the correct branch (usually
main) - If the bot still does not respond, ask the facilitator - the automation may need to be configured
Symptoms: Individual challenges do not match your skill level.
Solution:
- Challenges are progressive - start with #01 and work up
- Too easy: Jump ahead to the bonus challenges (A through E) in
docs/CHALLENGES.md - Too hard: Go back to the relevant chapter and review the concepts
- The 21 challenges span six skill levels - find the range that stretches you without frustrating you
Symptoms: Running the build command produces errors or no output.
Solution:
- Verify Node.js is installed:
node --version(must be v14+) - Install dependencies first:
npm install - Check the error message:
marked is not defined→ runnpm installto install dependenciesENOENT: no such file or directory→ verify you are in the repository rootSyntaxError→ a markdown file may have unusual characters. Check the error output for the filename.
- Try removing
node_modulesand reinstalling: delete thenode_modulesfolder →npm install→npm run build:html
Symptoms: HTML files are generated but formatting is broken, styles are missing, or navigation is wrong.
Solution:
- Verify
github-markdown-cssis installed: checknode_modules/github-markdown-css/ - Open an HTML file in your browser - if styles are missing, the CSS link may be broken
- Check
scripts/build-html.jsfor any custom configuration that may have been changed - Try a clean rebuild: delete the
html/folder contents →npm run build:html
Symptoms: You edited a .md file but the corresponding .html file still shows old content.
Solution:
- Rebuild:
npm run build:html - The HTML build is manual - it does not auto-update when you edit markdown
- After rebuilding, commit both the
.mdandhtml/changes together - For live preview during editing, use
npm run watchif available, or use VS Code's built-in Markdown preview (Ctrl+Shift+V)
Symptoms: You pushed changes but the live site still shows old content.
Solution:
- GitHub Pages can take 2-10 minutes to rebuild after a push
- Check build status: repository Settings → Pages → look for build status
- Hard refresh in your browser:
Ctrl+Shift+R - Check that GitHub Pages is configured to serve from the correct branch and folder
Symptoms: You want to read the materials but cannot find where they are hosted or how to download them.
Solution: See Appendix Y (Accessing Workshop Materials) for complete instructions covering:
- Reading on GitHub Pages (if hosted)
- Reading directly on GitHub.com
- Cloning the repository with Git
- Downloading as a ZIP file
- Downloading individual files
Symptoms: Pages take a long time to load, or actions time out.
Solution:
- Check GitHub's status page: https://www.githubstatus.com/
- Try a different browser
- Check your internet connection by visiting other sites
- If behind a corporate network, some GitHub features may be blocked - check with your IT department
- Disable browser extensions that may interfere (ad blockers, privacy tools)
Symptoms: VS Code takes a long time to open files, respond to keyboard input, or load extensions.
Solution:
- Close unused editor tabs and panels
- Disable extensions you are not using:
Ctrl+Shift+X→ disable non-essential extensions - Check for large files: VS Code may struggle with very large files or repositories
- Increase memory: VS Code Settings → search
files.maxMemoryForLargeFilesMB - Restart VS Code
Symptoms: git clone, npm install, or Copilot fail with network errors.
Solution:
- Configure Git proxy:
git config --global http.proxy http://proxy:port - Configure npm proxy:
npm config set proxy http://proxy:port - If SSH is blocked, use HTTPS for Git operations:
git remote set-url origin https://github.com/... - Some firewalls block VS Code's telemetry or extension marketplace - ask IT to whitelist
*.visualstudio.com,*.github.com, and*.githubusercontent.com
If your issue is not listed here:
- FAQ - Answers to common questions about the workshop
- Quick Reference - Condensed keyboard shortcuts and commands
- Glossary - Term definitions
- Screen Reader Cheat Sheet - NVDA, JAWS, VoiceOver commands
- Resources - External documentation and links
- Open an issue on this repository with:
- What you tried
- What happened (exact error messages)
- What you expected
- Your operating system, browser, screen reader, and versions
- The chapter or exercise you were working on
Last updated: February 2026 | Maintained by GitHub Learning Community
Use these official references when you need the current source of truth for facts in this chapter.
Use this map to verify facts for each major section in this file.
- Common Issues and Solutions: GitHub Docs, home, GitHub Changelog, About Git, GitHub flow, About pull requests
- Setup and Installation: GitHub Docs, home, GitHub Changelog
- Git Configuration and Operations: GitHub Docs, home, GitHub Changelog, About Git, GitHub flow, About pull requests
- GitHub Authentication: GitHub Docs, home, GitHub Changelog, About Git, GitHub flow, About pull requests
- GitHub Web Interface: GitHub Docs, home, GitHub Changelog, About Git, GitHub flow, About pull requests
- Repository Navigation and Cloning: GitHub Docs, home, GitHub Changelog, About Git, GitHub flow, About pull requests
- Branches, Merging, and Conflicts: GitHub Docs, home, GitHub Changelog, About Git, GitHub flow, About pull requests
- Issues and Pull Requests: GitHub Docs, home, GitHub Changelog, About Git, GitHub flow, About pull requests
- Templates and YAML: GitHub Docs, home, GitHub Changelog
- VS Code Setup and Configuration: GitHub Docs, home, GitHub Changelog
- VS Code Extensions: GitHub Docs, home, GitHub Changelog
- VS Code Source Control: GitHub Docs, home, GitHub Changelog
- Screen Readers - General: GitHub Docs, home, GitHub Changelog, W3C Web Content Accessibility Guidelines (WCAG) 2 overview, WAI tutorials for accessible design patterns, WAI-ARIA Authoring Practices Guide
- NVDA-Specific Issues: GitHub Docs, home, GitHub Changelog, About Git, GitHub flow, About pull requests
- JAWS-Specific Issues: GitHub Docs, home, GitHub Changelog, About Git, GitHub flow, About pull requests
- VoiceOver-Specific Issues: GitHub Docs, home, GitHub Changelog, About Git, GitHub flow, About pull requests