CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

dotnet-project-structure

Modern .NET project structure including .slnx solution format, Directory.Build.props, central package management, SourceLink, version management with RELEASE_NOTES.md, and SDK pinning with global.json.

Quality

71%

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/project-structure/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

65%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 highly actionable reference with complete, copy-paste-ready examples for every topic it covers. Its weaknesses are verbosity from duplicated blocks, missing validation/verification steps in the version-bump and release workflows, and a monolithic structure that inlines scripts and detailed reference material instead of using bundle files.

Suggestions

Remove the duplicated SourceLink and target-framework-property blocks (keep them only in the complete Directory.Build.props example, or only in Key Patterns), and trim the .slnx benefits table and redundant roll-forward rows.

Add validation steps to the version-management workflow: verify the parsed version matches semver before writing, confirm the VersionPrefix node was found and updated, and run a build check before 'dotnet nuget push' in CI.

Move the PowerShell scripts into a scripts/ bundle directory (so the build.ps1 references to scripts\getReleaseNotes.ps1 resolve) and consider splitting detailed reference sections (CPM, SourceLink) into references/ files, keeping SKILL.md as an overview.

DimensionReasoningScore

Conciseness

The content is dense and concrete but includes avoidable duplication — the SourceLink configuration block and the reusable target-framework properties appear verbatim both in the complete Directory.Build.props example and again in the Key Patterns section — plus a benefits table explaining things that follow from "standard XML" and near-duplicate roll-forward table rows. This is more than the 'minor instances' of the 4 anchor but not severely padded, matching the 3 anchor.

3 / 5

Actionability

Fully executable, copy-paste-ready guidance throughout: a complete Directory.Build.props, exact commands ("dotnet sln MySolution.sln migrate", "dotnet new sln --name MySolution --format slnx"), complete PowerShell functions, CI/CD YAML, and a full project tree. Specific examples cover the common cases, matching the 5 anchor.

5 / 5

Workflow Clarity

The version-management sequence (parse RELEASE_NOTES.md, bump Directory.Build.props, build, pack, push) and the .slnx migration steps are clearly listed, but there are no validation checkpoints — no verification that the version bump succeeded, no error handling if the XML node lookup fails, and the bump script overwrites Directory.Build.props unconditionally. A batch file modification without verification caps this at 3 per the scoring notes.

3 / 5

Progressive Disclosure

Sections are well organized with headers, tables, and a Quick Reference, but the ~520-line body is monolithic with no bundle files at all: the PowerShell scripts and detailed CPM/SourceLink reference material are inlined rather than split into scripts/ or references/, and build.ps1 references "scripts\getReleaseNotes.ps1" paths that do not exist in the bundle. This matches the 3 anchor (good structure, but content that should be separate is inline); it is not a 2 because navigation and sectioning are clear.

3 / 5

Total

14

/

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 specific, keyword-rich description that clearly conveys what the skill covers through named files and technologies. Its main weakness is the absence of any explicit 'Use when...' trigger guidance, which limits when it would be invoked and caps completeness.

Suggestions

Append an explicit trigger clause, e.g.: "Use when setting up or modernizing a .NET solution/repo — migrating .sln to .slnx, centralizing build properties or package versions, configuring SourceLink, or pinning the SDK with global.json."

Add natural synonym terms users would say, such as ".sln", "solution file", "NuGet packages", and "build configuration", to improve trigger-term coverage.

Clarify the distinction from adjacent .NET skills (e.g., note that local tools config via dotnet-tools.json is covered by dotnet-local-tools, not this skill).

DimensionReasoningScore

Specificity

The description enumerates several concrete coverage areas with named files and formats (".slnx solution format, Directory.Build.props, central package management, SourceLink, version management with RELEASE_NOTES.md, and SDK pinning with global.json"), which matches the 'lists several specific actions; minor gaps' anchor rather than the comprehensive 5, since these are topic nouns rather than actions and NuGet.Config/build scripts are omitted.

4 / 5

Completeness

The 'what' is clear (modern .NET project structure with enumerated components), but there is no 'Use when...' clause or equivalent explicit trigger guidance, which caps completeness at 3 per the judging guidelines. It is not a 4 because the 'when' is entirely absent rather than merely under-specified.

3 / 5

Trigger Term Quality

Good keyword coverage with exact natural terms and file names a .NET developer would say ("central package management", "SourceLink", "SDK pinning", "global.json", "Directory.Build.props"), but common synonyms and variations like ".sln", "NuGet", and "build configuration" are missing, so it falls just short of the comprehensive synonym coverage of a 5.

4 / 5

Distinctiveness Conflict Risk

The highly specific .NET tooling terms (.slnx, SourceLink, global.json) make it mostly distinct with minimal wrong-trigger risk, but "central package management" and the broad .NET framing create minor overlap risk with closely related .NET skills (e.g., dotnet-local-tools or NuGet packaging skills), matching the 4 anchor rather than the fully distinct 5.

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

skill_md_line_count

SKILL.md is long (522 lines); consider splitting into references/ and linking

Warning

Total

15

/

16

Passed

Repository

Aaronontheweb/dotnet-skills

Path

skills/project-structure/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.