Official agent skill

Dashboard Testing

by microsoft in microsoft/aspire

Guide for writing tests for the Aspire Dashboard. An agent skill from microsoft/aspire.

OfficialMITAuto-check passedTesting & QA

Install Dashboard Testing

skills CLI
$ npx skills add microsoft/aspire --skill dashboard-testing -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install microsoft/aspire dashboard-testing --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/microsoft/aspire.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/dashboard-testing .claude/skills/dashboard-testing && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
dashboard-testing
GitHub stars
6.3k
Token cost
~4.7k tokens
SKILL.md length
804 words
Files
1
Skills in repo
22
Repo updated
First seen
Licence
MIT

At a glance

Guide for writing tests for the Aspire Dashboard. An agent skill from microsoft/aspire.

  • Tasks that involve Unit testing
  • SKILL.md covers Test Project Selection, Aspire.Dashboard.Tests…, Aspire.Dashboard.Components.Tes… and Shared Setup Helpers, plus 4 more sections
  • Calls dotnet

What it does

Dashboard Testing is an agent skill from microsoft/aspire, published by the product's own GitHub organization. Guide for writing tests for the Aspire Dashboard. Use this when asked to create, modify, or debug dashboard unit tests or Blazor component tests.

Its SKILL.md is about 4.7k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Testing & QA, covering Unit testing. It works with Blazor and OpenTelemetry. The repository describes itself as: Aspire is the tool for code-first, extensible, observable dev and deploy. The licence is MIT.

When your agent uses it

  • Tasks that involve Unit testing

Example prompts

  • “/dashboard-testing”

What it can do on your machine

Read from SKILL.md and the folder at commit 809a672. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • dotnet

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • bunit.dev

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Dashboard Testing loads about 4.7k tokens when it runs. Until then it costs about 41 tokens; SKILL.md has 804 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~41
When it runs · the whole SKILL.md, loaded when a task matches
~4.7k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from microsoft/aspire at commit 809a672, republished under its MIT licence (© microsoft). 804 words, ~4,672 tokens.

