proficientlyjobs/proficiently-claude-skills/job-search
- community
Checking that the SKILL.md file is still in the repository.
Search for jobs matching my resume and preferences
Install
npx vskill@latest install proficientlyjobs/proficiently-claude-skills/job-searchSKILL.md
Job Search Skill
Priority hierarchy: Seeshared/references/priority-hierarchy.mdfor conflict resolution.
Automated daily job search using browser automation.
Quick Start
/proficiently:job-search- Run daily search with default terms from matching rules/proficiently:job-search AI infrastructure- Search with specific keywords
File Structure
Data Directory
Resolve the data directory using shared/references/data-directory.md.
Workflow
Step 0: Check Prerequisites
Resolve the data directory, then check prerequisites per shared/references/prerequisites.md. Resume and preferences are both required.
Step 1: Load Context
Read these files:
DATA_DIR/resume/*(candidate profile)DATA_DIR/preferences.md(preferences)DATA_DIR/job-history.md(to avoid duplicates)DATA_DIR/linkedin-contacts.csv(if it exists — for network matching)
Extract search terms from:
$ARGUMENTSif provided- Target roles from preferences
Step 2: Browser Search
Use Claude in Chrome MCP tools per shared/references/browser-setup.md, navigating to https://hiring.cafe. For each search term, enter the query and apply relevant filters (date posted, location, etc.).
Extracting results — IMPORTANT: Do NOT use get_page_text on hiring.cafe or any large job listing page. It returns the entire page content and will blow out the context window.
Instead, extract job listings using javascript_tool to pull only structured data:
If that selector doesn't match, take a screenshot to understand the page structure, then write a targeted JS selector for the specific site. The goal is to extract just the listing rows (title, company, location, salary) — never the full page.
As a fallback, use read_page (NOT get_page_text) and scan for listing elements.
Note: Hiring.cafe is just our search tool. Don't share hiring.cafe links with the user — you'll resolve direct employer URLs for the top matches in Step 5.
Step 3: Evaluate Jobs
Score each job against the candidate's resume and preferences using the criteria in shared/references/fit-scoring.md.
Step 4: Save History
Append ALL jobs to DATA_DIR/job-history.md:
Step 5: Resolve Employer URLs & Save Top Postings
For each High-fit job:
- Click through the hiring.cafe listing to reach the actual employer careers page
- Capture the direct employer URL for the job posting
- Extract the job description using
javascript_toolto pull the posting content (e.g.document.querySelector('[class*="description"], [class*="content"], article, main')?.innerText). Do NOT useget_page_text— employer pages often have huge footers, navs, and related listings that bloat the output and can blow out the context window. - Save to
DATA_DIR/jobs/[company-slug]-[date]/posting.mdwith the employer URL at the top
For Medium-fit jobs, try to resolve the employer URL but don't save the full posting.
If you can't resolve the direct link for a job, note the company name so the user can find it themselves. Never show hiring.cafe URLs to the user.
Step 6: Present Results
Show only NEW High/Medium fits not in previous history.
If LinkedIn contacts were loaded, cross-reference each result's company name against the "Company" column in the CSV. Use fuzzy matching (e.g. "Google" matches "Google LLC", "Alphabet/Google"). If there's a match, include the contact's name and title.
Omit the "Network" line if there are no contacts at that company.
Step 7: Next Steps
After presenting results, tell the user:
- To apply now (tailors resume, writes cover letter if needed, fills the form):
/proficiently:apply [job URL] - To tailor a resume only:
/proficiently:tailor-resume [job URL] - To write a cover letter only:
/proficiently:cover-letter [job URL]
IMPORTANT: Do NOT attempt to tailor resumes, write cover letters, or fill applications yourself. Those are separate skills with their own workflows. If the user asks to do any of these for a job, direct them to use the appropriate skill command.
Also include at the end of results:
Step 8: Learn from Feedback
If user provides feedback, update DATA_DIR/preferences.md:
- "No agencies" → add to dealbreakers
- "Prefer AI companies" → add to nice-to-haves
- "Minimum $350k" → update salary threshold
Response Format
Structure user-facing output with these sections:
- Top Matches — table or list of High/Medium fits with company, role, fit rating, salary, location, network contacts, and direct URL
- Next Steps — suggest
/proficiently:tailor-resumeand/proficiently:cover-letterfor top matches
Permissions Required
Add to ~/.claude/settings.json:
Security
- Security scanPassedPattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/job-search/SKILL.md
Popularity
- Repository stars
- 400
- Repository forks
- 71
- 7-day trend score
- 30
Stars and forks are for the whole GitHub repository, not this skill alone. Refreshed 12 Apr 2026, 6 months ago.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/proficientlyjobs/proficiently-claude-skills/job-search)