What problem does it solve? Changing unfamiliar, untested legacy code risks silently breaking hidden behavior that downstream consumers depend on. This Skill builds a characterization-test safety net that freezes what the code actually does — not what it should do — so modifications become deliberate engineering decisions instead of gambles. ## Core Features & Use Cases - Seam Tracing: Trace from an entry point (route handler, CLI arg, cron job) inward to the change target, verifying behavior by execution rather than trusting names or comments. - Characterization Testing: Capture actual outputs from real production inputs (logs, recorded requests, DB samples) and freeze them as assertions, including surprising behaviors. - Minimal Dependency Breaking: Use extract-and-override or parameterize-constructor techniques to get code under test without risky pre-refactoring. - Use Case: You inherit a 12-year-old billing module with zero tests and must change its rounding logic. Trace the seam, write characterization tests from 50 real invoices, freeze two surprising behaviors, then make the change — only the 3 intended tests fail, confirming no collateral damage. ## Quick Start Use the legacy-code-first-contact skill to build a characterization test suite around this untested module before I change its fee calculation logic.