What problem does it solve? MSBuild properties are frequently misconfigured: defaults that cannot be overridden, DefineConstants or NoWarn values overwritten instead of appended, unquoted conditions that fail on empty properties, and hardcoded paths that break cross-platform builds. This Skill provides canonical patterns to diagnose and fix these property definition issues. ## Core Features & Use Cases - Conditional Defaults: Set overridable property defaults using Condition="'$(Prop)' == ''" so callers can override values. - Composition and Concatenation: Append to list properties like DefineConstants and NoWarn with semicolons instead of overwriting them. - Path Normalization: Handle trailing slashes, cross-platform paths, and relative-to-absolute conversion using MSBuild property functions. - TFM Detection and Evaluation Order: Use GetTargetFrameworkIdentifier, IsTargetFrameworkCompatible, and guard properties, while respecting last-write-wins evaluation semantics. - Use Case: A shared Directory.Build.props sets <DefineConstants>MY_FLAG</DefineConstants> unconditionally, wiping out project-level constants. This Skill rewrites it to append with $(DefineConstants);MY_FLAG and adds proper conditions. ## Quick Start Review my Directory.Build.props file and fix any property definitions that overwrite values instead of appending or that cannot be overridden by individual projects.