Orchestrates Aspire distributed applications using the Aspire CLI for running, debugging, and managing distributed apps. USE FOR: aspire start, aspire stop, start aspire app, aspire describe, list aspire integrations, debug aspire issues, view aspire logs, add aspire resource, aspire dashboard, update aspire apphost. DO NOT USE FOR: non-Aspire .NET apps (use dotnet CLI), container-only deployments (use docker/podman), Azure deployment after local testing (use azure-deploy skill). INVOKES: Aspire CLI commands (aspire start, aspire describe, aspire otel logs, aspire docs search, aspire add), bash. FOR SINGLE OPERATIONS: Use Aspire CLI commands directly for quick resource status or doc lookups.
blazor-mudblazor
aalmada/BookStore
Use MudBlazor components correctly in Blazor applications — covering setup (providers, theme, dark-mode), layout shell (MudLayout/MudAppBar/MudDrawer), data tables (MudTable with ServerData, server-side paging, search), forms and inputs (MudForm, MudTextField, MudAutocomplete, MudSelect, MudNumericField, MudChipSet), dialogs (MudDialog, IDialogService, IMudDialogInstance), feedback (ISnackbar, MudAlert, MudSkeleton, MudProgressCircular), navigation menus (MudMenu, MudIconButton), and layout primitives (MudGrid, MudStack, MudPaper, MudContainer, MudText, Icons.Material). Trigger whenever the user writes, reviews, or asks about MudBlazor components, MudForm validation, MudTable server-side data, MudDialog patterns, MudAutocomplete, theming, dark mode, snackbar notifications, Material icons, or any UI component work in a Blazor project using MudBlazor — even if they don't explicitly say "MudBlazor". Always prefer this skill over guessing; component APIs, the IMudDialogInstance cascading parameter, and the IsDark
jasperfx-wolverine
aalmada/BookStore
Use for any request involving Wolverine (.NET command/handler, messaging, async jobs, sagas, stateful workflows, handler patterns, Marten integration, or optimistic concurrency); always trigger for Wolverine, mediator, message bus, saga, process manager, or handler patterns.
jasperfx-marten
aalmada/BookStore
Use for any request involving Marten (.NET document database and event store on PostgreSQL): document storage, event sourcing, projections, aggregates, multi-tenancy, LINQ queries, async daemon, commit listeners, natural keys, or Marten + Wolverine integration. Always trigger when the user mentions Marten, event sourcing, event store, stream projections, SingleStreamProjection, MultiStreamProjection, IDocumentSession, IQuerySession, async daemon, conjoined tenancy, or asks about building read models from events — even if they don't name Marten explicitly.
nsubstitute
aalmada/BookStore
Use NSubstitute to create test doubles (mocks/stubs/spies) for .NET interfaces and classes, covering Substitute.For<T>, Returns/ReturnsForAnyArgs, Received/DidNotReceive, Arg matchers, async Task stubbing, callbacks, and partial substitutes. Always trigger when the user writes, reviews, or asks about mocking, faking dependencies, Substitute.For, Received(), DidNotReceive(), Arg.Any, Arg.Is, test doubles, verifying interactions, setting up shared mock infrastructure, or stubbing async methods in .NET tests — even if they don't mention NSubstitute by name. Prefer this skill over guessing; NSubstitute's argument matcher rules, the discard pattern for Returns(), async Task<T> type inference, nested interface substitution (e.g., Marten's IDocumentSession.Events), and partial substitute pitfalls all have non-obvious failure modes that are easy to get wrong.