Agent skill

XML Documentation

by Vonage in Vonage/vonage-dotnet-sdk

Improve XML documentation in the Vonage .NET SDK. An agent skill from Vonage/vonage-dotnet-sdk.

Apache-2.0Auto-check passedBackend & APIs

Install XML Documentation

skills CLI
$ npx skills add Vonage/vonage-dotnet-sdk --skill xml-documentation -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install Vonage/vonage-dotnet-sdk xml-documentation --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/Vonage/vonage-dotnet-sdk.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/xml-documentation .claude/skills/xml-documentation && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
xml-documentation
GitHub stars
118
Token cost
~2.7k tokens
SKILL.md length
1,001 words
Files
1
Skills in repo
2
Repo updated
First seen
Licence
Apache-2.0

At a glance

Improve XML documentation in the Vonage .NET SDK. An agent skill from Vonage/vonage-dotnet-sdk.

  • Works in 6 steps: Ask for the OAS file path — STOP and… → Read the OAS file → Ask for the code snippets link — STOP… → …
  • The user mentions improve XML docs
  • SKILL.md covers Workflow, Scope, Documentation Patterns and Common Mistakes to Watch For
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

XML Documentation is an agent skill from Vonage/vonage-dotnet-sdk. Improve XML documentation in the Vonage .NET SDK. Use when the user mentions "improve XML docs", "document [namespace]", "XML documentation", "add missing docs", or references documenting C classes, properties, enums, or interfaces in this SDK. Covers IntelliSense summaries, OAS-based constraints, code examples, and builder struct documentation.

Its SKILL.md is about 2.7k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Backend & APIs. It works with .NET and C#. The repository describes itself as: Vonage REST API client for .NET, written in C. API support for SMS, Voice, Text-to-Speech, Numbers, Verify (2FA) and more. The licence is Apache-2.0.

When your agent uses it

  • The user mentions improve XML docs
  • Document [namespace]
  • XML documentation
  • Add missing docs

Example prompts

  • “improve XML docs”
  • “document [namespace]”
  • “XML documentation”
  • “/xml-documentation”

Workflow steps

6 steps, taken from the step headings in SKILL.md.

  1. Ask for the OAS file path — STOP and wait for the answer
  2. Read the OAS file
  3. Ask for the code snippets link — STOP and wait for the answer
  4. Scan the target folder
  5. Process all files in one pass
  6. Verify

What it can do on your machine

Read from SKILL.md and the folder at commit 8cad085. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are csharp and bash).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

XML Documentation loads about 2.7k tokens when it runs. Until then it costs about 92 tokens; SKILL.md has 1,001 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~92
When it runs · the whole SKILL.md, loaded when a task matches
~2.7k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from Vonage/vonage-dotnet-sdk at commit 8cad085, republished under its Apache-2.0 licence (© Vonage). 1,001 words, ~2,690 tokens.

