hh-ru-apply
Job search automation for hh.ru: vacancy collection, LLM-scored CV matching, cover letters and applications
High risk
We rate an entry high when the tool writes to external systems, handles money, production databases or secrets, or runs arbitrary commands. The CLI installs it only with your consent.
Why this level
- Automates applications on your behalf, which may lead to hh.ru account restrictions under its rules
- Stores the browser session and CV locally, and sends vacancy and CV text to an external LLM via OpenRouter
Install
In your terminal, with SkillFoxx CLI
npx skillfoxx add skills/hh-ru-applyDetects the agents on your machine, checks the risk and pins the version.
Other ways to install
Run in a terminal in the project folder
npx skills add steev193/hh-ru-apply --skill hh-ru-apply-workflow -a claude-code -yThe skills tool installs the current version from the repository. Add the -g flag to use the skill in every project.
Without third-party tools, from commit 7a56af1
tmp=$(mktemp -d)
git clone --filter=blob:none --no-checkout https://github.com/steev193/hh-ru-apply.git "$tmp"
git -C "$tmp" sparse-checkout set --no-cone /.cursor/skills/hh-ru-apply-workflow/
git -C "$tmp" checkout 7a56af1e004e3908c15bea5d3c1d805ca2503c32
mkdir -p .claude/skills
cp -R "$tmp/.cursor/skills/hh-ru-apply-workflow" .claude/skills/hh-ru-apply-workflowCommands for macOS and Linux, on Windows run them in Git Bash.
Run in a terminal in the project folder
npx skills add steev193/hh-ru-apply --skill hh-ru-apply-workflow -a cursor -yThe skills tool installs the current version from the repository. Add the -g flag to use the skill in every project.
Without third-party tools, from commit 7a56af1
tmp=$(mktemp -d)
git clone --filter=blob:none --no-checkout https://github.com/steev193/hh-ru-apply.git "$tmp"
git -C "$tmp" sparse-checkout set --no-cone /.cursor/skills/hh-ru-apply-workflow/
git -C "$tmp" checkout 7a56af1e004e3908c15bea5d3c1d805ca2503c32
mkdir -p .agents/skills
cp -R "$tmp/.cursor/skills/hh-ru-apply-workflow" .agents/skills/hh-ru-apply-workflowCommands for macOS and Linux, on Windows run them in Git Bash.
Run in a terminal in the project folder
npx skills add steev193/hh-ru-apply --skill hh-ru-apply-workflow -a github-copilot -yThe skills tool installs the current version from the repository. Add the -g flag to use the skill in every project.
Without third-party tools, from commit 7a56af1
tmp=$(mktemp -d)
git clone --filter=blob:none --no-checkout https://github.com/steev193/hh-ru-apply.git "$tmp"
git -C "$tmp" sparse-checkout set --no-cone /.cursor/skills/hh-ru-apply-workflow/
git -C "$tmp" checkout 7a56af1e004e3908c15bea5d3c1d805ca2503c32
mkdir -p .github/skills
cp -R "$tmp/.cursor/skills/hh-ru-apply-workflow" .github/skills/hh-ru-apply-workflowCommands for macOS and Linux, on Windows run them in Git Bash.
Run in a terminal in the project folder
npx skills add steev193/hh-ru-apply --skill hh-ru-apply-workflow -a codex -yThe skills tool installs the current version from the repository. Add the -g flag to use the skill in every project.
Without third-party tools, from commit 7a56af1
tmp=$(mktemp -d)
git clone --filter=blob:none --no-checkout https://github.com/steev193/hh-ru-apply.git "$tmp"
git -C "$tmp" sparse-checkout set --no-cone /.cursor/skills/hh-ru-apply-workflow/
git -C "$tmp" checkout 7a56af1e004e3908c15bea5d3c1d805ca2503c32
mkdir -p .agents/skills
cp -R "$tmp/.cursor/skills/hh-ru-apply-workflow" .agents/skills/hh-ru-apply-workflowCommands for macOS and Linux, on Windows run them in Git Bash.
Run in a terminal in the project folder
npx skills add steev193/hh-ru-apply --skill hh-ru-apply-workflow -a gemini-cli -yThe skills tool installs the current version from the repository. Add the -g flag to use the skill in every project.
Without third-party tools, from commit 7a56af1
tmp=$(mktemp -d)
git clone --filter=blob:none --no-checkout https://github.com/steev193/hh-ru-apply.git "$tmp"
git -C "$tmp" sparse-checkout set --no-cone /.cursor/skills/hh-ru-apply-workflow/
git -C "$tmp" checkout 7a56af1e004e3908c15bea5d3c1d805ca2503c32
mkdir -p .agents/skills
cp -R "$tmp/.cursor/skills/hh-ru-apply-workflow" .agents/skills/hh-ru-apply-workflowCommands for macOS and Linux, on Windows run them in Git Bash.
Run in a terminal in the project folder
tmp=$(mktemp -d)
git clone --filter=blob:none --no-checkout https://github.com/steev193/hh-ru-apply.git "$tmp"
git -C "$tmp" sparse-checkout set --no-cone /.cursor/skills/hh-ru-apply-workflow/
git -C "$tmp" checkout 7a56af1e004e3908c15bea5d3c1d805ca2503c32
mkdir -p .devin/skills
cp -R "$tmp/.cursor/skills/hh-ru-apply-workflow" .devin/skills/hh-ru-apply-workflowCommands for macOS and Linux, on Windows run them in Git Bash.
Formerly Windsurf.
Run in a terminal in the project folder
npx skills add steev193/hh-ru-apply --skill hh-ru-apply-workflow -a cline -yThe skills tool installs the current version from the repository. Add the -g flag to use the skill in every project.
Without third-party tools, from commit 7a56af1
tmp=$(mktemp -d)
git clone --filter=blob:none --no-checkout https://github.com/steev193/hh-ru-apply.git "$tmp"
git -C "$tmp" sparse-checkout set --no-cone /.cursor/skills/hh-ru-apply-workflow/
git -C "$tmp" checkout 7a56af1e004e3908c15bea5d3c1d805ca2503c32
mkdir -p .cline/skills
cp -R "$tmp/.cursor/skills/hh-ru-apply-workflow" .cline/skills/hh-ru-apply-workflowCommands for macOS and Linux, on Windows run them in Git Bash.
Run in a terminal in the project folder
npx skills add steev193/hh-ru-apply --skill hh-ru-apply-workflow -a roo -yThe skills tool installs the current version from the repository. Add the -g flag to use the skill in every project.
Without third-party tools, from commit 7a56af1
tmp=$(mktemp -d)
git clone --filter=blob:none --no-checkout https://github.com/steev193/hh-ru-apply.git "$tmp"
git -C "$tmp" sparse-checkout set --no-cone /.cursor/skills/hh-ru-apply-workflow/
git -C "$tmp" checkout 7a56af1e004e3908c15bea5d3c1d805ca2503c32
mkdir -p .roo/skills
cp -R "$tmp/.cursor/skills/hh-ru-apply-workflow" .roo/skills/hh-ru-apply-workflowCommands for macOS and Linux, on Windows run them in Git Bash.
A fork of Roo Code, same .roo folders.
Run in a terminal in the project folder
npx skills add steev193/hh-ru-apply --skill hh-ru-apply-workflow -a opencode -yThe skills tool installs the current version from the repository. Add the -g flag to use the skill in every project.
Without third-party tools, from commit 7a56af1
tmp=$(mktemp -d)
git clone --filter=blob:none --no-checkout https://github.com/steev193/hh-ru-apply.git "$tmp"
git -C "$tmp" sparse-checkout set --no-cone /.cursor/skills/hh-ru-apply-workflow/
git -C "$tmp" checkout 7a56af1e004e3908c15bea5d3c1d805ca2503c32
mkdir -p .agents/skills
cp -R "$tmp/.cursor/skills/hh-ru-apply-workflow" .agents/skills/hh-ru-apply-workflowCommands for macOS and Linux, on Windows run them in Git Bash.
Run in a terminal in the project folder
tmp=$(mktemp -d)
git clone --filter=blob:none --no-checkout https://github.com/steev193/hh-ru-apply.git "$tmp"
git -C "$tmp" sparse-checkout set --no-cone /.cursor/skills/hh-ru-apply-workflow/
git -C "$tmp" checkout 7a56af1e004e3908c15bea5d3c1d805ca2503c32
mkdir -p .agents/skills
cp -R "$tmp/.cursor/skills/hh-ru-apply-workflow" .agents/skills/hh-ru-apply-workflowCommands for macOS and Linux, on Windows run them in Git Bash.
Run in a terminal in the project folder
tmp=$(mktemp -d)
git clone --filter=blob:none --no-checkout https://github.com/steev193/hh-ru-apply.git "$tmp"
git -C "$tmp" sparse-checkout set --no-cone /.cursor/skills/hh-ru-apply-workflow/
git -C "$tmp" checkout 7a56af1e004e3908c15bea5d3c1d805ca2503c32
mkdir -p .agents/skills
cp -R "$tmp/.cursor/skills/hh-ru-apply-workflow" .agents/skills/hh-ru-apply-workflowCommands for macOS and Linux, on Windows run them in Git Bash.
Clone Steev193/hh-ru-apply, run npm install and npx playwright install chromium, fill in .env and config/search-keywords.txt, run npm run login to save your session, then npm run harvest and npm run dashboard to review the application queue.
Other ways from the author
git clone https://github.com/Steev193/hh-ru-apply.git
cd hh-ru-apply
npm install
npx playwright install chromium
cp .env.example .envLocal run; after install, run npm run login to save the browser session.
This is third-party code. Review the repository files before installing.
What it does
A Node.js and Playwright project automates a job seeker's own hh.ru search. Scripts collect vacancies by keyword, score them via an LLM (OpenRouter) on three axes (relevance, CV match, overall), generate personalized cover letters in your own style, and insert them into the application form. A web dashboard lets you review the queue and edit letters before sending, there is Telegram-channel vacancy scanning, and a separate hh-fill-letter mode that only fills the text without auto-sending. The browser session is saved locally so you do not need to log in again. The author explicitly warns that mass actions may violate hh.ru's rules and lead to account restriction.
Who it is for. For job seekers on hh.ru who want to automate vacancy screening and cover letter writing for their own resume.
Good fit when
- You are job hunting on hh.ru and want an LLM to score vacancies against your CV
- You want personalized cover letters in your own style without writing each one by hand
- You want to review and edit a letter in the dashboard before sending it, not send blindly
Not a fit when
- You are not willing to risk hh.ru account restrictions from automated mass actions
- You are looking for a tool to pitch outside companies, not to search for a job yourself
- You have no CV in a supported .md, .txt or .pdf format for the LLM to score
Example request
Collect fresh Python developer vacancies in Moscow, score them against my CV, and prepare cover letters for the top fiveLimitations
The author explicitly warns that automated applications and mass actions may violate hh.ru's rules and lead to account restriction, so use is at your own risk. Vacancy scoring via OpenRouter needs an API key, with a free model used by default. Applications only go through your own logged-in browser profile, not hh.ru's official API.
How to disable. Delete the hh-ru-apply folder and the local browser profile in data/session, or stop Docker Compose with docker compose down.
Security check
- Automates applications on your behalf, which may lead to hh.ru account restrictions under its rules
- Stores the browser session and CV locally, and sends vacancy and CV text to an external LLM via OpenRouter
README in short
The Russian README openly warns about the risk of account restriction from automation and describes eight npm commands: session login, vacancy search, LLM harvesting and scoring, a web dashboard, Telegram scanning, letter filling without sending, chat replies, and Playwright selector generation via Codegen. It gives two run modes, local and Docker Compose with the dashboard on port 3849, and detailed setup for the CV, letter template, and OpenRouter and Telegram bot keys.
FAQ
Are applications sent automatically?
There is a separate hh-fill-letter command that only fills the letter without sending, and npm run apply for the full cycle; it is the user's choice.
Do I need a paid OpenRouter plan?
No, a free model is used by default; paid models are enabled with the OPENROUTER_ALLOW_PAID=1 flag.
Related
A self-hosted knowledge base with block-level references and a built-in MCP server for connecting AI agents to your notes
A CLI for every Google Workspace API with JSON output and agent skills: Drive, Gmail, Calendar, Sheets and more
Local search over Markdown notes, docs and meeting transcripts: keywords, semantic search and reranking, with an MCP server
A task manager for AI-driven development: breaks a PRD into dependent tasks and guides the agent through them via MCP or CLI