SSH setup, Git identity, push workflow, real-world GitHub usage, how LLMs process prompts, and getting started with Claude Desktop — skills and connectors for educators.
Step 1 of 8
Git attaches your name and email to every commit you make. This is how your contributions are identified on GitHub. You only need to do this once per machine.
git config --global user.name "Your Name" git config --global user.email "your-email@example.com"
git config --global user.name "Pavan Kumar" git config --global user.email "pavan@gmail.com"
git config --global --list
git config --global --list # Output on your machine: user.name=Pavan Kumar user.email=pavan@gmail.com
user.name=Your Name user.email=your-email@example.com
Step 2 of 8
An SSH key is a pair of files — a private key (stays on your machine, never shared) and a public key (uploaded to GitHub). When you connect, GitHub checks that your private key matches the public key on file. No password needed after setup.
-t ed25519 flag selects a modern, secure key type. The -C flag adds your email as a label on the key.ssh-keygen -t ed25519 -C "your-email@example.com"
ssh-keygen -t ed25519 -C "pavan@gmail.com"
After running the command, you will see 3 prompts. Press Enter each time without typing anything:
Prompt 1 — "Enter file in which to save the key (/home/user/.ssh/id_ed25519):"
→ Press Enter (accepts the default path ~/.ssh/id_ed25519)
Prompt 2 — "Enter passphrase (empty for no passphrase):"
→ Press Enter (leaves passphrase empty — no typing needed)
Prompt 3 — "Enter same passphrase again:"
→ Press Enter again (confirms empty passphrase)
Total: 3 Enter presses, nothing to type.
eval "$(ssh-agent -s)"
eval "$(ssh-agent -s)" # The agent starts and prints its process ID: Agent pid 3721
Agent pid 12345
ssh-add ~/.ssh/id_ed25519
ssh-add ~/.ssh/id_ed25519 # Confirmation message shown: Identity added: /home/pavan/.ssh/id_ed25519 (pavan@gmail.com)
Identity added: /home/youruser/.ssh/id_ed25519 (your-email@example.com)
cat ~/.ssh/id_ed25519.pub
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOMqqnkVzrm0SdG6UOoqKLsabgH5C9okWi0dh2l9GkZQ pavan@gmail.com
⚠️ Important: This is your GitHub profile settings — not your repository settings. Go to your profile avatar (top-right corner) → Settings. This applies to your entire GitHub account, not a specific repo.
Step 3 of 8
The very first time you connect to GitHub over SSH, your machine has never seen GitHub's server before. SSH will pause and ask you to confirm that the server is genuine before storing its fingerprint.
ssh -T git@github.com
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added 'github.com' (ED25519) to the list of known hosts.
The authenticity of host 'github.com (140.82.x.x)' can't be established. ED25519 key fingerprint is SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU. Are you sure you want to continue connecting (yes/no/[fingerprint])?
When you see the prompt, type yes (the full word, not just "y") and press Enter. SSH saves GitHub's fingerprint in ~/.ssh/known_hosts. From now on, every future connection is verified automatically — you'll never see this prompt again on this machine.
Step 4 of 8
After adding your key to GitHub and accepting the host fingerprint, verify that authentication actually works end-to-end.
ssh -T git@github.com
Hi pavankumar19! You've successfully authenticated, but GitHub does not provide shell access.
Hi username! You've successfully authenticated, but GitHub does not provide shell access.
If you see your GitHub username in that message, your machine is now trusted. The phrase "does not provide shell access" is completely normal — it just means you can't log into GitHub's servers like a remote desktop, but you can push and pull code freely.
Step 5 of 8
Now that your machine is trusted, always use the SSH URL when cloning — not the HTTPS URL. This means no username or password prompts, ever.
git@github.com:git clone git@github.com:username/repository.git
git clone git@github.com:pavankumar19/mywebsite.git # Creates a folder called "mywebsite" with all the repo files inside
Step 6 of 8
After cloning, confirm that the remote URL is SSH — not HTTPS. This ensures every push and pull uses your key, not a password prompt.
git remote -v
origin git@github.com:pavankumar19/mywebsite.git (fetch) origin git@github.com:pavankumar19/mywebsite.git (push)
origin git@github.com:username/repository.git (fetch) origin git@github.com:username/repository.git (push)
If you see https://github.com/... instead, the remote is using HTTPS. Switch it to SSH with:
git remote set-url origin git@github.com:username/repository.git
Step 7 of 8
If something isn't working, use verbose mode to see exactly what SSH is doing — which key it's trying, which step it reaches, and where it fails.
-v flag prints a detailed log of the entire connection process. Use this any time a push or clone fails with a permission error.ssh -vT git@github.com
debug1: Offering public key: /home/pavan/.ssh/id_ed25519 ED25519 debug1: Server accepts key: /home/pavan/.ssh/id_ed25519 ED25519 Hi pavankumar19! You've successfully authenticated...
debug1: Offering public key: /home/youruser/.ssh/id_ed25519 ED25519 debug1: Server accepts key: /home/youruser/.ssh/id_ed25519 ED25519 Hi username! You've successfully authenticated...
What each line means:
— "Offering public key" → SSH found your key file on disk
— "Server accepts key" → GitHub recognised and approved it
— If neither line appears, your key is not loaded in the agent. Re-run ssh-add ~/.ssh/id_ed25519 and try again.
Step 8 of 8
After editing files in your cloned repository, use these four commands in order to save your changes and send them to GitHub. This is the standard workflow you will repeat every time.
git status
git status
On branch main
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
modified: index.html
no changes added to commit
git add . to stage everything, or name a specific file.git add .
git add filename.html
git add . # Stages all modified files at once git add index.html # Stages only index.html
git commit -m "your commit message here"
git commit -m "add navigation bar to index.html" # Output: [main 4f2a1c3] add navigation bar to index.html 1 file changed, 12 insertions(+), 0 deletions(-)
Write a message that describes what you changed, not why. Keep it short — under 72 characters. Examples: "fix typo in about page", "add contact form", "update footer links".
origin is the name of the remote (GitHub), and main is the branch name.git push origin main
git push origin main Enumerating objects: 5, done. Counting objects: 100% (5/5), done. Writing objects: 100% (3/3), 342 bytes | 342.00 KiB/s, done. To git@github.com:pavankumar19/mywebsite.git a1b2c3d..4f2a1c3 main -> main
After this, your changes are live on GitHub. If your repo is connected to GitHub Pages, the website updates automatically within a minute.
git status git add . git commit -m "describe your change here" git push origin main
Beyond the Terminal
GitHub is not just for storing code. It is the foundation of modern software development, collaboration, and deployment — used by individuals, teams, and companies worldwide.
More Commands to Know
git pull fetches their changes and merges them into your branch automatically.git pull origin main
git pull origin main # Output: remote: Enumerating objects: 3, done. Updating a1b2c3d..4f2a1c3 Fast-forward index.html | 5 +++++ 1 file changed, 5 insertions(+)
main to include your changes in the main codebase.git checkout main git merge feature-branch
git checkout main git merge add-contact-page # Output: Updating 4f2a1c3..9d3e5a1 Fast-forward contact.html | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+)
Key Concepts
main branch. Think of it as a draft copy of your notebook.git checkout -b feature-namegit checkout maingit branchmain. Before the code is merged, teammates can review it, leave comments, and suggest changes — ensuring quality before anything goes live.Understanding AI
Every time you send a message to ChatGPT, Claude, or any LLM, it goes through the same pipeline. Understanding this helps you write better prompts and get more useful outputs.
❌ Vague: "Explain pointers" ✅ Structured: "You are a C programming teacher. Explain pointers to a first-year engineering student in 3 short bullet points with one code example. Use simple language."
Why this matters: If you start a new chat, the model forgets everything from before. Always re-provide important context when starting fresh. Pasting a document or code file into the chat gives the model that information to work with.
"Give me a 5-question quiz on linked lists. Format: numbered list, question on one line, answer on the next line in bold." "Summarise this research paper in JSON with keys: title, authors, problem, method, result, limitations."
Claude Desktop
Claude Desktop is the native app for your computer. Beyond the chat interface, it supports Skills (prompt templates for specific tasks) and Connectors (integrations with apps you already use). Together they turn Claude into a personalised assistant for teaching, research, and content creation.
Skills — Built-in Task Templates
Connectors — Apps Claude Can Access
Suggested for Faculty — Connectors & Skills
Connectors to connect first:
📁 Google Drive — share lecture notes, question banks, and student materials directly with Claude
📝 Notion — organise course content, meeting notes, and research references in one workspace Claude can read
📧 Gmail / Google Calendar — schedule sessions, draft announcements, and summarise email threads
📊 Google Sheets — analyse student marks, generate summaries, and spot patterns across batch data
Skills to use regularly:
📋 Quiz Generator — create MCQs, fill-in-the-blank, and short-answer questions from any topic or uploaded notes
🗓️ Syllabus Designer — build structured course syllabi with unit-wise breakdowns, references, and assessment plans
📚 Research Summariser — paste or link a paper; get key problem, method, results, and limitations in 5 bullets
💬 Student Feedback Analyser — paste student responses and extract common themes, misconceptions, and strengths