jd-craft — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited jd-craft (Agent Skill) and scored it 96/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 1 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 1 flagged
The text {match} tells the agent to skip the normal "ask the user first" gate. Used adversarially it removes the human-in-the-loop check before destructive or sensitive actions, turning a normally-gated agent into a fire-and-forget executor.
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
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.
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.
============================================================ === PRE-FLIGHT === ============================================================
Verify:
Recovery:
============================================================ === PHASE 1: BIAS-FILTER PASS === ============================================================
Maintain a banned-pattern list. Categories:
Gender-coded:
Age-coded:
Ability-coded:
Race / cultural-coded:
Class-coded:
Vague status terms:
For each match, suggest the inclusive replacement. Refuse to publish if any banned term remains.
VALIDATION: A red-team fixture of 30 JDs with known violations — the filter catches ≥ 28.
============================================================ === PHASE 2: SKILLS-BASED REQUIREMENTS === ============================================================
Convert from "years of experience" to "demonstrated skills":
Bad: "5+ years of React experience." Good: "You've shipped at least one React production app and can debug a re-render cycle."
Bad: "Bachelor's degree in CS required." Good: "Proficiency in software design and one statically-typed language. CS degree, bootcamp, or self-taught all welcome."
Rule: only keep "X years required" if regulatory (e.g., FAA pilot hours, AMA medical license years). Otherwise convert to a behavioral skill.
Split requirements into two buckets:
VALIDATION: "Must have" list ≤ 5 items. Each is a behavioral / skill description, not a credential.
============================================================ === PHASE 3: PAY TRANSPARENCY BLOCK === ============================================================
Auto-generate the comp section based on detected location. Default template:
## Compensation
Base salary range: $X–$Y (USD). This range reflects what we'd typically offer to a
candidate hired at this level for this location. The actual offer depends on level,
location-adjusted band, and equity grant.
Equity: This role is eligible for equity grants. Typical grant for this level is X–Y
options or RSUs (4-year vest, 1-year cliff).
Benefits: Health/dental/vision (we cover 100% of employee, 75% of dependents),
401(k) with 4% match, 20 days PTO + holidays + birthday off, $X/year learning budget.
Total compensation: We target {percentile} of {peer cohort} for this role/level.State-specific adjustments:
VALIDATION: For each state in the listing's location field, the appropriate disclosures are present.
============================================================ === PHASE 4: ATS STRUCTURE === ============================================================
Up to 75% of applications are filtered by ATS before a recruiter sees them. Generate JD as ATS-parseable:
## About the role, not images of headings).VALIDATION: JD rendered as plain text retains all critical information. No essential content lives in images.
============================================================ === PHASE 5: CHANNEL VARIANTS === ============================================================
Generate variants for each channel:
VALIDATION: Each variant respects its character limit and surfaces the role + compensation + apply-link in the first viewport.
============================================================ === PHASE 6: PROCESS TRANSPARENCY === ============================================================
Top-quartile candidates pre-screen the process. Include in the JD:
VALIDATION: Process section is concrete (durations, stages, decision timeline), not vague ("multiple interviews").
============================================================ === PHASE 7: OUTPUT PACKAGE === ============================================================
jd-{role-slug}/
├── README.md # Where to post each variant
├── careers_page.md # full version
├── linkedin.md
├── indeed.md
├── slack_announcement.md
├── ats_import.json # Lever/Greenhouse-compatible
├── bias_report.md # which banned phrases were caught + replaced
└── compliance_check.md # pay transparency, sponsorship, EEO disclaimers============================================================ === SELF-REVIEW === ============================================================
Score 1–5:
Common gap: failing to convert "5+ years required" to behavioral skill. Re-scan the must-haves and convert.
============================================================ === LEARNINGS CAPTURE === ============================================================
Append to ~/.claude/skills/jd-craft/LEARNINGS.md:
============================================================ === STRICT RULES === ============================================================
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.