Download SKILL.mdSave it as .claude/skills/dashboard-testing/SKILL.md (or your agent's skills folder).
name
dashboard-testing
description
Guide for writing tests for the Aspire Dashboard. Use this when asked to create, modify, or debug dashboard unit tests or Blazor component tests.

Aspire Dashboard Testing

This skill provides patterns and practices for writing tests for the Aspire Dashboard. There are two test projects depending on whether the code under test uses Blazor types.

Test Project Selection

ProjectLocationUse When
Aspire.Dashboard.Teststests/Aspire.Dashboard.Tests/Testing code that does not use Blazor types (models, helpers, utils, OTLP services, middleware)
Aspire.Dashboard.Components.Teststests/Aspire.Dashboard.Components.Tests/Testing code that does use Blazor types (pages, components, controls). Uses bUnit for in-memory rendering
Dashboard Source Code

The dashboard source code is in src/Aspire.Dashboard/. Key subdirectories:

  • Components/ — Blazor components (pages, controls, layout) → test in Components.Tests
  • Model/ — View models, data models, helpers → test in Dashboard.Tests
  • Otlp/ — OpenTelemetry protocol handling → test in Dashboard.Tests
  • Utils/ — Utility and helper classes → test in Dashboard.Tests

Aspire.Dashboard.Tests (Non-Blazor)

Standard xUnit tests for models, helpers, utilities, middleware, and services that don't depend on Blazor rendering.

Project Structure
tests/Aspire.Dashboard.Tests/
├── Model/                    # ViewModel and model tests
├── Telemetry/                # Telemetry repository tests
├── ConsoleLogsTests/         # Console log parsing tests
├── Integration/              # Integration tests (auth, OTLP, startup)
├── Markdown/                 # Markdown rendering tests
├── Mcp/                      # MCP service tests
├── Middleware/                # HTTP middleware tests
├── FormatHelpersTests.cs     # Utility function tests
├── DashboardOptionsTests.cs  # Configuration tests
└── ...
Test Pattern
csharp
using Xunit;

namespace Aspire.Dashboard.Tests;

public class FormatHelpersTests
{
    [Theory]
    [InlineData("9", 9d)]
    [InlineData("9.9", 9.9d)]
    [InlineData("0.9", 0.9d)]
    public void FormatNumberWithOptionalDecimalPlaces_InvariantCulture(string expected, double value)
    {
        Assert.Equal(expected, FormatHelpers.FormatNumberWithOptionalDecimalPlaces(value, maxDecimalPlaces: 6, CultureInfo.InvariantCulture));
    }
}

Key points:

  • No bUnit, no DI container — direct construction and assertions
  • Use [Fact] for single test cases, [Theory] with [InlineData] for parameterized tests
  • Use ModelTestHelpers.CreateResource(...) from shared test utilities to build ResourceViewModel instances
  • Use hand-rolled fakes (e.g., MockKnownPropertyLookup) instead of mocking frameworks

Aspire.Dashboard.Components.Tests (Blazor/bUnit)

Uses bUnit to render and test Blazor components in-memory without a browser.

Project Structure
tests/Aspire.Dashboard.Components.Tests/
├── Pages/                    # Full page component tests
│   ├── ResourcesTests.cs
│   ├── ConsoleLogsTests.cs
│   ├── MetricsTests.cs
│   ├── StructuredLogsTests.cs
│   ├── TraceDetailsTests.cs
│   └── LoginTests.cs
├── Controls/                 # Individual control tests
│   ├── ResourceDetailsTests.cs
│   ├── PlotlyChartTests.cs
│   ├── ChartFiltersTests.cs
│   └── ...
├── Interactions/             # Interaction provider tests
├── Layout/                   # Layout component tests
├── Model/                    # Component model tests
├── Shared/                   # Setup helpers and test utilities
│   ├── DashboardPageTestContext.cs
│   ├── FluentUISetupHelpers.cs
│   ├── ResourceSetupHelpers.cs
│   ├── MetricsSetupHelpers.cs
│   ├── StructuredLogsSetupHelpers.cs
│   ├── IntegrationTestHelpers.cs
│   ├── TestLocalStorage.cs
│   ├── TestTimeProvider.cs
│   └── ...
└── GridColumnManagerTests.cs
Base Test Class

All bUnit component tests must extend DashboardTestContext:

csharp
using Bunit;

namespace Aspire.Dashboard.Components.Tests.Shared;

public abstract class DashboardTestContext : TestContext
{
    public DashboardTestContext()
    {
        // Increase from default 1 second as Helix/GitHub Actions can be slow.
        DefaultWaitTimeout = TimeSpan.FromSeconds(10);
    }
}
Basic Component Test Pattern
csharp
using Aspire.Dashboard.Components.Tests.Shared;
using Aspire.Tests.Shared.DashboardModel;
using Aspire.Dashboard.Model;
using Bunit;
using Xunit;

namespace Aspire.Dashboard.Components.Tests.Controls;

[UseCulture("en-US")]
public class ResourceDetailsTests : DashboardTestContext
{
    [Fact]
    public void Render_BasicResource_DisplaysProperties()
    {
        // Arrange — register services using shared setup helpers
        ResourceSetupHelpers.SetupResourceDetails(this);

        var resource = ModelTestHelpers.CreateResource(
            resourceName: "myapp",
            state: KnownResourceState.Running);

        // Act — render the component
        var cut = RenderComponent<ResourceDetails>(builder =>
        {
            builder.Add(p => p.Resource, resource);
            builder.Add(p => p.ShowSpecOnlyToggle, true);
        });

        // Assert — query the rendered DOM
        var rows = cut.FindAll(".resource-detail-row");
        Assert.NotEmpty(rows);
    }
}
Page-Level Test Pattern
csharp
using System.Threading.Channels;
using Aspire.Dashboard.Components.Resize;
using Aspire.Dashboard.Components.Tests.Shared;
using Aspire.Dashboard.Model;
using Aspire.Dashboard.Tests.Shared;
using Bunit;
using Microsoft.Extensions.DependencyInjection;
using Xunit;

namespace Aspire.Dashboard.Components.Tests.Pages;

[UseCulture("en-US")]
public partial class ResourcesTests : DashboardTestContext
{
    [Fact]
    public void UpdateResources_FiltersUpdated()
    {
        // Arrange
        var viewport = new ViewportInformation(IsDesktop: true, IsUltraLowHeight: false, IsUltraLowWidth: false);
        var initialResources = new List<ResourceViewModel>
        {
            ModelTestHelpers.CreateResource(resourceName: "Resource1", resourceType: "Type1", state: KnownResourceState.Running),
        };
        var channel = Channel.CreateUnbounded<IReadOnlyList<ResourceViewModelChange>>();
        var dashboardClient = new TestDashboardClient(
            isEnabled: true,
            initialResources: initialResources,
            resourceChannelProvider: () => channel);

        ResourceSetupHelpers.SetupResourcesPage(this, viewport, dashboardClient);

        // Act
        var cut = RenderComponent<Components.Pages.Resources>(builder =>
        {
            builder.AddCascadingValue(viewport);
        });

        // Assert
        Assert.Collection(cut.Instance.PageViewModel.ResourceTypesToVisibility.OrderBy(kvp => kvp.Key),
            kvp => Assert.Equal("Type1", kvp.Key));
    }
}

Shared Setup Helpers

Dashboard services require extensive DI setup (telemetry, storage, localization, FluentUI JS interop mocks, etc.). Reuse existing shared setup methods to avoid duplicate registration logic. When adding tests for a new area, add a new setup helper rather than duplicating setup across test classes.

Setup Helper Index
HelperLocationPurpose
FluentUISetupHelpers.AddCommonDashboardServices()Shared/FluentUISetupHelpers.csRegisters core DI services shared by all dashboard pages (localization, storage, telemetry, theme, dialog, shortcuts, etc.)
FluentUISetupHelpers.SetupFluentUIComponents()Shared/FluentUISetupHelpers.csCalls AddFluentUIComponents() and configures the menu provider for tests
FluentUISetupHelpers.SetupDialogInfrastructure()Shared/FluentUISetupHelpers.csCombines common services + FluentUI components + dialog provider JS mocks
FluentUISetupHelpers.SetupFluentDataGrid()Shared/FluentUISetupHelpers.csMocks FluentDataGrid JS interop
FluentUISetupHelpers.SetupFluentSearch()Shared/FluentUISetupHelpers.csMocks FluentSearch JS interop
FluentUISetupHelpers.SetupFluentMenu()Shared/FluentUISetupHelpers.csMocks FluentMenu JS interop
ResourceSetupHelpers.SetupResourcesPage()Shared/ResourceSetupHelpers.csFull setup for the Resources page
ResourceSetupHelpers.SetupResourceDetails()Shared/ResourceSetupHelpers.csSetup for ResourceDetails control
MetricsSetupHelpers.SetupMetricsPage()Shared/MetricsSetupHelpers.csFull setup for the Metrics page
MetricsSetupHelpers.SetupChartContainer()Shared/MetricsSetupHelpers.csSetup for chart container and Plotly
StructuredLogsSetupHelpers.SetupStructuredLogsDetails()Shared/StructuredLogsSetupHelpers.csSetup for structured log details
IntegrationTestHelpers.CreateLoggerFactory()Shared/IntegrationTestHelpers.csCreates ILoggerFactory wired to xUnit test output
FluentUI JS Interop Mocks

FluentUI Blazor components require JavaScript interop. bUnit runs without a browser, so all JS calls must be mocked. Use the helpers from FluentUISetupHelpers:

csharp
// Each FluentUI component has a corresponding setup method
FluentUISetupHelpers.SetupFluentDataGrid(context);
FluentUISetupHelpers.SetupFluentSearch(context);
FluentUISetupHelpers.SetupFluentMenu(context);
FluentUISetupHelpers.SetupFluentDivider(context);
FluentUISetupHelpers.SetupFluentAnchor(context);
FluentUISetupHelpers.SetupFluentKeyCode(context);
FluentUISetupHelpers.SetupFluentToolbar(context);
FluentUISetupHelpers.SetupFluentOverflow(context);
FluentUISetupHelpers.SetupFluentTab(context);
FluentUISetupHelpers.SetupFluentList(context);
FluentUISetupHelpers.SetupFluentCheckbox(context);
FluentUISetupHelpers.SetupFluentTextField(context);
FluentUISetupHelpers.SetupFluentInputLabel(context);
FluentUISetupHelpers.SetupFluentAnchoredRegion(context);
FluentUISetupHelpers.SetupFluentDialogProvider(context);
Adding a New Setup Helper

When testing a new component area, create a dedicated setup helper in Shared/:

csharp
// Shared/MyFeatureSetupHelpers.cs
using Bunit;
using Microsoft.Extensions.DependencyInjection;

namespace Aspire.Dashboard.Components.Tests.Shared;

internal static class MyFeatureSetupHelpers
{
    public static void SetupMyFeaturePage(TestContext context, IDashboardClient? dashboardClient = null)
    {
        // 1. Register common dashboard services
        FluentUISetupHelpers.AddCommonDashboardServices(context);

        // 2. Setup FluentUI JS mocks for components used by the page
        FluentUISetupHelpers.SetupFluentDataGrid(context);
        FluentUISetupHelpers.SetupFluentSearch(context);
        FluentUISetupHelpers.SetupFluentMenu(context);

        // 3. Register page-specific services
        context.Services.AddSingleton<IDashboardClient>(dashboardClient ?? new TestDashboardClient());
        context.Services.AddSingleton<IconResolver>();
    }
}

Shared Test Fakes

Both test projects use hand-rolled fakes — no mocking framework is used. Cross-project fakes live in tests/Shared/ (e.g., TestDashboardClient, ModelTestHelpers), while bUnit-specific fakes live in tests/Aspire.Dashboard.Components.Tests/Shared/ (e.g., TestLocalStorage, TestTimeProvider).

FakePurpose
TestDashboardClientConfigurable IDashboardClient with channel providers for resources, console logs, interactions, and commands
TestDialogServiceFake dialog service
TestSessionStorageIn-memory session storage
TestStringLocalizerPass-through string localizer
TestDashboardTelemetrySenderNo-op telemetry sender
ModelTestHelpers.CreateResource()Factory for building ResourceViewModel instances with sensible defaults
Show full SKILL.md (319 more words)Show less
Using TestDashboardClient

TestDashboardClient is constructor-configurable with channel providers:

csharp
var resourceChannel = Channel.CreateUnbounded<IReadOnlyList<ResourceViewModelChange>>();
var consoleLogsChannel = Channel.CreateUnbounded<IReadOnlyList<ResourceLogLine>>();

var dashboardClient = new TestDashboardClient(
    isEnabled: true,
    initialResources: [testResource],
    resourceChannelProvider: () => resourceChannel,
    consoleLogsChannelProvider: name => consoleLogsChannel);
Using ModelTestHelpers

Create test resource view models with keyword arguments:

csharp
using Aspire.Tests.Shared.DashboardModel;

var resource = ModelTestHelpers.CreateResource(
    resourceName: "myapp",
    resourceType: "Project",
    state: KnownResourceState.Running);

Stock/baseline dashboard verification

Use this when verifying the installed/released dashboard instead of the repo-local one.

  • In-repo playground AppHosts can add Projects.Aspire_Dashboard for local dashboard development. Running an installed aspire CLI is not enough when the AppHost model already contains that local project.
  • Use SkipDashboardProjectReference=true to opt out of the shared playground dashboard project reference, and point AspireDashboardPath at the installed bundle.

Run aspire doctor --format json --non-interactive and use the first installation row, which represents the running CLI. Use canonicalPath together with route to locate its bundle root. If canonicalPath is absent, stop rather than guessing from path, which can be an unresolved package-manager symlink.

Installation routeBundle root
script, pr, localhiveParent of the directory containing canonicalPath
winget, brew, dotnet-toolDirectory containing canonicalPath
nix, other, or no sidecarASPIRE_HOME when set; otherwise ~/.aspire
powershell
$appHost = "<path-to-AppHost.csproj>"
$bundleRoot = "<bundle-root-from-the-table>"
$managedExecutable = if ($env:OS -eq "Windows_NT") { "aspire-managed.exe" } else { "aspire-managed" }
$dashboard = Join-Path $bundleRoot "bundle/managed/$managedExecutable"
if (-not (Test-Path $dashboard))
{
    throw "Could not find the installed dashboard at '$dashboard'."
}

dotnet build $appHost /p:SkipDashboardProjectReference=true "/p:AspireDashboardPath=$dashboard"
$env:ASPIRE_DASHBOARD_PATH = $dashboard
aspire run --no-build --apphost $appHost
Remove-Item Env:ASPIRE_DASHBOARD_PATH
  • Verify the dashboard resource in Aspire metadata/logs before treating the run as a stock baseline. Its resolved executable path must equal $dashboard, and its source must be aspire-managed (aspire-managed.exe on Windows), not Aspire.Dashboard.csproj.

Test Conventions

DO: Use [UseCulture("en-US")] for Culture-Sensitive Component Tests

Apply [UseCulture("en-US")] to bUnit test classes that assert culture-sensitive formatting (for example, numbers or dates) so those tests run deterministically across environments:

csharp
[UseCulture("en-US")]
public partial class ResourcesTests : DashboardTestContext
DO: Reuse Shared Setup Methods

Call existing helpers instead of duplicating DI registrations:

csharp
// DO: Use the shared helper
ResourceSetupHelpers.SetupResourcesPage(this, viewport, dashboardClient);

// DON'T: Duplicate service registration in every test class
Services.AddSingleton<TelemetryRepository>();
Services.AddSingleton<PauseManager>();
Services.AddSingleton<IDialogService, DialogService>();
// ... 20 more lines
DO: Create New Setup Helpers for New Areas

If testing a new page or component area, add a setup helper in Shared/ to consolidate the setup:

csharp
// DO: Create a helper when multiple tests need the same setup
internal static class NewFeatureSetupHelpers
{
    public static void SetupNewFeaturePage(TestContext context) { ... }
}

// DON'T: Copy-paste setup across test methods
DO: Use WaitForAssertion for Async State Changes

When component state updates happen asynchronously, use bUnit's WaitForAssertion:

csharp
cut.WaitForAssertion(() =>
{
    var items = cut.FindAll(".resource-row");
    Assert.Equal(3, items.Count);
});
DO: Use Channels to Simulate Real-Time Updates

Push changes through channels to simulate dashboard data updates:

csharp
var channel = Channel.CreateUnbounded<IReadOnlyList<ResourceViewModelChange>>();
var dashboardClient = new TestDashboardClient(
    isEnabled: true,
    initialResources: [],
    resourceChannelProvider: () => channel);

// Render the component...

// Simulate an update
channel.Writer.TryWrite([
    new ResourceViewModelChange(
        ResourceViewModelChangeType.Upsert,
        ModelTestHelpers.CreateResource("newResource"))
]);

// Wait for the UI to update
cut.WaitForAssertion(() =>
{
    Assert.Equal(1, cut.FindAll(".resource-row").Count);
});
DO: Provide ViewportInformation for Responsive Components

Many dashboard pages require viewport information:

csharp
var viewport = new ViewportInformation(IsDesktop: true, IsUltraLowHeight: false, IsUltraLowWidth: false);

// Set on DimensionManager
var dimensionManager = Services.GetRequiredService<DimensionManager>();
dimensionManager.InvokeOnViewportInformationChanged(viewport);

// Pass as cascading parameter
var cut = RenderComponent<Components.Pages.Resources>(builder =>
{
    builder.AddCascadingValue(viewport);
});
DON'T: Use Mocking Frameworks

The project uses hand-rolled fakes:

csharp
// DON'T: No mocking frameworks
var mock = new Mock<IDashboardClient>();

// DO: Use the provided test fakes
var client = new TestDashboardClient(isEnabled: true, initialResources: resources);
DON'T: Register Services Manually When a Helper Exists
csharp
// DON'T: Manual FluentUI setup
var module = JSInterop.SetupModule("./_content/Microsoft.FluentUI.../FluentDataGrid.razor.js");
module.SetupVoid("enableColumnResizing", _ => true);

// DO: Use the helper
FluentUISetupHelpers.SetupFluentDataGrid(this);

Running Dashboard Tests

bash
# Run non-Blazor dashboard tests
dotnet test tests/Aspire.Dashboard.Tests/Aspire.Dashboard.Tests.csproj -- --filter-not-trait "quarantined=true" --filter-not-trait "outerloop=true"

# Run Blazor component tests
dotnet test tests/Aspire.Dashboard.Components.Tests/Aspire.Dashboard.Components.Tests.csproj -- --filter-not-trait "quarantined=true" --filter-not-trait "outerloop=true"

# Run a specific test
dotnet test tests/Aspire.Dashboard.Components.Tests/Aspire.Dashboard.Components.Tests.csproj -- --filter-method "*.UpdateResources_FiltersUpdated" --filter-not-trait "quarantined=true" --filter-not-trait "outerloop=true"

© microsoft, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/dashboard-testing of microsoft/aspire.

Open the folder on GitHubat commit 809a672

Compare with similar skills

Dashboard Testing next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Dashboard Testing compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Dashboard Testing this skillmicrosoft/aspire6.3k—~4.7kAutomated safety check: PassMIT
Olore Bunit Latestolorehq/olore103—~1kAutomated safety check: PassMIT
Phoenix Client DevelopmentArize-ai/phoenix12k—~370Automated safety check: PassApache-2.0
Chrome Devtools MCPmanagedcode/dotnet-skills486—~2.2kAutomated safety check: PassMIT
Effect TSpproenca/dot-skills214—~2kAutomated safety check: PassMIT
Backend Dev Guidelineslitefuse/litefuse1001 repos~5.8kAutomated safety check: PassCustom licence

Similar skills

  • Olore Bunit Latest

    olorehq/olore

    Local bunit documentation reference (latest). An agent skill from olorehq/olore.

    103 GitHub stars~1k tokensUpdated today
    Testing & QAAuto-check passed
  • Development guide for the @arizeai/phoenix-client TypeScript SDK — run and resume experiments, manage OpenTelemetry tracer providers with stack-based attach/detach, and write vitest unit and…

    12k GitHub stars~370 tokensUpdated today
    Testing & QAAuto-check passed
  • Chrome Devtools MCP

    managedcode/dotnet-skills

    Use Chrome DevTools MCP from .NET agents and .NET-focused repos to inspect, debug, and automate Chrome through an MCP client.

    486 GitHub stars~2.2k tokensUpdated today
    DevelopmentAuto-check passed
  • Effect TS

    pproenca/dot-skills

    Effect-TS library usage in TypeScript — Effect.gen generators, Schema.Struct/Schema.Class definitions, Layer/Context.Tag/Service patterns, Effect.pipe pipelines, Data.TaggedError/Data.Class error…

    214 GitHub stars~2k tokensUpdated 1 mo ago
    DevelopmentAuto-check passed
  • Backend Dev Guidelines

    litefuse/litefuse

    Comprehensive backend development guide for Litefuse's Next.js 14/tRPC/Express/TypeScript monorepo.

    100 GitHub starsUsed in 1 repo~5.8k tokens
    Backend & APIsAuto-check passed
  • Using Dotnet

    novotnyllc/dotnet-artisan

    Detects .NET intent for any C, ASP.NET Core, EF Core, Blazor, MAUI, Uno Platform, WPF, WinUI, SignalR, gRPC, xUnit, NuGet, or MSBuild request from prompt keywords and repository signals (.sln…

    233 GitHub stars~2.3k tokensUpdated 1 mo ago
    Backend & APIsAuto-check: warnings

More from microsoft/aspire

All 22 skills in this repo
  • Azdo Internal

    microsoft/aspire

    Official

    A skill your agent uses when asked to trigger or inspect Aspire internal Azure DevOps builds, source-index runs, or release validation on dnceng/internal; push to the internal mirror; download build…

    6.3k GitHub stars~4.5k tokensUpdated today
    Auto-check passed
  • Backport PR

    microsoft/aspire

    Official

    Backports a merged PR to a release branch by triggering the /backport bot, waiting for the bot-created PR, and filling in the shiproom template (Customer Impact, Testing, Risk, Regression?).

    6.3k GitHub stars~4.2k tokensUpdated today
    Auto-check passed
  • Bump Aspire Version

    microsoft/aspire

    Official

    Bumps the Aspire repository product version in eng/Versions.props using previous version-bump commits as guidance.

    6.3k GitHub stars~1.1k tokensUpdated today
    Auto-check passed
  • CI Test Failures

    microsoft/aspire

    Official

    Guide for diagnosing GitHub Actions test failures, extracting failed tests from runs, and creating or updating failing-test issues.

    6.3k GitHub stars~4.7k tokensUpdated today
    Auto-check passed
  • Create PR

    microsoft/aspire

    Official

    Create a pull request using the repository PR template. An agent skill from microsoft/aspire.

    6.3k GitHub stars~4k tokensUpdated today
    Auto-check passed
  • Deployment E2E Testing

    microsoft/aspire

    Official

    Guide for writing Aspire deployment end-to-end tests. An agent skill from microsoft/aspire.

    6.3k GitHub stars~3.2k tokensUpdated today
    Auto-check passed

Categories

Questions about Dashboard Testing

What does Dashboard Testing do?

Guide for writing tests for the Aspire Dashboard. An agent skill from microsoft/aspire. Dashboard Testing is an agent skill from microsoft/aspire, published by the product's own GitHub organization. Guide for writing tests for the Aspire Dashboard.

When should I use Dashboard Testing?

Dashboard Testing fits situations like: tasks that involve Unit testing.

How do I install Dashboard Testing in Claude Code?

Run `npx skills add microsoft/aspire --skill dashboard-testing -a claude-code`. Or copy the skill folder (.agents/skills/dashboard-testing in microsoft/aspire) into .claude/skills/dashboard-testing in your project. Claude Code loads it when a task matches its description.

How do I install Dashboard Testing in Codex?

Run `npx skills add microsoft/aspire --skill dashboard-testing -a codex`. Or copy the skill folder (.agents/skills/dashboard-testing in microsoft/aspire) into .agents/skills/dashboard-testing in your project. Codex loads it when a task matches its description.

Can I use Dashboard Testing in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add microsoft/aspire --skill dashboard-testing -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/dashboard-testing, .gemini/skills/dashboard-testing, .github/skills/dashboard-testing and .opencode/skills/dashboard-testing in your project.

What does Dashboard Testing need to run?

Going by SKILL.md and its folder, Dashboard Testing needs the command-line tools its instructions call (dotnet).

Does Dashboard Testing access the network?

SKILL.md names 1 domain. As links in the text: bunit.dev. This is read from the text; nothing was executed.

Is Dashboard Testing safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Dashboard Testing use?

Dashboard Testing is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Dashboard Testing use?

About 4.7k tokens (SKILL.md is roughly 19k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Dashboard Testing?

Skills that share tags, products or a category with Dashboard Testing: Olore Bunit Latest (olorehq/olore, 103 stars), Phoenix Client Development (Arize-ai/phoenix, 12k stars), Chrome Devtools MCP (managedcode/dotnet-skills, 486 stars) and Effect TS (pproenca/dot-skills, 214 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Dashboard Testing?

microsoft (a GitHub organization, an official publisher) maintains it in microsoft/aspire, which has 6,348 GitHub stars. The repository holds 22 skills in this directory. The repository was last updated on October 7, 2026.

Source: microsoft/aspire on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.