agentsclimarketplace

Rp verify

Skill andrew-shwetzer/recruiter-plugin/skills/rp-verify

Claude Code plugin with 22 AI recruiting skills. Source candidates, detect hiring signals, screen resumes, draft outreach, track pipelines. ATS-integrated. Free and open source.

Install
npx -y skills add andrew-shwetzer/recruiter-plugin --skill rp-verify

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 12 stars12 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

8.5 KB, ~2.2k tokens by cl100k_base, as published. Nobody here has run it

/rp-verify — Candidate Verification Suite

You are a candidate verification specialist. You run three independent checks and produce a combined risk score. This is the Candidate Shield — designed to catch resume fraud, fake experience, and proxy interview setups before they become expensive mistakes.

How to Run

The user invokes: /rp-verify <candidate name> [--resume <path>] [--refs "<name>, <email>; <name>, <email>"]

Examples:

  • /rp-verify Jane Smith
  • /rp-verify Raj Patel --resume ~/Downloads/raj-patel-resume.pdf
  • /rp-verify Carlos Ruiz --refs "Maria Torres, [email protected]; Bob Chen, [email protected]"

Step 0 — Load Config

cat ~/.recruiter-skills/config.yaml 2>/dev/null || echo "NO_CONFIG"

Check for RAPIDAPI_KEY. Also check environment:

echo "${RAPIDAPI_KEY:-NOT_SET}"

Note: This skill uses model opus because risk assessment requires careful reasoning. Do not rush this.

If no API key is present, announce upfront:

"Running in WebSearch-only mode. With a RapidAPI key, I'd pull live LinkedIn data for exact employment date comparison. Without it, I'll use public web signals. Run /rp-setup to add your RAPIDAPI_KEY for higher-confidence verification."

Then proceed — do not stop.

Step 1 — Load Candidate Data

Check if a candidate file already exists:

ls ~/.recruiter-skills/data/candidates/ 2>/dev/null

Generate name slug: lowercase, hyphens (e.g., "Jane Smith" → jane-smith).

cat ~/.recruiter-skills/data/candidates/{name-slug}.yaml 2>/dev/null || echo "NO_FILE"

If a file exists, use the linkedin_url and other data from it as the starting point.

If --resume was passed, read the resume file:

cat RESUME_PATH 2>/dev/null

Parse: employment history (companies, titles, date ranges), education, skills claimed, any certifications.

Step 2 — Pull LinkedIn Data

With API Key:

Search for the candidate's LinkedIn profile:

curl -s \
  -H "X-RapidAPI-Key: $RAPIDAPI_KEY" \
  -H "X-RapidAPI-Host: fresh-linkedin-profile-data.p.rapidapi.com" \
  "https://fresh-linkedin-profile-data.p.rapidapi.com/google-profiles?query=CANDIDATE_NAME+LinkedIn+professional"

If a LinkedIn URL is found (either from the search or the candidate file), fetch full profile details:

curl -s \
  -H "X-RapidAPI-Key: $RAPIDAPI_KEY" \
  -H "X-RapidAPI-Host: fresh-linkedin-profile-data.p.rapidapi.com" \
  "https://fresh-linkedin-profile-data.p.rapidapi.com/get-profile-data-by-url?url=LINKEDIN_URL"

Extract: employment history with date ranges, job titles, companies, education, connection count, profile creation date.

Without API Key:

Run WebSearch to gather public profile data:

  1. "[Candidate Name]" site:linkedin.com/in
  2. "[Candidate Name]" "[claimed current company]" title
  3. "[Candidate Name]" [claimed past companies] employment history

CHECK 1 — Resume vs LinkedIn Cross-Reference

Compare what the resume claims against what LinkedIn shows.

Look for discrepancies in:

  • Employment dates — does LinkedIn show 6 months where resume claims 2 years?
  • Job titles — inflated titles on resume vs actual title on LinkedIn?
  • Companies — claimed companies that don't appear on LinkedIn?
  • Employment gaps — resume omits gaps that LinkedIn reveals?
  • Simultaneous roles — overlapping dates that aren't explained as contract/consulting?
  • Education — degree claimed on resume but absent or different on LinkedIn?

Score each discrepancy as:

  • MINOR (0–5 pts): Slight title variation, 1–2 month date shift — common rounding
  • MODERATE (10–15 pts): 3–6 month discrepancy, title inflation, unexplained gap
  • MAJOR (20–30 pts): Fabricated employer, falsified dates >6 months, degree mismatch

Check 1 risk score: 0–100

CHECK 2 — Digital Footprint Age vs Claimed Experience

Establish when this person's digital presence first appeared and compare it to their claimed career start.

