Skip to content
Development
Skill

/token-report

Report how many tokens the Roslyn Navigator MCP server has saved, across one repository or all of them, with a per-tool leaderboard, adoption rate, and the methodology behind the number. Use when: "token report", "token savings", "how many tokens saved", "is the MCP worth it",

From plugin
dotnet-claude-kit
81752 skills11 agents2 hooks1 MCP

Claude Code

$ npx -y skills add codewithmukesh/dotnet-claude-kit --skill token-report --agent claude-code

SKILL.md

token-report.SKILL.md
name: token-report
description: >
  Report how many tokens the Roslyn Navigator MCP server has saved, across one
  repository or all of them, with a per-tool leaderboard, adoption rate, and the
  methodology behind the number. Use when: "token report", "token savings", "how
  many tokens saved", "is the MCP worth it", "MCP usage", "tool leaderboard",
  "adoption rate", "which MCP tools are used", "prove the savings".

/token-report — Roslyn Navigator token savings

What

Reports what the Roslyn MCP server has actually saved, measured rather than asserted. Two surfaces:

| Scope | Surface | Use when | |---|---|---| | This repository, mid-session | `get_token_savings` MCP tool | "how are we doing here?" | | All repositories, aggregate | `CWM.RoslynNavigator.Stats` CLI | producing a public number |

When

  • Deciding whether the MCP server earns its context cost
  • Finding tools nobody calls — a description problem, or a tool that should not exist
  • Backing a claim about token efficiency with something checkable

Prerequisite

**Collection is opt-in and off by default.** Nothing was recorded unless the server was started with it enabled:

CWM_ROSLYN_TELEMETRY=on cwm-roslyn-navigator --solution MySolution.sln

Nothing is transmitted. Records are written under `%LOCALAPPDATA%/cwm-roslyn-navigator/` (or the XDG equivalent), outside the repository. Delete that directory to erase everything.

Adoption rate is read from Claude Code transcripts and needs no opt-in, so it is available even when telemetry was never enabled.

How

**1 — This repository, mid-session.** Call the `get_token_savings` MCP tool. Returns totals, a per-tool leaderboard, separate zero-result / not-ready / error counts, and the methodology. If it reports `Enabled: false`, telemetry was never turned on — say so rather than reporting zero as if it were a measurement.

**2 — All repositories.**

cd mcp/CWM.RoslynNavigator
dotnet run --project stats/CWM.RoslynNavigator.Stats.csproj            # table
dotnet run --project stats/CWM.RoslynNavigator.Stats.csproj -- --markdown
dotnet run --project stats/CWM.RoslynNavigator.Stats.csproj -- --json
dotnet run --project stats/CWM.RoslynNavigator.Stats.csproj -- --repo myapp

**3 — Interpret it honestly.** Three things must be said whenever a number is quoted:

  • **The divisor is uncalibrated.** 3.5 bytes/token is an estimate, and it scales every

figure linearly. If `DivisorCalibrated` is false, the number is indicative, not precise.

  • **The baseline understates.** It counts only the files an answer came from, ignoring the

wrong files a text search would have opened first.

  • **Adoption is biased upward.** Its denominator counts only Read/Grep/Glob calls that

demonstrably targeted C#; ambiguous searches are excluded.

**4 — Act on the leaderboard.** A tool with no calls is the actionable finding. Low adoption in a configured repository usually means a tool description is not attracting the work it should — more useful than the savings figure itself.

Calibrating the divisor

Turns the one estimated input into a measurement. Free, manual, and never run by the server:

dotnet run --project stats/CWM.RoslynNavigator.Stats.csproj -- calibrate \
  --api-key $ANTHROPIC_API_KEY --path /path/to/dotnet/repo --sample 200

Samples C# files, gets exact counts from the Anthropic `count_tokens` endpoint, and regresses bytes against tokens. Apply the result to `TokenEstimator` in the server and record the sample size and R² next to the constant so the figure stays checkable.

Example

  Repositories        3  (1 with telemetry)
  Tool calls          412
  Tokens saved        1,284,000
  Adoption            68%

  Tool leaderboard
  tool                  calls      saved   p50 ms  0-result
  find_references         180    612,000       84        4%
  find_symbol             150    431,000       22        2%

  Never called (2): get_nuget_packages, resolve_stack_trace
  Divisor: 3.5 bytes/token — UNCALIBRATED estimate.

When the server was never invoked, the report says so plainly instead of printing zeros — "no calls" and "no savings" are different findings.

Related

  • `/verify` — quality gates before a PR
  • `/health-check` — codebase health grades
Read more
@codewithmukesh
Ships withdotnet-claude-kit

Make Claude Code a .NET 10 Expert

81752 skills11 agents1 MCP
Get the whole plugin

Stars on GitHub

Momentum

stars in total
817
Star history of codewithmukesh/dotnet-claude-kit on GitHub, a chart by star-history.com

Other skills on dotnet-claude-kit.

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills2w309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc2w293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react5d252k
@facebook@facebookInstall Skill

Questions about token-report.

Which coding agents can use token-report?
token-report installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.