HR pack
Claude Skill

Job Description Writer

Drafts honest, specific JDs that filter for the actual role — not buzzword soup.

What it does

Takes the role context (team, level, must-haves, nice-to-haves, comp band, location) and produces a JD with a clear "what you'll do" section grounded in real outcomes, a calibrated "what we're looking for" that distinguishes must-haves from nice-to-haves, and a "what success looks like in 6 months" section that filters for fit.

When to use

  • Hiring manager handed you a vague brief and you need a real JD
  • Existing JD is generic and isn't attracting the right candidates
  • Replacing a "10+ years experience, rockstar ninja" template with something honest

When not to use

  • You don't actually know what the role does. Talk to the hiring manager first.
  • Internal-only role posting where the existing template is fine

Install

Download the .zip, then unzip into your Claude skills folder.

mkdir -p ~/.claude/skills
unzip ~/Downloads/job-description-writer.zip -d ~/.claude/skills/

# Restart Claude Code session.
# Skill is now available — Claude will use it when relevant.

SKILL.md

SKILL.md
---
name: job-description-writer
description: Use when drafting or rewriting a job description. Triggers on requests like "write a JD", "job posting", "role description", or pasted draft JDs to refine.
---

# Job Description Writer

Write JDs that filter for fit, not for buzzword compliance. Most JDs are bad because they read like wishlists copied from competitors. A good JD makes the wrong candidates self-select out.

## Required inputs

Before drafting, confirm you have:

1. **Role title and level** (e.g. Senior, Staff, Lead)
2. **Team context** — what the team does, how big it is, who they report to
3. **3-5 actual outcomes** the role owns in the first 6-12 months
4. **Must-haves** vs **nice-to-haves** (force the hiring manager to distinguish)
5. **Comp band** (if disclosing) or "competitive" + benefits
6. **Location/remote policy** with specifics

If any of these are missing, ask before drafting. Don't invent.

## Structure

```
[Role title]
[1-2 sentence hook about the team and why this role exists]

## What you'll do
- 4-6 outcome-oriented bullets (not tasks)
- Lead with the highest-leverage work
- "Own X" beats "responsible for X"

## What we're looking for
**Must-haves:**
- 3-5 hard requirements
- Each one specific enough to disqualify on

**Nice-to-haves:**
- 2-4 bonus signals
- Make clear these are NOT gating

## What success looks like in 6 months
- 3 concrete signals: shipped X, owned Y, ramped on Z
- This is the part candidates skip — but it's the most useful filter

## Compensation & logistics
[Comp band, location, hybrid policy, key benefits]
```

## Anti-patterns to strip

Reject these on sight:
- "10+ years of experience" (years ≠ skill)
- "Rockstar / ninja / wizard"
- "Wear many hats" (means: undefined role)
- "Fast-paced environment" (means: chaotic)
- "Self-starter" (means: no support)
- Listing every tech the team has ever touched as required

## Tone

- Direct. No corporate filler.
- Specific. "Ship 2-3 features per quarter to our 50k MAU dashboard" beats "drive product impact."
- Honest about hard parts. "This role includes ~1 week/quarter on-call" filters better than "occasional after-hours support."

## Output

Return the JD as clean markdown. If the hiring manager's brief had vague language, flag it at the top with "Clarifications needed:" before drafting.

Example prompts

Once installed, try these prompts in Claude:

  • Write a JD for a Senior Backend Engineer joining our 4-person platform team. Must-haves: Go, Postgres at scale, on-call. Nice: Kafka. Hybrid Stockholm, comp 750-900k SEK.
  • Rewrite this generic Product Manager JD to be honest about the role being 60% roadmap and 40% firefighting integrations.