Skip to content
Back to skills

Review Resume

ASecurity

Review a freshly uploaded resume and save a stronger rewritten version as a suggestion the user accepts or discards in the dashboard.

  • 80 stars
  • 0 votes
  • 0 copies
  • 4 views
  • Added August 31, 2026
ai-agentsgobashapi

Works with

  • cli
  • api

Security analysis

A100/100

Scanned September 29, 2026

npx -y skills add suxrobGM/jobpilot --skill review-resume --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Review Resume?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Review Resume
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/suxrobgm-review-resume/badge)](https://www.skillsdirectory.com/skills/suxrobgm-review-resume)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: review-resume
description: Review a freshly uploaded resume and save a stronger rewritten version as a suggestion the user accepts or discards in the dashboard.
argument-hint: "<resumeId>"
---

# Review Resume

Save one improved version of a base resume as a `Suggested rewrite` variant. The user accepts or discards it in the dashboard. **Never write to the base resume.**

Runs after `extract-resume` on upload: extraction is faithful to the PDF, this pass makes the document better.

## Setup

Follow `../_shared/setup.md`, then:

```bash
jobpilot-api GET /api/resumes/$RESUME_ID
```

`content: null` → extraction hasn't run; say so and stop. Also `Read` the source PDF (path per `../_shared/setup.md`) - extraction flattens two-column layouts and drops emphasis.

## What to improve

For a human screener skimming, and the ATS parsing. Change only what's weak: where the candidate's own wording already works, keep it. Rewriting every line replaces their voice with one uniform voice, and that uniformity is what reads as generated.

- **`summary`** - two or three plain sentences about what they actually work on and their strongest specifics. Don't open with "<Title> with N years of experience" or "Results-driven <title>"; start from the work itself. Cut anything true of every candidate ("strong communicator", "team player").
- **`basics.headline`** - a role title people search for, not a slogan.
- **Bullets** - past tense for past roles; a concrete verb, then what was built or changed. Replace "Responsible for" / "Worked on" / "Helped with" with what the person did. Lead with the result when there is one, but don't force every bullet into "Verb X, resulting in Y%": a resume where every line has the same shape reads as generated. Don't start most bullets with the same verb ("Developed", "Built"). Cut a phrase that repeats across entries - one stock phrase in three roles flattens all three.
- **Projects** - the same rules for `description` and `bullets`: say what it is and what it does, without "a robust, scalable platform".
- **Skill groups** - consolidate. Past ~5 groups it reads as a keyword dump.
- **Ordering** - most relevant experience and projects first.

Avoid the phrases the server rejects in tailored resumes (listed in `../tailor-resume/SKILL.md`, "Summary"): if the user accepts this rewrite, it becomes the base every tailored variant starts from.

Then run the `humanizer` skill in **embedded mode** on the summary, headline, bullets, and project descriptions you changed.

## Rules

The user sees a diff and clicks accept, so the diff is the guard - not a server check:

1. **Wording, ordering, emphasis, grouping. Never facts.** No employer, date, title, degree, school, or number absent from the extracted content or the source PDF. Not a rounded metric, not an inferred date, not a "Senior" added to a title.
2. **`diffNotes` lists every change**, one per line, specific enough to check: `Summary: rewritten to lead with the HIPAA platform`. A change not in the notes is one the user can't decline - if you can't list it, don't make it.
3. **Keep every entry.** Dropping or merging roles is `tailor-resume`, which has server-side guards.
4. **Don't touch `basics` contact fields.** At onboarding the resume fills the profile, so it's the source of truth.
5. If the resume is already good, save nothing and say so. A suggestion the user rejects teaches them to ignore the next one.

## Save

`label` must be exactly `Suggested rewrite` - the dashboard finds it by that label and the retention sweep skips it. Write `{"label":"Suggested rewrite","content":<improved content>,"diffNotes":"<diff notes>"}` to `$JOBPILOT_TEMP/suggested-rewrite.json`, then:

```bash
jobpilot-api POST /api/resumes/$RESUME_ID/variants --data @"$JOBPILOT_TEMP/suggested-rewrite.json"
```

`content` is the full `ResumeData` - same shape `extract-resume` saves, every field carried over. A 400 means it doesn't match the schema; fix and resend.

Then:

> Suggested a rewrite of {label}: {one-line summary}.
> Review and accept at $JOBPILOT_WEB/resumes/$RESUME_ID

Don't open the browser or wait for an answer - the cycle ends here.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.