What problem does it solve? Adding command-line argument parsing to .NET console apps and global dotnet tools is full of traps: the System.CommandLine 2.0 GA API differs sharply from the beta API most blog posts show, help text leaks into stdout and corrupts stdio MCP/JSON-RPC protocol streams, and parse-first entry points break WebApplicationFactory-based E2E tests. This Skill provides empirically verified, version-pinned guidance so these mistakes are avoided. ## Core Features & Use Cases - Parser selection guidance: Compares System.CommandLine 2.0.x GA, Spectre.Console.Cli, Microsoft.Extensions.Configuration.CommandLine, Cocona (archived), and McMaster.Extensions.CommandLineUtils with verified version and status data. - Pinned System.CommandLine 2.0.10 GA idioms: Parse-first patterns, help/version action detection, instance-based option reads via GetValue<T>(Option<T>), Option.Validators for custom value grammars, duplicate-alias handling, and the two-root pattern for optional subcommands. - Protocol-stream and test-host traps: Routes all CLI output to stderr for stdio MCP servers, declares hidden no-op options for WebApplicationFactory's injected flags, and covers secrets policy, wildcard shell-expansion diagnostics, and config-verb trees. - Use Case: When adding a serve subcommand with --port and --idle-timeout options to a .NET MCP server, use this Skill to wire parse-first argument handling, validate values with Option.Validators, keep help off stdout, and keep WebApplicationFactory E2E tests green. ## Quick Start Use the dotnet-cli-parsing skill to add System.CommandLine 2.0 GA argument parsing with stderr-safe help rendering to my .NET console app.