Skip to main content
The GitHub Docs site is built from Markdown files in the /content directory. Every page, category, and product follows a strict content model. Understanding that model lets you place new content correctly, wire up navigation, and choose the right layout from the start.

Content types

Every article has a contentType frontmatter field that declares what kind of content it is. The site uses this value to filter articles on product guides pages (when using layout: product-guides) and to apply the right structural expectations during linting.
string
One of get-started, concepts, how-tos, reference, tutorials, rai, landing, homepage, or other.

get-started

Introductory content for people who are new to a feature. Orientates the reader and links to next steps.

concepts

Explains background knowledge — what something is and why it works the way it does. No step-by-step procedures.

how-tos

Task-based articles that walk the reader through completing a specific goal.

reference

Structured factual content: API parameters, configuration options, syntax tables. Designed to be scanned, not read linearly.

tutorials

End-to-end learning exercises with a concrete outcome. Longer than how-tos and include explanatory context.

rai

Responsible AI content. Only used for files that live in directories with responsible-use in the name.

landing

Product landing pages — only applies to content/<product>/index.md files.

Index pages

Every product, category, and map topic has an index.md file that acts as the landing page for that section. The index.md must declare a children array that lists every page directly nested under it.
The site only knows about paths that appear in a children array. If a file exists in the /content directory but is not listed in a parent index.md, its URL returns 404.
A typical category index.md looks like this:
The paths in children are relative to the current index.md. They point to either a subdirectory (which must itself have an index.md) or a .md file (written without the extension).

Product landing pages

A product landing page (layout: product-landing) is the main entry point for a top-level GitHub product such as Actions or Codespaces. In addition to children, these pages support featuredLinks to highlight key articles, and optionally changelog to pull recent entries from the GitHub Changelog.

The homepage

The homepage (content/index.md) is the only file that uses childGroups. Where a normal index page lists children as a flat array, the homepage groups them into named sections displayed in the main content area.
Every path in a childGroups.children array must also appear in the top-level children array.

Product guides pages

A product guides page (for example, the Actions guides page) uses layout: product-guides and renders a filterable list of articles. You can populate it two ways:
  • learningTracks — references named learning tracks defined in data/learning-tracks/*.yml. The featured track is configured in that YAML file.
  • includeGuides — an explicit list of article paths. Each article must have a contentType in its frontmatter for the filter UI to work.

Journey pages

Journey landing pages (layout: journey-landing) present a set of sequential learning paths. Each path is a journeyTracks entry with an id, a title, an optional description, and an ordered guides array.
The alternativeNextStep field renders a branch prompt beneath a step — useful when readers might want to skip ahead or take a different path through the material. It supports Liquid variables and [AUTOTITLE] links.

How the site discovers pages

The site build does not crawl the filesystem. It walks the children graph starting from content/index.md. Every reachable path becomes a valid URL; everything else does not exist from the site’s perspective. This means:
  • Adding a new article requires both creating the .md file and listing it in the parent index.md.
  • Renaming or moving a file requires updating the children entry and adding a redirect_from entry on the new page.
  • Deleting a file requires removing it from children (and adding a redirect if the URL should remain accessible).