
ua-job-search/job-search-skill
Browser automationClaude 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-permissionsflag. 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:
- LinkedIn profile (optional)
- Resume / CV upload
- “Tell me about yourself” — honest self-assessment
- Realistic level evaluation (Junior/Middle/Senior per skill area)
- Target roles + automatic adjacent role research
- Preferred industries / domains
- Search parameters (salary, format, location, match threshold)
- Platform credentials (stored in macOS Keychain, never in files)
- Cover letter tone calibration (3 samples, iterate until approved)
- 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) |
| 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
- Claude Code by Anthropic
- Playwright for browser automation
- openpyxl for Excel tracking
Author
Stanislav Marynovych — LinkedIn
License
MIT
Recommended Tools
Try a different keyword or remove a filter.
Install
npx skillfish add ua-job-search/job-search-skill