MR
Mayur Rathi
@github
⭐ 34.1k GitHub stars

Csharp-Docs

Csharp-Docs是一款code方向的AI技能,核心价值是Ensure that C# types are documented with XML comments and follow best practices for documentation,可用于解决开发者在code领域的实际问题,帮助用户提升效率、自动化重复任务或优化工作流。

Ensure that C# types are documented with XML comments and follow best practices for documentation.

Last verified on: 2026-05-30
mkdir -p ./skills/csharp-docs && curl -sfL https://raw.githubusercontent.com/github/awesome-copilot/main/skills/csharp-docs/SKILL.md -o ./skills/csharp-docs/SKILL.md

Run in terminal / PowerShell. Requires curl (Unix) or PowerShell 5+ (Windows).

Skill Content

# 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 like `null`, `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 the `language` attribute, for example, `<code language="csharp">`.

- 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> 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."

🎯 Best For

  • Technical writers
  • API documentation teams
  • Claude users
  • GitHub Copilot users
  • Software engineers

💡 Use Cases

  • Generating JSDoc/TSDoc comments
  • Writing README files for new projects
  • Code quality improvement
  • Best practice enforcement

📖 How to Use This Skill

  1. 1

    Install the Skill

    Copy the install command from the Terminal tab and run it. The SKILL.md file downloads to your local skills directory.

  2. 2

    Load into Your AI Assistant

    Open Claude or GitHub Copilot and reference the skill. Paste the SKILL.md content or use the system prompt tab.

  3. 3

    Apply Csharp-Docs to Your Work

    Open your project in the AI assistant and ask it to apply the skill. Start with a small module to verify the output quality.

  4. 4

    Review and Refine

    Review AI suggestions before committing. Run tests, check for regressions, and iterate on the skill output.

❓ Frequently Asked Questions

Does it follow my documentation style?

Most documentation skills respect existing style. Provide a style guide or example in your prompt.

Is Csharp-Docs compatible with Cursor and VS Code?

Yes — this skill works with any AI coding assistant including Cursor, VS Code with Copilot, and JetBrains IDEs.

Do I need specific dependencies for Csharp-Docs?

Check the install command and Works With section. Most code skills only require the AI assistant and your codebase.

How do I install Csharp-Docs?

Copy the install command from the Terminal tab and run it. The skill downloads to ./skills/csharp-docs/SKILL.md, ready to use.

Can I customize this skill for my team?

Absolutely. Edit the SKILL.md file to add team-specific instructions, examples, or workflows.

⚠️ Common Mistakes to Avoid

Auto-generating without reviewing

AI documentation can contain inaccuracies. Always verify technical accuracy.

Skipping validation

Always test AI-generated code changes, even for simple refactors.

Missing dependency updates

Check if the skill requires updated dependencies or new packages.

🔗 Related Skills