What problem does it solve? MSBuild property definitions often fail silently: unconditional assignments block project-level overrides, DefineConstants or NoWarn get overwritten instead of appended, unquoted conditions break on empty properties, and hardcoded paths fail on cross-platform builds. This Skill provides canonical patterns to diagnose and fix these property definition issues. ## Core Features & Use Cases - Conditional Defaults: Set overridable defaults using Condition="'$(Prop)' == ''" so callers can override values in .props files. - Composition and Concatenation: Append to list properties like DefineConstants and NoWarn with semicolons instead of overwriting prior values. - Path Normalization: Use NormalizePath, Path.Combine, and HasTrailingSlash to build cross-platform-safe paths. - TFM Detection and Evaluation Order: Apply GetTargetFrameworkIdentifier, IsTargetFrameworkCompatible, and last-write-wins semantics correctly. - Use Case: A shared .props file sets <DefineConstants>MY_FLAG</DefineConstants> unconditionally, wiping out constants defined by the project. This Skill shows the append pattern $(DefineConstants);MY_FLAG and explains why the unconditional assignment blocked overrides. ## Quick Start Ask the AI to review a Directory.Build.props or .csproj file for property definition anti-patterns such as overwritten DefineConstants, unquoted conditions, or non-overridable defaults.