aspnet-core
Build, debug, modernize, or review ASP.NET Core applications with correct hosting, middleware, security, configuration, logging, and deployment patterns on…
Use SharpConsoleUI to build full terminal (TUI) applications in .NET — equally suited to full-screen single-window apps and multi-window desktops with overlapping draggable windows — using a compositor, a DOM layout engine, and 40+ reactive controls (data tables, tree views,
$ npx -y skills add managedcode/dotnet-skills --skill sharpconsoleui --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/sharpconsoleuiContext preview
The summary Claude sees to decide when to auto-load this skill.
Use SharpConsoleUI to build full terminal (TUI) applications in .NET — equally suited to full-screen single-window apps and multi-window desktops with overlapping draggable windows — using a compositor, a DOM layout engine, and 40+ reactive controls (data tables, tree views,
name: sharpconsoleui description: "Use SharpConsoleUI to build full terminal (TUI) applications in .NET — equally suited to full-screen single-window apps and multi-window desktops with overlapping draggable windows — using a compositor, a DOM layout engine, and 40+ reactive controls (data tables, tree views, forms, an embedded PTY terminal, markdown, charts, video). USE FOR: interactive console apps, full-screen TUIs, multi-window terminal desktops, dashboards, wizards, and admin/monitoring UIs that need focus, mouse, and flicker-free rendering over local terminals or SSH; NativeAOT console tools. DO NOT USE FOR: simple line-based CLI output or argument parsing; non-interactive scripts; GUI/desktop (WPF/WinForms) or web UIs. INVOKES: inspect the project, add the SharpConsoleUI package, scaffold a window/control tree, and build/run to verify the app renders." compatibility: "Requires a .NET 8.0+ console project (net8.0/net9.0/net10.0) that can reference the `SharpConsoleUI` package and run against a modern terminal. Uses a retained-mode UI on a single cooperative UI thread, not immediate-mode Console.Write."
Do not trigger for plain line-based CLI tools, argument parsing, or non-interactive scripts.
flowchart LR A["NetConsoleDriver (RenderMode.Buffer)"] --> B["ConsoleWindowSystem"] B --> C["WindowBuilder -> Window"] C --> D["window.AddControl(Controls.*)"] D --> E["DOM layout: Measure -> Arrange -> Paint"] E --> F["windowSystem.AddWindow(window)"] F --> G["windowSystem.Run() (blocks until Shutdown)"] G --> H["compositor merges per-window buffers -> terminal"]
1. Create a `NetConsoleDriver` and a `ConsoleWindowSystem` that owns all windows. 2. Build one or more windows with `WindowBuilder` (title, size, position, borders, padding). 3. Add controls to each window with `window.AddControl(...)`, usually via the `Controls` static factory. 4. Wire interactivity through control events (e.g. `Button.OnClick`); call `windowSystem.Shutdown()` to exit. 5. `windowSystem.AddWindow(window)` then `windowSystem.Run()` starts the render/input loop (blocks until shutdown). 6. For layout, dialogs, portals/overlays, forms, and the full control set, load the reference files below.
using SharpConsoleUI;
using SharpConsoleUI.Builders;
using SharpConsoleUI.Controls;
using SharpConsoleUI.Drivers;
var driver = new NetConsoleDriver(RenderMode.Buffer);
var windowSystem = new ConsoleWindowSystem(driver);
var window = new WindowBuilder(windowSystem)
.WithTitle("Hello World")
.WithSize(50, 12)
.Centered()
.Build();
window.AddControl(Controls.Markup()
.AddLine("[bold cyan]Hello, SharpConsoleUI![/]")
.Build());
window.AddControl(Controls.Button("Quit")
.OnClick((sender, e, win) => windowSystem.Shutdown())
.Build());
windowSystem.AddWindow(window);
windowSystem.Run();Use a `GridControl` when you need columns/rows with fixed, size-to-content, or proportional (`Star`) tracks, and put content controls (tables, lists, markdown) into the cells:
var grid = Controls.Grid()
.Columns(GridLength.Cells(20), GridLength.Star(1)) // fixed sidebar + fill
.Rows(GridLength.Auto(), GridLength.Star(1)) // toolbar + body
.RowGap(1)
.Place(Controls.Markup("[bold]Dashboard[/]").Build(), 0, 0, colSpan: 2)
.Place(sidebarList, 1, 0)
.Place(dataTable, 1, 1)
.Build();
window.AddControl(grid);See `references/recipes.md` for full grid/table/form/dialog examples and `references/controls.md` for the control chosen per region.
Stop explaining .NET to your AI. Start building. We've all been there: asking Claude to use Entity Framework, only to get EF6 patterns in a .NET 8 project. Explaining to Copilot that Blazor Server and Blazor WebAssembly aren't the same thing.
Repo: managedcode/dotnet-skills
Build, debug, modernize, or review ASP.NET Core applications with correct hosting, middleware, security, configuration, logging, and deployment patterns on…
Build, upgrade, and operate Aspire 13.5.x C# or TypeScript application hosts with the current CLI, AppHost, ServiceDefaults, integrations, dashboard, testing,…
Build, review, or migrate Azure Functions in .NET with correct execution model, isolated worker setup, bindings, DI, and Durable Functions patterns. USE FOR:…
Build and review Blazor applications across server, WebAssembly, web app, and hybrid scenarios with correct component design, state flow, rendering, and…
Maintain or migrate EF6-based applications with realistic guidance on what to keep, what to modernize, and when EF Core is or is not the right next step. USE…
Design, tune, or review EF Core data access with proper modeling, migrations, query translation, performance, and lifetime management for modern .NET…