UJ

ua-job-search/job-search-skill

Browser automation
9 stars Quality 62 Trend 21MIT

Claude Code skill for automated job search across Ukrainian platforms (Djinni, Work.ua, Robota.ua). Scans, scores, generates cover letters, auto-applies.

Overview

Automated job search and application across Ukrainian job platforms with AI-powered cover letters. Built and tested with Claude Code. Applies to real vacancies on Djinni, Work.ua, and Robota.ua with personalized cover letters, match scoring, and full tracking. It does NOT work with regular Claude (claude.ai chat), Claude Cowork, Claude Desktop, or any other Claude interface. It requires Claude Code CLI or IDE extension with terminal access, Bash commands, file system operations, and browser automation via Playwright. The skill executes dozens of Bash commands, reads/writes files, launches browsers, fills forms, and runs sub-agents. Without this flag, you will be prompted for permission on every single action, making the workflow unusable. - job listings across Djinni, Work.ua, and Robota.

README

Job Search Automation — Claude Code Skill

Automated job search and application across Ukrainian job platforms with AI-powered cover letters.

Built and tested with Claude Code. Applies to real vacancies on Djinni, Work.ua, and Robota.ua with personalized cover letters, match scoring, and full tracking.

This is a skill for Claude Code only. It does NOT work with regular Claude (claude.ai chat), Claude Cowork, Claude Desktop, or any other Claude interface. It requires Claude Code CLI or IDE extension with terminal access, Bash commands, file system operations, and browser automation via Playwright.

Must be run with the --dangerously-skip-permissions flag. The skill executes dozens of Bash commands, reads/writes files, launches browsers, fills forms, and runs sub-agents. Without this flag, you will be prompted for permission on every single action, making the workflow unusable.

claude --dangerously-skip-permissions

What it does

  • Scans job listings across Djinni, Work.ua, and Robota.ua in parallel
  • Scores each vacancy against your profile using 6 weighted criteria (role, skills, experience, industry, format, salary)
  • Generates personalized cover letters tailored to each vacancy
  • Auto-applies to matching vacancies with your CV and cover letter
  • Tracks everything in an Excel spreadsheet with dropdown statuses
  • Remembers what you already applied to — never sends duplicate applications

Onboarding

The skill runs a guided onboarding on first use:

  1. LinkedIn profile (optional)
  2. Resume / CV upload
  3. “Tell me about yourself” — honest self-assessment
  4. Realistic level evaluation (Junior/Middle/Senior per skill area)
  5. Target roles + automatic adjacent role research
  6. Preferred industries / domains
  7. Search parameters (salary, format, location, match threshold)
  8. Platform credentials (stored in macOS Keychain, never in files)
  9. Cover letter tone calibration (3 samples, iterate until approved)
  10. Full summary review before saving

Supported platforms

Platform Scan Auto-apply Auth
Djinni Yes Yes Email + password
Work.ua Yes Yes Email + OTP code
Robota.ua Yes Yes Email + password (two-step)
LinkedIn Planned No (ban risk) —

Requirements

  • Claude Code (CLI, desktop app, or IDE extension)
  • macOS (uses Keychain for credential storage)
  • Playwright (npx playwright install chromium)
  • Python 3 with openpyxl (pip3 install openpyxl)
  • Google Chrome installed

Installation

1. Clone this repo

git clone https://github.com/Stasewych/job-search-skill.git

2. Copy the skill to your project

mkdir -p your-project/.claude/skills/job-search
cp job-search-skill/SKILL.md your-project/.claude/skills/job-search/

Or copy it to your global Claude Code skills:

mkdir -p ~/.claude/skills/job-search
cp job-search-skill/SKILL.md ~/.claude/skills/job-search/

3. Install dependencies

# Playwright (for browser automation)
npx playwright install chromium

# openpyxl (for Excel tracking)
pip3 install openpyxl

4. Run the skill

Start Claude Code with the permissions flag:

claude --dangerously-skip-permissions

Then type:

/job-search

The skill will start with a disclaimer, then guide you through onboarding.

Why --dangerously-skip-permissions? The skill launches Chrome via Playwright, executes Node.js scripts, writes files, runs parallel sub-agents, and interacts with external websites. Each of these actions requires a permission prompt by default. With 30+ automated steps per run, manually approving each one makes the workflow impractical.

Commands

Command Description
/job-search First-time setup (onboarding)
/job-search scan Scan all platforms, score vacancies
/job-search apply Scan + auto-apply to matches above threshold
/job-search apply djinni Apply only on Djinni
/job-search apply work.ua Apply only on Work.ua
/job-search apply robota.ua Apply only on Robota.ua
/job-search status Show run history and stats

How scoring works

Each vacancy is scored 0-100% using 6 weighted criteria:

Criterion Weight What it measures
Role match 25% How closely the title matches your target roles
Skills match 25% Overlap between required skills and your profile
Experience 15% Whether your years of experience fit the requirement
Industry 10% Whether the company’s domain is in your preferred list
Format 10% Remote / hybrid / office match with your preferences
Salary 15% Whether the offered salary fits your range

Tracking

The skill maintains an Excel spreadsheet (applications.xlsx) with:

  • Date, platform, company, title, URL
  • Salary, experience required, requirements summary
  • Match percentage (color-coded)
  • Generated cover letter text
  • Status dropdown: Scanned → Ready to apply → Applied → Replied → Interview → Test task → Offer → Rejected → Declined

It also maintains state.json with full run history and applied URLs to prevent duplicates.

Safety

  • Passwords are stored in macOS Keychain only — never in files
  • The skill never auto-applies on LinkedIn (ban risk)
  • Max 20 applications per run
  • Blacklisted industries are never applied to
  • Cover letter text is verified for truncation before submission
  • Screenshots are taken of each application as evidence

Disclaimer

  • The author takes no responsibility for your data, credentials, or any content generated by the AI
  • AI models can hallucinate — cover letters may contain inaccuracies despite safeguards
  • All responsibility for application content and where the skill applies lies with the user
  • Review generated cover letters before your first run using /job-search scan

Built with

Author

Stanislav Marynovych — LinkedIn

License

MIT

View the full README on GitHub

Recommended Tools

Try a different keyword or remove a filter.

Install

npx skillfish add ua-job-search/job-search-skill
New to MCP? Start with the mcpskill.org guide →