learn-markdown-with-phoebe / Session 3 of 4
Learn Markdown with Phoebe · Session 3 of 4

Polish: badges, emoji, collapsibles, diagrams

Your page works. Today it starts to look like the READMEs you admire: a badge row up top, tasteful emoji, sections that fold away politely, a mini table of contents, and a diagram you draw by typing plain text. This is the glow-up session - same file, suddenly professional.

🟠 Medium Bring your draft 45 min live + self-study
0-3 · Welcome 3-18 · Concepts 18-40 · Glow-up lab 40-45 · Q&A
Part 0

Where your page stands

After two sessions your about-me page has headings, lists, links, a photo, a quote, a skills table, and a checklist. Solid - but it still looks like homework. Today's session is pure polish: the small touches that make strangers on GitHub think "this person knows what they're doing." Next week it goes live, so this is dress rehearsal.

Live - presented in session Self-study - read after class ★ Build-along demo The project: YOUR page
★ What you walk out with today A badge row at the top of your page, emoji in the right places (and only the right places), a collapsible "fun facts" section, a Mermaid diagram of your learning journey drawn from pure text, and a mini table of contents. Plus the honest map of which polish tricks work where - so nothing breaks on ship day.
Part 1 · covers GitHub Docs emoji + the shields.io community convention

Badges and emoji 5 min live

The two fastest polish wins. One is a clever reuse of syntax you already know; the other is typing : and letting GitHub do the rest.

