job-seeker: Skill for Claude Code

.agents/skills/polish/SKILL.md

polish is a skill for Claude Code, Codex from galiprandi/job-seeker. It costs 41 tokens per session (3,742 once invoked), scanned A, original, MIT.

A tool for improving your LinkedIn profile and CV, the document that summarizes your work history and skills for employers.

In plain words
What is it for?
It reviews your profile and CV, suggests and applies approved improvements, and exports the updated CV as a PDF.
Why use it?
It helps align the information recruiters see with your stated career goals, while letting you approve changes section by section.

Skill for Claude CodeCodex

Written for no agent in particular: nothing here depends on one. Also seen: installed under .agents/ (shared by several agents); mentions AGENTS.md.

This is galiprandi/job-seeker's own configuration. It tells Claude Code and Codex how to work on job-seeker itself, so it is not a mod to install elsewhere. Copy it as a starting point and replace the rules that are about this project. Everything job-seeker configures →

Needs its repository: it runs a file that does not travel with it, so clone the repository first. The line is node .agents/skills/browser-automation/scripts/browser.js open <url>.

Reuse

Borrowing it

Nothing to install: this file belongs to galiprandi/job-seeker. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.

Copy the file
curl -O https://raw.githubusercontent.com/galiprandi/job-seeker/main/.agents/skills/polish/SKILL.md
Clone the repo
git clone --depth 1 https://github.com/galiprandi/job-seeker

Made for: Claude Code, Codex.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for polish

