XML docs are the kind of thing everyone agrees you should write and nobody wants to sit down and write. Doc Engine handles the tedious part: right-click a file, a project, or the whole solution, and it fills in <summary>, <param>, <returns>, and <exception> for the public methods, properties, and constructors that are missing them.
It isn't a template engine. Before anything goes to the AI, it reads your code with Roslyn the same compiler API Visual Studio itself runs on, so it actually knows the signatures, parameter types, nullability, and async patterns it's writing about. What you get back describes what the method does, not a sentence reworded from its name.
The free tier covers 200 members a month. No API key, no setup paste a token and right-click.
See it in action
You write this:
public async Task<Order> GetOrderAsync(int orderId, CancellationToken cancellationToken)
{
return await _repository.FindAsync(orderId, cancellationToken);
}
You get this:
/// <summary>
/// Retrieves an order by its identifier.
/// </summary>
/// <param name="orderId">The unique identifier of the order to retrieve.</param>
/// <param name="cancellationToken">A token to cancel the asynchronous operation.</param>
/// <returns>The order matching the specified identifier.</returns>
public async Task<Order> GetOrderAsync(int orderId, CancellationToken cancellationToken)
{
return await _repository.FindAsync(orderId, cancellationToken);
}
Not happy with a run? Ctrl+Z puts a file back exactly as it was.
Three ways to run it
- One file — right-click a
.csfile → Generate XML Docs - A project — right-click the project → Generate XML Docs for Project
- The whole solution — right-click the solution → Scan for Missing Docs, then Generate All
The solution scan tells you how many members are undocumented before you commit to anything, so you're not kicking off a big run blind. Members that already have docs are left untouched, and files marked <auto-generated> — designer files, scaffolding, generated code — are skipped entirely.
Keep a team on the same style
Drop a .docengine.json at your solution root and check it in. From then on everyone with the extension generates in the same style — tone, whether to add <remarks> or <example>, how <paramref> is used:
{
"style": {
"tone": "formal",
"includeExample": true,
"useParamref": true
}
}
One less thing to argue about in code review.
Plans
| Free | Pro | Pro Plus | |
|---|---|---|---|
| Members/month | 200 | 2,000 | 10,000 |
| API key required | No | No | No |
| Bring your own key (Anthropic / OpenAI) | — | ✓ | ✓ |
| Team style config | ✓ | ✓ | ✓ |
| Price | $0 | $10/mo | $25/mo |
The free tier is plenty for a personal project or for trying things out. If you're documenting a big codebase on a regular basis, Pro or Pro Plus raises the monthly cap. Both also let you bring your own Anthropic or OpenAI key — when you do, the extension talks to the provider directly and we're out of the loop, so there's no monthly cap at all and you just pay the provider for what you use.
Sign up and manage your plan at docengine.pages.dev.
Getting started
- Install the extension.
- Grab a free token at docengine.pages.dev.
- Paste it into Tools → Options → Documentation Engine.
- Right-click a
.csfile and pick Generate XML Docs.
Bringing your own key? In Options, set Use my own API key, set the provider to anthropic or openai, set the model and paste the key. BYOK needs a Pro or Pro Plus account.
What gets sent
Generating a doc sends that member's signature and body to the service, which calls the AI and hands back the comment. Only members from the file, project, or solution you pick are sent, and your code isn't kept once the comment comes back. On the free plan we record the names of the members you've documented this month — namespace, type, member — so that re-running the same file doesn't spend your quota twice. With your own key, requests skip our backend completely and go straight to Anthropic or OpenAI.
Requirements
- Visual Studio 2022 — Community, Professional, or Enterprise
- Windows 10 or 11 (.NET Framework 4.8 is already included)