tech-stack-dotnet

A set of .NET and C# guidance for general software-development workflows. .NET is Microsoft's platform for building applications, and C# is one of its programming languages.

In plain words
What is it for?
Use it automatically in .NET projects for builds, tests, code formatting, linting, type or project checks, and database-access guidance.
Why use it?
It gives workflow tools the project-specific commands and patterns needed to build, test, format, and review .NET code correctly.

Skill for Claude CodeCodex

Part of the mtk plugin — 45 skills, 6 agents, 7 hooks, 1 MCP server shipped together

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add skills/moberghr/mtk-agent-toolkit/tech-stack-dotnet
Any agent
npx skills add moberghr/mtk-agent-toolkit --skill tech-stack-dotnet
Clone the repo
git clone --depth 1 https://github.com/moberghr/mtk-agent-toolkit

Made for: Claude Code, Codex.

Or install mtk, the plugin that ships this one along with the rest of its 45 skills, 6 agents, 7 hooks, 1 MCP server.

Per session 29 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 4,133 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00029 $0.04133
Opus 5 $0.00015 $0.02067
Sonnet 5 $0.00006 $0.00827
Haiku 4.5 $0.00003 $0.00413

Measured 2d ago against content hash 462b256e1a41, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

tech-stack-dotnet scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

.claude/skills/tech-stack-dotnet/SKILL.md · 306 lines

How it starts

The opening of the file, as written. The whole thing — 306 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Tech Stack: .NET

Overview

This tech stack skill provides .NET/C#-specific context for the generic workflow skills (spec-driven-development, incremental-implementation, test-driven-development) and for review agents. It is loaded when .claude/tech-stack contains dotnet.

When To Use

Loaded automatically by commands and skills when the active tech stack is dotnet. Not invoked directly.

Build & Test Commands

  • Compile: dotnet build
  • Test (batch): dotnet test or dotnet test --filter <project>
  • Test (full): dotnet test
  • Test (list-only): enumerates discovered tests without executing them — the F7/command-verification list variant used to verify dotnet test is runnable without paying for a full suite run. Conditional on the solution format:
    • .sln: dotnet test <sln> --list-tests
    • .slnx (or global.json sets "test": {"runner": "Microsoft.Testing.Platform"}): dotnet test --solution <slnx> --list-tests — a bare dotnet test <slnx> --list-tests fails with "Specifying a solution for 'dotnet test' should be via '--solution'" under Microsoft.Testing.Platform.
  • Format: dotnet format --verbosity quiet (project-wide). Edited-file formatting is wired via hooks/format-on-edit.sh, which queues paths at PostToolUse and formats them at Stop — both halves must be wired or nothing is formatted. --include takes paths relative to the workspace directory, so the flush pass groups files by their nearest .csproj and runs from that directory; an absolute --include silently matches nothing and still exits 0. Do NOT reference $CLAUDE_FILE — it is not a Claude Code env var; hook input arrives via stdin.

File Extensions & Markers

How setup-bootstrap detects this stack in a repository:

Marker Confidence
*.sln or *.slnx High
*.csproj High
global.json Medium
Directory.Build.props Medium

Detection command:

find . \( -name "*.sln" -o -name "*.slnx" -o -name "*.csproj" \) -not -path "*/bin/*" -not -path "*/obj/*" 2>/dev/null | head -5

Read the full file on GitHub · 306 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 2d ago First seen · 306 lines · 29 tokens per session scan A 462b256e1a41

Subscribe to this mod's changes

tech-stack-dotnet is a skill published in the GitHub repository moberghr/mtk-agent-toolkit (6 stars, last pushed 8d ago), licensed MIT. It adds 29 tokens to every session and 4,133 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.

Related

Other skills, from other repositories

agui-dotnet-streaming-chat

Get started with the AG-UI .NET SDK: bootstrap and run your first streaming-chat app (client + server) with the AG-UI .NET NuGet packages (AGUI.Client, AGUI.Server, AGUI.Formatting, AGUI.Abstractions). USE FOR: which packages to install and how to wire them; constructing an AGUIChatClient against an endpoint and…

ag-ui-protocol/ag-ui · 223 tokens

agui-dotnet-shared-state

Share structured, evolving state between an AG-UI agent and its client with the AG-UI .NET SDK — the client seeds state on the request, the server reads it, mutates it, and streams the updated state back as snapshots or deltas alongside the chat. USE FOR: sending initial/working state from the client via…

ag-ui-protocol/ag-ui · 215 tokens

agui-dotnet-sdk-docs

Author, update, and validate the AG-UI .NET SDK documentation pages on the docs.ag-ui.com Mintlify site (under docs/). USE FOR: adding or editing a ".NET SDK" docs page (sdk/dotnet//.mdx), wiring it into the docs.json ".NET" nav group and global anchor, running the docs site locally with mintlify dev…

ag-ui-protocol/ag-ui · 155 tokens

agui-dotnet-multimodal

Send images and other binary/file content to an AG-UI agent with the AG-UI .NET SDK — attach pictures (or audio, PDFs, etc.) to a user message so a multimodal model can see them. USE FOR: building a user ChatMessage with mixed content parts (TextContent plus DataContent for inline bytes, or UriContent for a hosted…

ag-ui-protocol/ag-ui · 186 tokens

mgmt-review-comment-resolution

Resolve review comments on Azure management-plane .NET SDK PRs. Handles renaming types/properties, changing property types, and other API surface adjustments by updating TypeSpec client.tsp and regenerating.

Azure/azure-sdk-for-net · 46 tokens

mpg-migration

Handles Azure SDK for .NET management-plane migrations from AutoRest/Swagger to TypeSpec; use for MPG, mgmt migration, or Azure.ResourceManager. migration requests.

Azure/azure-sdk-for-net · 39 tokens