|
| 1 | +When writing documentation, follow these guidelines: |
| 2 | + |
| 3 | +## General style tips |
| 4 | + |
| 5 | +* Get to the point fast. Be concise and clear. |
| 6 | +* Talk like a person. |
| 7 | +* Simpler is better. |
| 8 | +* Be brief. Give customers just enough information to make decisions confidently. Prune excess words. |
| 9 | +* Break up long sentences. |
| 10 | +* Follow the style of the [Microsoft Writing Style Guide](https://learn.microsoft.com/style-guide/welcome/). If there's a conflict between the following guidelines and the Microsoft Writing Style Guide, ask how to resolve it. |
| 11 | + |
| 12 | +## Grammar |
| 13 | + |
| 14 | +* Use present tense verbs (is, open) instead of past tense (was, opened). For example, "The method returns a value" instead of "The method will return a value." |
| 15 | +* Write factual statements and direct commands. Avoid hypotheticals. |
| 16 | +* Use active voice where the subject performs the action. |
| 17 | +* Write in second person (you) to speak directly to readers. |
| 18 | +* Use gender-neutral language. |
| 19 | +* Avoid multiple -ing words that could create ambiguity. |
| 20 | +* Keep prepositional phrases simple and clear. |
| 21 | +* Place modifiers close to what they modify. |
| 22 | +* Use a conversational tone with contractions. |
| 23 | +* Don't use "we" or "our" to refer to the authors of the documentation. |
| 24 | +* Use the imperative mood for instructions. For example, "Call the method" instead of "You should call the method." |
| 25 | +* Use "might" instead of "may" to indicate possibility. For example, "This method might throw an exception" instead of "This method may throw an exception." |
| 26 | +* Use the Oxford comma in lists of three or more items. |
| 27 | + |
| 28 | +## Capitalization |
| 29 | + |
| 30 | +* Use sentence-style capitalization for everything except proper nouns. |
| 31 | +* Always capitalize proper nouns. |
| 32 | +* Don’t capitalize the spelled-out form of an acronym unless it's a proper noun. |
| 33 | +* Use title-style capitalization for product and service names. |
| 34 | +* Don't use all uppercase for emphasis. |
| 35 | + |
| 36 | +## Numbers |
| 37 | + |
| 38 | +* Spell out numbers for zero through nine, unless space is limited. Use numerals for 10 and above. |
| 39 | +* Spell out numbers at the beginning of a sentence. |
| 40 | +* Spell out ordinal numbers such as first, second, and third. Don't add -ly to form adverbs from ordinal numbers. |
| 41 | +* Number ordered list items all as "1." instead of "1.", "2.", etc. Use bullets for unordered lists. |
| 42 | + |
| 43 | +## Punctuation |
| 44 | + |
| 45 | +* Use short, simple sentences. |
| 46 | +* End all sentences with a period. |
| 47 | +* Use one space after punctuation marks. |
| 48 | +* After a colon, capitalize only proper nouns. |
| 49 | +* Avoid semicolons - use separate sentences instead. |
| 50 | +* Use question marks sparingly. |
| 51 | +* Don't use slashes (/) - use "or" instead. |
| 52 | + |
| 53 | +## Text formatting |
| 54 | + |
| 55 | +* UI elements, like menu items, dialog names, and names of text boxes, should be in **bold** text. |
| 56 | +* Use `code style` for: |
| 57 | + * Code elements, like method names, property names, and language keywords. |
| 58 | + * SQL commands. |
| 59 | + * NuGet package names. |
| 60 | + * Command-line commands. |
| 61 | + * Database table and column names. |
| 62 | + * Resource names (like virtual machine names) that shouldn't be localized. |
| 63 | + * URLs that you don't want to be selectable. |
| 64 | + * File names and folders, custom types, and other text that should never be localized. |
| 65 | +* For code placeholders, if you want users to replace part of an input string with their own values, use angle brackets (less than < and greater than > characters) on that placeholder text. |
| 66 | + |
| 67 | +## Headings |
| 68 | + |
| 69 | +* Headings should be in sentence case, not title case. Don't use gerunds in titles. |
| 70 | +* Don't apply an inline style like italic, or bold to headings. But do use inline code style for headings that are code elements, like method names or property names. |
| 71 | + |
| 72 | +## Alerts |
| 73 | + |
| 74 | +* Alerts are a Markdown extension to create block quotes that render with colors and icons that indicate the significance of the content. The following alert types are supported: |
| 75 | + |
| 76 | + * `[!NOTE]` Information the user should notice even if skimming. |
| 77 | + * `[!TIP]` Optional information to help a user be more successful. |
| 78 | + * `[!IMPORTANT]` Essential information required for user success. |
| 79 | + * `[!CAUTION]` Negative potential consequences of an action. |
| 80 | + * `[!WARNING]` Dangerous certain consequences of an action. |
| 81 | + |
| 82 | +## Adding links |
| 83 | + |
| 84 | +* Add links to related topics and resources where appropriate. |
| 85 | +* Links to other documentation articles should be relative, not absolute. Start relative links with `/docs/` and include the `.md` suffix. If you add a link to another page on learn.microsoft.com that's not in this repo, remove https://learn.microsoft.com/en-us from the link. |
| 86 | +* Links to bookmarks within the same article should be relative and start with `#`. |
| 87 | +* Link descriptions should be descriptive and make sense on their own. Don't use "click here" or "this link" or "here". |
| 88 | +* When you are going to refer to another file or an article on the web, use this format: "For more information, see [descriptive name of link](link path)." The exception to this is the See Also links at the end of an article. Those should be markdown links and contain the title of the article you link to as the descriptive portion of the link. |
| 89 | + |
| 90 | +## Adding new files |
| 91 | + |
| 92 | +* If you add a new Markdown file, it should be named in all lowercase with hyphens separating words. Also, omit any filler words such as "the" or "a" from the file name. |
| 93 | +* If you're adding a new Markdown file, the following indicates where it should go the folder structure. If you aren't sure, ask. |
| 94 | + If the new file is about Linux, put it in the docs/linux folder. |
| 95 | + If the new file is about the C++ Standard Template Library (STL), put it in the docs/standard-library folder. |
| 96 | + If the new file is about the C runtime, put it in the docs/c-runtime-library folder. |
| 97 | + If the new file is about the C++ language, put it in the docs/cpp folder. |
| 98 | + If the new file is about a C++ feature specific to the Visual Studio IDE, put it in the docs/ide folder. |
| 99 | + If the new file is about the build process or modules, put it in the docs/build\reference folder. |
| 100 | + If the new file is about Build Insights, put it in the docs/build-insights folder. |
| 101 | + |
| 102 | +## Images |
| 103 | + |
| 104 | +* Use images only when they add value. |
| 105 | +* Images have a descriptive and meaningful alt text that starts with "Screenshot showing" and ends with ".". |
| 106 | +* Videos have a descriptive and meaningful alt text or title that starts with "Video showing" and ends with ".". |
| 107 | + |
| 108 | +## Numbered steps |
| 109 | + |
| 110 | +* Write complete sentences with capitalization and periods |
| 111 | +* Use imperative verbs |
| 112 | +* Clearly indicate where actions take place (UI location) |
| 113 | +* For single steps, use a bullet instead of a number |
| 114 | +* When allowed, use angle brackets for menu sequences (File > Open) |
| 115 | + |
| 116 | +## Terminology |
| 117 | + |
| 118 | +* Use "Select" instead of "Click" for UI elements like buttons, menu items, links, dropdowns, and checkboxes. |
0 commit comments