LiveBadges: Session 2's image syntax, pointed somewhere clever2.5 min▶
You type![Made with](https://img.shields.io/badge/Made%20with-Markdown-blue)
→
Browser shows

Made withMarkdown - a crisp two-tone pill, like the pro READMEs

  • Anatomy of the URL: img.shields.io/badge/LABEL-MESSAGE-COLOR - left text, right text, right-side color, separated by hyphens. Spaces become %20.
  • Honesty beat: badges are NOT markdown and NOT a GitHub feature. They're a community convention powered by shields.io, a free service that generates badge images on demand. You're just using Session 2's ![alt](url) image syntax - pointed at a machine that draws pills.
  • Which means: they render anywhere images render - including stackedit. No new rules to learn, and one pattern covers endless badges. The full parameter zoo lives at shields.io.
Real world

Open any famous repo - React, VS Code, pandas - and the first thing under the title is a badge row: build passing, version, license, downloads. Those are all shields.io-style images. Your "Made with Markdown" badge uses the exact same mechanism as a badge with 20 million weekly viewers.

Session 2's image syntax, pointed at a badge generator YOU TYPE BROWSER SHOWS ![Made with] (shields.io/badge/Made%20with-Markdown-blue) Made with Markdown LABEL MESSAGE - COLOR LABEL, hyphen, MESSAGE, hyphen, COLOR - spaces become %20. One pattern, endless badges.
🔍 Click to zoom - a badge is just Session 2's image syntax pointed at a pill generator
LiveEmoji: shortcodes on GitHub, paste anywhere2 min▶
You typeLearning markdown :+1: and shipping soon :rocket:
→
Browser shows

Learning markdown 👍 and shipping soon 🚀

  • Shortcodes: :name: between colons - :+1:, :rocket:, :coffee:. On GitHub, typing : pops up an autocomplete list - browse it, you'll find everything.
  • The universal alternative: copy-paste the emoji character itself (🚀) straight into your text. It's just a character - works in ANY markdown app, no rendering required.
  • Dose carefully: emoji are seasoning, not soup. A few as section markers or personality accents reads friendly; one per word reads like a ransom note.
Self-studyWhere shortcodes fail + highlight + sub/superscript2 min read▶
  • Shortcodes vary by app: :joy: renders on GitHub and Slack but may sit there as literal text elsewhere - each app keeps its own shortcode list. When in doubt, paste the real emoji character instead.
  • Highlight: ==important== marks text with a highlighter effect - but only in SOME processors (not GitHub). Check before relying on it.
  • Sub and superscript: markdown has no native syntax, so borrow HTML - H<sub>2</sub>O and x<sup>2</sup> both work on GitHub, as does underline via <ins>.
Part 2 · covers GitHub Docs collapsed sections + section links

Collapsibles and navigation 5 min live

Long page? Fold the optional bits away and give readers a table of contents. Both tricks take one minute to learn.

LiveCollapsible sections: <details> and <summary>2.5 min▶
You type<details> <summary>Fun facts about me</summary> - I have climbed a volcano - I alphabetize my spices </details>
→
Browser shows
▶ Fun facts about me

collapsed - the list appears only when clicked

  • How it works: two HTML tags GitHub happily renders inside markdown. <summary> is the always-visible clickable line; everything else inside <details> hides until clicked.
  • The blank-line rule: leave a blank line after </summary> or the markdown inside may not render as markdown.
  • Meta moment: every accordion card on THIS course page - including the one you just clicked to read this - is a <details>/<summary> pair. You've been using the feature all course.
LiveSection links and the mini table of contents2.5 min▶
You type## Contents - [About me](#about-me) - [My skills](#my-skills)
→
Browser shows
Contents
  • Same link syntax, new address: instead of a URL, point at #heading-name. GitHub gives every heading an automatic anchor: lowercase the text, replace spaces with hyphens - ## My skills becomes #my-skills.
  • Cheat, don't guess: on GitHub, hover a rendered heading and click the link icon that appears - your address bar now shows the exact anchor. Copy it.
  • Mini TOC: a ## Contents heading plus a bulleted list of section links. Three lines of markdown, instant navigation - the polish move readers actually use.
Real world

GitHub's own bug-report templates hide environment logs inside <details> blocks so maintainers see the summary first, and long project READMEs open with a linked table of contents. The moment your page scrolls more than two screens, these two features stop being decoration and become navigation.

Two HTML tags markdown happily renders: details plus summary YOU TYPE BROWSER SHOWS <details> <summary>Fun facts about me</summary> - I have climbed a volcano - I alphabetize my spices </details> ▸ Fun facts about me ▾ Fun facts about me - I have climbed a volcano - I alphabetize my spices The blank line right after </summary> is the step everyone forgets - miss it and the list may not render.
🔍 Click to zoom - the triangle and the reveal are the same free element GitHub uses everywhere
Self-studyFootnotes, custom anchors, and invisible comments3 min read▶
  • Footnotes: mark the spot with [^1], then define it anywhere as [^1]: the note text - GitHub renders numbered links and collects the notes at the bottom.
  • Where footnotes fail: they don't work in GitHub wikis, and the marker won't render inside lists, blockquotes, or tables. READMEs and issues: fine.
  • Custom anchors: need a link target that isn't a heading? Drop <a name="my-spot"></a> in the text and link to #my-spot.
  • Hidden comments: <!-- note to self --> stays in your file but never renders - handy for reminders like "update this section monthly."
Part 3 · covers GitHub Docs diagrams + mermaid.js.org intro

Diagrams from text - Mermaid 5 min live

The wow moment of the course: type a few lines of text, get a real flowchart. No drawing tool, no dragging boxes - and the diagram lives in your file like everything else.

LiveThe mermaid fence: a code block that draws2.5 min▶
You type```mermaid graph TD; A-->B; A-->C; B-->D; C-->D; ```
→
Browser shows
A ↙ ↘ B  C ↘ ↙ D

a rendered flowchart - real boxes, real arrows

  • It's Session 2's code fence with mermaid as the language id. GitHub sees that word and, instead of showing code, hands the text to the Mermaid engine and displays the drawing. This exact example is straight from GitHub's own docs.
  • Reading the lines: graph TD; declares a flowchart, then each A-->B; line means "draw an arrow from node A to node B." Name the nodes, state the arrows, done.
  • StackEdit reality check: Mermaid may not render in your split-pane editor - it's a GitHub (and mermaid-aware apps) feature. Trust the syntax; github.com's preview tab is the ground truth.
LiveNode shapes and flow direction2 min▶
  • Label a node by putting text in brackets after its id - the bracket style picks the shape: A[step] draws a rectangle, A(step) a rounded box, A{choice?} a decision diamond.
  • Direction: graph TD flows top-down; graph LR flows left to right - usually the better fit for timeline-ish stories like your learning journey.
  • That's genuinely enough to diagram most ideas. Sequence diagrams, pie charts, and gantt charts exist too - the deep-dive track (DD3) and mermaid.js.org have the full tour.
Self-studyWhat GitHub renders + version check + plugin warning2 min read▶
  • Four diagram fences render on GitHub: mermaid, geojson, topojson (maps), and stl (3D models). We teach mermaid; the others exist if you ever need a map or a 3D part.
  • Which Mermaid version is GitHub running? Put the single word info inside a mermaid fence - the rendered block reports the version.
  • Plugin warning: GitHub's docs caution that third-party Mermaid browser extensions can conflict with the built-in rendering. If a diagram misbehaves, try a browser profile without extensions before blaming your syntax.
Part 4 · the honest map

The traps: what works where 2 min live

Polish features are the least portable markdown you'll write. Two minutes now saves a confused ship day.

LiveThe color-chip trap + alerts, in moderation2 min▶
  • The color-chip trap: writing a hex code in backticks like `#083FA1` renders a cute color swatch next to it - but ONLY in issues, pull requests, and discussions. In a README it's just monospace text. Don't design your profile page around a feature that won't be there.
  • Alerts: > [!NOTE] on its own line turns the blockquote under it into a styled callout box. Five types: NOTE, TIP, IMPORTANT, WARNING, CAUTION. These DO work in READMEs - but they're GitHub-flavored, so other apps show a plain quote.
  • Dosage: GitHub's own guidance - use alerts sparingly, one or two per document, and don't nest them. An alert that's everywhere alerts no one.
Lane 1 · Works everywhere markdown renders pasted emoji 🙂 headings lists + links badges (just images) Lane 2 · GitHub territory: READMEs, issues, PRs :shortcodes: <details> section links mermaid > [!NOTE] Lane 3 · Issues / PRs / discussions ONLY - never READMEs color chips `#083FA1` the trap: looks great in a PR comment, plain text on your profile page Rule of thumb: your profile README lives in lanes 1 and 2. Anything from lane 3, leave for issue conversations.
🔍 Click to zoom - decision lanes: which polish feature survives where
Demo 1 of 3

Build your badge row ★ 7 min · everyone types

Open your about-me draft (stackedit tab or github.com editor). Go to the very top, directly under your # Name heading, and add a blank line for the badge row.

Type your first badge: ![Made with](https://img.shields.io/badge/Made%20with-Markdown-blue). Badges are images, so stackedit renders them live - watch the pill appear.

Add two more on the same line, one space apart. Make them YOU - playful beats corporate: Currently%20learning-markdown-orange, Coffee%20level-critical-red, whatever's true.

Read the pattern back out loud: LABEL, hyphen, MESSAGE, hyphen, COLOR, spaces as %20. That's the whole grammar - you can now mint badges forever.

Hyphen inside your text? Hyphens separate the badge parts, so a hyphen INSIDE a label needs doubling: data--driven renders as "data-driven". If a badge looks chopped in half, that's why.
Demo 2 of 3

Fold, sprinkle, navigate ★ 8 min · everyone builds

Add a collapsible: type <details>, then <summary>More about me</summary>, a BLANK line, two or three fun facts as a list, then </details>. The blank line after the summary is the step people miss.

Emoji sprinkle: add 3 to 5 emoji where they earn their place - one next to a section heading, one in your intro line, one in the fun facts. Shortcodes like :rocket: are GitHub's dialect; if your editor shows literal text, paste the real emoji character or trust the syntax.

Now the mini TOC: under your badge row, add ## Contents and a bulleted list of three section links - [About me](#about-me) style. Lowercase, spaces to hyphens.

Taste check: collapse your eyes half-shut and look at the page. 3-5 emoji reads warm; 50 reads chaotic. Cut until it feels like you on a good day.

Demo 3 of 3

Draw your journey in Mermaid ★ 7 min · everyone types

Near the bottom of your page, add a ## My journey heading, then open a fence: three backticks plus mermaid on the same line.

First line inside: graph LR; - your story flows left to right.

Tell it in 4 or 5 nodes: A[Curious about markdown]-->B[This course]; then B-->C[Markdown fluent];. Add one branch - maybe B-->D{Ship my page?}; and D-->C;. Close with three backticks.

Preview: got a GitHub account? Paste your page into a new file on github.com and click the Preview tab - the diagram renders there, ground truth. No account yet? Trust the syntax today; next week's session starts by making the account and you'll see it render live.

Semicolons and spelling Mermaid is stricter than markdown: a misspelled grap LR or a stray character can blank the whole diagram. If it breaks, read your first line first - that's the bug 90% of the time.
After the session

This week ◐ 30 min total

Check yourself

Three questions before you go 🎯 ◐ 90 seconds

1 · What IS a badge, really?

No new markdown involved - it's Session 2's ![alt](url) aimed at a badge-generating service. A community convention, not a markdown or GitHub feature.

2 · You put `#083FA1` in your README expecting a color swatch. What renders?

The color-chip trap: the swatch is an issues/PRs/discussions feature. READMEs show plain inline code. Lane 3 on the decision map.

3 · How do you tell GitHub "this block is a diagram, not code"?

Same fence you learned in Session 2 - the language word mermaid tells GitHub to render a drawing instead of highlighting code.

Source material

Official sources covered

This session teaches the polish layer from GitHub Docs writing syntax, GitHub Docs on creating diagrams, and the mermaid.js.org introduction - plus one honest community convention.

✓GitHub Docs: emoji, collapsed sections, section linksshortcodes + autocomplete, details/summary, #anchors + mini TOC - Parts 1-2
✓GitHub Docs: creating diagrams (Mermaid)mermaid fence, the docs' own graph TD example, version check - Part 3
✓mermaid.js.org: intro + flowchart basicsnode shapes, TD/LR directions, labels - Part 3 + Demo 3
◐Markdown Guide extended: footnotes, highlight, sub/superscriptself-study cards in Parts 1-2
◐GitHub Docs: alerts5 types + 1-2 per doc guidance - Part 4 live intro, details self-study
◐shields.io parameter referencehonest note: ONE pattern taught here; the full zoo is linked out

Session 3 cheat sheet · pin this

Badge![label](https://img.shields.io/badge/LABEL-MESSAGE-COLOR) - spaces as %20. Just an image.
Emoji:shortcode: on GitHub (type : for autocomplete) - or paste the emoji character anywhere.
Collapsible<details><summary>Title</summary> + blank line + content + </details>.
Section link[text](#heading-name) - lowercase the heading, spaces become hyphens.
Mermaid```mermaid fence · graph TD or LR · A[box]-->B{diamond}; - renders on GitHub.
Alerts> [!NOTE] / TIP / IMPORTANT / WARNING / CAUTION - READMEs yes, 1-2 per doc, no nesting.