Setup Dotnet Cli
| This documentation was generated with the assistance of AI. Please report any inaccuracies. |
Generate a complete, buildable, agent-friendly .NET 10 / C# 14 command-line tool: a solution with a framework-free Core library that implements the catalog’s CLI contract, a thin System.CommandLine 2.0 executable, MSTest 4 tests and DocFX API docs.
Purpose
iru-setup-dotnet-cli bootstraps a new .NET command-line tool from an embedded, verified house template. At the repository root it writes global.json, Directory.Build.props, central package management in Directory.Packages.props, .editorconfig, stylecop.json, a <ToolName>.slnx solution, tests/coverlet.runsettings and a DocFX docfx.json.
The src/<ToolName>.Core project (net10.0, IsAotCompatible) holds the whole CLI contract: the exit-code enum (0-7, 130, 143), the JSON error envelope on stderr, deterministic source-generated System.Text.Json output, the colour and prompt policies, signal handling with PosixSignalRegistration, the schema model, static bash/zsh/fish/PowerShell completion scripts and a generated AsciiDoc CLI reference plus man page.
The thin src/<ToolName> executable is published as a Native AOT binary and packed as a .NET tool (RID-specific packages plus an any fallback, so dotnet tool install and dnx both work). It offers the commands greet, completion, schema, --version, a hidden gen-docs and, with ui: tui, a TTY-gated Terminal.Gui v2 browse command whose view (Tui/BrowseView) gets UI tests per the catalog’s UI contract (see Building user interfaces): rendered on Terminal.Gui’s ANSI driver, every state and .ui-quality.yml direction is captured as a text file under .ui-screenshots/, and asserted terminal accessibility checks run at the level of a root .ui-quality.yml.
The skill announces whether it is scaffolding from scratch or updating an existing .NET CLI. For every file group it owns that already exists it warns and asks Update / Keep as is / Replace / Stop (unless on-existing decides), and it never overwrites hand-written source. A foreign layout (a single-project dotnet new console app, System.CommandLine betas, a Spectre.Console.Cli app, a .sln with other projects) is never converted: the skill either adds its pieces alongside or stops. Every version is looked up at run time, with a verified fallback table.
The layout is the scaffold contract that the .NET coding and gate skills and Setup CLI GitHub Workflows detect and call. The skill writes no CI workflow, .gitignore (see Setup Dotnet Gitignore), README, changelog, LICENSE or Antora site, and no Sonar file.
Plugin
Shipped by the iru-cli plugin of the ai-catalog marketplace (install with /plugin install iru-cli@ai-catalog; see Plugins).
Inputs
| Argument | Required | Description | Default |
|---|---|---|---|
|
No |
Pre-resolved parameters passed by an orchestrating skill (e.g. Setup CLI Repository) as newline-separated |
None — every field is asked interactively |
|
Yes (unless supplied via |
PascalCase C# identifier ( |
|
|
Yes (unless supplied via |
The command users type and the executable/assembly name ( |
Repository directory name, lower-cased |
|
No |
NuGet package id of the .NET tool. The skill checks the NuGet flat-container API and warns when the id is already taken. |
|
|
Yes (unless supplied via |
One line saying what the tool does; it becomes the root command help text, the package description and the man page NAME line. |
None |
|
No |
|
|
|
No |
|
|
|
No |
Tool version written to |
|
|
No |
|
|
|
Yes (unless supplied via |
MIT License, Apache License 2.0, No license, or Other (SPDX id). When one is chosen the report reminds the user to add a root |
None — user must choose |
|
Yes (unless supplied via |
Package metadata and the |
None |
|
No |
Repository owner, used when no |
Inferred from |
|
No |
Open-source flag and |
Asked stand-alone; otherwise from the orchestrator |
|
No |
Whether CI will exist; recorded for the report only. |
Unset |
|
No |
|
|
|
No |
|
|
|
No |
|
|
|
No |
|
|
Outputs
-
Repository-level build and quality files:
global.json(SDK pinned,rollForward: latestFeature),Directory.Build.props,Directory.Packages.props(StyleCop.Analyzers as aGlobalPackageReference),.editorconfig,stylecop.json,<ToolName>.slnx,tests/coverlet.runsettings,docfx.jsonanddocfx/. -
src/<ToolName>.Core/with the exit codes, theOutput/,Terminal/,Greeting/,Schema/,Completion/andDocs/namespaces, andBrowse/BrowseState.csforui: tui. -
src/<ToolName>/with theExeproject (assembly<bin>,PublishAot,PackAsTool),Program.cs,CliApp,GlobalOptions,ToolCommandand theGreet,Completion,SchemaandGenDocscommands, plusBrowseCommand.csforui: tui. -
tests/<ToolName>.Core.Tests(about 99% Core line and branch coverage) andtests/<ToolName>.Cli.Tests(in-process command tree runs with captured stdout/stderr, plus opt-in published-binary smoke tests). -
With
ui: tui: a root.ui-quality.yml,src/<ToolName>/Tui/BrowseView.cs, and intests/<ToolName>.Cli.TestsUiScreenshots.cs,AccessibilityCheck.csandTui/BrowseViewTests.cs([TestCategory("UI")]), which write.ui-screenshots/screen/BrowseView/<state>--<direction>--no-color.txtcaptures (to be gitignored by Setup Dotnet Gitignore). -
docs/modules/ROOT/pages/cli-reference.adoc, generated bygen-docsduring verification (the only Antora page the skill creates); the man page and completion scripts underartifacts/are gitignored build output. -
A report with the resolved names,
ui(with the.ui-quality.ymlaction andaccessibilitylevel), version and license; whether the run scaffolded, updated or stopped; the per-group action (created / updated / replaced / kept as is) with mismatches and possibly lost customizations; which toolchain versions were live versus fallback; the scaffold contract table; and a block of explicit warnings (review generated files, runiru-setup-dotnet-gitignore, the NuGet package id must be free and RID packages pushed before the pointer package, Sonar token needed).
Execution flow
Dependencies
Invokes
None — iru-setup-dotnet-cli is a leaf skill; it does not call any other skill in this catalog. It reads its own reference/ templates and only names sibling skills (iru-setup-dotnet-gitignore, iru-setup-cli-github-workflows, iru-setup-antora, iru-check-license) in its report and warnings. It also detects the contract file of iru-dotnet-code-one-task when that skill is installed.
Invoked by
-
Setup CLI Repository — the command-line tool bootstrap orchestrator runs
iru-setup-dotnet-clias its scaffold step for thedotnetlanguage, passing the resolved shared inputs throughargs.
Related agents
-
iru-gate-runner— Step 7 runs the restore/build,dotnet format, tests with coverage, Native AOT publish and smoke checks, packaging, DocFX andgen-docsthrough this agent so the caller gets a compact pass/fail summary instead of raw logs.
Source
SKILL.md on GitHub — the file this page was generated from.