Skip to content

Commit 7982280

Browse files
Merge branch 'main' into fix-github-pro-upgrade-flow
2 parents 77dd1bb + 7d174f3 commit 7982280

2,739 files changed

Lines changed: 534680 additions & 238234 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/CONTRIBUTING.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ For complete style guidance, see our [style guide](https://docs.github.com/en/co
7878

7979
<img src="/contributing/images/contribution_cta.png" />
8080

81-
**Make changes in a codespace:** See "[Working in a codespace](https://github.com/github/docs/blob/main/contributing/codespace.md)" for documentation-specific setup.
81+
**Make changes in a codespace:** See "[Working on GitHub Docs in a codespace](https://docs.github.com/en/contributing/setting-up-your-environment-to-work-on-github-docs/working-on-github-docs-in-a-codespace)" for documentation-specific setup.
8282

8383
**Make changes locally:**
8484
1. Fork the repository (see [official forking guide](https://docs.github.com/en/contributing))

.github/agents/driver-writer.md

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
---
2+
3+
name: "Driver-writer"
4+
description: "Use when writing, editing, or reviewing content for the Driver persona: enterprise administrators, platform engineers, billing managers, security leads, and others who enable developers at scale."
5+
6+
---
7+
8+
# Driver-writer Agent
9+
10+
You are a writing assistant for the GitHub Docs team. You help writers create, edit, and review documentation that serves the **Driver persona**.
11+
12+
A Driver is any GitHub user who supports the work of multiple developers by making changes to GitHub at scale. They remove barriers and enable developers to work efficiently while providing guardrails for compliance and security. Drivers include enterprise administrators, billing managers, application security leads, CI/CD administrators, tech leads, and OS maintainers.
13+
14+
Our team prioritizes **self-serve enterprise customers** that use GitHub Enterprise but are not large enough to get dedicated support from a GitHub sales or success team. These customers rely heavily on documentation to set up and manage their enterprise. When making content decisions, optimize for this audience.
15+
16+
Drivers come from two broad backgrounds, and content should account for both:
17+
18+
* **IT administration**: Expects process and controls based on experience with other enterprise systems. May use terminology from other platforms when searching for information.
19+
* **Development**: Fewer preconceptions about enterprise administration. May have limited knowledge of best practices for setting up large systems.
20+
21+
## What makes Driver content different
22+
23+
Driver content is distinct from developer-focused (Builder) content in a few key ways. Apply these when writing or editing:
24+
25+
### Frame value in terms of the enterprise, not individual productivity
26+
27+
Builder content connects features to the developer's own workflow. Driver content should connect features to what Drivers care about: compliance, security posture, cost management, developer enablement at scale, and reducing operational risk.
28+
29+
* Instead of: "You can restrict email notifications for your enterprise."
30+
* Write: "You can prevent your enterprise's information from leaking into personal email accounts."
31+
32+
### Help Drivers make confident decisions
33+
34+
Drivers often face choices with long-lasting, hard-to-reverse consequences (e.g., choosing between EMU and classic authentication, selecting an identity provider, structuring enterprises and organizations). Content should present enough context for the reader to choose confidently: what the tradeoffs are, what most enterprises do, and what cannot be changed later.
35+
36+
### Write for people who manage GitHub, not people who use it to code
37+
38+
Drivers are configuring, monitoring, and governing, not writing code. They are less likely to want code examples and more likely to need:
39+
40+
* Clear explanations of how settings interact and propagate across an enterprise
41+
* Guidance on rollout sequence and dependencies between configuration steps
42+
* Visibility into what their developers will experience as a result of their changes
43+
44+
### Be explicit about policy scope and cascade
45+
46+
When writing about enterprise settings or policies, always clarify what level the setting operates at (enterprise, organization, repository) and how it cascades. Make it clear who controls the setting and whether lower levels can override it. When parallel articles exist for different levels (e.g., enterprise vs. org), keep the structure, terminology, and level of detail consistent between them.
47+
48+
### Flag specific high-risk claims for verification
49+
50+
Driver actions often affect an entire enterprise and can be hard to reverse, so a single inaccurate detail can have outsized consequences: a security gap, a compliance failure, unexpected cost, or an administrator locking themselves out. Do not flag an entire article as high-risk just because of its topic. Instead, identify the specific claims most likely to cause harm if wrong, and call each one out individually for the writer to verify.
51+
52+
Pay closest attention to discrete, checkable claims in these areas:
53+
54+
* Authentication and identity (e.g., specific SAML/SCIM attribute values, SSO setup steps)
55+
* Security and compliance policy behavior and enforcement
56+
* Billing, licensing, and spending controls (specific numbers, thresholds, what counts toward usage)
57+
* Irreversible or enterprise-wide configuration steps
58+
* Exact permission or role requirements for an action
59+
60+
For example, in an article about configuring SSO, do not say "verify this entire article." Instead, flag the specific risky claims, e.g.: "Step 6 says to set the SAML `NameID` to the user's email. Confirm the exact required attribute with the identity team, since the wrong value will block all sign-ins."
61+
62+
## Driver user journey
63+
64+
Drivers move through these phases with GitHub. Content should meet them where they are:
65+
66+
* **Evaluate**: Researching tools that add value for the team.
67+
* **Onboard**: Understanding best practices to configure the enterprise. Relying on documentation before reaching out to people.
68+
* **Adopt**: Monitoring rollout, managing licenses, evaluating ROI.
69+
* **Optimize**: Monitoring data, auditing configuration for efficiency.
70+
* **Sustain**: Promoting best practices, making minimal configuration changes.
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
---
2+
applyTo: "content/**,data/reusables/**"
3+
---
4+
5+
# Content guidelines for docs.github.com
6+
7+
**When to use**: Writing, editing, or reviewing documentation articles and reusable prose. These are strategic content rules: what to write and how to focus an article.
8+
9+
When asked to work on one part of a larger article, read the whole article first so you can judge whether it meets these guidelines as a whole.
10+
11+
**How to apply these guidelines**: Treat them as strategic suggestions to weigh per article, not mechanical rules to enforce. The right emphasis depends on the article's content type (procedural, conceptual, or reference), so use judgment and stay silent when a guideline does not cleanly apply, rather than flagging or rewriting reflexively.
12+
13+
## Keep only essential content
14+
15+
The strategic priority is simplification: create less content and remove content that is not essential, so readers can navigate higher-value content more easily. Flag content to trim or remove by asking:
16+
17+
* Does it serve a large or high-value audience, rather than an edge case the company does not prioritize?
18+
* Does it help people use GitHub the way we want them to, rather than documenting every possible use?
19+
* Would a typical internet user figure this out on their own by exploring the UI?
20+
* Is the information presented at the moment the reader actually needs it?
21+
22+
## Intros: pull people in
23+
24+
This section applies mainly to the `intro` frontmatter field and, for conceptual articles, section openings.
25+
26+
* Open with the value the reader gets, and the product that delivers it, rather than a restatement of the task or a bare feature name. Technical detail is not bad and belongs in the article; it just should not be the first thing the reader sees when a value-led opening is possible.
27+
* Do not repeat the wording of the title.
28+
* Do not start with "Learn how to..."; it buries the value.
29+
* When conceptual and procedural articles cover the same topic, differentiate them through sentence structure. Conceptual describes what the thing is and why it matters ("{% data variables.product.prodname_copilot %} is an AI coding assistant that helps you write code faster."). Procedural describes what the reader will do and the value they get ("Start using {% data variables.product.prodname_copilot %} to write code faster.").
30+
31+
Examples of strong intros by content type:
32+
33+
* **Conceptual** ("Larger runners"): "Organize and govern your workflows with larger runners using runner groups, concurrency policies, and granular access controls."
34+
* **Procedural** ("Running jobs on larger runners"): "Route jobs to the right machines by using runner groups and workflow labels."
35+
* **Reference** ("Supported AI models in {% data variables.product.prodname_copilot %}"): "Identify which AI models are supported in {% data variables.product.prodname_copilot %} for each client and plan."
36+
37+
## Drive people to the product
38+
39+
* Every article should move the reader to try or use the product, directly or indirectly. Even reference articles do this: readers consult them in order to use the product, so the support is built in and a separate CTA is often unnecessary.
40+
* Only include a CTA link when it genuinely makes the reader's task easier, for example by saving them the time of navigating to a settings page themselves. Do not force a CTA; if none would genuinely help the reader, do not add one. Avoid turning articles into clickbait.
41+
* A CTA can take several forms, for example a direct link to the relevant product or feature, a Copilot prompt the reader can run, or a link to start a free trial.
42+
* Only link to a URL that is the same for everyone on that version. Do not add a CTA when the in-product URL must include an enterprise, organization, or repository name (for example, `https://github.com/ORG/REPO/settings/copilot/code_review`), because the link cannot be made to work for all readers.
43+
* Procedural articles: include a CTA wherever one genuinely helps, as directly as possible.
44+
* Conceptual articles: point the reader to exactly one clear next step, usually a link to the related procedure (for example, an "About pull requests" article points to "Creating a pull request"). Place it where the reader is ready to act, typically at the end of the article.
45+
46+
## Energy and tone
47+
48+
These apply to the prose in an article (intros and explanatory text), not to structural elements like tables, procedural steps, or code.
49+
50+
* Lead with value and real-life impact over technical detail.
51+
* Connect features to the reader's real-life problems to generate genuine interest.
52+
* Use plain, friendly, approachable language. Avoid marketing jargon, buzzwords, and inflated adjectives.
53+
54+
## Scannability
55+
56+
* Give each article exactly one purpose, regardless of content type. That purpose may be physical (e.g., enabling a setting), conceptual (e.g., building a mental model of what a feature does and why it matters, choosing between two options), or referential (e.g., determining which AI models are available to the reader). Include only information central to that purpose for most readers.
57+
* Write for the one reader scenario the article targets, for example a particular deployment configuration (GHEC with EMUs vs. Classic) or a particular type of reader (an open source maintainer vs. an enterprise developer). When the article has a content design plan, target the audience it identifies rather than inventing one; for small edits without a plan, follow the audience the existing article is clearly written for. Do not branch content to serve multiple audiences; readers in other scenarios can adapt the guidance. The exception is version differences: when in-article `{% ifversion %}` branching is genuinely required (see the versioning rules in `content.instructions.md`), it is not a scannability violation.
58+
* Ruthlessly minimize links. Only link when you actively want most readers to follow it in the ideal scenario. No "just in case" links. Links that build a logical user journey are exactly the kind to keep, for example a Prerequisites link that sends the reader to setup they need first, or a Next steps link that points them to the natural follow-on task.
59+
* Ruthlessly minimize alerts (notes, tips, warnings): more than one per article should be exceptional, and crowding several into one section is worse than spreading them out. Keep each to 1-2 sentences. Don't open an article or section with an alert unless the reader needs it before the surrounding content. Prefer folding a useful alert into the prose over deleting it, but first apply this test: if the reader must actually notice it to use the page correctly, keep it as an alert (don't fold or count it), since folding defeats its purpose. This covers, for example, critical warnings, plan or availability constraints, public preview notices, and cues that orient the reader to how the page works or which content applies to them.
60+
* Prefer short sentences and paragraphs, generous white space, and formatting like bold and tables to highlight key information. Use a table only for genuinely complex data that belongs in a tabular format; do not add a table that repeats information already stated more clearly in prose.

.github/instructions/content.instructions.md

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
applyTo: "content/**,data/**,**/*.md"
2+
applyTo: "content/**,data/**"
33
---
44

55
# Copilot content instructions for docs.github.com
@@ -16,6 +16,14 @@ Before committing content changes, always:
1616
3. **Verify [AUTOTITLE] links** point to existing articles
1717
4. **Run tests** on changed content: `npm run test -- src/content-render/tests/render-changed-and-deleted-files.ts`
1818

19+
## Accuracy and flagging uncertainty
20+
21+
AI assistants can produce plausible but incorrect information. To protect readers and writers:
22+
23+
* Never fabricate product behavior, settings, permissions, API parameters, or limits. If you cannot verify a detail from the source material or the product itself, say so instead of guessing.
24+
* Flag uncertainty at the level of the specific claim, not the whole article. Identify the individual sentence, step, value, or setting you are unsure about, rather than labeling an entire article as "needs review."
25+
* After writing or editing, give the writer a checklist of each specific claim to verify, noting where it appears (the exact step or sentence) and why it needs checking. Prioritize claims where being wrong could have serious consequences, such as security, authentication, permissions, billing, or any irreversible action, and recommend confirming those with the relevant product or engineering team.
26+
1927
## Bullet lists
2028

2129
The bulleted points in a bullet list should always be denoted in Markdown using an asterisk, not a hyphen.
@@ -107,6 +115,17 @@ For such content, DO NOT use in-article Liquid versioning such as `{% ifversion
107115

108116
All articles that are ONLY for GitHub Enterprise Server (GHES) should be versioned in the frontmatter using feature-based versioning defined in `data/features/`.
109117

118+
### Versioning for GHES content: always use feature-based versioning
119+
120+
If content is intended to ship to GitHub Enterprise Server, use **feature-based versioning (FBV)**.
121+
122+
* Do **not** suggest removing GHES frontmatter versioning or hardcode version strings (for example, `free-pro-team@latest`) just to make links or tests pass.
123+
* If CI fails because a GHES link cannot be built, treat that as a versioning mismatch—not a signal to de-scope GHES.
124+
* Add or reuse the appropriate feature flag in `data/features/`. Use it in `versions.feature` frontmatter when an article's availability follows the feature, and use Liquid conditionals only for version-specific blocks within a broader article.
125+
* Keep frontmatter and in-article versioning aligned so links render for every supported version.
126+
127+
For guidance, see [About feature-based versioning](https://docs.github.com/en/contributing/writing-for-github-docs/versioning-documentation#about-feature-based-versioning).
128+
110129
### FPT, GHEC, GHES articles
111130

112131
All articles that are versioned for all of FPT, GHEC, and GHES in the frontmatter MAY require certain blocks of content to be versioned using in-article Liquid versioning. Before recommending this, check if this is really the case.

.github/instructions/style-guide-summary.instructions.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
applyTo: "content/**,data/**,**/*.md"
2+
applyTo: "content/**,data/**"
33
---
44

55
# Concise style guide for docs.github.com

.github/workflows/all-documents.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ jobs:
2020
runs-on: ubuntu-latest
2121
steps:
2222
- name: Check out repo
23-
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
23+
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
2424

2525
- uses: ./.github/actions/node-npm-setup
2626

.github/workflows/article-api-docs.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ jobs:
2222
if: github.repository == 'github/docs-internal' || github.repository == 'github/docs'
2323
steps:
2424
- name: Checkout
25-
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
25+
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
2626

2727
- uses: ./.github/actions/node-npm-setup
2828

.github/workflows/auto-add-ready-for-doc-review.yml

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,20 @@ jobs:
2525

2626
steps:
2727
- name: Check out repo
28-
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
28+
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
29+
30+
- name: Generate GitHub App token
31+
id: app-token
32+
uses: actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1 # v3.2.0
33+
with:
34+
app-id: ${{ secrets.DOCS_BOT_APP_ID }}
35+
private-key: ${{ secrets.DOCS_BOT_APP_PRIVATE_KEY }}
2936

3037
- name: Check team membership
3138
id: membership_check
3239
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
3340
with:
34-
github-token: ${{ secrets.DOCS_BOT_PAT_BASE }}
41+
github-token: ${{ steps.app-token.outputs.token }}
3542
script: |
3643
try {
3744
await github.rest.teams.getMembershipForUserInOrg({
@@ -48,7 +55,7 @@ jobs:
4855
- name: Add ready-for-doc-review label
4956
if: steps.membership_check.outputs.result == 'false'
5057
env:
51-
GITHUB_TOKEN: ${{ secrets.DOCS_BOT_PAT_BASE }}
58+
GITHUB_TOKEN: ${{ steps.app-token.outputs.token }}
5259
PR_URL: ${{ github.event.pull_request.html_url }}
5360
run: |
5461
gh pr edit $PR_URL --add-label ready-for-doc-review

.github/workflows/benchmark-pages.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ jobs:
2121
ISSUE_REPO: github/docs-engineering
2222
steps:
2323
- name: Checkout
24-
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
24+
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
2525
with:
2626
persist-credentials: 'false'
2727
- name: Generate GitHub App token

0 commit comments

Comments
 (0)