CtrlK
BlogDocsLog inGet started
Tessl Logo

fsharp-testing

F# testing patterns with xUnit, FsUnit, Unquote, FsCheck property-based testing, integration tests, and test organization best practices. Use when writing F# tests with xUnit, FsUnit, Unquote, or FsCheck.

64

Quality

77%

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/fsharp-testing/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

71%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 dense, highly actionable pattern catalogue with lean code examples covering unit, property-based, mocking, and integration testing, plus concrete CLI commands. Its main weakness is structure: everything is inlined in one long SKILL.md with no reference files, and no sequencing guidance connects the multiple activation scenarios.

Suggestions

Split the FsCheck deep-dive (custom generators, property patterns) and the ASP.NET Core integration-testing section into one-level-deep reference files (e.g. references/property-testing.md, references/integration-testing.md), keeping only quick-start examples inline.

Remove the redundant opening paragraph ('Comprehensive testing patterns for F# applications...') that restates the frontmatter description, and drop helper-dependent snippets' reliance on undefined values like validItem/validRequest by defining them once in the Test Organization section.

Add a short ordered workflow for the 'setting up test infrastructure' activation case (create test project → add packages → add helpers → run) so the multiple When-to-Activate paths have explicit sequencing.

DimensionReasoningScore

Conciseness

Nearly every section is executable code or a dense reference table with no teaching of basics Claude already knows; the one prose explanation (Unquote's quotation-based failure messages) is genuinely non-obvious. Minor padding remains (the intro sentence duplicates the frontmatter), so anchor 4 fits rather than the fully-lean anchor 5.

4 / 5

Actionability

Provides extensive concrete guidance across all major cases: xUnit Facts/Theories, FsCheck properties with custom generators, NSubstitute, WebApplicationFactory, and fully-executable `dotnet test` commands. Falls short of anchor 5 because snippets depend on undefined helpers ("validItem", "validRequest", "testData") and the WebApplicationFactory example lacks its open statements.

4 / 5

Workflow Clarity

The "When to Activate" section, task-typed sections, and a complete "Running Tests" command reference make navigation unambiguous, and no destructive/batch operations exist to require validation checkpoints. Not anchor 5 because multiple activation paths (writing tests, setting up infrastructure, debugging flaky tests) are never sequenced relative to each other.

4 / 5

Progressive Disclosure

Sections are well-organized, but the ~280-line body keeps everything inline with no bundle files at all — the FsCheck deep-dive and ASP.NET Core integration-testing material are natural candidates for one-level-deep reference files. This matches anchor 3 (content that should be separate is inline) rather than anchor 4 (content appropriately split with clear references); not anchor 2 because internal structure and navigation are clear.

3 / 5

Total

15

/

20

Passed

Description

83%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 strong description that explicitly names the domain, a comprehensive set of concrete testing capabilities, and an explicit 'Use when' trigger clause. It is highly specific and complete, with only minor gaps in trigger synonym coverage and slight overlap risk with adjacent .NET testing skills.

DimensionReasoningScore

Specificity

Lists several concrete capabilities ("xUnit, FsUnit, Unquote, FsCheck property-based testing, integration tests, and test organization") but frames them as "patterns" rather than action verbs and omits mocking/Testcontainers, so anchor 4 (several specific actions, minor gaps) fits better than the comprehensive anchor 5.

4 / 5

Completeness

Explicitly answers both: the "what" ("F# testing patterns with xUnit, FsUnit, Unquote, FsCheck property-based testing, integration tests, and test organization best practices") and a concrete "when" ("Use when writing F# tests with xUnit, FsUnit, Unquote, or FsCheck"), matching the anchor-5 example structure; not 4 because the when-clause is explicit with concrete trigger phrases rather than merely present.

5 / 5

Trigger Term Quality

"F# tests", "xUnit", "FsUnit", "Unquote", "FsCheck", "property-based testing", "integration tests" give good keyword coverage, but common variations like "unit testing", "dotnet test", or ".NET tests" are missing, matching anchor 4 rather than the comprehensive-synonym anchor 5.

4 / 5

Distinctiveness Conflict Risk

The F#-specific niche plus named test frameworks is clearly distinguishable, but requests like "write tests for my .NET project" could overlap with a sibling csharp-testing skill (which the body itself references), matching anchor 4 rather than the minimal-conflict anchor 5.

4 / 5

Total

17

/

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

metadata_version

'metadata.version' is missing

Warning

Total

15

/

16

Passed

Repository
affaan-m/ECC
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.