learn-github-with-phoebe / Session 3 of 6
Learn GitHub with Phoebe · Session 3 of 6 · Non-tech track

Issues + Projects: the todo list that runs the world

The task tool hiding inside every repository. Issues track work of any kind - not just bugs - with permanent numbers, owners and conversations. Projects stacks a kanban board on top. By the end of the hour your handbook has a real task list and a board you can run a week from.

🟡 Core Non-tech professionals Browser only 45 min live + self-study
0-3 · Welcome 3-18 · Concepts 18-40 · Apply-along 40-45 · Q&A
Part 0

Where did the work go?

Session 2 gave your handbook pages. Today it gets a nervous system. Most teams scatter their asks across email, chat and memory - then wonder why things fall through. GitHub's answer is disarmingly simple: every piece of work becomes an issue with a permanent number, living at the same address as the documents it is about. Labels sort them, one owner carries each, and a Projects board turns the pile into a week you can actually see.

Live - presented in session Self-study - read after class ★ Apply-along - in your browser, everyone does it Running artifact: your own handbook repo
★ What you walk out with today Four real issues on your handbook repo with verb-first titles, your own three-label taxonomy, a "Launch week" milestone, and a live kanban board with a card mid-drag - plus the reframe that changes team habits: open an issue instead of sending a task email.
Part 1 · the universal todo

Issues: the universal todo 5 min live

An issue is one unit of work or discussion with a permanent number. Despite the gloomy name, issues are NOT just bugs - teams use them for tasks, ideas, questions and decisions. Number #12 stays #12 forever: linkable, searchable, quotable in any conversation on the repo.

Refresh the Q3 dashboard data #12 content data Context: the dashboard numbers stop at May. Done looks like: June is visible and Sam is pinged. - [x] pull the June export    - [ ] update the page 1 of 2 tasks S Assignee: Sam Milestone: Launch week Verb-first title + number Labels = your categories Context + done-looks-like Task list = progress bar One owner, one date bucket
🔍 Click to zoom - the anatomy of an issue that actually gets done
LiveWhat makes an issue great (and gettable-done)3 min▶
  • Verb-first title: "Refresh the Q3 dashboard data" tells you the what in one glance. "Dashboard" tells you nothing; "URGENT!!!" tells you less.
  • Context + definition of done: two lines. What is the situation, and what does finished look like? Vague issues create vague work.
  • One owner: the assignee. Work assigned to everyone is owned by no one.
  • The conversation stays attached: comments thread under the issue, @mentions notify people, and typing #numbers links issues to each other. Six months later, the whole decision trail is still there, at the same address.
  • Task lists inside issues: - [ ] checkboxes from Session 2 render as a live progress bar on the issue list. Sub-tasks without another tool.
The reframe that changes teams Next time you are about to send a task email, open an issue instead. The ask, the discussion and the outcome stay next to the work - findable forever, instead of buried in someone's inbox.
Self-studyIssue etiquette + templates2 min read▶

Two habits that make issue conversations pleasant, and one upgrade for later:

  • @mention with intent: @sam sends Sam a notification, so mention the person you need, not everyone you know. One name per ask.
  • Link, do not repeat: typing #12 auto-links to issue 12, and the link shows up on BOTH issues. Related work finds itself; nobody re-explains context.
  • Issue templates (later): once your team files issues weekly, a template can pre-fill the structure - context, done-looks-like, checklist - so every new issue arrives half-ready. Settings → set up templates when you feel the need; do not build process before the habit exists.
Part 2 · sorting the pile

Labels, assignees, milestones 4 min live

A pile of issues becomes a system with three small tools. Labels are color-coded categories you invent yourself. An assignee is the single accountable owner. A milestone is a dated bucket of issues - "the Q3 refresh", "Launch week". Filters then make any slice of the pile one click away.

LiveYour taxonomy, your rules (but keep it small)3 min▶
  • Labels: make your own - content, design, review, urgent, idea. Color-coded, filterable, and entirely yours. Keep the set under ~10: a taxonomy nobody remembers is a taxonomy nobody applies.
  • Assignee: exactly one accountable person per issue. Others can comment, help, review - but one name carries it over the line.
  • Milestone: a bucket with a due date. "Launch week" collects every issue that must land by Friday, and shows a progress bar as they close.
  • Filters: the issue list filters by any combination - label:content, assignee:sam, milestone:"Launch week". Any slice of the work, one click.
Real world

Triage at open-source scale: maintainers of popular repos handle hundreds of incoming issues a week with little more than labels. One label became a global convention: good-first-issue, marking tasks friendly to newcomers - so effective that GitHub built discovery pages around it, and "find a good-first-issue" is now how thousands of people worldwide make their first contribution. A color-coded sticker created an onboarding system.

Part 3 · the board on top

Projects: the kanban on top 5 min live

GitHub Projects gives you board and table views built FROM your issues. Columns are status - Todo, In progress, Done - and you drag cards between them. The crucial idea: a card on the board IS the issue. It never leaves its repo; the board is just a view of it.

