We document each of the events that may appear in the audit logs for each type of account: user, organization, and enterprise.
When writing the description for an audit log event, describe the event that took place in a way that applies to all versions, using past tense and passive voice. Do not begin the sentence with phrases that are already implied by the context of the article, such as "Triggered by."
Alerts emphasize information within an article that is of special importance and justifies breaking the flow of information.
Use alerts sparingly. Do not use consecutive alerts, or more than one alert per section.
Alerts should be concise. If the information consists of more than a couple of sentences, or requires an ordered or unordered list, consider placing the information under a section heading instead.
Alert typesWe use five types of alerts: Note, Tip, Important, Warning, and Caution.
NoteProvides additional context that users may need to take into account. Tasks can be accomplished without the information in note alerts, but some users in some contexts may benefit from the note.
Notes are particularly useful for communicating parenthetical information that is not central to the process being described:
For example, Evaluating alerts from secret scanning uses a note to inform users that metadata for GitHub tokens is currently in public preview.
Note
Metadata for GitHub tokens is currently in public preview and subject to change.
TipRecommendations, best practices or product hints. Tips contain non-essential information that users can follow at their discretion. Particularly useful in articles aimed at new users.
For example, Personalizing your profile uses a tip alert to help users understand what to expect when they @mention an organization.
Tip
When you @mention an organization, only those that you're a member of will autocomplete. You can still @mention organizations that you're not a member of, like a previous employer, but the organization name won't autocomplete for you.
ImportantHighlights key information users need to know to achieve their goal.
WarningHighlights potential risks that a user should be aware of before starting or continuing with a task.
Warning alerts are particularly relevant for processes that occur outside the GitHub UI, such as in the command line or through an API.
For example, About SSH certificate authorities includes instructions for the command line, and uses a warning alert to inform users that once issued, certificates cannot be revoked:
Warning
After a certificate has been signed and issued, the certificate cannot be revoked. Make sure to use the -V flag to configure a lifetime for the certificate, or the certificate can be used indefinitely.
CautionAlerts users to dangerous or destructive actions that warrant extreme caution before performing, particularly where there is a security risk or potential for data loss.
Caution alerts will generally only be necessary when describing processes that occur outside the GitHub UI, such as in the command line or through an API.
Formatting alertsWe use standard formatting and colors for different types of alerts across doc sets.
Alerts are rendered using Markdown.
Note:
> [!NOTE]
> Keep this in mind.
Tip:
> [!TIP]
> Here's a suggestion.
Warning:
> [!WARNING]
> Be careful.
Caution:
> [!CAUTION]
> Be extremely careful.
Liquid syntax for alerts is still supported and may still appear in older articles, but should not be used for new alerts.
For more information on formatting alerts, see “Alerts” in Using Markdown and Liquid in GitHub Docs.
Call to action (CTA)A CTA is a link or button prompting users to take the next step in their journey. It will send a user to a different location.
The key component of a CTA is that it helps the user to do what they were trying to do, either by guiding them to the next step or leading them to a product or feature they need.
In considering when to use a CTA, ask the following questions:
We should only use a CTA when the answer to both questions is yes.
How is a CTA different from a link?A CTA is an explicit direction to the user to take an immediate action, such as “Try Copilot for free” or “Create your own repository”. A CTA in our documentation should only lead people to a GitHub-owned domain.
For example, the CTA on Setting up a trial of GitHub Enterprise Cloud links to an enterprise sales page on GitHub.com.
Style a CTA using the following format.
<a href="https://github.com/DESTINATION/URL?ref_cta=CTA+NAME&ref_loc=LOCATION&ref_page=docs" target="_blank" class="btn btn-primary mt-3 mr-3 no-underline"><span>Try PRODUCT NAME</span> {% octicon "link-external" height:16 %}</a>
Replace the placeholders with the relevant information for your CTA.
DESTINATION/URL
: The URL that the button should navigate to.CTA+NAME
: The name of the CTA. For example, GHEC+trial
or Copilot+Business+Trial
.LOCATION
: The location in GitHub Docs of the CTA. For example, Setting+up+a+trial+of+GitHub+Enterprise+Cloud
.Keep lines in code samples to about 60 characters, to avoid requiring readers to scroll horizontally in the code block. Locate explanatory text before the code block, rather than using comments inside the code block. See Using Markdown and Liquid in GitHub Docs for more information on the syntax and formatting of code blocks.
Within code blocks:
Specify the language of the sample after the first code fence. For a list of all supported languages, see Code languages in the github/docs
repository.
Do not use HTML to style or markup a code block.
Style any placeholders that people need to replace with their own values in all caps.
git checkout -b BRANCH-NAME
git checkout -b <branch-name>
Do not use command prompts like $
before the command itself. These prompts make it challenging for readers to copy and paste the command.
If you show a command and the command's output, comment out the output in the example.
Use:
command
# output
Avoid:
$ command
output
If your code example includes {
or }
that should render, wrap that section in {% raw %}
{% endraw %}
to disable Liquid processing for that section.
Use:
GITHUB_TOKEN: {% raw %}${{ secrets.GITHUB_TOKEN }}{% endraw %}
Avoid:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
If your code example includes content that should be parsed, wrap that section in <pre>
</pre>
tags to parse rather than escape the content in the section.
Use inline code blocks to refer to short command names.
ghe-cluster-status
command.Use command blocks for longer or more complex commands.
Use: Enable maintenance mode according to your scheduled window by connecting to the administrative shell of any cluster node and running:
ghe-cluster-maintenance -s
Do not include command prompts such as $
. Avoid inline links in command names.
If you show the output of a command, comment out the output in the example so that people can copy and paste the command and execute it without modification.
Use:
git lfs install
# Git LFS initialized.
Avoid:
$ git lfs install
> Git LFS initialized.
When code examples refer to a larger file, show the relevant section of the file, so that users understand how to edit their own code in context.
on:
schedule:
- cron: "40 19 * * *"
schedule:
- cron: "40 19 * * *"
File names and directory names
Use backticks to format references to file names and directory names in a monospaced font. If a file type generally follows a specific capitalization convention, such as all caps for README files, use the established convention.
README.md
file, add info about your repository..github/workflows/
directory, create the example-workflow.yml
file.example-workflow.yml
file.In YAML examples, such as actions and workflow files, use two spaces to indent lines within nested lists and block sequences.
steps:
- uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python }}
To indent reusables, see data/reusables/README.md
.
Workflow runs are delayed when too many workflows run at once. Since many users copy code from GitHub Docs, we should use examples that guide users away from congested times.
Use bold to emphasize words or parts of a sentence. Use emphasis sparingly (no more than five contiguous words), and remember that it is a visual aid for scannability for sighted users.
For example:
When you include the text of an error message from a GitHub product or interface in an article, format the text according to the interface where the message appears.
If the message appears in GitHub's web interface, or in a graphical client app like GitHub Desktop or GitHub Mobile, treat the message like other text in the UI. For more information, see User interface text.
If the message appears in a command-line interface, log output, or a response from an API, reproduce the text exactly and use backticks to format the message using a monospaced font.
In general, do not document content that will expire. Anyone who visits GitHub Docs should be confident that the information is accurate and up to date.
If you must document content that you know will expire, you can use the content linter to tag and track the content's expiration date. This will flag the content as outdated and avoids tracking expiration dates outside of the content itself. See Using the content linter for information on how to format expiring content tags.
Avoid using footnotes where possible. Consider instead whether you could use a alert or present the information in another way. See some examples of alternatives to footnotes from NICE.org.uk.
If you must use footnotes, use Markdown-native footnotes ([^1]
). Footnote markers will be hyperlinked to the footnote reference, which will be listed at the bottom of the page with a backlink to the marker.
Note that regardless of the identifier you use (letters, words), footnotes will render as sequential numbers.
| | Mona | Ursula | Paul | Davy Jones[^1] |
|---|---|---|---|---|
|Favorite pastime| Shipping code | Tricking mermaids[^2] | Predicting sports | Haunting seafarers |
|Uses powers for good| Yes | No | Yes | No |
[^1]: Not to be confused with Davy Jones of The Monkees
[^2]: Also humans
Headers must adequately describe the content under them. Headers can either follow the guidelines for writing titles or can be written as questions. Use sentence casing for headers.
If an article has headers, the headers must start with an H2 level header. You can use H3 and H4 level headers to further organize content into related groups, but you cannot skip header levels. There must be text content between a header and subheader, such as an introduction.
Use:
## HEADER (H2)
TEXT
### SUBHEADER (H3)
TEXT
#### SUBHEADER (H4)
TEXT
Avoid:
## HEADER (H2)
#### SUBHEADER (H4)
Each header at the same level on a page must be unique.
Use:
## Examples (H2)
TEXT
### Prompts for writing code (H3)
TEXT
### Prompts for writing tests (H3)
TEXT
Use:
## Prompts for writing code (H2)
TEXT
### Example (H3)
TEXT
## Prompts for writing tests (H2)
TEXT
### Example (H3)
TEXT
Avoid:
## Example prompts (H2)
TEXT
### Example (H3)
TEXT
### Example (H3)
TEXT
We use static images including screenshots, diagrams, and graphs throughout the docs to complement textual information.
Do not use animated GIFs in the docs.
Alt textEvery image must include alt text providing a textual equivalent of the visual information.
Alt text provides a short description of a screenshot's content to benefit people who cannot see it.
Screenshot of the
Product name
+UI element
shown. TheUI element
+state of the element/controls
, and itskeyboard shortcut XYZ
, are outlined in dark orange.
Product name
, use the GitHub product or feature name, such as "GitHub Actions" or "GitHub repository," rather than just "GitHub."GitHub
as we do in running copy: {% data variables.product.prodname_dotcom %}
Screenshot of the GitHub committers by repository table. The horizontal kebab icon and "Download CSV report" button are outlined in dark orange.
Alt text for diagrams and graphsScreenshot of file options in a GitHub repository. A button with an arrow indicating a dropdown menu, labeled "Code," is outlined in dark orange.
Explain the information conveyed in the diagram or graph in text on the page.
Use alt text to express the core idea of the image, without duplicating the webpage text.
ExampleDiagram showing a five-step process by which a GitHub Actions runner can be automatically added to named classes of runners and then requested by specific jobs.
For example, see accompanying explanation of this diagram in the Actions documentation.
Alt text for images of command-line interfacesDo not use screenshots of command-line interfaces to convey commands and their output. Instead, directly provide the commands a user should use. For more information, see the Commands section of the style guide.
When using a screenshot of a command-line interface to show user interface elements, follow standard alt text guidelines for screenshots.
File names for imagesBe descriptive when naming image files: include the name, action, and UI element in the file name. Mirror product language. Use kebab case. Do not use Liquid conditionals in file names. If replacing an image, use the exact file name.
data-pack-purchase-button.png
purchase_button.png
purchase-button.png
To learn about creating and versioning images, see Creating and updating screenshots.
DiagramsTo learn about creating diagrams, see Creating diagrams for GitHub Docs.
Inclusive languageAs home to the largest developer community in the world, GitHub is committed to promoting diversity and inclusion in every aspect of what we do. All of our documentation is inclusive and respectful of our audience, which consists of people in widely varying circumstances from all over the planet. When we write our documentation, we use words that are inclusive, anti-racist, and accessible.
Individual words might be small, but together they can create community, belonging, and equity. Be empathetic in all word and style choices. Be accurate when referring to people and communities.
Use Avoid Allowlist Whitelist Denylist Blacklist Default/Main branch Master branch Resources about inclusive languageThe Microsoft Style Guide offers resources on bias-free communication, accessibility terms, and writing for all abilities:
More resources for learning about inclusive and accessible language and style:
For presenting keyboard shortcuts, follow the Microsoft Style Guide, except for the following differences:
Use the HTML <kbd>
tag for each individual key.
<kbd>Command</kbd>+<kbd>B</kbd>
Command+B
Use full words instead of symbols for Apple modifier keys.
Command
⌘
Use symbols for keys of special character, not full words.
.
, ,
, and →
.Period
, Comma
, and Right arrow
.Below are some usage highlights for how we present keyboard shortcuts in our documentation:
The basic syntax is to show keys with +
between key combinations, without any spaces.
<kbd>Command</kbd>+<kbd>B</kbd>
, which is rendered as Command+B.<kbd>Command</kbd> + <kbd>B</kbd>
or <kbd>Command + B</kbd>
which are rendered as Command + B or Command + B.Always capitalize letter keys for general references and keyboard shortcuts.
Use the correct modifier keys for the each operating system.
Note: Windows and Linux have Ctrl abbreviated, whereas on Mac it is spelled in full: Control.
For Windows and Linux:
For Mac:
Don't confuse key combinations with keys in a sequence.
When describing a keyboard shortcut for multiple operating systems, append the operating system in brackets after the shortcut. Describe the Mac shortcut first, then Windows/Linux.
Use: <kbd>Command</kbd>+<kbd>B</kbd> (Mac) or <kbd>Ctrl</kbd>+<kbd>B</kbd> (Windows/Linux)
, presented as:
Command+B (Mac) or Ctrl+B (Windows / Linux)
Avoid: <kbd>Ctrl</kbd>+<kbd>B</kbd> or <kbd>Command</kbd>+<kbd>B</kbd>
, presented as:
Ctrl+B or Command+B
GitHub Docs is licensed under a CC-BY license. If you reuse or modify licensed content in an article, you must make sure that the license is compatible and properly attributed.
Do not create reusables for license attributions. We must use the exact license a project is licensed under, so any attributions must be accurately written for the articles that they appear in.
If you are unsure of the legality of reusing any content, contact legal. If you are adding content with a license that is not listed below, you must receive a legal review before you can publish the content.
Attributing MIT-licensed contentIf we reuse or modify content under an MIT license, we must attribute the MIT license where the content appears.
At the end of the article containing MIT-licensed content
Legal notice
This text is only an example. Always use the license text from the project you are attributing.
## Legal notice
Portions have been adapted from [PROJECT](/LINK/TO/PROJECT) under the MIT license:
```
MIT License
Copyright YEAR COPYRIGHT-HOLDER
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
```
Linebreaks
For plain text, use linebreaks to separate paragraphs in the source (two consecutive linebreaks), rather than to create visual space in the source. Avoid unneeded linebreaks, especially in lists.
LinksLinks are used to connect people to additional information and to progress through tasks that require reading multiple articles.
Be frugal with links. Including too many links can distract from the main content or steal people's focus. All links should be considered in the context of the user journey: why might we send someone to this link and how do we get them back on track to complete their task?
Before adding a link, decide if someone must visit the link to understand the content or be successful using GitHub.
Links must be consistent, accessible to as many people as possible, translatable, and clear. People need to know where a link leads to and how it relates to what they want to accomplish.
Some best practices for using links:
apiVersion
query parameter in REST links unless you need to link to a specific calendar version of the REST docs. (This should be a rare occurrence.)You can introduce links with just the verb "see" if the context makes it clear what the link is for. If the context is not clear, use a phrase or sentence to introduce the link such as "For more information, see" or "To learn more about X, see Y."
Use the title of the documentation article, or external web page, as the link text. For any link that points to another article on the GitHub Docs site, use the special keyword AUTOTITLE
for the link text. See details in the content markup reference.
Do not apply any styling to links or wrap them in quotation marks.
See [AUTOTITLE](/PATH/TO/PAGE).
For more information, see [AUTOTITLE](/PATH/TO/PAGE#SECTION-LINK).
Do not use inline links, where words within the sentence are hyperlinked without any additional words to indicate that the sentence contains a link. This can be difficult to translate and read.
Do not include punctuation marks within a hyperlink.
OAuth2 tokens can be acquired programmatically for applications that are not websites. For more information, see [AUTOTITLE](/apps/creating-github-apps/authenticating-with-a-github-app/generating-a-user-access-token-for-a-github-app) and [AUTOTITLE](/apps/oauth-apps/building-oauth-apps/authorizing-oauth-apps).
Read [more about OAuth2](/apps/building-integrations/setting-up-and-registering-oauth-apps/). Note that OAuth2 tokens can be [acquired programmatically](/enterprise-server@2.22/rest/reference/oauth-authorizations/#create-a-new-authorization), for applications that are not websites.
Sometimes, you need to link from one version of GitHub Docs to another. When you want to link to a different version of the same page, you should use the currentArticle
property.
For example, the Free, Pro, & Team version of Managing the publication of GitHub Pages sites for your organization might link to the GitHub Enterprise Cloud version of the same article like this:
You can choose to allow or disallow the publication of GitHub Pages sites.
Organizations that use {% data variables.product.prodname_ghe_cloud %} can choose to allow publicly published sites, privately published sites, both, or neither. For more information, see [the {% data variables.product.prodname_ghe_cloud %} documentation](/enterprise-cloud@latest/{{ currentArticle }}).
To link to a different article in a different version, use this format:
For more information, see [ARTICLE TITLE](/) in the VERSION documentation.
To link to the same article in a different version, use this format:
For more information, see [the VERSION documentation](/VERSION/{{ currentArticle }}).
To link to a specific version, you must include the version in the path (e.g., /enterprise-cloud@latest/{{ currentArticle }}
).
Links to specific sections of articles must be descriptive enough that someone understands that they are in the correct spot after following a link.
To link to a specific header in the same article, use this format:
For more information, see [HEADER TITLE](#HEADER-TITLE), later in this article.
Same-page section links do not work with AUTOTITLE
. Instead, you must type out the full header text.
To link to a specific header in a different article, use this format:
For more information, see [AUTOTITLE](PATH-TO-ARTICLE#HEADER-TITLE).
To link to two or more specific headers in a different article, use this format:
For more information, see [HEADER-TITLE-1](PATH-TO-ARTICLE#SECTION-LINK-1) and [HEADER-TITLE-2](PATH-TO-ARTICLE#SECTION-LINK-2) in "ARTICLE-TITLE."
Links to a specific tool
If you link to content with a specific tool selected, make sure that it is clear that the link will be for a specific tool even if someone doesn't interact with the tool switcher tab in the article.
For more information, see the TOOLNAME documentation in [ARTICLE TITLE](/PATH/TO/ARTICLE?tool=TOOLNAME).
Links to learning paths
Use this format to link to a learning path.
For more information, follow the [LEARNING PATH TITLE](/) learning path.
Links to external resources
When linking to an external site, choose the most useful resource for the context of the link. You can link to a whole site if it's a general reference or to a specific page if that would be more helpful.
It's not necessary to link to an external product’s website when we mention an external product.
For links to an external page (any website that isn't managed by GitHub), type out the full page title and destination site. Do not put the link in quotation marks.
See [PAGE-TITLE](https://some-docs.com/PATH/TO/PAGE) in the XYZ documentation.
See [PAGE-TITLE](https://some-docs.com/PATH/TO/PAGE).
See [the OTHER WEBSITE](https://some-docs.com/PATH/TO/PAGE).
If you know that there are links to a specific section of an article, you can add an anchor to the section to preserve the link. For example, if an external resource links to a specific section of an article, you could add an anchor so that the link directs to the correct section even if the section title changes.
Use this format for link anchors. The anchor name should be the section name that is being preserved. Use an HTML comment to explain why you are adding the anchor.
<!-- Anchor to maintain the current example link. -->
<a name="SECTION-TITLE-THAT-MIGHT-CHANGE"></a>
Lists
Capitalize the first letter in each line of a list. Use periods at the end of lines in a list only if the line contains a complete sentence.
When writing a list of items that consist of primary and secondary text, such as a term
and its definition, use a colon delimiter. The secondary text should be capitalized as if it was the beginning of the line. For example:
foo
: Something that provides bar.bar
: Something provided by foo.Formatting unordered lists:
*
) for list items.When introducing a list, avoid short, nonspecific sentences using terms like “the following” or “these”, which are difficult to localize without context. Instead, create a descriptive sentence that clearly conveys the subject of the list, yet allows the list to scale or change without having to update the description.
Use:
Avoid:
Use permission statements and product callouts to communicate tasks that require specific roles or products to complete.
Together, permission statements and product callouts tell readers who can use the feature being described in an article.
Guidelines for creating scannable product callouts Define permissions versus product requirementsConsider what information belongs in a permission statement or a product callout.
For example, when creating permissions and product callouts for the article Managing policies for Copilot in your organization, the permission statement would answer "What role can manage policies and features for GitHub Copilot in an organization?" And the product callout would answer "What Copilot subscriptions do users need to manage Copilot policies and features for an organization?"
Focus on key information, not explanationsPermission statements and product callouts need to communicate who can perform a task and what product is required. They do not need to explain why a role or product is required.
If multiple roles or products apply to a permission statement or product callout, format them using an unordered list. You can introduce complex permission statements and product callouts with a sentence, but always try to use as few words as necessary to communicate who can do what the article is about.
Use inline linksYou can use inline links to provide more information about a role or product. The linked text must match the link destination so that it is clear where following the link will lead to.
Parenthetical dashesWe use em dashes for parenthetical statements in normal body text. This doesn’t apply to text within code blocks.
Examples:
Style any placeholder text in all caps. If a placeholder is multiple words, connect the words with dashes (kebab-case). If you use a placeholder, explain what someone might replace it with. This helps people modify examples to fit their needs and helps identify placeholders for people who use assistive technology.
Use:
git init YOUR-REPOSITORY
Avoid:
git init your repository
git init <your-repository>
Procedures give readers a set of sequential steps to follow to complete a task. Always use numbered lists for procedures. Give readers all of the prerequisites or conceptual information they’ll need to complete the task before the procedure, rather than including it within a specific step.
Each step must include an action. You can also choose to include whether a step is optional, explain the reason or result of the step, and orient the reader by describing the location of the action, before guiding them to complete the action.
Use a consistent order to present information within each step.
Use: Optionally, to REASON
, in LOCATION
, take ACTION
.
Examples:
Use full product names. Do not abbreviate or shorten product names unless directly reproducing content from the product (e.g. UI copy or API responses). Product names are never possessive.
Use product name variables to render product names—do not write product names in plain text. This makes product name changes easier to implement across the site and avoids typos in our product names. For more information about product name variables, see “Reusables and variables” in this document and the data directory of the github/docs
repository.
Product names are always singular.
Take care to distinguish between product names and product features. Product features are always lowercase.
Product Feature GitHub Actions an action GitHub Codespaces a codespace GitHub Packages a package GitHub Pages a GitHub Pages siteDo not capitalize commonly used features like pull requests, topics, or issues.
Product-specific conventionsThis section describes additional conventions that are specific to GitHub products.
GitHub Copilot Copilot code completionThe Copilot feature that suggests code as you are working on a file is called "Copilot code completion" or just "code completion" (singular). Only use "code suggestions" (plural) when referring to multiple instances of code completion suggestions. For example, "When using Copilot code completion..." but "the plan includes 2,000 code completions..."
GitHub Actions Reusables for first-party actionsCode examples that use first-party actions must use the respective reusable for that action. This makes action version updates (e.g. from v1
to v2
) easier to manage for products like GitHub Enterprise Server, which might not have the same action version available until a future GitHub Enterprise Server release.
Actions reusables are located in /data/reusables/actions/
and have a file name like action-<action_name>.md
For example, to use the actions/checkout
action in an example, use its reusable:
steps:
- name: Checkout
uses: actions/checkout@v4
For GitHub Docs purposes, a first-party action is any action that has the actions/
, github/
or octo-org/
prefix. For example, this is a first-party action:
steps:
- uses: actions/checkout@v4
Disclaimers for third-party actions
Code examples that use third-party actions must include the following disclaimer as part of the code block:
To insert this disclaimer, use the {% data reusables.actions.actions-not-certified-by-github-comment %}
reusable.
For GitHub Docs purposes, a third-party action is any action that doesn't have the actions/
, github/
or octo-org/
prefix. For example, this is a first-party action:
steps:
- uses: actions/checkout@main
This is an example of a third-party action:
steps:
- uses: google-github-actions/setup-gcloud@1bee7de035d65ec5da40a31f8589e240eba8fde5
Examples:
Code examples that use third-party actions must always pin to a full length commit SHA, instead of the version number or branch:
steps:
- uses: google-github-actions/setup-gcloud@1bee7de035d65ec5da40a31f8589e240eba8fde5
For GitHub Docs purposes, a third-party action is any action that doesn't have one of the following prefixes: actions/
, github/
, and octo-org/
. For example, this is a first-party action:
steps:
- uses: actions/javascript-action@main
For more information, see Using SHAs
CodespacesWhen referring to the product Codespaces, always include "GitHub", except in these circumstances:
shortTitle
front matter.Variables: {% data variables.product.prodname_github_codespaces %}
("GitHub Codespaces") and {% data variables.product.prodname_codespaces %}
("Codespaces").
When referring to instances of remote working environments created with this technology, refer to these as "codespaces" (lowercase c). For example, "to delete your codespace" or "to list your codespaces."
Always use "dev container" (or, where clarification is needed, its longer form "development container") and not "devcontainer" (one word), except in file/path names. The single word could form could be considered a brand, which we want to avoid, and we also want to be consistent with the two-word form used in the Visual Studio Code documentation.
Use "development container configuration files" to refer to all of the files in the .devcontainer
directory (plus the .devcontainer.json
if that's being used rather than devcontainer.json
in the .devcontainer
directory). Don't refer to these as "development container files" or "devcontainer files" to avoid this being taken as referring to devcontainer.json
files. "Development container configuration files" refers to all of the files that can be used to configure a dev container, including Dockerfile
and docker-compose.yml
files. Don't use "the development container configuration file" (singular) when referring specifically to a devcontainer.json
file. Instead refer to this file by its name.
Use the terms licenses
and active committers
when you refer to GitHub Advanced Security, GitHub Code Security, or GitHub Secret Protection billing.
We used to use the term seats
to describe the number of accounts that can use GitHub Advanced Security, GitHub Code Security, or GitHub Secret Protection in an enterprise. People can be confused by the term seats
, so we removed this term from GitHub.com in autumn 2022 and versions from GHES 3.7 onward do not use it.
GitHub has two types of personal access tokens:
You should use variables to refer to these types of tokens, as well as to personal access tokens in general:
{% data variables.product.pat_generic %}
or {% data variables.product.pat_generic_caps %}
to refer to personal access token in general. Use {% data variables.product.pat_generic_title_case %}
if the phrase should be in title case ("Personal Access Token") in order to match UI text.{% data variables.product.pat_v2 %}
or {% data variables.product.pat_v2_caps %}
to refer to fine-grained personal access tokens.{% data variables.product.pat_v1 %}
, {% data variables.product.pat_v1_plural %}
, {% data variables.product.pat_v1_caps %}
, or {% data variables.product.pat_v1_caps_plural %}
to refer to personal access token (classic).For more information about GitHub's personal access tokens, see Managing your personal access tokens.
PunctuationFollow standard American English punctuation rules. For more guidance, see “Punctuation” in the Microsoft Style Guide.
Release notesA set of release notes on GitHub Docs tell readers about administrator- or user-facing changes to a versioned release of a product like GitHub Enterprise Server (GHES). Release notes appear in the Release notes.
A good release note is a few sentences that sequentially answer the reader's questions about the change. For more information, see Release note content type.
Each release note in a set describes one of the following changes.
You can also review guidelines for updating release notes in Adding or updating a release note and Removing a release note.
FeaturesA release note for a feature summarizes brand-new behavior. Generally, notes for features are only part of feature releases.
Writing release notes for featuresA release note for a feature answers the following questions.
AUDIENCE (1) can DESCRIPTION OF NEED (2) by DESCRIPTION OF FEATURE'S USE (3). For more information, see ARTICLE TITLE (4)
Site administrators can increase the security of the Management Console by configuring the rate limit for sign-in attempts, as well as the lockout duration after exceeding the rate limit. For more information, see Configuring rate limits.
Enterprise owners can control where users can fork repositories. Forking can be limited to preset combinations of organizations, the same organization as the parent repository, user accounts, or everywhere. For more information, see Enforcing repository management policies in your enterprise.
Users can create files with geoJSON, topoJSON, and STL diagrams and render the diagrams in the web interface. For more information, see Working with non-code files.
A release note for a security fix summarizes a change that mitigates or prevents exploitation of a security-related issue in the product. Generally, notes for security fixes are only part of patch releases.
Writing release notes for security fixesA release note for a security fix answers the following questions.
Examples of release notes for security fixesSEVERITY (1): An attacker could DESCRIPTION OF IMPACT (2) by DESCRIPTION OF EXPLOIT (3). GitHub has requested CVE ID CVE-####-##### (4) for this vulnerability, which was reported via the GitHub Bug Bounty program (5).
MEDIUM: An attacker could cause unbounded resource exhaustion on the instance by making parallel requests to the Markdown REST API. To mitigate this issue, GitHub has updated CommonMarker. GitHub has requested CVE ID CVE-2022-39209 for this vulnerability.
MEDIUM: An attacker could embed dangerous links in the instance's web UI because pull request preview links did not properly sanitize URLs. This vulnerability was reported via the GitHub Bug Bounty program.
We also include base image and dependent package updates in the "Security fixes" section, since these updates often address security issues. We consolidate all of these updates in the following note.
Bug fixesPackages have been updated to the latest security versions.
A release note for a bug fix describes a correction to an undesired or otherwise unexpected behavior. Generally, notes for bug fixes are only part of patch releases.
Writing release notes for bug fixesA release note for a bug fix answers the following questions.
AUDIENCE (1) DESCRIPTION OF BEHAVIOR (2).
After a user imported a repository with push protection enabled, the repository was not immediately visible in the security overview's "Security Coverage" view.
On an instance with GitHub Actions enabled, a workflow job for GitHub Actions would not start if a matching runner group was unavailable when the job was initially queued, even if a matching runner group became available after the job entered the queue.
Commands that site administrators ran via SSH on any of the instances nodes were not logged in
/var/log/ssh-console-audit.log
.
A release note for a change describes a notable, but minor change to existing behavior. Notes for changes answer the following questions.
Writing release notes for changesA release note for a change answers the following questions.
AUDIENCE (1) / DESCRIPTION OF PROBLEM CHANGE SOLVES (2) DESCRIPTION OF NEW BEHAVIOR (3) DESCRIPTION OF OLD BEHAVIOR (4).
On an instance with a license for GitHub Advanced Security or GitHub Secret Protection, users who author custom patterns for secret scanning can provide expressions that must or must not match that are up to 2,000 characters. This limit is an increase from 1,000 characters.
For administrators who need to review or modify SAML mappings, the default path for output from
ghe-saml-mapping-csv -d
is/data/user/tmp
instead of/tmp
. For more information, see Command-line utilities.
To avoid intermittent issues with the success of Git operations on an instance with multiple nodes, GitHub Enterprise Server checks the status of the MySQL container before attempting a SQL query. The timeout duration has also been reduced.
A release note for a known issue describes an issue that GitHub has identified, but cannot or has not yet prioritized.
Writing release notes for known issuesA release note for a known issue answers the following questions.
AUDIENCE (1) DESCRIPTION OF ISSUE (2) DETAILS OF BEHAVIOR (3) NEXT STEPS (4).
After a user enables the option for a repository to allow users with read access to create discussions, the feature is not enabled.
After an administrator begins a configuration run, a
No such object error
may occur during the validation phase for the Notebook and Viewscreen services. This error can be ignored as the services should still correctly start.
A release note for a feature that is closing down summarizes a behavior or feature that GitHub plans to remove. These features are still available for production use and come with the associated support SLAs and technical support obligations. However, they are in the process of being retired and should no longer be relied upon for future work. Closing down is a transitional stage where users are advised to stop using the feature and prepare for its retirement.
Writing release notes features that are closing downA release note for a feature that is closing down answers the following questions.
AUDIENCE (1) DESCRIPTION OF CLOSING DOWN FUNCTIONALITY (2) REPLACEMENT FUNCTIONALITY (3) For more information, see ARTICLE TITLE (4).
Closing down: In GitHub Enterprise Server 3.8 and later, to ensure instance security, unsecure algorithms will be disabled for SSH connections to the administrative shell.
Commit comments, which are comments that users add directly to a commit outside of a pull request, no longer appear in the pull request timeline. Users could not reply to or resolve these comments. The Timeline events REST API and the GraphQL API's
PullRequest
object also no longer return commit comments.
Retired products or features are no longer available for new customers, marketed, supported, or documented. At this stage, the product is effectively discontinued, and no new development or fixes will be provided. The only support for retired products may come from existing commitments, such as those required for previously released versions of GitHub Enterprise Server. Retiring marks the official end of a product or feature's lifecycle, with no further updates, bug fixes, or user support, signaling a complete transition to newer tools or services.
Writing release notes for retired featuresA release note for a retired feature answers the following questions.
AUDIENCE (1) DESCRIPTION OF RETIRED FUNCTIONALITY (2) REPLACEMENT FUNCTIONALITY (3) For more information, see ARTICLE TITLE (4)
Retired: GitHub no longer supports required workflows for GitHub Actions in GitHub Enterprise Server 3.11 and later. Use repository rulesets instead. For more information, see Available rules for rulesets.
Errata corrects inaccurate information previously published in the release notes or documentation for a release.
Writing errataErrata answers the following questions.
CONTENT (1) incorrectly indicated that AUDIENCE (2) can SUMMARY OF INACCURATE INFORMATION (3). [Updated: PUBLICATION DATE 4]
Features incorrectly indicated that users of the GitHub Advisory Database can see advisories for Elixir, Erlang's Hex package manager, and more. This feature is unavailable in GitHub Enterprise Server 3.7, and will be available in a future release. [Updated 2023-06-01]
To signal to readers that you've added or changed a note, or to indicate the publication date of errata, append a datestamp in the format "[Updated: YYYY-MM-DD]".
Removing a release noteTo signal that we have removed a release note, add an "Errata" section detailing which note you removed and (if relevant) which version the removed note actually pertains to. See Writing errata.
Reusables and variablesUse reusable strings for individual nouns (e.g. product names) or for complete sentences or paragraphs. Sentence fragments and phrases should not be contained in reusable strings as they can cause problems when content is localized. For more information, see the data directory in the github/docs
repository, Creating reusable content, and the Product names section of this document.
If a section of an article uses H3
or H4
headers to further divide the content and only some of the content is relevant to a reader, you can use a sectional table of contents (TOC) to help readers identify and navigate to the information that is most relevant to them. For example, in Streaming the audit log for your enterprise people will probably only set up audit log streaming for one provider, so the sectional TOC in "Setting up audit log streaming" allows people to select their provider and navigate to the relevant content without reading the entire section.
Do not add a sectional TOC if H3
or H4
headers are used only to group content and all information could be of relevance to a reader. For example, in About identity and access management, people should read and consider each section as it relates to their enterprise. We do not include a sectional TOC in this article because people should be reading through each section, not picking and choosing between them. Adding a sectional TOC would also force people who use screenreaders or other adaptive technology to tab and scroll through more headers before finding what they need.
Format sectional TOCs as a list. Include all subsections in the order that they appear in the article and refer to them using the full header title.
Sectional TOCs must be introduced with a sentence or paragraph that helps people understand how the content is organized and select the section that is most relevant to them. Do not include a sectional TOC directly beneath a header.
Example of sectional TOCs## Setting up the application
Set up your application according to your operating system.
* [Setting up for macOS](#setting-up-for-macOS)
* [Setting up for Windows](#setting-up-for-windows)
* [Setting up for Linux](#setting-up-for-linux)
### Setting up for macOS
TEXT
### Setting up for Windows
The application is supported for all versions of Windows, but the set up steps differ.
* [Windows 98](#windows-98)
* [Windows Vista](#windows-vista)
* [Windows 11](#windows-11)
#### Windows 98
TEXT
#### Windows Vista
TEXT
#### Windows 11
TEXT
### Setting up for Linux
TEXT
Tables
Tables are added to the GitHub Docs using Markdown. Because tables can be challenging to read and maintain, make sure that the data in a table is best represented in a table and not another format, like a list, before creating a table. Every row in a table must begin and end with a pipe, |
.
Tables work best for presenting tabular data, such as information that needs to be compared or values with multiple attributes. Do not use tables for simple lists - see the Lists section of this document.
Avoid describing table dataA table’s data and why it is important should be clear from any preceding content, the column headers, and (if needed) the row headers. Avoid unneeded descriptions of the data in a table. If the data in a table is unclear without a lengthy description, consider if your table needs row headers or if the information would be better communicated in a different way.
For example, in Autoscaling with self-hosted runners, a table comparing the features between two supported autoscaling solutions is introduced with the sentence Each solution has certain specifics that may be important to consider.
The article does not describe any of the different features that are compared because that information is clearly communicated by the table.
Tables in which the first column describes the data values in the table (but is not data itself) need to be marked up with row headers. This is important for assistive technology to understand relationships between cells.
For example in the following table, in order to make sense of the "Yes" and "No" values in the table, you need to know both the column header (role) and row header (permission).
Organization permission Owners Members Moderators Billing managers Security managers Create repositories Yes Yes Yes No Yes View and edit billing information Yes No No Yes No Invite people to join the organization Yes No No No NoTo add row headers for a Markdown table, wrap the table in the Liquid tags {% rowheaders %} {% endrowheaders %}
. For more information about using row headers, see Using Markdown and Liquid in GitHub Docs.
Every cell in a table must contain a value.
For cells with no data, use "None" or "Not applicable". Do not use "NA" or "N/A".
For tables with row headers, the first cell (cell "A1") should describe the row headers to help people understand the whole table. However, if doing this would make the table less clear or add redundant information, you can leave this cell empty. For example, in the article Building and testing PowerShell, the first cell could be labeled as "Modules", but since each row header already includes the word "module", this header would repeat information that does not add descriptive value to understanding the table as a whole.
Use clear, consistent symbols and labelsFor tables that use symbols:
aria-label
to describe the meaning of the symbol, not its visual characteristics. For example, "Required", not "Check mark icon".Where table data is not truly binary (every value is either "Yes" or "No", for example), text values may be needed in addition to, or instead of, symbols. For example on the page About GitHub Support, some features are marked as "Available to purchase".
See Footnotes.
Align table content consistentlyAll columns in a table should be left-aligned, except for columns containing only octicons which should be center-aligned. If a column contains both text and octicons, use center alignment.
Table content is left-aligned by default. Use Markdown table formatting, colons (:
) to either the right or left of the dashes in the header row, to specify the alignment of each column. Read Organizing information with tables for more information.
The following example shows part of a table from Dependabot options reference.
Option Required Security Updates Version Updates Descriptionpackage-ecosystem
Package manager to use directory
Location of package manifests schedule.interval
How often to check for updates
The table is generated with the following alignment syntax.
| Option | Required | Security Updates | Version Updates | Description |
|---------------------|:--------:|:----------------:|:---------------:|--------------------------------|
| `package-ecosystem` |{% octicon "check" aria-label="Supported" %}|{% octicon "x" aria-label="Not supported" %}|{% octicon "check" aria-label="Supported" %}| Package manager to use |
| `directory` |{% octicon "check" aria-label="Supported" %}|{% octicon "x" aria-label="Not supported" %}|{% octicon "check" aria-label="Supported" %}| Location of package manifests |
| `schedule.interval` |{% octicon "check" aria-label="Supported" %}|{% octicon "x" aria-label="Not supported" %}|{% octicon "check" aria-label="Supported" %}| How often to check for updates |
Titles
Use sentence casing for titles.
Short titlesWe use short titles to populate the sidebar navigation. Since short titles appear in the sidebar navigation, they can use context to convey meaning and be slightly less precise than full titles. The goal of short titles is to help people find the content that they are looking for without having sidebar navigation items that are too long. Short titles give people contextual understanding of an article and align to the following standards.
Writing short titles can be challenging. To help get short titles under the character count, consider the short title in context. Remove any repeated words if possible and any product or feature names that are in the map topic or category that the content belongs to.
Site policy contentDo not use reusables or variables in site policy content. Site policy articles are legal documents and must have a human-readable source.
Site policy content otherwise uses the same style and content models as the rest of GitHub Docs.
User interface elements BoldfaceUse bold to describe UI elements that can be interacted with.
Use code formatting for branch names.
main
USERNAME.github.io
Format button names in bold and, whenever possible, omit the word “button.” To describe using a button, write “click”, not push or press.
Format checkbox names in bold and omit the word “checkbox.” To describe choosing or clearing a checkbox, use “select” or “deselect.”
Use capital letters to indicate text that changes in the user interface or that the user needs to supply in a command or code snippet.
Format lists and clickable list items in bold. To describe interacting with a list, such as a dropdown menu or UI element that expands, regardless of whether the list name is a word or an octicon, write "select." To describe choosing a list item, write "click."
As per WCAG guidance, we should describe elements by name and not merely by appearance or location. The Microsoft Style Guide offers specific guidance for directional phrases, with emphasis on their use in documentation.
When possible, avoid referring to panels. Instead, describe what someone needs to do.
If you need to refer to a panel to describe a change to the UI or to explain how to interact with the UI, format the panel name as user interface text. Only include the word panel if it adds clarity or if the panel has no name in the UI.
Format radio button labels in bold and omit the words “radio button” or any other descriptor. To describe using a radio button, write "select."
Repository namesStyle repository names in monospace font using backticks. Provide a link to repositories when people are expected to navigate to them.
github/docs
repository for more information.We only document the responsive states of UI elements when they create ambiguity or confusion. If a task is unclear because of a responsive UI element, describe the interaction that someone must do to achieve the goal of the task. Do not just describe the visual state of the UI element.
When referencing text in the user interface, reproduce the text exactly. Use quotation marks to surround UI text that cannot be interacted with. Place any commas outside of the quotation marks.
Microsoft Style Guide:
VideosYou may add videos to reinforce text-based information but videos should never replace written content. Videos are inaccessible to some users and are also difficult to find by searching.
Videos on the GitHub Docs website must be well-produced and contain fewer barriers for people with disabilities, and conform to our content model for videos. For more information, see About using videos in GitHub Docs.
Voice and toneUse clear, simple language that’s approachable for a wide range of readers. Be authentic, empathetic, and confident with your writing.
Write for your audience: some jargon and technical terms are necessary, but don't rely on the assumption that every reader has the same level of technical expertise.
Use the active voice whenever possible. Passive voices is acceptable when you need to emphasize the object of an action.
We are a global developer community. Avoid turns of phrase, idioms, and slang that are specific to a particular region or country.
To learn more about writing approachable content, see “Microsoft's brand voice: Above all, simple and human and “Top 10 tips for Microsoft style and voice.”
Word choice and terminologyFor general guidance and GitHub-specific terms, see our Glossary. For more detailed guidance, see the “A-Z word list” in Microsoft’s style guide.
AbbreviationsSpell out words except when referring to a word that’s explicitly shortened in the product itself.
Do not use symbols or octicons that aren’t used in GitHub’s user interface.
To avoid ambiguity and confusion, do not use product names as adjectives to describe accounts in any of our products. Instead, clarify the account type and choose clearer phrasing that avoids conflating accounts and products. When talking about accounts, only refer to the product name when needed to disambiguate between products. For more information about types of accounts available in GitHub's products, see Types of GitHub accounts.
We refer to an account that an individual person signs into in various ways depending on the context.
Unless the content is about administering an enterprise product, describe an individual person's account on GitHub as a "personal account." This creates consistency with the UI and prevents readers from being confused by seeing two terms that mean the same thing.
With GitHub's enterprise products, administrators manage an enterprise account. An enterprise account can own multiple organizations, and people's user accounts can be members of the organizations. For more information, see the "Roles in an enterprise" article for each product.
If the reader manages an enterprise account, and you're describing the people's accounts that they manage, use "user account." This applies to the following products.
The following documentation should reference "user accounts."
For enterprises on GitHub Enterprise Cloud that don't use Enterprise Managed Users, use "personal account" when describing members of organizations owned by the enterprise.
Documentation that describes GitHub Enterprise Cloud without Enterprise Managed Users is generally in the Managing SAML single sign-on for your organization category.
People's accounts for other servicesWhen you describe a person's account for a service other than GitHub, such as an integration or authentication provider, use "user account."
AcronymsSpell out acronyms the first time they’re used in an article, except in titles or headers.
AppsUse "app" or "application" in general content.
Use "app" when referring to OAuth apps since these are not a product.
Use "App" when referring to GitHub Apps since this is a product.
GitHub Apps and OAuth apps consist of two parts: the app registration, and the code that makes the app do something.
To refer to just the GitHub App settings/configuration in the GitHub UI, use terminology like "register" and "GitHub App registration".
To refer to just the code for the app, use terminology like "code for your app" or "your app's code".
To refer to the whole app collectively (registration + code), refer to it as a GitHub App or OAuth app.
GitHub Apps can be installed on organization and user accounts. To refer to an installation of the app, use "GitHub App installation" instead of "GitHub App."
CurrencyWhen referring to dollars, cents, amounts of currency or using the $
sign, ensure the currency used is defined even if the amount is zero. Use the ISO standard currency name, and the ISO standard currency code where possible.
Use lowercase for currency names, but capitalize the reference to the country or region.
Use uppercase for currency codes.
Where there is only one reference in an article, use the currency name without a $
sign preceding the amount.
10 US dollars
for a single reference to currency.Where an article contains several references to the same currency, ensure that the first reference uses the currency name without a $
sign preceding the amount and includes the currency code in parentheses following the currency name.
For subsequent references to currency in an article or where appropriate (such as when space is a consideration, or when several amounts are presented in a table or list), include the $
sign preceding the amount and use the ISO standard currency code following the amount.
10 US dollars (USD)
for the first reference, and $0.25 USD
for subsequent references.$10 US dollars (USD)
, USD$0.25
.Where the first reference concerns cents or a non-dollar amount, capitalize the reference to the country or region of the currency used in parentheses immediately after the first reference. Subsequent currency references are treated using the guidelines above.
99 cents (US currency)
for the first reference, and 99 cents
for subsequent references.$0.99 (US currency)
, $0.99 USD cents
, USD$0.99 cents
.A permission is the ability to perform a specific action. For example, the ability to delete an issue is a permission.
A role is a set of permissions that can be assigned to a user. Roles exist at different levels.
A person's access refers generally to all the abilities the person has in a particular context, regardless of which roles or individual permissions those abilities come from.
Only use permission or role when the distinction between the two is important. Otherwise, use access.
When specifying the access required to take an action, refer only to the role at the same level as the action. For example, you need admin access to a repository, which is a repository-level role, to configure protected branches. You can get admin access to a repository by being an organization owner, an organization-level role, but the repository-level role is what actually governs your ability to take the action, so that is the only role that should be mentioned.
For more information about word choice for permissions statements, see Contents of a GitHub Docs article in the content model.
PrepositionsAvoid ending a sentence with a preposition unless the rewritten sentence would sound awkward or too formal.
Product namesSee the “Product names” section of this guide.
Terms to use or avoid Use Avoid person user, customer terminal shell username login sign in log in, login sign up signup recommended limit soft limit email e-mail frontmatter front matter, front-matter on GitHub on a remote repository press (a key) hit, tap type (in the user interface) enter (in the user interface) enter (in the command line) type (in the command line) Word choice Ambiguous verbsWhen a task is required, or one option is preferred to another, avoid using ambiguous modal auxiliary verbs such as "may," "might," "ought," "should," "could," "would," and "can." These verbs can be interpreted as either a command or a suggestion. Instead, use verbs that clearly indicate whether the action is required or optional. If something is an option or suggestion, you can use these verbs so long as you make it clear that the action is optional.
git clone
command to clone a repository.git clone
command to clone a repository.Avoid invisible plurals, which are words that have ambiguous meaning because they can be interpreted as singular or plural. For example, "file retrieval" could refer to retrieving a single file or multiple files.
Avoid nominalizations, which are nouns created from verbs or adjectives. Nominalizations can make sentences longer, harder to understand, and harder to translate.
Avoid stacked modifiers (strings of nouns), which can lead to incorrect translations because translations may not be able to tell which word is modifying the other. You can rephrase the string of nouns using a preposition. If using a stacked modifier is essential, make sure the background information and context are clear so that readers and the translator can understand what is being modified.
If a pronoun seems to refer to more than one antecedent, either reword the sentence to make the antecedent clear or replace the pronoun with a noun to eliminate ambiguity.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4