language-check
Analyze code and documentation for non-inclusive language, understanding context and intent before flagging issues. Use when reviewing code for biased terms, gendered language, or problematic terminology.
What this skill does
# Language Check
Analyze files for non-inclusive language, with emphasis on understanding context before flagging issues.
## Philosophy
This is not a linter. A linter finds strings; this skill *understands code*.
The goal is to:
1. Understand what the code/content is doing
2. Consider who will read or use it
3. Identify language that could exclude or harm
4. Provide contextual, thoughtful suggestions
Pattern matching helps *find candidates*, but your job is to *analyze and reason*.
## Scope
The user may specify a file path, glob pattern, or directory. If not specified, ask what they'd like to check.
## Config Integration
Before starting, follow the migration preflight in `references/config-migration.md`, then read `.assistant-config.md` from the project root.
If it exists:
1. **Read** scope decisions and acknowledged findings
2. **Skip** any acknowledged findings (note them in output)
3. **Respect** priority settings
4. **Note** at the top of output: "Config loaded: .assistant-config.md"
If config says certain checks are out of scope, still run language checks (core dignity principles), but respect acknowledged individual findings.
## Process
### 1. Read and Understand
First, **read the files** to understand:
- What is this code/content for?
- Who is the audience? (developers? end users? both?)
- What's the tone and style?
### 2. Analyze Holistically
As you read, look for language issues in context:
**Gendered language** - Does this assume gender? Use "guys", "he/she", gendered job titles?
- Consider: Who reads this? How might non-male or non-binary people feel?
**Ableist language** - Does this use disability as metaphor? ("crazy", "blind to", "lame")
- Consider: How does this land for someone with that condition?
**Racially loaded terms** - Does this use terms with harmful history? ("whitelist", "master/slave")
- Consider: What's the impact of normalizing these metaphors?
**Dismissive language** - Does this assume things are "easy" or "obvious"?
- Consider: Easy for whom? What if someone struggles with this?
### 3. Apply Context
Not every match is a problem. Use judgment:
**Probably fine:**
- "master's degree" (academic term)
- "blind study" (scientific term)
- "Master" in a proper noun (MasterCard, Scrum Master as job title)
- Historical quotes or references
- Code interfacing with external systems that use these terms
**Probably worth flagging:**
- Variable names: `whitelist`, `masterDB`, `slaveNode`
- Comments addressing readers: "Hey guys", "obviously you'll want to..."
- Documentation: "simply click", "just run this command"
- Error messages users will see
### 4. Suggest Thoughtfully
Don't just say "change X to Y". Explain:
- Why this matters for this specific context
- What the impact might be
- A suggestion that fits the code's style
## Reference
For comprehensive term lists, see `references/language-terms.md`. Use this as a guide, not a checklist.
## Output Format
Keep it **compact**. This is a "fast" check—users want findings, not essays.
```markdown
## Language Analysis: [path]
[1-2 sentences: What is this? Who's the audience? What's the main issue pattern?]
---
### Racially Loaded Terms (4 issues)
Terms with slavery/racial connotations that normalize harmful metaphors.
| Location | Term | Suggestion |
|----------|------|------------|
| file.tsx:7 | `whitelist` | `allowlist` |
| file.tsx:8 | `master/slave` | `primary/replica` |
### Ableist Language (3 issues)
Uses disability as shorthand for "broken" or "bad."
| Location | Term | Suggestion |
|----------|------|------------|
| file.tsx:92 | `sanityCheck` | `validateData` |
| docs.md:57 | "crazy" | "unexpected" |
### Gendered Language (2 issues)
Assumes male as default.
| Location | Term | Suggestion |
|----------|------|------------|
| docs.md:3 | "Hey guys" | "Hello everyone" |
| docs.md:65 | "businessmen" | "professionals" |
### Dismissive Language (3 issues)
Minimizes difficulty, makes struggling users feel inadequate.
| Location | Term | Suggestion |
|----------|------|------------|
| docs.md:7 | "super simple" | (remove) |
| docs.md:11 | "Obviously" | "We recommend" |
---
### Exceptions
- `Mastercard` in docs.md:36 — brand name, fine
### Summary
**22 issues** across 2 files. Priority: user-facing docs (hostile tone in troubleshooting section), then racially loaded variable names.
```
## Output Guidelines
- **Use tables** for findings—one row per issue, not a paragraph
- **One-sentence category intros** max—explain why it matters, then list findings
- **Skip code blocks** unless context is truly ambiguous
- **No individual "Analysis" paragraphs**—the table columns say enough
- **Insights only when non-obvious**—skip the insight if it's just restating why the category matters
- **Summary is a TL;DR**—total count, priority, where to start
## What Makes This Different From a Linter
A linter would flag every instance of "master". You should:
1. **Understand intent** - Is this a database replica config or someone's job title?
2. **Consider audience** - Is this internal code comments or user-facing docs?
3. **Weigh impact** - Will changing this break external integrations?
4. **Suggest appropriately** - Match the codebase's style and conventions
Your value is **judgment**, not detection.
Related in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.