drag to move · drag = status change Todo #14 Write onboarding page #15 Review handbook tone In progress #12 Refresh Q3 data Priority: High · Sam Done ✓ #11 Front door README team-handbook · Issues · #12 the card IS the issue - one number, one home Close the issue, the card moves itself.
🔍 Click to zoom - cards flow left to right, but every card stays tethered to its repo
LiveWhy this beats a separate tool3 min▶
  • Columns = status: Todo, In progress, Done to start. Drag a card, the status changes; close the issue, the card moves to Done by itself.
  • Custom fields: add Priority, Date, or anything else, and every card gets the field. Table view turns the same data into a spreadsheet.
  • An issue can live on a board without leaving its repo. One board can even gather issues from several repos.
  • The killer feature is the address: the task and the work live at the same URL. No copy-pasting between the task tool and the document tool, no "which one is true?" - the board is a view, the issue is the truth.
Self-studyTable view and the Monday standup slice2 min read▶

Every Projects board has a Table view of the same cards - a spreadsheet with sortable columns for status, assignee, priority and your custom fields.

  • Weekly standup trick: group or slice the table by assignee - each person's week appears as their own block. Walk the blocks, meeting done.
  • Slice by milestone before a deadline to see exactly what stands between you and "Launch week: done".

Note: Projects has no dedicated GitHub Skills course - the official reference is docs.github.com (search "GitHub Projects"). Everything above is in there, plus automation recipes for later.

Apply-along 1 of 3

Give the handbook a task list ★ 8 min · everyone files

Open your team-handbook repo → Issues tab → green New issue. Create 4 real issues: two content pages to write ("Write the onboarding page", "Draft the how-we-meet page"), one review task ("Review the front door for tone"), and one idea ("Idea: add a who-does-what directory"). Verb-first titles, one line of context, one line of done-looks-like.

Create 3 labels (Issues → Labels → New label): content, review, idea. Pick colors you will recognize at a glance, then apply one to each issue.

Assign yourself to every issue - one accountable owner, even in a team of one.

Create a milestone called Launch week (Issues → Milestones → New milestone, due date next Friday) and put your 2 content issues in it. Watch the milestone progress bar appear.

Apply-along 2 of 3

Triage like a maintainer ★ 8 min · everyone sorts

Six issues just landed in your repo. You are the maintainer - decide what each one needs first. This is the judgment that keeps real issue lists healthy.

The debrief Triage is three questions in order: is the title a clear verb-first ask? Does one person own it, with a label? Should it even be open? Answer those and a hundred-issue list stays calm.
Apply-along 3 of 3

Build the board ★ 6 min · everyone drags

From your repo: Projects tab → New project → choose Board. Name it "Handbook launch". Three columns appear: Todo, In progress, Done.

Add your 4 issues: click + Add item at the bottom of Todo, type # and pick each issue from the list. Four cards, each still living in the repo.

Drag one card to In progress - the one you will actually start this week. Feel free to enjoy the drag; everyone does.

Add a custom field: + New field → Priority (single select: High / Medium / Low), and set it on your cards. Screenshot-worthy in 5 minutes - a real board over real work.

After the session

This week ◐ 30 min across the week

Check yourself

Three questions before you go 🎯 ◐ 90 seconds

1 · Which issue is "ready" - safe to leave on the pile knowing it will get done right?

Ready = clear ask + category + single accountable owner. Work assigned to everyone is owned by no one - that was the triage widget's whole lesson.

2 · Labels vs milestones - what is the actual difference?

Labels answer "what kind?" (content, review, idea - your taxonomy, under ~10). Milestones answer "by when?" (Launch week, the Q3 refresh). One issue can have both.

3 · You drag a card across your Projects board. Where does that issue actually live?

The card IS the issue. It never leaves its repo; the board is a lens. That is why closing the issue moves the card, and why there is never a "which one is true?" problem.

Source material

Official GitHub Skills coverage

This course maps to GitHub's own free Skills exercises - each session tells you honestly what is covered here and what the official course adds.

◐Introduction to repository management (skills/introduction-to-repository-management)labels and community basics covered here; the full community-health file set returns in Session 6
✓GitHub Projects (docs.github.com - no dedicated Skills course exists)board + custom fields at working level - Part 3 + Apply-along 3; table view and slicing in self-study
◐Issue templatesmentioned only - once your team files issues weekly, templates pre-fill the context and done-looks-like sections for them

Session 3 cheat sheet · pin this

IssueOne unit of work or discussion with a permanent #number. Tasks, ideas, questions, decisions - not just bugs.
Ready issueVerb-first title · context · done-looks-like · a label · ONE assignee. Vague titles create vague work.
Labels vs milestonesLabels = your categories (keep under ~10). Milestone = dated bucket with a progress bar (Launch week).
Task lists- [ ] inside an issue renders checkboxes AND a progress bar on the issue list. Sub-tasks for free.
Board recipeProjects → New project → Board · columns = status · drag to move · + New field for Priority or Date.
The reframeOpen an issue instead of a task email. The ask lives next to the work, findable forever.