csharp-docs▌
github/awesome-copilot · updated Apr 8, 2026
XML documentation standards and patterns for C# public APIs and members.
- ›Use <summary> for one-sentence descriptions starting with a present-tense verb, and <remarks> for implementation details, usage notes, or additional context
- ›Employ specific tags for different member types: <param> and <returns> for methods, <value> for properties, <typeparam> for generics, and <exception cref> for thrown exceptions
- ›Follow prescribed wording patterns for Boolean
C# Documentation Best Practices
- Public members should be documented with XML comments.
- It is encouraged to document internal members as well, especially if they are complex or not self-explanatory.
Guidance for all APIs
- Use
<summary>to provide a brief, one sentence, description of what the type or member does. Start the summary with a present-tense, third-person verb. - Use
<remarks>for additional information, which can include implementation details, usage notes, or any other relevant context. - Use
<see langword>for language-specific keywords likenull,true,false,int,bool, etc. - Use
<c>for inline code snippets. - Use
<example>for usage examples on how to use the member.- Use
<code>for code blocks.<code>tags should be placed within an<example>tag. Add the language of the code example using thelanguageattribute, for example,<code language="csharp">.
- Use
- Use
<see cref>to reference other types or members inline (in a sentence). - Use
<seealso>for standalone (not in a sentence) references to other types or members in the "See also" section of the online docs. - Use
<inheritdoc/>to inherit documentation from base classes or interfaces.- Unless there is major behavior change, in which case you should document the differences.
Methods
- Use
<param>to describe method parameters.- The description should be a noun phrase that doesn't specify the data type.
- Begin with an introductory article.
- If the parameter is a flag enum, start the description with "A bitwise combination of the enumeration values that specifies...".
- If the parameter is a non-flag enum, start the description with "One of the enumeration values that specifies...".
- If the parameter is a Boolean, the wording should be of the form "
<see langword="true" />to ...; otherwise,<see langword="false" />.". - If the parameter is an "out" parameter, the wording should be of the form "When this method returns, contains .... This parameter is treated as uninitialized.".
- Use
<paramref>to reference parameter names in documentation. - Use
<typeparam>to describe type parameters in generic types or methods. - Use
<typeparamref>to reference type parameters in documentation. - Use
<returns>to describe what the method returns.- The description should be a noun phrase that doesn't specify the data type.
- Begin with an introductory article.
- If the return type is Boolean, the wording should be of the form "
<see langword="true" />if ...; otherwise,<see langword="false" />.".
Constructors
- The summary wording should be "Initializes a new instance of the class [or struct].".
Properties
- The
<summary>should start with:- "Gets or sets..." for a read-write property.
- "Gets..." for a read-only property.
- "Gets [or sets] a value that indicates whether..." for properties that return a Boolean value.
- Use
<value>to describe the value of the property.- The description should be a noun phrase that doesn't specify the data type.
- If the property has a default value, add it in a separate sentence, for example, "The default is
<see langword="false" />". - If the value type is Boolean, the wording should be of the form "
<see langword="true" />if ...; otherwise,<see langword="false" />. The default is ...".
Exceptions
- Use
<exception cref>to document exceptions thrown by constructors, properties, indexers, methods, operators, and events. - Document all exceptions thrown directly by the member.
- For exceptions thrown by nested members, document only the exceptions users are most likely to encounter.
- The description of the exception describes the condition under which it's thrown.
- Omit "Thrown if ..." or "If ..." at the beginning of the sentence. Just state the condition directly, for example "An error occurred when accessing a Message Queuing API."
Discussion
Product Hunt–style comments (not star reviews)- No comments yet — start the thread.
Ratings
4.8★★★★★66 reviews- ★★★★★Pratham Ware· Dec 28, 2024
csharp-docs reduced setup friction for our internal harness; good balance of opinion and flexibility.
- ★★★★★Min Bansal· Dec 24, 2024
I recommend csharp-docs for anyone iterating fast on agent tooling; clear intent and a small, reviewable surface area.
- ★★★★★Jin Rahman· Dec 20, 2024
Keeps context tight: csharp-docs is the kind of skill you can hand to a new teammate without a long onboarding doc.
- ★★★★★Chinedu Kapoor· Dec 20, 2024
csharp-docs reduced setup friction for our internal harness; good balance of opinion and flexibility.
- ★★★★★Amelia Menon· Dec 16, 2024
We added csharp-docs from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.
- ★★★★★Alexander Liu· Dec 12, 2024
csharp-docs is among the better-maintained entries we tried; worth keeping pinned for repeat workflows.
- ★★★★★Emma Sharma· Dec 8, 2024
Registry listing for csharp-docs matched our evaluation — installs cleanly and behaves as described in the markdown.
- ★★★★★Alexander Martin· Nov 27, 2024
Useful defaults in csharp-docs — fewer surprises than typical one-off scripts, and it plays nicely with `npx skills` flows.
- ★★★★★Yash Thakker· Nov 19, 2024
I recommend csharp-docs for anyone iterating fast on agent tooling; clear intent and a small, reviewable surface area.
- ★★★★★Charlotte Robinson· Nov 15, 2024
csharp-docs reduced setup friction for our internal harness; good balance of opinion and flexibility.
showing 1-10 of 66