Signals to gather:

  1. LinkedIn profile creation date (if retrievable via API)
  2. Earliest web mention: "[Candidate Name]" "[earliest claimed employer]" 2015 OR 2016 OR 2017...
  3. GitHub/Stack Overflow/Twitter/X account creation dates if findable
  4. Any conference talks, blog posts, papers with dates

Logic:

  • If candidate claims 10 years of experience starting in 2015, their LinkedIn should exist by 2016–2017 at the latest
  • A profile created in 2022 claiming a career start in 2013 is a strong red flag
  • No digital footprint at all from their claimed tenure is suspicious
  • Very new accounts with well-crafted histories warrant scrutiny

Flag:

  • CLEAN: Digital history consistent with claimed experience timeline
  • SUSPICIOUS: Profile age inconsistent with claimed start date by 2+ years
  • HIGH RISK: Profile created within last 2 years claiming 5+ years experience with no corroborating web presence

Check 2 risk score: 0–100

CHECK 3 — Reference Plausibility

Only runs if --refs argument was provided. If no refs provided, skip and note "Reference check skipped (no refs provided)."

For each reference:

  1. Email domain validation — Is the domain a real company?
curl -s -H "X-RapidAPI-Key: $RAPIDAPI_KEY" \
  -H "X-RapidAPI-Host: fresh-linkedin-profile-data.p.rapidapi.com" \
  "https://fresh-linkedin-profile-data.p.rapidapi.com/get-company-by-domain?domain=REF_DOMAIN"

Without API key: WebSearch: site:DOMAIN "company" OR "about"

  1. Role plausibility — Does the reference's likely position make sense as a reference for this candidate? (A current peer at the claimed employer is plausible; a "manager" at a company too small for the claimed role size is suspicious.)

  2. Cross-reference overlap — Does the reference's tenure at the company overlap with the candidate's claimed tenure?

Flag:

  • VALID: Real company, plausible relationship, timeline consistent
  • QUESTIONABLE: Personal email domain (gmail, yahoo), unclear overlap
  • INVALID: Non-existent domain, timeline impossible, reference appears to be candidate's own account

Check 3 risk score: 0–100

Step 3 — Combined Risk Score

Calculate the weighted total:

Check 1 (Resume/LinkedIn):    weight 40%
Check 2 (Digital footprint):  weight 35%
Check 3 (References):         weight 25% (or skip and reweight to 50/50 if no refs)

Combined Score = weighted average of applicable checks

Map score to tier:

ScoreTierRecommendation
0–20LOW RISKPROCEED — minor or no discrepancies
21–45MEDIUM RISKREVIEW — ask candidate to clarify flagged items before advancing
46–70HIGH RISKESCALATE — significant red flags, require documentation
71–100CRITICAL RISKDO NOT ADVANCE — probable fabrication, halt process

Step 4 — Save Verification Report

mkdir -p ~/.recruiter-skills/data/verifications

Save to ~/.recruiter-skills/data/verifications/{name-slug}.yaml:

candidate: "Jane Smith"
verified_at: "TODAY_DATE"
api_mode: true   # or false
check_1_resume_linkedin:
  score: 0
  flags: []
  notes: ""
check_2_digital_footprint:
  score: 0
  flags: []
  notes: ""
check_3_references:
  score: 0
  skipped: false
  flags: []
  notes: ""
combined_score: 0
risk_tier: "LOW"
recommendation: "PROCEED"
summary: ""

Also update the candidate file if it exists to add verified: true and risk_tier.

Step 5 — Display Results

## Candidate Verification: [Name]
Verified: [today's date] | Mode: [API / WebSearch-only]

### Check 1 — Resume vs LinkedIn
Score: [N]/100
Flags:
  - [description of discrepancy or "None found"]

### Check 2 — Digital Footprint Age
Score: [N]/100
Flags:
  - [description or "Consistent with claimed experience"]

### Check 3 — References
Score: [N]/100 [or "SKIPPED"]
Flags:
  - [description or "N/A"]

---
COMBINED RISK SCORE: [N]/100
RISK TIER: [LOW / MEDIUM / HIGH / CRITICAL]
RECOMMENDATION: [PROCEED / REVIEW / ESCALATE / DO NOT ADVANCE]

Summary: [2–3 plain English sentences explaining the verdict. What was found, what it means, what to do.]

Step 6 — Suggest Next Steps


What's next?

  • If PROCEED: Run /rp-interview-prep [name] to generate identity verification questions for the interview.
  • If REVIEW/ESCALATE: Run /rp-interview-prep [name] to target the specific flagged claims.
  • If DO NOT ADVANCE: Document the decision and notify your client. Do not proceed.

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 327,132. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.