README.md
[![agentmods](https://agentmods.dev/badge/skills/galiprandi/job-seeker/polish/github.svg)](https://agentmods.dev/skills/galiprandi/job-seeker/polish)
Your own site
<a href="https://agentmods.dev/skills/galiprandi/job-seeker/polish"><img src="https://agentmods.dev/badge/skills/galiprandi/job-seeker/polish/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for polish

Your own site · 80×15
<a href="https://agentmods.dev/skills/galiprandi/job-seeker/polish"><img src="https://agentmods.dev/badge/skills/galiprandi/job-seeker/polish.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 41 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 3,742 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe. Third-party audits
  • NVIDIA SkillSpector warn 7 Sept 2026
SkillSpector: 1 finding, up to medium

These are SkillSpector’s own severities. On a checked sample its high-severity flags on skills were ~96% false positives — a documented command, a public API, a “never do X” rule — so we show them as a caution to read, not a verdict. Why →

  • medium Memory Poisoning · line 141
    Skill attempts to fill the context window with filler content, displacing legitimate instructions and safety constraints. This can degrade agent performance or bypass safety boundaries.
    Fix: Implement context-window management that detects and rejects padding or stuffing attempts. Prioritize system instructions over user-injected content.
How audits are shown
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00041 $0.03742
Opus 5.5 $0.00016 $0.01497
Sonnet 5.5 $0.00008 $0.00748
Haiku 4.5 $0.00004 $0.00374

Measured 2d ago against content hash 51c1b230a00a, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

polish scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

.agents/skills/polish/SKILL.md · 279 lines

How it starts

The opening of the file, as written. The whole thing — 279 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Polish — LinkedIn profile + CV optimization

Trigger

Keyword: polish (or variants: "mejorar mi linkedin", "pulir perfil", "alinear cv", "optimizar perfil")

Purpose

Takes the user's captured profile (users.data.profile) and job preferences (users.data.job_preferences) and uses them to optimize the two artifacts that recruiters see: the LinkedIn profile and the CV. This is an output flow, not an input flow — profile captures data, polish applies it externally.

Dependencies

  • onboarding (DB, browser profile, LinkedIn session)
  • profile (requires users.data.profile and users.data.job_preferences with Must/Strong/Nice weights)

Parallel execution

polish can run alongside other flows (e.g: apply, news, targets) by using an attached session:

node .agents/skills/browser-automation/scripts/browser.js open <url>
node .agents/skills/browser-automation/scripts/browser.js exec eval '<code>' --session polish-1
node scripts/generate-cv.js --session polish-1
node .agents/skills/browser-automation/scripts/browser.js exec close --session polish-1

All browser commands and generate-cv.js accept --session. When done, close only your own session (exec close --session polish-1) or leave it — never close-all, which kills the browser for other agents. See AGENTS.md "Parallel execution".

Gate de validacion (pre-flight obligatorio)

Before executing any phase, verify that dependencies are satisfied. If any check fails, do not proceed — tell the user what is missing and how to resolve it:

# 1. Verify onboarding completed: DB exists and has user
node scripts/db.js "SELECT id, name, email, data FROM users WHERE id = <user_id>"
# If no row → "Necesitas ejecutar `onboarding` primero. No hay DB configurada."

# 2. Verify profile exists with minimum data
node scripts/db.js "SELECT data->'profile' AS profile, data->'job_preferences' AS prefs FROM users WHERE id = <user_id>"
# If profile is null/empty → "Necesitas ejecutar `profile` primero. No hay perfil capturado."
# If job_preferences is null/empty → "Necesitas completar el cuestionario de `profile`. No hay preferencias declaradas."

# 3. Verify minimum fields within profile
# Required for Phase 1 (LinkedIn): profile.title, profile.experience[], profile.skills[]
# Required for Phase 2 (CV): profile.full_name, profile.email, profile.experience[], profile.education[]
# If any required field missing → "Tu perfil esta incompleto. Falta: <fields>. Ejecuta `profile` para completarlo."

# 4. Verify LinkedIn session is active
node .agents/skills/browser-automation/scripts/browser.js status   # lists active sessions
# If fails → "Necesitas iniciar sesion en LinkedIn. Ejecuta `onboarding` o abre el browser headed para login."

# 5. Verify linkedin_profile URL exists in DB
node scripts/db.js "SELECT data->'linkedin_profile' AS url FROM users WHERE id = <user_id>"
# If null → "No tengo tu URL de LinkedIn. Ejecuta `onboarding` para guardarla."

Read the full file on GitHub · 279 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 2d ago Changed · -1 lines 51c1b230a00a
  2. 1mo ago Changed c72c1d43dc68
  3. 1mo ago First seen · 280 lines · 41 tokens per session scan A e82976722796

Subscribe to this mod's changes

polish is a skill published in the GitHub repository galiprandi/job-seeker (58 stars, last pushed 2d ago), licensed MIT. It adds 41 tokens to every session and 3,742 once invoked, about $0.0002 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.

Related

Other skills, from other repositories

cv-creator

Professional CV and resume builder transforming career narratives into ATS-optimized, multi-format resumes. Integrates with career-biographer for data and competitive-cartographer for positioning. Generates PDF, DOCX, LaTeX, JSON Resume, HTML, and Markdown. Activate on 'resume', 'CV', 'ATS optimization', 'job…

curiositech/windags-skills · 92 tokens

extract-resume

Parse a resume's uploaded PDF into structured JSON (basics, experience, projects, skills, education) and save it to the editor.

suxrobGM/jobpilot · 32 tokens

resume-tailor

Rewrite a candidate's resume tailored to one specific JD using a hiring-recon report, emit it as a rendercv YAML, then render to PDF. Reorders jobs/bullets and adjusts language to incorporate JD keywords without inventing experience. Outputs one YAML (source of truth, user-editable) plus a .pdf published alongside it.

tam159/next-role · 72 tokens

critic-loop

Run the mandatory 3-round CV review loop with the Critico — autonomously, without going through the Capitano. For each round you spawn a FRESH CRITICO-S session (same N as your Scrittore session: SCRITTORE-2 → CRITICO-S2), send PDF + JD, wait for the structured verdict, kill the Critic, correct the CV, regenerate the…

leopu00/job-hunter-team · 146 tokens

parse-cv

Pre-process a CV/profile file (PDF, DOCX, ODT, RTF) into plain text BEFORE feeding it to the LLM context. Reduces token cost by 5-10x on long CVs and yields more reliable extraction than reading binary PDFs directly via multimodal vision. The Assistente calls this skill on every uploaded document in…

leopu00/job-hunter-team · 136 tokens

freehire-tailor-cv

Use when reframing someone's CV toward a specific vacancy through freehire — reading the fit analysis for a tailored copy, fetching or editing the CV document by path, rendering the ATS PDF, or deciding what may and may not be written into a CV. Carries the evidence rule: anything stating what the candidate DID needs…

strelov1/freehire-cli · 0 tokens