CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

cswin32-com

Guides struct-based COM interop in MSBuild using CsWin32 patterns. Consult when working with the generic ComScope type, ComClassFactory, IComIID, the IID.Get generic method, delegate* unmanaged vtables, CoCreateInstance, or manually defining COM interfaces not in Win32 metadata (e.g. WMI IWbemLocator, IWbemServices).

Quality

80%

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 ./.github/skills/cswin32-com/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.

An expert-level, project-specific guide with concrete code, exact rules, and a clear decision-driven workflow that wastes few tokens on concepts Claude already knows. Its weakest dimension is progressive disclosure: the body is a long monolith whose test-mocking, token-wrapper, and CLS-compliance sections are separable topics that could live in one-level-deep reference files.

Suggestions

Move 'Mocking Struct-Based COM in Tests' and 'Strongly-typed handle / token wrappers' into one-level-deep reference files (e.g. references/mocking.md, references/tokens.md), linked from a compact SKILL.md summary, so the main file reads as an overview of the COM interop patterns.

Complete the manual-struct code template — full Guid initializer and at least one real AddRef/Release slot — or explicitly mark the elisions as placeholders so the pattern is copy-paste ready.

Deduplicate the throw-vs-return guidance (Workflow step 5 vs. 'Error-Handling Parity When Migrating') into a single section and trim the AcquireSetupConfig example to the ownership-transfer essentials.

DimensionReasoningScore

Conciseness

Dense and expert-assuming throughout — rules like "Never write `T* local; try { ... } finally { local->Release(); }`" convey non-obvious project constraints without explaining basics. Falls short of 5 due to repetition (the throw-vs-swallow rule appears in Workflow step 5 and again in "Error-Handling Parity When Migrating") and the long AcquireSetupConfig example, which could be trimmed to its ownership-transfer essentials.

4 / 5

Actionability

Concrete, near-executable C# for the common cases — ComScope usage, CoCreateInstance activation, the manual struct vtable pattern, the CCW mock bridge — plus exact file locations. Not 5 because the manual-struct template contains elided code ("new(0xE707DCDE, ...)" and the "// AddRef @1, Release @2" comment standing in for real slots), so it is not fully copy-paste ready.

4 / 5

Workflow Clarity

The numbered 6-step workflow is clearly sequenced with a real decision branch (interface in Win32 metadata → generate; not in metadata → manual struct) and error-contract guidance ("`ThrowOnFailure` only when the exception will actually propagate"). Checkpoints are implicit in the error-contract rules rather than explicit validate-then-proceed steps, matching the 4 anchor.

4 / 5

Progressive Disclosure

A ~210-line monolithic body: well-headered, but several self-contained sub-topics that belong in separate reference files are inlined — "Mocking Struct-Based COM in Tests" (~35 lines), "Strongly-typed handle / token wrappers", and "CS3016 CLS Compliance". The only outward reference is the paired-skill link; this matches the 3 anchor (content that should be separate is inline) rather than 4, where most content is appropriately placed.

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: concrete, third-person, with an explicit 'Consult when...' clause enumerating real API-name triggers, fully satisfying the what/when completeness anchor. Its only weaknesses are a few missing natural trigger terms (BSTR, AgileComPointer, ComImport migration) and minor trigger-space overlap with its paired cswin32-interop skill.

DimensionReasoningScore

Specificity

The description names its domain concretely ("Guides struct-based COM interop in MSBuild using CsWin32 patterns") and enumerates specific concrete items — "the generic ComScope type, ComClassFactory, IComIID, the IID.Get generic method, delegate* unmanaged vtables, CoCreateInstance". Falls at 4 rather than 5 because capabilities the body covers (BSTR handling, AgileComPointer, test mocking) are absent, leaving minor gaps in coverage.

4 / 5

Completeness

Explicitly answers both: what — "Guides struct-based COM interop in MSBuild using CsWin32 patterns" — and when — "Consult when working with the generic ComScope type, ... or manually defining COM interfaces not in Win32 metadata (e.g. WMI IWbemLocator, IWbemServices)". Concrete trigger phrases attached to an explicit 'Use when' clause, matching the 5 anchor exactly.

5 / 5

Trigger Term Quality

Triggers are the actual API names a developer would grep for or mention — "ComScope", "ComClassFactory", "IComIID", "IID.Get", "CoCreateInstance", "WMI IWbemLocator, IWbemServices". Good coverage, but a few natural terms users of this skill would say are missing ("BSTR", "AgileComPointer", "ComImport migration"), matching the 4 anchor rather than comprehensive synonym coverage.

4 / 5

Distinctiveness Conflict Risk

Clear niche — struct-based COM interop — with distinct type-level triggers (ComScope, IComIID, delegate* vtables) that the paired general P/Invoke skill wouldn't fire on. Not 5 because it shares the "CsWin32" / "COM interop" trigger space with the sibling cswin32-interop skill, leaving minor overlap risk with that closely related skill.

4 / 5

Total

17

/

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: 10 suspicious

Warning

Total

14

/

16

Passed

Repository

dotnet/msbuild

Path

.github/skills/cswin32-com/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.