Skip to content

Commit a4fc530

Browse files
authored
Merge branch 'main' into fix-vs-2026-billing-doc
2 parents 89bc0f9 + 6db070d commit a4fc530

464 files changed

Lines changed: 454392 additions & 226322 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/agents/driver-writer.md

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
---
22

3-
name: "Driver-Writer"
3+
name: "Driver-writer"
44
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-
tools: ['read', 'edit/editFiles', 'search']
65

76
---
87

9-
# Driver-Writer Agent
8+
# Driver-writer Agent
109

1110
You are a writing assistant for the GitHub Docs team. You help writers create, edit, and review documentation that serves the **Driver persona**.
1211

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: 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
# Copilot content instructions for docs.github.com

.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/enterprise-dates.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ jobs:
3232
app-id: ${{ secrets.DOCS_BOT_APP_ID }}
3333
private-key: ${{ secrets.DOCS_BOT_APP_PRIVATE_KEY }}
3434
owner: github
35-
repositories: docs-internal,docs-engineering
35+
repositories: docs-internal,docs-engineering,enterprise-releases
3636

3737
- uses: ./.github/actions/node-npm-setup
3838

.github/workflows/enterprise-release-issue.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ jobs:
2727
app-id: ${{ secrets.DOCS_BOT_APP_ID }}
2828
private-key: ${{ secrets.DOCS_BOT_APP_PRIVATE_KEY }}
2929
owner: github
30-
repositories: docs-content,docs-engineering
30+
repositories: docs-content,docs-engineering,enterprise-releases
3131

3232
- uses: ./.github/actions/node-npm-setup
3333

.github/workflows/keep-caches-warm.yml

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -30,15 +30,6 @@ jobs:
3030
steps:
3131
- name: Check out repo
3232
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
33-
- name: Generate GitHub App token
34-
id: app-token
35-
uses: actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1 # v3.2.0
36-
with:
37-
app-id: ${{ secrets.DOCS_BOT_APP_ID }}
38-
private-key: ${{ secrets.DOCS_BOT_APP_PRIVATE_KEY }}
39-
owner: github
40-
repositories: docs-engineering
41-
4233
- uses: ./.github/actions/node-npm-setup
4334

4435
- uses: ./.github/actions/cache-nextjs
@@ -57,6 +48,16 @@ jobs:
5748
with:
5849
slack_token: ${{ secrets.SLACK_DOCS_BOT_TOKEN }}
5950

51+
- name: Generate GitHub App token
52+
if: ${{ failure() && github.event_name != 'workflow_dispatch' }}
53+
id: app-token
54+
uses: actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1 # v3.2.0
55+
with:
56+
app-id: ${{ secrets.DOCS_BOT_APP_ID }}
57+
private-key: ${{ secrets.DOCS_BOT_APP_PRIVATE_KEY }}
58+
owner: github
59+
repositories: docs-engineering
60+
6061
- uses: ./.github/actions/create-workflow-failure-issue
6162
if: ${{ failure() && github.event_name != 'workflow_dispatch' }}
6263
with:

.github/workflows/line-endings.yml

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
name: Line endings
2+
3+
# **What it does**: Fails if any committed file violates the repo's `.gitattributes`
4+
# line-ending rules (for example, CRLF in a file declared `eol=lf`).
5+
# **Why we have it**: `.gitattributes` (`*.md text eol=lf`, `* text=auto`) only
6+
# normalizes line endings during a local `git add`/checkout. A server-side
7+
# squash-merge can commit CRLF blobs that bypass it. A file with mixed line endings
8+
# then shows as permanently "modified" on Linux runners, which breaks PR-creating
9+
# sync workflows that use peter-evans/create-pull-request. See
10+
# github/docs-engineering#6657 and github/docs-engineering#6656.
11+
# **Who does it impact**: Docs engineering, open-source engineering contributors.
12+
13+
on:
14+
workflow_dispatch:
15+
merge_group:
16+
pull_request:
17+
18+
permissions:
19+
contents: read
20+
21+
# This allows a subsequently queued workflow run to interrupt previous runs
22+
concurrency:
23+
group: '${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}'
24+
cancel-in-progress: true
25+
26+
jobs:
27+
line-endings:
28+
if: github.repository == 'github/docs-internal' || github.repository == 'github/docs'
29+
runs-on: ubuntu-latest
30+
steps:
31+
- name: Check out repo
32+
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
33+
34+
- name: Check line endings
35+
# Re-stage every file through the `.gitattributes` filters and fail if any
36+
# committed blob disagrees with them (usually CRLF where LF is required).
37+
run: |
38+
git add --renormalize .
39+
if ! git diff --cached --quiet; then
40+
echo "::error::These files violate .gitattributes line-ending rules (usually CRLF that should be LF):"
41+
git diff --cached --name-only
42+
echo ""
43+
echo "Fix locally with: git add --renormalize . && git commit"
44+
exit 1
45+
fi

.github/workflows/link-check-external.yml

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -61,15 +61,6 @@ jobs:
6161
run: |
6262
if [ -f "artifacts/external-link-report.md" ]; then
6363
echo "has_report=true" >> $GITHUB_OUTPUT
64-
# Prepend disclaimer banner
65-
tmp=$(mktemp)
66-
{
67-
echo "> [!NOTE]"
68-
echo "> **No action needed right now.** The link checker is being actively worked on and may produce false positives. You can safely ignore this report for now. We'll let you know when it's reliable."
69-
echo ""
70-
cat "artifacts/external-link-report.md"
71-
} > "$tmp"
72-
mv "$tmp" "artifacts/external-link-report.md"
7364
else
7465
echo "has_report=false" >> $GITHUB_OUTPUT
7566
echo "No broken link report generated - all links valid!"

.github/workflows/link-check-github-github.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,9 @@ jobs:
5555
curl --retry-connrefused --retry 5 -I http://localhost:4000/
5656
5757
- name: Run broken github/github link check
58+
env:
59+
# Needs a token with access to github/github; the app token is scoped to it above
60+
GITHUB_TOKEN: ${{ steps.app-token.outputs.token }}
5861
run: |
5962
npm run check-github-github-links -- broken_github_github_links.md
6063

0 commit comments

Comments
 (0)