CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

aot-trimming

Guidelines for making .NET libraries and applications trimming-safe and Native AOT compatible. Covers the trimming/AOT model, the MSBuild properties that enable analysis (IsTrimmable, IsAotCompatible, PublishTrimmed, PublishAot), the trimming attributes (RequiresUnreferencedCode, RequiresDynamicCode, DynamicallyAccessedMembers, UnconditionalSuppressMessage), IL2xxx/IL3xxx warning codes, and a pattern playbook: source generators and UnsafeAccessor, generated-interception diagnostic suppressors, intentional runtime scanning boundaries, trimming-safe islands and feature switches, migration analyzers, and temporary warning-approval baselines. Use when introducing trimming/AOT support, resolving IL2xxx/IL3xxx warnings, or making reflection-heavy code trimming-safe in C# / .NET codebases. For System.Text.Json AOT scenarios, see also the serialization skill.

Quality

85%

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

SKILL.md
Quality
Evals
Security

Quality

Content

78%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.

Highly actionable, well-sequenced content with strong code examples and a verification step. Its chief defect is progressive disclosure: the two reference files it repeatedly points to are absent from the bundle, leaving dead links.

Suggestions

Ship the referenced bundle files (trimming-attributes-reference.md and aot-trimming-playbook-reference.md) under ./references/ so the in-body links resolve, or inline the essential parts and drop the links.

Add an explicit fix-and-re-verify feedback loop to the Verify checklist step (e.g. 'if IL2xxx/IL3xxx warnings appear, annotate or replace the reflection, then re-publish until zero warnings').

De-duplicate the 'keep reflection and annotate it' guidance that appears in Core Model, Attribute Model, and Pattern Playbook so each section states it once and cross-references.

DimensionReasoningScore

Conciseness

The body is dense and technical, assuming .NET/reflection knowledge without padding, but the 'keep reflection and annotate it' guidance recurs across Core Model, Attribute Model, and Pattern Playbook, and the closing checklist restates earlier sections — minor tightening opportunities.

4 / 5

Actionability

Copy-paste-ready XML MSBuild snippets, concrete publish commands ('dotnet publish -c Release -r <rid> -p:PublishAot=true'), exact attribute signatures, and a reflection→DynamicallyAccessedMemberTypes mapping table give fully executable guidance across the common cases.

5 / 5

Workflow Clarity

A clear 6-step Generation Checklist with an explicit Verify step ('publish trimmed and AOT ... zero warnings') provides a sound sequence, but there is no explicit fix-and-re-verify feedback loop for when warnings appear.

4 / 5

Progressive Disclosure

The structure is well designed — a concise overview pointing via clearly signaled, one-level-deep links to trimming-attributes-reference.md and aot-trimming-playbook-reference.md — but neither referenced file exists in the bundle (no references/scripts/assets directories), so the navigation is non-functional.

3 / 5

Total

16

/

20

Passed

Description

87%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, highly specific description with explicit 'what' and 'when' guidance and low conflict risk. Its main weakness is verbosity: it reads like an expanded outline rather than a concise capability statement.

DimensionReasoningScore

Specificity

The description lists many concrete capabilities (MSBuild properties IsTrimmable/IsAotCompatible, attributes RequiresUnreferencedCode/DynamicallyAccessedMembers, IL2xxx/IL3xxx codes, source generators, UnsafeAccessor), but it is padded into a table-of-contents dump rather than crisp action statements, which the anti-verbosity guideline penalizes.

4 / 5

Completeness

It clearly answers 'what' ('Guidelines for making .NET libraries and applications trimming-safe and Native AOT compatible. Covers...') and explicitly answers 'when' with concrete trigger phrases ('Use when introducing trimming/AOT support, resolving IL2xxx/IL3xxx warnings, or making reflection-heavy code trimming-safe').

5 / 5

Trigger Term Quality

Good natural-term coverage — 'trimming', 'Native AOT', 'AOT', 'IL2xxx/IL3xxx warnings', 'reflection-heavy code', 'C# / .NET' — with an explicit 'Use when' trigger clause; a few common variations (e.g. 'linker', 'publish trimmed') are implied rather than named.

4 / 5

Distinctiveness Conflict Risk

It occupies a clear niche (.NET trimming / Native AOT) with distinct triggers, and even disambiguates the boundary with the serialization skill for System.Text.Json AOT, minimizing conflict risk.

5 / 5

Total

18

/

20

Passed

Validation

87%

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

Validation — 14 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

frontmatter_unknown_keys

Unknown frontmatter key(s) found; consider removing or moving to metadata

Warning

relative_links

Relative link issues: 9 missing

Warning

Total

14

/

16

Passed

Repository

Aaronontheweb/dotnet-skills

Path

skills/aot-trimming/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.