Skip to content

Commit acccd6e

Browse files
authored
Merge branch 'main' into patch-1
2 parents a2f6e41 + 6db070d commit acccd6e

810 files changed

Lines changed: 653961 additions & 372017 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: 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: 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/benchmark-pages.yml

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,14 @@ jobs:
2424
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
2525
with:
2626
persist-credentials: 'false'
27+
- name: Generate GitHub App token
28+
id: app-token
29+
uses: actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1 # v3.2.0
30+
with:
31+
app-id: ${{ secrets.DOCS_BOT_APP_ID }}
32+
private-key: ${{ secrets.DOCS_BOT_APP_PRIVATE_KEY }}
33+
owner: github
34+
repositories: docs-engineering
2735

2836
- uses: ./.github/actions/node-npm-setup
2937

@@ -50,7 +58,7 @@ jobs:
5058
- name: Check results and create issue if needed
5159
if: always()
5260
env:
53-
GH_TOKEN: ${{ secrets.DOCS_BOT_PAT_BASE }}
61+
GH_TOKEN: ${{ steps.app-token.outputs.token }}
5462
RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
5563
run: |
5664
echo "Reading benchmark results..."
@@ -166,4 +174,4 @@ jobs:
166174
- uses: ./.github/actions/create-workflow-failure-issue
167175
if: ${{ failure() && github.event_name != 'workflow_dispatch' }}
168176
with:
169-
token: ${{ secrets.DOCS_BOT_PAT_BASE }}
177+
token: ${{ steps.app-token.outputs.token }}

.github/workflows/changelog-agent.yml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ jobs:
4747
steps:
4848
- name: Generate GitHub App token
4949
id: app-token
50-
uses: actions/create-github-app-token@3ff1caaa28b64c9cc276ce0a02e2ff584f3900c5 # v2.0.2
50+
uses: actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1 # v3.2.0
5151
with:
5252
app-id: ${{ secrets.DOCS_BOT_APP_ID }}
5353
private-key: ${{ secrets.DOCS_BOT_APP_PRIVATE_KEY }}
@@ -591,7 +591,7 @@ jobs:
591591
body: prBody,
592592
head: branchName,
593593
base: 'main',
594-
draft: true,
594+
draft: false,
595595
});
596596
597597
// Add labels
@@ -600,22 +600,22 @@ jobs:
600600
owner: 'github',
601601
repo: 'docs-content',
602602
issue_number: pullRequest.number,
603-
labels: ['ready-for-doc-review', 'skip FR board', 'llm-generated'],
603+
labels: ['skip FR board', 'llm-generated'],
604604
});
605605
} catch (err) {
606606
core.warning(`Failed to add labels: ${err.message}`);
607607
}
608608
609-
// Assign to PR author
609+
// Request review from PR author
610610
try {
611-
await github.rest.issues.addAssignees({
611+
await github.rest.pulls.requestReviewers({
612612
owner: 'github',
613613
repo: 'docs-content',
614-
issue_number: pullRequest.number,
615-
assignees: [process.env.PR_AUTHOR],
614+
pull_number: pullRequest.number,
615+
reviewers: [process.env.PR_AUTHOR],
616616
});
617617
} catch (err) {
618-
core.warning(`Failed to assign PR to @${process.env.PR_AUTHOR}: ${err.message}`);
618+
core.warning(`Failed to request review from @${process.env.PR_AUTHOR}: ${err.message}`);
619619
}
620620
621621
core.setOutput('changelog_pr_url', pullRequest.html_url);

.github/workflows/codeql.yml

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ jobs:
3030
runs-on: ubuntu-latest
3131
steps:
3232
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
33+
3334
- uses: github/codeql-action/init@e296a935590eb16afc0c0108289f68c87e2a89a5 # v4.30.7
3435
with:
3536
languages: javascript # comma separated list of values from {go, python, javascript, java, cpp, csharp, ruby}
@@ -41,7 +42,17 @@ jobs:
4142
with:
4243
slack_token: ${{ secrets.SLACK_DOCS_BOT_TOKEN }}
4344

45+
- name: Generate GitHub App token
46+
if: ${{ failure() && github.event_name != 'pull_request' }}
47+
id: app-token
48+
uses: actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1 # v3.2.0
49+
with:
50+
app-id: ${{ secrets.DOCS_BOT_APP_ID }}
51+
private-key: ${{ secrets.DOCS_BOT_APP_PRIVATE_KEY }}
52+
owner: github
53+
repositories: docs-engineering
54+
4455
- uses: ./.github/actions/create-workflow-failure-issue
4556
if: ${{ failure() && github.event_name != 'pull_request' }}
4657
with:
47-
token: ${{ secrets.DOCS_BOT_PAT_BASE }}
58+
token: ${{ steps.app-token.outputs.token }}

.github/workflows/copilot-setup-steps.yml

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,19 +30,27 @@ jobs:
3030
steps:
3131
- name: Checkout code
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-early-access
3341

3442
- uses: ./.github/actions/node-npm-setup
3543

3644
# Search and language test suites require a running Elasticsearch instance.
3745
- uses: ./.github/actions/setup-elasticsearch
3846
with:
39-
token: ${{ secrets.DOCS_BOT_PAT_BASE }}
47+
token: ${{ steps.app-token.outputs.token }}
4048

4149
# docs-internal has early-access content that must be fetched separately.
4250
- uses: ./.github/actions/get-docs-early-access
4351
if: ${{ github.repository == 'github/docs-internal' }}
4452
with:
45-
token: ${{ secrets.DOCS_BOT_PAT_BASE }}
53+
token: ${{ steps.app-token.outputs.token }}
4654

4755
# Many test suites depend on Next.js build artifacts.
4856
- name: Build

.github/workflows/count-translation-corruptions.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ jobs:
2525
steps:
2626
- name: Generate GitHub App token
2727
id: app-token
28-
uses: actions/create-github-app-token@3ff1caaa28b64c9cc276ce0a02e2ff584f3900c5 # v2.0.2
28+
uses: actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1 # v3.2.0
2929
with:
3030
app-id: ${{ secrets.DOCS_BOT_APP_ID }}
3131
private-key: ${{ secrets.DOCS_BOT_APP_PRIVATE_KEY }}

0 commit comments

Comments
 (0)