Interactive GitHub setup and hands-on git learning for any skill level.
Copy the command definition below into:
~/.claude/commands/github-learn.md---
name: github-learn
description: Interactive GitHub setup and hands-on git learning for any skill level.
allowed-tools: Read, Write, Glob, Grep, Bash(git:*), Bash(gh:*), Bash(ssh:*), Bash(test:*), Bash(echo:*), AskUserQuestion
user-invocable: true
argument-hint: "[lesson]"
---
# /github-learn
Interactive GitHub setup and learning companion. Launch this command to get set up on GitHub or start a hands-on lesson.
## Instructions
### Step 1 — Determine Intent
Check the argument passed to the command:
- No argument → run environment check, route to **Setup** if not set up, otherwise offer lesson menu
- `setup` → route to **Setup**
- `101` or `basics` → route to GitHub 101 lesson
- `branches` → route to Branching Basics lesson
- `prs` → route to First PR lesson
- `workflows` → route to Branch Workflows lesson
- `review` → route to PR Review Flow lesson
- `rebase` → route to Rebase vs Merge lesson
- `actions` or `ci` → route to GitHub Actions lesson
- `apps` → route to Review Ecosystem lesson
- Any other text → treat as a question about git/GitHub, answer adaptively
### Step 2 — Environment Check (for Setup routing)
Run two checks:
```bash
gh auth status 2>&1
test -d .git && echo "GIT_REPO_EXISTS" || echo "NO_GIT_REPO"
```
If either fails, route to **Setup** regardless of what was requested — setup is a prerequisite.
### Step 3 — Infer Skill Level
Determine level from environment signals gathered in Step 2 and from `git status` output:
- Only `main` branch + short commit messages → **Beginner**
- A few branches + descriptive commits → **Intermediate**
- Branch naming conventions + conventional commits → **Advanced**
- Complex history, multiple remotes → **Expert**
Only ask the comfort question via `AskUserQuestion` when signals are genuinely ambiguous.
### Step 4 — Execute
**Setup:** Read and follow the Setup mode instructions in `${CLAUDE_SKILL_DIR}/skills/navigating-github/SKILL.md`. Walk through each prerequisite interactively, skip completed steps. After completion, show the lesson menu.
**Lesson menu** (when no specific lesson requested and setup is complete):
Present via `AskUserQuestion`:
> Pick a lesson (or say "teach me" followed by a topic):
>
> **Beginner**
>
> 1. GitHub 101 — commits, push, the basics
> 2. Branching Basics — create, switch, see the difference
> 3. First PR — branch, push, create a PR, merge
>
> **Intermediate**
> 4. Branch Workflows — naming, feature branches, staying current
> 5. PR Review Flow — review, comment, approve
> 6. Team Git — forks, upstream sync, collaboration
>
> **Advanced**
> 7. Rebase vs Merge — interactive rebase, squash, clean history
> 8. GitHub Actions — write a CI workflow, watch it run
> 9. Code Review Apps — CodeRabbit, Copilot Review, and the ecosystem
**Specific lesson:** Read `${CLAUDE_SKILL_DIR}/skills/navigating-github/references/learning-curriculum.md` and execute the matching lesson. Follow do-then-explain methodology: run real commands, observe results, explain afterward. Verify understanding after each step.
After each lesson, summarize what was learned and suggest the next lesson.
## Examples
```
/github-learn → environment check → setup if needed, otherwise lesson menu
/github-learn setup → guided GitHub setup from scratch
/github-learn 101 → GitHub 101 hands-on lesson
/github-learn branches → Branching Basics lesson
/github-learn prs → First PR lesson
/github-learn rebase → Rebase vs Merge lesson
/github-learn actions → GitHub Actions lesson
```