Un Claude Skill que entrevista a un hiring manager sobre un rol recién abierto y produce un draft de JD estructurado, skills-based y consciente de la jurisdicción dentro del mismo día laboral. El skill se entrega como un SKILL.md más tres archivos de referencia en apps/web/public/artifacts/jd-writer-claude-skill/. Mételo en tu directorio de skills de Claude Code, reemplaza las plantillas con los andamios reales de tu equipo, y el skill convierte el patrón de 90 minutos “ya escribiré el JD esta semana” en una conversación de 20 minutos que produce un draft que el recruiter puede editar y publicar.
Cuándo usarlo
Usa el skill en el momento en que se abre el rol, antes de cualquier sourcing, antes de cualquier publicación externa, antes de que el recruiter haya gastado tiempo en la call de intake. La forma correcta de input es: título del rol más nivel, las notas sueltas de intake del hiring manager, la jurisdicción objetivo y de uno a tres JDs comparables (internos o externos) para anclar la voz. El skill conduce una entrevista de cinco a ocho preguntas contra esas notas, mapea las respuestas al andamio de role-family relevante de references/1-role-family-templates.md y emite un draft en Markdown.
El caso de uso donde el skill gana más fuerte: abrir un rol el lunes y necesitar un JD postable el miércoles en una jurisdicción de pay transparency. La matriz de jurisdicciones en references/3-jurisdiction-matrix.md inserta el lenguaje verbatim de pay-disclosure, el statement EEO y el lenguaje de acomodación para la jurisdicción objetivo; el recruiter no tiene que buscar NYC Local Law 32 ni California SB 1162 a mitad de draft.
Cuándo NO usarlo
Auto-publicar un JD sin revisión del recruiter. El skill emite un draft, no una publicación. El hiring manager y el recruiter ambos revisan antes de que toque un ATS o un job board. Los JDs redactados por IA introducen errores sutiles — título equivocado, jurisdicción equivocada, scope equivocado — que necesitan un catch humano.
Roles en jurisdicciones de auditoría de rangos salariales antes de revisión de compliance. NYC §8-1402, California SB 1162, Colorado Equal Pay Act todos requieren que el rango publicado refleje un estimado de “buena fe”; el rango del skill viene del input del manager, que no ha sido auditado contra el historial real de ofertas. Rutea el draft a compliance, no a la API de publicación.
Posting de movilidad interna. Voz distinta, requisitos EEO distintos, a menudo convenciones distintas de scope-framing. Usa una plantilla específica de mobility en su lugar.
Backfills donde el JD anterior sigue siendo preciso. Actualiza la fecha last_reviewed del JD anterior y publícalo. Re-redactar introduce drift sin beneficio.
Roles donde el hiring manager aún no ha decidido el scope. El skill amplifica el intake — no puede reemplazarlo. Si el manager no puede responder “cómo se ve el éxito a doce meses como un resultado medible”, el siguiente paso correcto es otra call de scoping, no un draft de JD.
Setup
Pon SKILL.md y el directorio references/ en tu carpeta de skills de Claude Code, preservando la estructura.
Reemplaza references/1-role-family-templates.md con los andamios reales de tu equipo. Los defaults cubren engineering, ventas, marketing, ops y leadership pero usan órdenes de sección genéricos.
Reemplaza references/2-biased-language-blocklist.md con la blocklist real de tu equipo. Los defaults se basan en investigación pública de bias-in-JD (Gaucher 2011, benchmarks de Textio 2023) pero cada equipo tiene sus propios términos específicos al contexto que añadir.
Haz que employment counsel revise references/3-jurisdiction-matrix.md antes de confiar en los bloques verbatim de EEO y acomodación — los defaults son un punto de partida, no asesoría legal.
Prueba sobre un rol donde ya existe un JD actual. Compara la salida del skill con el JD existente; el gap muestra qué necesitan codificar tus andamios y blocklist.
Qué hace realmente el skill
El skill corre cinco sub-tareas en orden estricto, documentadas en la sección Method de SKILL.md. Paso uno: entrevistar contra las notas de intake — cinco a ocho preguntas clarificadoras dirigidas que cubren scope, éxito a doce meses como resultado medible, contexto del equipo, must-have versus nice-to-have skills como conductas observables, el día-a-día realista y las partes difíciles. Por qué intake-notes-first en lugar de template-first: empezar desde una plantilla sesga hacia responsabilidades genéricas, y el JD resultante se lee como cualquier otro JD en LinkedIn.
Paso dos: mapear las respuestas al andamio de role-family más cercano. Paso tres: convertir cada requisito en una skill u outcome observable — “5+ años en FAANG” se convierte en “diseñó y operó sistemas distribuidos a más de 10M requests por día”; “título de CS requerido” se convierte en “fluidez demostrable en systems-design por entrevista o portafolio, título no requerido”. Los requisitos cargados de credenciales encogen el pool de candidatos en un 40-60% sin elevar la calidad de hire, según estudios públicos de BCG y Burning Glass. El skill se niega a escribir “X años de experiencia requeridos” sin una justificación específica de outcome.
Paso cuatro: corre una pasada de bias-screening separada contra el draft completo. Los términos sesgados se acumulan en revisiones, no en primeros drafts; el screening post-draft los detecta de forma más confiable que el self-monitoring durante el draft. Paso cinco: insertar los bloques de compliance verbatim específicos de la jurisdicción.
Realidad de costos
Por JD, el skill gasta aproximadamente 30k-60k tokens (turnos de entrevista, lecturas de referencias, draft, pasada de bias-screen, lookup de jurisdicción), lo que corre alrededor de $0.15-$0.40 en Sonnet 4.5 o $0.75-$2.00 en Opus 4.7. Costo de tiempo: 15-20 minutos de tiempo del hiring manager en la entrevista, 10-15 minutos de tiempo de edición del recruiter. Compáralo con el status quo donde el recruiter gasta 60-90 minutos redactando desde una call de intake de 30 minutos, luego rutea de vuelta al manager para dos rondas de edits a lo largo de tres a cinco días. El skill comprime la cola de redacción sin remover la revisión humana.
El costo compuesto que el skill evita es aguas abajo: un JD vago produce un pool de aplicantes vago, que produce 2-3 rondas extra de screening por hire, según recruiting funnel metrics. El costo por-JD del skill se paga a lo largo del funnel, no solo en el paso de redacción.
Métrica de éxito
Cycle time de “rol abierto” a “JD publicado”. Status quo en la mayoría de equipos de ops: 4-7 días calendario. Con el skill en su lugar: 1-2 días calendario. Trackea esto en tu ATS como req_opened_at a posting_published_at, filtrado a roles donde el hiring manager realmente usó el skill. Métrica secundaria: ratio de requisitos must-have a nice-to-have. El skill capea los must-haves en cinco; la métrica debería converger a una forma 5:N en lugar de la forma 12:0 que producen los JDs cargados de credenciales.
vs alternativas
JDs escritos manualmente por el hiring manager: máxima varianza. Un manager con habilidad produce un gran JD; un manager reluctante produce una copia del JD del rol anterior con el título cambiado. El skill normaliza el output independientemente del engagement del manager.
Textio: bias screening en tiempo real fuerte, buenos benchmarks, débil en la redacción estructural (edita, no redacta). Buen complemento, no reemplazo — corre el skill primero, luego pega en Textio para un screen de segunda pasada.
Datapeople: similar a Textio con guía más fuerte de pay-transparency. El mismo patrón de complemento.
Prompt genérico de Claude sin el skill: produce JDs genéricos porque la voz de la marca, los andamios de role-family, la matriz de jurisdicciones y la blocklist viven en tus archivos de referencia, no en un prompt libre. El skill es la estructura que hace que el output del LLM no sea genérico.
A vigilar
Términos sesgados se cuelan de vuelta durante los edits. La pasada de bias-screening corre sobre el primer draft; si el recruiter reescribe una sección, la pasada necesita re-correrse. Guard: el skill emite un hint rerun-bias-screen como última línea de cada output, y se niega a marcar un JD bias_checked: true sin una llamada explícita de re-screen.
Must-haves no realistas se inflan cuando el manager es un experto de dominio. Los engineers escribiendo JDs de engineering tienden a listar cada herramienta que ellos personalmente usan como must-have. Guard: el skill capea los must-haves en cinco y fuerza cualquier cosa más allá a nice-to-have, con override explícito del manager requerido para exceder el cap.
Omisión del rango salarial en jurisdicciones reguladas. Publicar sin un rango en NY, CA, CO, WA o IL dispara multas por violación. Guard: cuando la jurisdicción coincide con la lista regulada y pay_range falta, el skill reemplaza la sección de comp con un TODO bloqueante y se niega a emitir un status “ready-to-post”.
Mismatch de voz con el employer brand. Los defaults genéricos de Claude producen JDs genéricos. Guard: el skill requiere al menos un JD comparable en el input comparables y se niega a redactar sin él.
Length creep. Los JDs por encima de 600 palabras se leen en diagonal y la calidad de hire baja a medida que crece la longitud. Guard: el skill apunta a 400 palabras para roles individual-contributor y 550 para leadership, con un footer de word-count que avisa por encima del cap.
Stack
Claude Code o Claude.ai con Skills personalizados habilitados — corre el loop de entrevista de SKILL.md y las lecturas de referencias.
Tu ATS — destino del JD publicado. El skill emite Markdown; el recruiter pega en el ATS.
Tu referencia de voz de employer brand — al menos un JD comparable cargado en el input comparables en cada corrida.
Opcional: Textio o Datapeople — bias screen de segunda pasada sobre el draft antes de publicar.
---
name: jd-writer
description: Interview a hiring manager about a new role and produce a structured, skills-based, jurisdiction-aware job description draft ready for recruiter review. Use this skill at the moment a role is opened, before any sourcing or posting.
---
# JD writer
## When to invoke
Whenever a hiring manager has decided to open a role and you need a usable JD within the same working day. Take a role title plus level, the manager's intake notes, and the target jurisdiction as input, then produce a structured Markdown JD that a recruiter can edit and post.
Do NOT invoke this skill for:
- Auto-publishing a JD to a careers site or job board without recruiter review
- Roles that include compensation in jurisdictions that require pay-range audits (NYC §8-1402, CA SB 1162, CO Equal Pay Act) before public posting — produce the draft, but route it to compliance, not the publishing API
- Internal-mobility postings (different voice, different EEO requirements, use the mobility-template skill instead)
- Backfills where the prior JD is still accurate (just refresh the prior JD's `last_reviewed` date — don't redraft)
## Inputs
- Required: `role` — title plus level (e.g. `Senior Backend Engineer`, `Director of Marketing Operations`). Title alone is insufficient.
- Required: `intake_notes` — free-text notes from the hiring-manager intake call. The skill interviews against these, not from a blank canvas.
- Required: `jurisdiction` — primary posting jurisdiction (e.g. `US-NY`, `US-CA`, `US-CO`, `EU-DE`, `UK`). Drives the compliance footer.
- Optional: `comparables` — paths or URLs to 1-3 comparable JDs, internal or external. The skill uses these for voice and structure calibration.
- Optional: `icp_candidate` — short description of the target candidate shape (years of experience band, prior-company patterns, motion). Used to tune must-have vs nice-to-have language.
- Optional: `pay_range` — min/max in local currency. Required if `jurisdiction` matches a pay-transparency state.
- Optional: `comp_philosophy` — one paragraph on equity, bonus, benefits. Reused across roles so usually loaded once.
## Reference files
Always read the following from `references/` before drafting. They contain the user's role-family templates, biased-language blocklist, and jurisdiction matrix. Without them the draft is generic.
- `references/1-role-family-templates.md` — JD scaffolds per role family (engineering, sales, marketing, ops, leadership). Replace contents with your team's actual scaffolds.
- `references/2-biased-language-blocklist.md` — terms to flag and the neutral substitutions to suggest. Replace contents with your team's actual blocklist; the defaults are a starting point.
- `references/3-jurisdiction-matrix.md` — per-jurisdiction compliance requirements (pay disclosure, EEO statement, accommodation language, application-data restrictions). Replace contents with your team's legal-reviewed matrix.
## Method
Run these five sub-tasks in order. Do not parallelize — the bias screen must run on the actual draft, and the jurisdiction check must run on the actual compensation language.
### 1. Interview against the intake notes
Read the intake notes, then ask the hiring manager 5-8 targeted clarifying questions. Topic order: scope and ownership, success at 12 months as a measurable outcome, the team context, must-have vs nice-to-have skills articulated as observable behaviors, the realistic day-to-day, the parts of the role that are hardest. Why intake-notes-first rather than template-first: starting from the template biases toward generic responsibilities; starting from the manager's own framing surfaces what makes this role specific to this team at this moment.
### 2. Map to the role-family scaffold
Match the role to the closest scaffold in `references/1-role-family-templates.md`. Use the scaffold for section order and headers, not for content. Why a scaffold rather than a free form: recruiters and candidates skim JDs in a predictable pattern; consistent structure raises completion rate on application forms.
### 3. Draft skills-based requirements
Convert each "must have" into an observable skill or outcome statement, not a credential. "5+ years at FAANG" becomes "designed and operated distributed systems at over 10M requests per day." "CS degree required" becomes "demonstrable systems-design fluency, by interview or portfolio, degree not required." Why skills-based: credential-laden requirements shrink the candidate pool by 40-60% without raising hire quality, per public BCG and Burning Glass studies. The skill should refuse to write "X years experience required" without a specific outcome justification.
### 4. Bias-screening pass
Run the entire draft against `references/2-biased-language-blocklist.md`. Flag every match and propose a neutral substitution. Common categories: gendered terms (rockstar, ninja, aggressive), age-coded terms (digital native, recent graduate, energetic), ableist defaults (must be able to stand for 8 hours when role is desk-based), culture-fit framings that proxy for in-group preference. Why a separate pass rather than inline screening: bias terms cluster in revisions, not first drafts — post-draft screening catches them more reliably than during-draft self-monitoring.
### 5. Jurisdiction-and-compliance check
Look up the `jurisdiction` value in `references/3-jurisdiction-matrix.md`. Insert the required pay-range disclosure, EEO statement, accommodation language, and any application-data restrictions verbatim from the matrix. If the jurisdiction requires a pay range and `pay_range` was not supplied, emit a TODO block in place of the comp section and surface the missing input at the top of the output.
## Output format
```markdown
# {Role title} — {Level}
> Draft generated by jd-writer skill on {YYYY-MM-DD}. Recruiter review
> required before posting. Jurisdiction: {jurisdiction}.
## About the role
Two to three sentences on what the role does and why it matters to the
team's twelve-month plan. Names the team and the closest collaborators.
## What you'll do
- {Outcome-framed responsibility 1}
- {Outcome-framed responsibility 2}
- {Outcome-framed responsibility 3}
- {Outcome-framed responsibility 4}
- {Outcome-framed responsibility 5}
## What we're looking for — must have
- {Observable skill or outcome 1}
- {Observable skill or outcome 2}
- {Observable skill or outcome 3}
## What we're looking for — nice to have
- {Observable skill or outcome 1}
- {Observable skill or outcome 2}
## About the team
One paragraph: team mission, who the role works with day to day, what
the team is shipping in the next two quarters.
## Compensation and benefits
- Salary range: {currency min}–{currency max} (per
{jurisdiction} pay-transparency requirements)
- Equity: {band}
- Bonus: {structure}
- Benefits: {summary linking to benefits page}
- Location: {remote / hybrid / on-site} — {office locations or remote
regions}
## Equal employment opportunity
{Verbatim EEO statement from references/3-jurisdiction-matrix.md for
the target jurisdiction.}
## Accommodations
{Verbatim accommodation statement from
references/3-jurisdiction-matrix.md.}
## How to apply
Apply via {URL}. Application deadline: {date or rolling}. Expected
process: {N stages, named, with rough timing}.
```
## Watch-outs
- **Gendered or coded language slips back in during edits.** The bias-screening pass is run on the first draft; if the recruiter rewrites a section, the pass should be rerun. Guard: the skill emits a "rerun-bias-screen" hint as the last line of every output, and refuses to mark a JD `bias_checked: true` without an explicit re-screen call.
- **Unrealistic must-haves balloon when the manager is a domain expert.** Engineers writing engineering JDs tend to list every tool they personally use as a must-have. Guard: the skill caps must-haves at five and forces anything beyond that into nice-to-have, with the manager's explicit override required to exceed the cap.
- **Pay-range omission in regulated jurisdictions.** Posting without a range in NYC, CA, CO, WA, IL (eff. 2025) triggers per-violation fines. Guard: when `jurisdiction` matches the regulated list and `pay_range` is missing, the skill replaces the comp section with a blocking TODO and refuses to emit a "ready-to-post" status.
- **Voice mismatch with employer brand.** Generic Claude defaults read as generic JDs. Guard: the skill requires at least one comparable JD in `comparables` and refuses to draft without it; the comparable is used as the voice anchor, not just for structure.
- **Length creep.** Job descriptions over 600 words get skim-read; hire-quality drops as length grows. Guard: the skill targets 400 words for individual-contributor roles, 550 for leadership, and emits a word-count footer with a warning above the cap.
# Role-family JD scaffolds — TEMPLATE
> Replace the contents of this file with your team's actual scaffolds.
> The jd-writer skill reads this file on every run and uses it for
> section ORDER, not for section CONTENT — content comes from the
> hiring-manager interview. Without your real scaffolds, every JD reads
> the same.
Each scaffold lists section headers in the order recruiters expect to see them for that role family. Add or remove sections per family — the defaults below are starting points.
## Engineering (IC)
1. About the role
2. What you'll do
3. What we're looking for — must have
4. What we're looking for — nice to have
5. Tech stack you'll work with
6. About the team
7. Compensation and benefits
8. Equal employment opportunity
9. Accommodations
10. How to apply
Notes: Tech stack section sits before "About the team" because engineers skim for it first. Cap must-haves at five. Avoid version numbers (Python 3.11+) — they age the JD fast.
## Engineering (leadership: EM, director, VP)
1. About the role
2. What success looks like in 12 months
3. What you'll do
4. What we're looking for — must have
5. What we're looking for — nice to have
6. About the team and org context
7. Compensation and benefits
8. Equal employment opportunity
9. Accommodations
10. How to apply
Notes: Lead with the 12-month outcome, not the responsibilities — senior candidates evaluate on scope and mandate before tactics. "About the team" expands to org context (reports up, dotted lines, peer functions).
## Sales (IC: AE, AM, SDR)
1. About the role
2. What you'll do
3. What we're looking for — must have
4. What we're looking for — nice to have
5. Quota, comp plan, and territory
6. About the team
7. Compensation and benefits
8. Equal employment opportunity
9. Accommodations
10. How to apply
Notes: Quota and territory sit above "About the team" because they're the deciding inputs for sales candidates. Comp section then expands the OTE math.
## Marketing (IC and leadership)
1. About the role
2. What you'll do
3. What we're looking for — must have
4. What we're looking for — nice to have
5. About the team and how marketing partners with sales/product
6. Compensation and benefits
7. Equal employment opportunity
8. Accommodations
9. How to apply
Notes: Always include the cross-functional partnership context — marketing candidates evaluate the partnership shape as much as the mandate.
## Operations (RevOps, MarketingOps, SalesOps, BizOps)
1. About the role
2. What you'll do
3. The systems you'll own
4. What we're looking for — must have
5. What we're looking for — nice to have
6. About the team
7. Compensation and benefits
8. Equal employment opportunity
9. Accommodations
10. How to apply
Notes: "Systems you'll own" (Salesforce, HubSpot, Marketo, dbt, etc.) is the deciding section for ops candidates. List the actual systems, not categories.
## Cross-family rules
- Every scaffold ends with EEO + accommodations + how-to-apply, in that order. The jurisdiction-matrix file supplies the verbatim language for the first two.
- "Compensation and benefits" is always present. The jurisdiction-matrix file decides whether the pay range is mandatory.
- "What we're looking for" is always split into must-have and nice-to-have. Combining them is the single most common source of candidate-pool shrinkage.
# Biased-language blocklist — TEMPLATE
> Replace the contents of this file with your team's actual blocklist.
> The defaults below are a starting point drawn from public bias-in-JD
> research (Gaucher et al. 2011, Textio 2023 benchmarks). The jd-writer
> skill flags every match found in a draft and suggests a neutral
> substitution.
Format: each row is `term | category | suggested substitution | reason`. The skill matches case-insensitively on whole words.
## Gendered terms
| Term | Category | Substitution | Reason |
|---|---|---|---|
| rockstar | masculine-coded | high-performing | clusters in male applicants per Gaucher |
| ninja | masculine-coded | skilled practitioner | same |
| guru | masculine-coded | expert | same |
| aggressive | masculine-coded | proactive / driven | same |
| dominant | masculine-coded | leading / strong | same |
| competitive | masculine-coded | results-oriented | same |
| nurturing | feminine-coded | supportive | same |
| sympathetic | feminine-coded | empathetic | same |
| loyal | feminine-coded | committed | same |
## Age-coded terms
| Term | Category | Substitution | Reason |
|---|---|---|---|
| digital native | age-coded (young) | comfortable with web tooling | proxies for under-30 |
| recent graduate | age-coded (young) | early-career | same |
| energetic | age-coded (young) | engaged | same |
| young | age-coded (young) | early-career | direct violation in US |
| seasoned | age-coded (older) | experienced | proxies for over-50 |
| mature | age-coded (older) | experienced | same |
## Ableist defaults
| Term | Category | Substitution | Reason |
|---|---|---|---|
| must be able to stand | ableist if desk-based | remove unless physical | ADA-relevant |
| must lift X lbs | ableist if desk-based | remove unless physical | ADA-relevant |
| see clearly / hear clearly | ableist | remove unless safety-critical | ADA-relevant |
| crazy hours | ableist + culture-flag | demanding workload (with hours stated) | same |
## Culture-fit proxies
| Term | Category | Substitution | Reason |
|---|---|---|---|
| culture fit | in-group proxy | values alignment with {specific value} | well-documented bias vector |
| we work hard, play hard | in-group proxy | remove or specify hours | same |
| family | in-group proxy | team | same |
| like-minded | in-group proxy | aligned on {specific principle} | same |
| native English speaker | nationality proxy | strong professional English | direct EEOC concern in US |
## Credential-laden defaults
| Term | Category | Substitution | Reason |
|---|---|---|---|
| Ivy League | credential proxy | strong undergraduate background | proxies for class |
| top-tier university | credential proxy | strong undergraduate background | same |
| FAANG | credential proxy | experience at scale (state the scale) | proxies for in-network |
| 10+ years experience | credential proxy | demonstrated outcome at this scope | shrinks pool 40-60% |
## Override mechanism
Some terms in this list are unavoidable in some roles (e.g. "must lift 50lbs" for a warehouse role). The skill accepts an inline override of the form `<!-- jd-writer:keep "<term>" reason="<reason>" -->` placed immediately above the line. The override and reason are preserved in the final draft for recruiter review.
## Last edited
{YYYY-MM-DD}
# Jurisdiction compliance matrix — TEMPLATE
> Replace the contents of this file with your team's legal-reviewed
> matrix. The defaults below reflect public legislation as of mid-2025
> but are not legal advice and will age. The jd-writer skill reads
> this file on every run and inserts the verbatim language for the
> target jurisdiction.
For each jurisdiction, the matrix supplies four blocks: pay-disclosure rule, EEO statement (verbatim), accommodation statement (verbatim), and application-data restrictions (e.g. salary-history ban). The skill copies the verbatim blocks into the JD output without paraphrasing.
## US-NY (New York City + New York State)
- **Pay disclosure**: Required. Must include good-faith minimum and maximum annual salary range for the role. NYC Local Law 32 / NY State S9427A.
- **EEO statement**: `{Company}` is an equal opportunity employer. All qualified applicants will receive consideration for employment without regard to race, color, religion, sex, sexual orientation, gender identity or expression, national origin, age, disability, marital status, veteran status, or any other characteristic protected by federal, state, or local law.
- **Accommodation statement**: `{Company}` is committed to providing reasonable accommodations to qualified individuals with disabilities. If you require an accommodation during the application or interview process, please contact `{accommodations email}`.
- **Application-data restrictions**: Salary-history inquiries prohibited. Do not include "What is your current salary?" on application forms.
## US-CA (California)
- **Pay disclosure**: Required for employers with 15+ employees. Must include pay scale (range). SB 1162.
- **EEO statement**: as US-NY, with the addition of "or any characteristic protected under California Fair Employment and Housing Act."
- **Accommodation statement**: as US-NY.
- **Application-data restrictions**: Salary-history inquiries prohibited (Labor Code §432.3). Ban-the-box: criminal-history inquiry only after conditional offer.
## US-CO (Colorado)
- **Pay disclosure**: Required. Must include hourly or salary compensation, a general description of bonuses/commissions, and a general description of benefits. Equal Pay for Equal Work Act.
- **EEO statement**: as US-NY.
- **Accommodation statement**: as US-NY.
- **Application-data restrictions**: Salary-history inquiries prohibited.
## US-WA (Washington)
- **Pay disclosure**: Required for employers with 15+ employees. Must include wage scale or salary range, and a general description of benefits and other compensation. RCW 49.58.110.
- **EEO statement**: as US-NY.
- **Accommodation statement**: as US-NY.
- **Application-data restrictions**: Salary-history inquiries prohibited.
## US-IL (Illinois, eff. 2025)
- **Pay disclosure**: Required for employers with 15+ employees. Must include pay scale and benefits. PA 103-0539.
- **EEO statement**: as US-NY.
- **Accommodation statement**: as US-NY.
- **Application-data restrictions**: Salary-history inquiries prohibited.
## US-other (federal floor)
- **Pay disclosure**: Not required by federal law. Recommended for consistency.
- **EEO statement**: as US-NY (federal characteristics only).
- **Accommodation statement**: as US-NY.
- **Application-data restrictions**: Federal floor only. Check state and city law before posting.
## EU-DE (Germany)
- **Pay disclosure**: Not required at posting. Required on request under Entgelttransparenzgesetz for employers with 200+ employees.
- **EEO statement**: `{Company}` ist Arbeitgeber, der Chancengleichheit fördert. Wir berücksichtigen alle qualifizierten Bewerber unabhängig von Rasse, Hautfarbe, Religion, Geschlecht, sexueller Orientierung, Geschlechtsidentität, nationaler Herkunft, Alter, Behinderung, Familienstand oder Veteranenstatus.
- **Accommodation statement**: as US-NY, German equivalent.
- **Application-data restrictions**: Photo and date-of-birth on application discouraged under AGG. Do not request.
## UK
- **Pay disclosure**: Not legally required at posting (consultation ongoing). Recommended.
- **EEO statement**: `{Company}` is committed to equal opportunities and welcomes applications from all sections of the community, regardless of age, disability, gender reassignment, marriage and civil partnership, pregnancy and maternity, race, religion or belief, sex, or sexual orientation.
- **Accommodation statement**: Reasonable adjustments available on request — contact `{accommodations email}`.
- **Application-data restrictions**: GDPR / UK GDPR compliance required for any data collected.
## Regulated-jurisdictions list
These jurisdictions require pay-range disclosure. The jd-writer skill treats this list as the trigger for the "pay-range missing" guard:
- US-NY
- US-CA
- US-CO
- US-WA
- US-IL
## Last edited
{YYYY-MM-DD} — review quarterly. This matrix is a starting point, not legal advice. Have employment counsel review before relying on it for posting.