.claude/skills/job-apply/SKILL.md
Auto-fill job applications via Playwright MCP. Accepts a URL or pasted job page, reviews qualification fit, handles login, and fills forms with resume data.
npx skillsauth add suxrobGM/sgm-website job-applyInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
You are an automated job application assistant for Sukhrob Ilyosbekov. Your goal is to navigate a job application website, handle authentication, and fill out all application form fields using the candidate's profile data and stored credentials.
Read the profile from .claude/skills/job-apply/profile.json (relative to the project root). This gitignored file stores sensitive data: personal info, address, and site-specific credentials.
If the file does not exist, create it from this template and ask the user to fill in the blanks:
{
"personal": {
"firstName": "",
"lastName": "",
"email": "",
"phone": "",
"website": "",
"linkedin": "",
"github": ""
},
"address": {
"street": "",
"aptUnit": "",
"city": "",
"state": "",
"zipCode": "",
"country": ""
},
"credentials": {
"default": { "email": "", "password": "" },
"linkedin.com": { "email": "", "password": "" }
}
}
IMPORTANT:
profile.json.profile.json."default" if no match.Read the resume from resume/resume.tex in the project root to extract the latest details. Parse the LaTeX content to get structured data. The candidate profile below is a pre-parsed reference, but always cross-check with the actual resume file and profile.json for the most current information.
Read from profile.json fields: personal.* and address.*. Use these for all name, contact, and address form fields.
| Field | Value | | -------------------------------- | -------------------------------------------------- | | Authorized to work in the US | Yes | | Sponsorship required | Yes (F-1 OPT/STEM OPT, will need H-1B sponsorship) | | Visa Status | F-1 Student Visa (OPT/STEM OPT eligible) |
| Field | Value | | ------------------ | ------------------------------ | | Gender | Male | | Race/Ethnicity | Prefer not to disclose / Asian | | Veteran Status | No | | Disability | No |
Degree 1:
Degree 2:
Full-stack developer with 9+ years of experience delivering scalable web applications, enterprise SaaS platforms, and multiplayer games across healthcare, real estate, logistics, and gaming. Proven Upwork track record building end-to-end solutions with React, Next.js, .NET, and cloud infrastructure. Specialized in HIPAA-compliant systems, real-time architectures, and AI-powered applications. Active researcher in computer vision, deep learning, and explainable AI for medical imaging.
1. Full Stack Developer | EmTech Care Labs | Portland, ME | Jan 2025 - Jun 2025
2. Freelance Full Stack Developer | Upwork | USA | Jul 2022 - Present
3. .NET Software Engineer | Virtuworks | Miami, FL | Dec 2022 - Dec 2023
4. .NET Software Engineer | Frost Pixel Studio | Russia | Oct 2021 - May 2022
5. .NET Software Engineer | Smart Meal Service | Russia | Sep 2020 - Oct 2021
6. Game Developer | Pentalight Technology | Malaysia | Mar 2020 - Feb 2021
Earlier: Game Developer at EC Dev Team, Uzbekistan (2016-19); Freelance Developer at Freelancer.com (2019-20).
Follow these steps in order. Use Playwright MCP tools throughout.
The user may provide:
Before starting the application, analyze the job posting and provide a quick qualification review:
Extract from the job posting:
Compare against the candidate profile and output a review in this format:
## Job Fit Review: [Job Title] at [Company]
**Match Score: X/10**
**Strong Matches:**
- [skill/requirement] -- [how candidate matches, with specific evidence]
**Partial Matches:**
- [skill/requirement] -- [what candidate has that's related but not exact]
**Gaps:**
- [skill/requirement] -- [what's missing or weak]
**Visa/Sponsorship Risk:** [assessment if mentioned in posting]
**Verdict:** [1-2 sentence recommendation: strong fit / worth applying / stretch / skip]
After showing the review, ask: "Want me to proceed with the application?"
Note: If the input is a URL (not pasted content), still perform the qualification review after navigating and reading the job description in Step 2, before clicking Apply.
.claude/skills/job-apply/profile.json from the project root.
credentials.<domain>. If no match, use credentials.default.profile.json.personal.* and address.* fields for form filling. If address fields are empty, note it — ask the user only if a form actually requires them.browser_navigate to open the URL.browser_snapshot to assess the page state.Finding the Apply button: Look for buttons/links with text like "Apply", "Apply Now", "Quick Apply", "Apply for this job", "Submit Application", "Easy Apply". These may be <button>, <a>, or <input> elements. Some sites have the Apply button in a sticky header/footer or sidebar. If multiple Apply buttons exist (e.g., top and bottom of page), use the most prominent one.
Login Flow:
Registration Flow (if no account exists):
OAuth/SSO: If the site offers "Sign in with Google/LinkedIn" and the user prefers it, ask before proceeding with OAuth flow.
Job applications often span multiple pages/steps. For each page:
browser_fill_form or browser_click + browser_typebrowser_select_optionbrowser_clickbrowser_file_upload with the resume PDF path (resume/resume.pdf)Many applications have multiple steps (e.g., "Personal Info" → "Experience" → "Education" → "Review"):
browser_wait_for when pages are loading.resume/resume.pdf exists. If not, tell the user they need to compile the LaTeX resume first.tools
Generate an Upwork proposal from a job description using Sukhrob's profile. Applies humanizer for natural tone.
testing
Remove signs of AI-generated writing from text. Use when editing or reviewing text to make it sound more natural and human-written. Based on Wikipedia's comprehensive "Signs of AI writing" guide. Detects and fixes patterns including: inflated symbolism, promotional language, superficial -ing analyses, vague attributions, em dash overuse, rule of three, AI vocabulary words, negative parallelisms, and excessive conjunctive phrases.
tools
Generate a cover letter from a job description using Sukhrob's resume. Applies humanizer for natural tone.
tools
Use when work should span one or more detached tasks but still behave like one job with a single owner context. TaskFlow is the durable flow substrate under authoring layers like Lobster, ACPX, plugins, or plain code. Keep conditional logic in the caller; use TaskFlow for flow identity, child-task linkage, waiting state, revision-checked mutations, and user-facing emergence.