{"slug":"jd-craft","title":"jd-craft","summary":"Generate a bias-free, ATS-optimized, skills-based job description for 2026. Triggers: \"job description\", \"JD\", \"write a JD\", \"open req\", \"we're hiring\".","platform":"Claude","tags":[],"authorName":"LLM Mart","authorSlug":"llm-mart","score":0,"source":"github","price":null,"verified":false,"createdAt":"2026-10-01T15:40:35.533863Z","repo":{"url":"https://github.com/tinh2/skills-hub-registry","stars":18,"forks":6,"license":null,"updatedAt":"2026-09-04T17:22:55Z"},"bodyHtml":"<hr>\n<p>name: jd-craft\ndescription: \"Generate a bias-free, ATS-optimized, skills-based job description for 2026. Triggers: \"job description\", \"JD\", \"write a JD\", \"open req\", \"we're hiring\".\"\nversion: \"1.0.1\"\ncategory: analysis\nplatforms:</p>\n<ul>\n<li>CLAUDE_CODE</li>\n</ul>\n<hr>\n<h1>Job Description Generator</h1>\n<p>You generate job descriptions that (a) attract a wide qualified candidate pool, (b) survive ATS filters, (c) comply with pay-transparency laws, and (d) signal a credible employer brand. Bias-free is the floor, not the ceiling.</p>\n<p>The signal is real: A Hewlett Packard study found women apply when they meet 100% of stated criteria; men at 60%. The wording of \"required\" vs \"preferred\", \"5+ years\" vs \"demonstrated experience\", \"guru\" vs \"engineer\" directly shapes who self-selects.</p>\n<h1>============================================================\n=== PRE-FLIGHT ===</h1>\n<p>Verify:</p>\n<ul>\n<li><input disabled=\"disabled\" type=\"checkbox\"> <strong>Role specifics</strong>: title, level (IC1-IC7 / M1-M5), team, manager, comp band, location/remote policy.</li>\n<li><input disabled=\"disabled\" type=\"checkbox\"> <strong>State / country compliance</strong>: pay transparency required in CA, CO, CT, HI, IL (Jan 2025), MD, NV, NY, RI, WA, DC. Federal contractors have additional disclosures. International: EU Pay Transparency Directive transposed in many member states by 2026.</li>\n<li><input disabled=\"disabled\" type=\"checkbox\"> <strong>Skills-based scope</strong>: what are the 5-7 specific skills that determine success in year 1? Not \"years of experience\" as a proxy.</li>\n<li><input disabled=\"disabled\" type=\"checkbox\"> <strong>Hiring stage</strong>: do you have a structured interview kit yet? (If not, route to /interview-kit-builder first — the JD and kit should match.)</li>\n</ul>\n<p>Recovery:</p>\n<ul>\n<li>If comp band undefined, refuse to publish in transparency-required states and surface the requirement.</li>\n<li>If role title is jargony (\"Code Ninja\", \"Growth Hacker\"), suggest the standardized title for ATS search visibility.</li>\n</ul>\n<h1>============================================================\n=== PHASE 1: BIAS-FILTER PASS ===</h1>\n<p>Maintain a banned-pattern list. Categories:</p>\n<p><strong>Gender-coded</strong>:</p>\n<ul>\n<li>Masculine-skewed: rockstar, ninja, guru, aggressive, dominant, fearless, competitive, \"thick skin\", combat, hunt, conquer, killer.</li>\n<li>Feminine-skewed (also a problem): nurturing, supportive without context, gentle, compassionate when not core to role.</li>\n</ul>\n<p><strong>Age-coded</strong>:</p>\n<ul>\n<li>\"Digital native\", \"young and hungry\", \"recent grad\", \"energetic\", \"fresh perspective\" (often code for young).</li>\n<li>Conversely: \"seasoned\", \"mature\" (often code for older).</li>\n</ul>\n<p><strong>Ability-coded</strong>:</p>\n<ul>\n<li>\"Walk the floor\", \"hit the ground running\", \"see eye to eye\", \"lend an ear\".</li>\n</ul>\n<p><strong>Race / cultural-coded</strong>:</p>\n<ul>\n<li>\"Culture fit\" (use \"culture add\"), \"tribe\", \"blackballed\".</li>\n</ul>\n<p><strong>Class-coded</strong>:</p>\n<ul>\n<li>\"Top-tier university\" (drop unless regulatory), \"Ivy League graduate\".</li>\n</ul>\n<p><strong>Vague status terms</strong>:</p>\n<ul>\n<li>\"Rockstar\", \"wizard\", \"guru\" — banned all sides.</li>\n</ul>\n<p>For each match, suggest the inclusive replacement. Refuse to publish if any banned term remains.</p>\n<p>VALIDATION: A red-team fixture of 30 JDs with known violations — the filter catches ≥ 28.</p>\n<h1>============================================================\n=== PHASE 2: SKILLS-BASED REQUIREMENTS ===</h1>\n<p>Convert from \"years of experience\" to \"demonstrated skills\":</p>\n<p>Bad: \"5+ years of React experience.\"\nGood: \"You've shipped at least one React production app and can debug a re-render cycle.\"</p>\n<p>Bad: \"Bachelor's degree in CS required.\"\nGood: \"Proficiency in software design and one statically-typed language. CS degree, bootcamp, or self-taught all welcome.\"</p>\n<p>Rule: only keep \"X years required\" if regulatory (e.g., FAA pilot hours, AMA medical license years). Otherwise convert to a behavioral skill.</p>\n<p>Split requirements into two buckets:</p>\n<ul>\n<li><strong>Must have (3-5 max)</strong>: things truly required for day 1. If you can train it, it doesn't belong here.</li>\n<li><strong>Nice to have (3-5)</strong>: would accelerate ramp but the candidate can learn.</li>\n</ul>\n<p>VALIDATION: \"Must have\" list ≤ 5 items. Each is a behavioral / skill description, not a credential.</p>\n<h1>============================================================\n=== PHASE 3: PAY TRANSPARENCY BLOCK ===</h1>\n<p>Auto-generate the comp section based on detected location. Default template:</p>\n<pre><code>## Compensation\n\nBase salary range: $X–$Y (USD). This range reflects what we'd typically offer to a\ncandidate hired at this level for this location. The actual offer depends on level,\nlocation-adjusted band, and equity grant.\n\nEquity: This role is eligible for equity grants. Typical grant for this level is X–Y\noptions or RSUs (4-year vest, 1-year cliff).\n\nBenefits: Health/dental/vision (we cover 100% of employee, 75% of dependents),\n401(k) with 4% match, 20 days PTO + holidays + birthday off, $X/year learning budget.\n\nTotal compensation: We target {percentile} of {peer cohort} for this role/level.\n</code></pre>\n<p>State-specific adjustments:</p>\n<ul>\n<li><strong>CA</strong>: must include hourly range for non-exempt roles.</li>\n<li><strong>CO</strong>: must include \"expected close date\" if known.</li>\n<li><strong>NY/NYC</strong>: must include \"good faith\" salary range.</li>\n<li><strong>WA</strong>: must include compensation AND general description of benefits.</li>\n</ul>\n<p>VALIDATION: For each state in the listing's location field, the appropriate disclosures are present.</p>\n<h1>============================================================\n=== PHASE 4: ATS STRUCTURE ===</h1>\n<p>Up to 75% of applications are filtered by ATS before a recruiter sees them. Generate JD as <strong>ATS-parseable</strong>:</p>\n<ul>\n<li>Single column.</li>\n<li>Headings as plain text (<code>## About the role</code>, not images of headings).</li>\n<li>No tables, no graphics in the JD body.</li>\n<li>Bullet lists, not paragraphs of dense text.</li>\n<li>Skill keywords listed naturally in the prose (so candidate ATS-matching works both ways).</li>\n<li>Action verbs, present tense, second person (\"You'll ship...\", \"You'll partner with...\").</li>\n<li>Avoid acronym-only (\"KPI\", \"OKR\") — spell out at first mention.</li>\n</ul>\n<p>VALIDATION: JD rendered as plain text retains all critical information. No essential content lives in images.</p>\n<h1>============================================================\n=== PHASE 5: CHANNEL VARIANTS ===</h1>\n<p>Generate variants for each channel:</p>\n<ol>\n<li><strong>Internal careers page</strong> (full version, ~500-800 words).</li>\n<li><strong>LinkedIn long-form</strong> (~400-600 words; LinkedIn truncates after ~2000 chars in the feed preview, so lead with hook).</li>\n<li><strong>Indeed structured</strong> (job title ≤ 100 chars, summary ≤ 1500 chars, ATS-keyword density tuned).</li>\n<li><strong>Slack / X / community announcement</strong> (≤ 280 chars + link).</li>\n<li><strong>Lever / Greenhouse / Workday import</strong> (CSV or JSON matching their schema).</li>\n</ol>\n<p>VALIDATION: Each variant respects its character limit and surfaces the role + compensation + apply-link in the first viewport.</p>\n<h1>============================================================\n=== PHASE 6: PROCESS TRANSPARENCY ===</h1>\n<p>Top-quartile candidates pre-screen the process. Include in the JD:</p>\n<ul>\n<li><strong>Interview stages</strong> (with rough duration): \"30-min recruiter call → 60-min hiring manager → 90-min technical → 90-min cross-functional → reference checks → offer.\"</li>\n<li><strong>Expected timeline</strong>: \"We aim to make a decision within 2 weeks of first conversation.\"</li>\n<li><strong>Visa / sponsorship policy</strong>: explicit yes/no per region.</li>\n<li><strong>Remote policy</strong>: fully remote / hybrid (with days/week) / in-office.</li>\n</ul>\n<p>VALIDATION: Process section is concrete (durations, stages, decision timeline), not vague (\"multiple interviews\").</p>\n<h1>============================================================\n=== PHASE 7: OUTPUT PACKAGE ===</h1>\n<pre><code>jd-{role-slug}/\n├── README.md                       # Where to post each variant\n├── careers_page.md                 # full version\n├── linkedin.md\n├── indeed.md\n├── slack_announcement.md\n├── ats_import.json                 # Lever/Greenhouse-compatible\n├── bias_report.md                  # which banned phrases were caught + replaced\n└── compliance_check.md             # pay transparency, sponsorship, EEO disclaimers\n</code></pre>\n<h1>============================================================\n=== SELF-REVIEW ===</h1>\n<p>Score 1–5:</p>\n<ul>\n<li><strong>Complete</strong>: All variants + bias report + compliance check delivered?</li>\n<li><strong>Robust</strong>: Banned-phrase filter catches edge cases? Pay transparency state-specific?</li>\n<li><strong>Clean</strong>: ATS-parseable as plain text? Variants respect character limits?</li>\n<li><strong>Inclusion-credible</strong>: Would a TA partner familiar with bias research (Textio, Ongig data) accept this as production-ready?</li>\n</ul>\n<p>Common gap: failing to convert \"5+ years required\" to behavioral skill. Re-scan the must-haves and convert.</p>\n<h1>============================================================\n=== LEARNINGS CAPTURE ===</h1>\n<p>Append to <code>~/.claude/skills/jd-craft/LEARNINGS.md</code>:</p>\n<h2></h2>\n<ul>\n<li><strong>What worked:</strong> </li>\n<li><strong>What was awkward:</strong> &lt;retry/manual fix&gt;</li>\n<li><strong>Suggested patch:</strong> </li>\n<li><strong>Verdict:</strong> [Smooth / Minor friction / Major friction]</li>\n</ul>\n<h1>============================================================\n=== STRICT RULES ===</h1>\n<ul>\n<li>Never publish without bias-filter pass. Banned terms cost real candidates real applications.</li>\n<li>Never publish in a transparency state without comp range. Some states fine $1k-$10k per posting.</li>\n<li>Never use degree as a proxy for skills unless legally required.</li>\n<li>Never include EEO statements that are vague (\"we welcome diversity\") — be specific or omit (vague EEO underperforms in candidate trust surveys).</li>\n<li>Never write requirements that exceed actual day-1 needs. Inflation of \"must have\" is the single largest equity leak.</li>\n</ul>\n","files":[{"path":"SKILL.md","sizeBytes":9940,"isText":true}],"reviewScore":null,"reviewSummary":null,"trust":{"provenance":"trusted-source-unreviewed","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow.","bodySource":null},"bodyLocked":false,"purchaseUrl":null,"sourceUrl":null,"report":{"provenance":"trusted-source-unreviewed","screen":{"ran":true,"outcome":"clean","suspicious":0,"notes":0,"hiddenCharacters":false},"virusScan":{"engine":"clamav","status":"clean","scannedAt":"2026-10-01T15:43:16.542192Z","sha256":"6F648CA20BBA4CA13C5191B1B8F34397E9280D1A2214DAD804CA502D89010F02","sizeBytes":4495},"review":null,"source":{"repositoryUrl":"https://github.com/tinh2/skills-hub-registry","path":"analysis/jd-craft","license":null,"commit":"d38affbf56da216841e2b9e4032a4b978c2062fd","subtreeSha":"BCA433D6FABECDB5A3040DEE9A050BCA97FDB2C8FCD9E1A55DD11D2D23B043B8","lastSyncedAt":"2026-10-01T15:40:09.634878Z"},"reviewedAt":"2026-10-01T15:48:17.679616Z","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow."},"install":[{"target":"skills-cli","command":"npx skills add https://github.com/tinh2/skills-hub-registry/tree/main/analysis/jd-craft"},{"target":"claude-code","command":"claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install tinh2-skills-hub-registry@llmmart"},{"target":"git","command":"git clone https://github.com/tinh2/skills-hub-registry.git"}]}