padosoft-contract-changeslisted
Install: claude install-skill padosoft/skills
# Contract changes
Changing a signature is not editing a function. It is editing **everything that agreed to it** — callers,
overrides, mocks, fixtures, serialised payloads, documentation — and the ones you do not find are the ones
that fail later, somewhere else, in a way that does not name you.
**The rule: find every dependent before you edit, classify what breaks, and land the whole change as one
coherent unit.**
---
## 1. Four kinds of dependent, and only one is obvious
| Dependent | Missed because |
|---|---|
| **Direct callers** | this is the one everybody greps for |
| **Overrides** in subclasses, traits, interface implementations | they do not *call* the method, so a call-site search never shows them |
| **Test doubles**: mocks, stubs, fakes, spies | they re-declare the signature to imitate it |
| **Frozen copies**: fixtures, recorded payloads, contract snapshots, generated clients, documentation | nothing links them to the source at all |
Search for all four, and use whatever the ecosystem gives you that understands *symbols* rather than text
before falling back to a text search:
```bash
# callers
rg -n "->\s*<method>\s*\(|::\s*<method>\s*\(|\b<method>\s*\(" src/ tests/
# overrides and re-declarations — the ones the caller search cannot see
rg -n "function\s+<method>\s*\(|def\s+<method>\s*\(|<method>\s*\(.*\)\s*[:{]" src/ tests/
# who extends or implements the declaring type
rg -n "extends\s+<Type>\b|implements\s+<Type>\b|: <Type>\b" src/ tests/
# frozen copie