CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

aspire-integration-testing

Write integration tests using .NET Aspire's testing facilities with xUnit. Covers test fixtures, distributed application setup, endpoint discovery, and patterns for testing ASP.NET Core apps with real dependencies.

Quality

69%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Passed

No findings from the security scan

Fix and improve this skill with Tessl

tessl review fix ./skills/aspire-integration-testing/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

60%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

A well-organized body with genuinely strong, executable code for the core fixture pattern and valuable non-obvious tips (file-descriptor fix, health-check waiting). Its two real weaknesses are the broken reference files — advanced-patterns.md and ci-and-tooling.md are linked but absent — and padded generic advice sections that dilute token efficiency.

Suggestions

Ship the referenced bundle files (advanced-patterns.md, ci-and-tooling.md) or inline their essential content — as written, all deferred topics (endpoint discovery, database testing, Playwright, Respawn, message queues, CI) resolve to dead links.

Cut the generic Best Practices entries ('Use meaningful test data', 'Keep tests isolated', 'Monitor test execution time') and merge the duplicated 'Common Patterns Summary' table into the Tricky Tips table to tighten token usage.

Show the connection-string retrieval ('GetConnectionStringAsync()') inline, since the table names it as the fix for 'Can't connect to SQL Server' but no usage example exists in the body or the (missing) reference files.

Verify debugging tip 3: ASPIRE_ALLOW_UNSECURED_TRANSPORT=true enables unsecured transport, not 'more verbose output' — as stated it misleads.

DimensionReasoningScore

Conciseness

The body is mostly efficient — the fixture code and critical file-watcher fix earn their tokens — but several sections pad beyond 'minor': the 10-item Best Practices list contains generic items Claude already knows ('Use meaningful test data', 'Keep tests isolated', 'Monitor test execution time'), and the 'Common Patterns Summary' table largely duplicates the Tricky Tips table and the Reference Files list. Not a 2 because core content is code-dense and assumption-free, not a 4 because the duplication and generic advice exceed 'minor instances of over-explanation'.

3 / 5

Actionability

Two complete, executable C# examples (fixture with modern DistributedApplicationTestingBuilder API and the test class with collection wiring), a concrete ModuleInitializer snippet with the exact env var, named NuGet packages, and specific debug commands ('docker logs', dashboard URL). Not a 5 because several promised patterns ('GetConnectionStringAsync()', Respawn, Playwright, message queues) are only named with no code shown, and the files that would contain them are missing.

4 / 5

Workflow Clarity

An implicit but legible sequence runs: add NuGet packages → add TestEnvironmentInitializer → build fixture (create builder → build → start → wait for healthy with a 5-minute timeout CTS) → wire collection → write tests, and the fixture code embodies an explicit validation checkpoint (WaitForResourceHealthyAsync). The Tricky Tips table gives error→fix feedback loops for common failures. Not a 5 because the overall flow is never presented as an explicit ordered checklist with validation between steps — the sequence must be assembled from code and prose.

4 / 5

Progressive Disclosure

The body is well-sectioned and defers detail behind clearly signaled, one-level-deep links ('See advanced-patterns.md', 'See ci-and-tooling.md') — but neither referenced file exists in the bundle (no references/ directory, no such files anywhere), so every deferred topic (endpoint discovery, database testing, Playwright, Respawn, CI, MCP) is a dead link. Navigation structure that points at nonexistent targets fails the core purpose of progressive disclosure, placing it at 2 rather than 3 ('could be better organized' understates a broken reference chain).

2 / 5

Total

13

/

20

Passed

Description

66%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

A solid, mostly specific description with good natural trigger terms and a clear niche. Its main weakness is the missing 'Use when...' trigger clause, which caps completeness at 3.

Suggestions

Add an explicit 'Use when...' clause, e.g., 'Use when writing integration tests for .NET Aspire or distributed ASP.NET Core applications, or when tests need real containerized dependencies (SQL Server, Redis).'

Include natural trigger variations such as 'integration testing', 'end-to-end tests', or 'test AppHost' to improve keyword coverage toward a 5.

Replace the generic 'patterns for testing ASP.NET Core apps with real dependencies' with a concrete named capability (e.g., 'database and Playwright UI test patterns') to sharpen both specificity and distinctiveness.

DimensionReasoningScore

Specificity

The description names the domain ('.NET Aspire's testing facilities with xUnit') and several concrete capabilities: 'test fixtures, distributed application setup, endpoint discovery'. It falls short of a 5 because 'patterns for testing ASP.NET Core apps with real dependencies' is generic phrasing rather than a named concrete action, and it is clearly above a 3 since more than 1-2 specific actions are listed.

4 / 5

Completeness

The 'what' is clear (write integration tests using Aspire testing facilities with xUnit, covering fixtures, distributed app setup, endpoint discovery), but there is no 'Use when...' clause or equivalent explicit trigger guidance in the description, which caps completeness at 3 per the judging guidelines. It is not a 4 or 5 because the 'when' is entirely absent, and not a 2 because the 'what' half is concrete and well-stated.

3 / 5

Trigger Term Quality

Good natural keyword coverage: 'integration tests', '.NET Aspire', 'xUnit', 'test fixtures', 'distributed application', 'endpoint discovery', 'ASP.NET Core'. A 5 would require synonyms and variations users commonly say (e.g., 'integration testing', 'test my Aspire app', 'end-to-end tests'); it is above 3 because multiple relevant natural terms are present, not just one or two generic ones.

4 / 5

Distinctiveness Conflict Risk

The Aspire + xUnit integration-testing niche is distinct with specific triggers, but the phrase 'patterns for testing ASP.NET Core apps with real dependencies' broadens it into minor overlap territory with generic ASP.NET Core integration-testing skills (e.g., WebApplicationFactory-based approaches). It is above a 3 because the core scope (Aspire's testing facilities) is unmistakable, and below a 5 because of that broader ASP.NET Core testing claim.

4 / 5

Total

15

/

20

Passed

Validation

93%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 15 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

relative_links

Relative link issues: 4 missing

Warning

Total

15

/

16

Passed

Repository

Aaronontheweb/dotnet-skills

Path

skills/aspire-integration-testing/SKILL.md

Reviewed

Table of Contents

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.