Skip to content

Commit 893d1b7

Browse files
committed
chore(claude): add 'inclusive language' rule to CLAUDE.md
Codifies the substitution table for whitelist/blacklist/master/etc. Allowlist/denylist/main aren't euphemisms — they're more accurate descriptions of what the lists do. Carves out exceptions for third-party APIs and vendored upstream sources where renaming would break the boundary.
1 parent 1b9471c commit 893d1b7

1 file changed

Lines changed: 22 additions & 0 deletions

File tree

CLAUDE.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -231,6 +231,28 @@ Core infrastructure library for Socket.dev security tools.
231231

232232
When you spot duplication, the answer is never "update both" — the answer is "delete one and import the other." Fix the architecture, not the symptom.
233233

234+
### Inclusive Language
235+
236+
Use precise, neutral terms over historical metaphors that imply hierarchy or exclusion. The substitutes are not euphemisms — they're more *accurate* (a list of allowed values genuinely is an "allowlist"; "whitelist" is a metaphor that hides what the list does).
237+
238+
| Replace | With |
239+
| ---------------------------------------- | ----------------------------------------------------- |
240+
| `whitelist` / `whitelisted` | `allowlist` / `allowed` / `allowlisted` |
241+
| `blacklist` / `blacklisted` | `denylist` / `denied` / `blocklisted` / `blocked` |
242+
| `master` (branch, process, copy) | `main` (branch); `primary` / `controller` (process) |
243+
| `slave` | `replica`, `worker`, `secondary`, `follower` |
244+
| `grandfathered` | `legacy`, `pre-existing`, `exempted` |
245+
| `sanity check` | `quick check`, `confidence check`, `smoke test` |
246+
| `dummy` (placeholder) | `placeholder`, `stub` |
247+
248+
Apply across **code** (identifiers, comments, string literals), **docs** (READMEs, CLAUDE.md, markdown), **config files** (YAML, JSON), **commit messages**, **PR titles/descriptions**, and **CI logs** you control.
249+
250+
Two exceptions where the legacy term must remain (because changing it breaks something external):
251+
- **Third-party APIs / upstream code**: when interfacing with an external API field literally named `whitelist`, keep the field name; rename your local variable. E.g. `const allowedDomains = response.whitelist`.
252+
- **Vendored upstream sources**: don't rewrite vendored code (`vendor/**`, `upstream/**`, `**/fixtures/**`). Patch around it if needed.
253+
254+
When you encounter a legacy term during unrelated work, fix it inline — don't defer.
255+
234256
### Sorting
235257

236258
Sort lists alphanumerically (literal byte order, ASCII before letters). Apply this to:

0 commit comments

Comments
 (0)