What problem does it solve? Codebases often test membership with .includes(), .indexOf(), or .some() on arrays, which performs an O(n) scan on every query and obscures intent. This Skill enforces a consistent rule: any "is X one of these values" check uses a Set (or Map when a value is attached) for O(1) hash lookups. ## Core Features & Use Cases - Static lookup tables: Declares constant collections as const FOO = new Set<T>([...]) at module scope and queries them with .has() instead of ARRAY.includes(x). - Dynamic membership tracking: Uses Set.add/delete for mutable collections like units on a field or seen ids, replacing array.push plus indexOf/splice removal patterns. - Disguised membership detection: Flags predicate scans that reduce to identity comparison (arr.some(v => v === x)) and converts them to Set lookups. - Use Case: While reviewing a battle engine, you find MAJOR_STATUS_CONDITIONS.some((s) => s === status); the Skill rewrites it as a module-level MAJOR_STATUS Set queried with .has(status). ## Quick Start Review this TypeScript file and convert every array membership check into a Set or Map lookup, keeping arrays only where order or genuine predicate filtering matters.