Download SKILL.mdSave it as .claude/skills/xml-documentation/SKILL.md (or your agent's skills folder).
name
xml-documentation
description
Improve XML documentation in the Vonage .NET SDK. Use when the user mentions "improve XML docs", "document [namespace]", "XML documentation", "add missing docs", or references documenting C# classes, properties, enums, or interfaces in this SDK. Covers IntelliSense summaries, OAS-based constraints, code examples, and builder struct documentation.

XML Documentation Improvement Skill

The goal is to make the Vonage .NET SDK self-explanatory. Customers should be able to understand and use the SDK entirely from IntelliSense, without ping-ponging between their code and the developer portal.

This means every public method needs a clear explanation, every parameter and property needs its data described (constraints, formats, supported values), every key method needs a code example, and client methods need a link to the snippets repository. The OAS file is the source of truth for property details because it captures constraints that aren't visible from the code alone.

Private and internal methods are out of scope — they aren't part of the customer-facing surface. The focus is entirely on what developers see in IntelliSense.


Workflow

CRITICAL: Do NOT modify any files until steps 1-3 are complete.
1. Ask for the OAS file path — STOP and wait for the answer

You MUST ask the user: "What is the path to the OAS file for this product?"

Do NOT guess. Do NOT proceed. Do NOT read any .cs files yet. Wait for the user to respond with the path.

2. Read the OAS file

Once you have the path, read it. Understand the schemas, required fields, character limits, supported formats, and enum values. This is your source of truth for property descriptions and constraints.

You MUST ask the user: "Is this product exposed on the code snippets repository? If yes, give me the product folder URL. If not, give me the repo root URL."

Do NOT proceed until you have the URL. You will use it for <seealso> links on client methods.

4. Scan the target folder

Now scan the folder to inventory all .cs files and understand the class hierarchy (base classes, interfaces, request types, enums, records).

5. Process all files in one pass

Process every public .cs file in the target folder in a single pass. Follow the priority order below so that base types are documented before their dependents:

  1. Interfaces
  2. Enums
  3. Base/abstract classes
  4. Records and response types
  5. Concrete request classes
  6. Client classes (these get code examples)
  7. Webhook types
6. Verify

After processing, run this grep to confirm no empty summaries remain:

bash
grep -rn "/// <summary>\s*$" --include="*.cs" <target-folder>

Report the results to the user.


Scope

  • Document: all public classes, interfaces, enums, records, properties, and methods.
  • Leave alone: private methods, internal helpers, [ValidationRule] methods, and private implementation details like GetRequestContent() or BuildInsights(). For BuildRequestMessage() that implements an interface, use <inheritdoc />.

Documentation Patterns

Apply these patterns to every file you touch.

Class summaries

Pattern: [What it is] + [When to use it / Key context]

csharp
/// <summary>
///     Represents a text message request to be sent via Facebook Messenger.
/// </summary>
  • Never leave empty /// <summary></summary> tags.
  • For base classes, explain what they provide.
  • For client classes, describe capabilities and mention the API version.
Interface summaries

Describe the contract and what implementations provide:

csharp
/// <summary>
///     Exposes methods for sending messages across multiple channels (SMS, MMS, WhatsApp, Messenger, Viber, RCS).
/// </summary>
Property documentation
  • Simple properties — concise one-liner.
  • Properties with constraints — include limits, formats, or supported values from the OAS.
  • Attachment properties — mention supported file formats.
  • Channel-specific configuration — explain what it configures.
csharp
/// <summary>
///     The text of message to send; limited to 1000 characters. The Messages API automatically
///     detects unicode characters and encodes accordingly.
/// </summary>

If a property has no OAS match and no obvious meaning, write a best-guess summary and mark it with a TODO:

csharp
/// <summary>
///     The auxiliary data associated with the request.
///     TODO: No OAS match found — verify this description.
/// </summary>
Enum documentation
  • Enum type — describe what it defines.
  • Every enum value — explain its purpose or when to use it. Never just repeat the name.
csharp
/// <summary>
///     Response to a user-initiated conversation. Must be sent within 24 hours of the user's message.
/// </summary>
[Description("response")] Response = 0,
Record documentation

Use <param> tags for record parameters:

csharp
/// <summary>
///     Represents the response from sending a message through the Messages API.
/// </summary>
/// <param name="MessageUuid">The unique identifier for the message. Use this to track delivery status via webhooks.</param>
Method documentation with examples

For key public methods on client classes, include:

  • Summary of what it does.
  • Parameter descriptions with <see cref=""/> links to related types.
  • Return value description.
  • Code example using <![CDATA[...]]> for proper formatting.
  • <seealso> link using the URL the user provided.
csharp
/// <summary>
///     Sends a message through the specified channel.
/// </summary>
/// <param name="message">The message to send. Can be any implementation of <see cref="IMessage"/> such as <see cref="Sms.SmsRequest"/>.</param>
/// <returns>A response containing the message UUID for tracking delivery status.</returns>
/// <example>
/// <code><![CDATA[
/// var message = new SmsRequest { To = "447700900000", From = "Vonage", Text = "Hello!" };
/// var response = await client.SendAsync(message);
/// ]]></code>
/// </example>
/// <seealso href="URL_FROM_USER">More examples in the snippets repository</seealso>
Show full SKILL.md (401 more words)Show less
Builder struct documentation ([Builder] attribute)

The codebase uses a custom source generator for builder patterns. When a struct is decorated with [Builder], the generator reads each property's builder attribute and XML docs, then emits builder interfaces and an internal builder struct. The XML docs you write on the property are copied verbatim onto the generated builder method — on both the interface and the builder struct. This means docs must read as method descriptions, not property descriptions.

Only document public members. Private methods, internal helpers, [ValidationRule] methods, and BuildRequestMessage() implementations should be left alone (use <inheritdoc /> for BuildRequestMessage() if the interface already documents it).

Builder attributes and generated method names
AttributeGenerated method nameSignature
[Mandatory(order)]With + PropertyNameWithId(int value)
[MandatoryWithParsing(order, parserName)]With + PropertyNameWithPhoneNumber(string value) (takes string, parser converts)
[Optional]With + PropertyNameWithName(string value)
[OptionalWithParsing]With + PropertyNameTakes string, parser converts
[OptionalWithDefault]With + PropertyNameHas a default value
[OptionalBoolean(default, "MethodName")]The explicit name from the attributeEnableVerbose() or Hide() (parameterless toggle)

The naming rule: all attributes generate With + PropertyName except [OptionalBoolean], which uses the explicit method name provided in the attribute (second argument). This name can reverse the boolean meaning (e.g., property Verbose → method EnableVerbose, property Hidden → method Hide).

Documentation rules for builder properties
  1. Write summaries as builder method descriptions — use "Sets the...", "Includes...", or "Enables..." phrasing depending on the method semantics.
  2. Every property gets a focused <example> — regardless of attribute type. Show only that single method call, never the full builder chain.
  3. The example must match the generated method name — for [OptionalBoolean], use the explicit name from the attribute, not With + PropertyName.
Examples by attribute type

[Mandatory] — simple value, example shows .WithPropertyName(value):

csharp
/// <summary>
///     Sets the unique identifier for the request.
/// </summary>
/// <example>
/// <code><![CDATA[
/// .WithId(42)
/// ]]></code>
/// </example>
[Mandatory(0)]
public int Id { get; internal init; }

[MandatoryWithParsing] — takes a string, parser converts it:

csharp
/// <summary>
///     Sets the phone number to retrieve insights for. The number should follow E.164 format.
/// </summary>
/// <example>
/// <code><![CDATA[
/// .WithPhoneNumber("+14155552671")
/// ]]></code>
/// </example>
[MandatoryWithParsing(0, nameof(ParsePhoneNumber))]
public PhoneNumber PhoneNumber { get; internal init; }

[Optional] — wraps value in Maybe<T>:

csharp
/// <summary>
///     Sets the name associated with the request.
/// </summary>
/// <example>
/// <code><![CDATA[
/// .WithName("John Doe")
/// ]]></code>
/// </example>
[Optional]
public Maybe<string> Name { get; internal init; }

[OptionalBoolean] — parameterless toggle, uses the explicit method name:

csharp
/// <summary>
///     Enables verbose output for debugging purposes.
/// </summary>
/// <example>
/// <code><![CDATA[
/// .EnableVerbose()
/// ]]></code>
/// </example>
[OptionalBoolean(false, "EnableVerbose")]
public bool Verbose { get; internal init; }
Using <inheritdoc />

Use <inheritdoc /> for overridden members where the base/interface documentation is already good. Do not use it at the class level if the base class has poor documentation — write a proper summary instead.


Common Mistakes to Watch For

  • Empty summaries — find and fill every one.
  • Copy-paste channel errors — e.g., "Viber" mentioned in a WhatsApp class. Cross-check the class name, namespace, and file path.
  • Vague descriptions — replace "The file information" with specifics like "The image attachment. Supported formats: .jpg, .jpeg, .png".
  • Missing enum value descriptions — every value needs a meaningful explanation.
  • Overly broad builder examples — each example must show only the single method it documents.

© Vonage, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .claude/skills/xml-documentation of Vonage/vonage-dotnet-sdk.

Open the folder on GitHubat commit 8cad085

Compare with similar skills

XML Documentation next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

XML Documentation compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
XML Documentation this skillVonage/vonage-dotnet-sdk118—~2.7kAutomated safety check: PassApache-2.0
.NET API Compatibility DesignAaronontheweb/dotnet-skills1.2k2 repos~2.7kAutomated safety check: PassMIT
Aa Batching PaymastersNethereum/Nethereum2.3k—~1.5kAutomated safety check: PassMIT
Tsp Csharpquerylenshq/ef-querylens225—~1.3kAutomated safety check: PassMIT
Aa BundlerNethereum/Nethereum2.3k—~1.2kAutomated safety check: PassMIT
Dotnet 10 Csharp 14sketch7/FluentlyHttpClient121—~2.2kAutomated safety check: PassMIT

Similar skills

  • .NET API Compatibility Design

    Aaronontheweb/dotnet-skills

    Applies extend-only design rules to NuGet packages and distributed systems, covering source, binary and wire compatibility and how to deprecate members safely.

    1.2k GitHub starsUsed in 2 repos~2.7k tokens
    Backend & APIsAuto-check passed
  • Aa Batching Paymasters

    Nethereum/Nethereum

    Help users batch multiple calls into a single UserOperation and sponsor gas with paymasters using Nethereum Account Abstraction.

    2.3k GitHub stars~1.5k tokensUpdated 2 days ago
    Backend & APIsAuto-check passed
  • Tsp Csharp

    querylenshq/ef-querylens

    Comprehensive C and .NET development skill for TSP projects.

    225 GitHub stars~1.3k tokensUpdated 1 mo ago
    Backend & APIsAuto-check passed
  • Aa Bundler

    Nethereum/Nethereum

    Help users run an ERC-4337 bundler using Nethereum — set up in-process or standalone bundlers with mempool, validation, reputation, and JSON-RPC server.

    2.3k GitHub stars~1.2k tokensUpdated 2 days ago
    Backend & APIsAuto-check passed
  • Dotnet 10 Csharp 14

    sketch7/FluentlyHttpClient

    A skill your agent uses when building .NET 10 or C 14 applications; when using minimal APIs, modular monolith patterns, or feature folders; when implementing HTTP resilience, Options pattern…

    121 GitHub stars~2.2k tokensUpdated 19 days ago
    Backend & APIsAuto-check passed
  • Abi Retrieval

    Nethereum/Nethereum

    Fetch contract ABIs from Sourcify, Etherscan, and 4Byte Directory using the composite ABIInfoStorage pattern (.NET/C).

    2.3k GitHub stars~1.5k tokensUpdated 2 days ago
    Backend & APIsAuto-check passed

More from Vonage/vonage-dotnet-sdk

  • New Endpoint

    Vonage/vonage-dotnet-sdk

    Add a new endpoint, use case, or product to the Vonage .NET SDK.

    118 GitHub stars~11k tokensUpdated 3 mo ago
    Auto-check passed

Works with

Categories

Questions about XML Documentation

What does XML Documentation do?

Improve XML documentation in the Vonage .NET SDK. An agent skill from Vonage/vonage-dotnet-sdk. XML Documentation is an agent skill from Vonage/vonage-dotnet-sdk.NET SDK.

When should I use XML Documentation?

XML Documentation fits situations like: the user mentions improve XML docs; document [namespace]; XML documentation; add missing docs.

How do I install XML Documentation in Claude Code?

Run `npx skills add Vonage/vonage-dotnet-sdk --skill xml-documentation -a claude-code`. Or copy the skill folder (.claude/skills/xml-documentation in Vonage/vonage-dotnet-sdk) into .claude/skills/xml-documentation in your project. Claude Code loads it when a task matches its description.

How do I install XML Documentation in Codex?

Run `npx skills add Vonage/vonage-dotnet-sdk --skill xml-documentation -a codex`. Or copy the skill folder (.claude/skills/xml-documentation in Vonage/vonage-dotnet-sdk) into .agents/skills/xml-documentation in your project. Codex loads it when a task matches its description.

Can I use XML Documentation in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Vonage/vonage-dotnet-sdk --skill xml-documentation -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/xml-documentation, .gemini/skills/xml-documentation, .github/skills/xml-documentation and .opencode/skills/xml-documentation in your project.

What does XML Documentation need to run?

SKILL.md names no scripts, command-line tools or credentials: XML Documentation is instructions for the agent only.

Does XML Documentation access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is XML Documentation safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does XML Documentation use?

XML Documentation is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does XML Documentation use?

About 2.7k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to XML Documentation?

Skills that share tags, products or a category with XML Documentation: .NET API Compatibility Design (Aaronontheweb/dotnet-skills, 1.2k stars), Aa Batching Paymasters (Nethereum/Nethereum, 2.3k stars), Tsp Csharp (querylenshq/ef-querylens, 225 stars) and Aa Bundler (Nethereum/Nethereum, 2.3k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains XML Documentation?

Vonage (a GitHub organization) maintains it in Vonage/vonage-dotnet-sdk, which has 118 GitHub stars. The repository holds 2 skills in this directory. The repository was last updated on June 10, 2026.

Source: Vonage/vonage-dotnet-sdk on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.