A set of skills to automate common tasks as part of a job search.
Status: Work in progress, current areas of improvement:
- Scoring consistency
- Resume layout and rendering taste
- Additional review criteria
There is a constant stream of job listings across multiple platforms such as LinkedIn. Even with a good query, I still found myself scanning each entry for keywords, salary range, etc. and then doing a mental fit check based on my own requirements and skills. If I found one that fit, I would then take my existing resume and modify it to emphasize the most valuable skills and experiences.
After a few iterations, it was clear that there was an opportunity to turn this into an automated agentic process, decomposed into the following skill buckets:
- Formatting job listings and candidate profiles into a fixed schema
- Comparing job details to the candidate profile to assess fit
- Tailoring a resume based on the candidate profile to matched listings
- Reviewing the resume for groundedness, visual quality and ATS compatibility
I'd never tried to write skills by hand before, so this was a good opportunity to do so in service of something genuinely useful (to me, at least). Matt Pocock's /writing-great-skills was an excellent reference throughout the process and already codifies several valuable lessons. The main takeaway is that writing effective skills is harder than it looks on the surface. Giving models testable criteria in a clear and token-efficient way is a real engineering problem.
Each skill lives in its own directory and includes a SKILL.md file. To install it, copy its entire directory into your user skills directory:
<user-skills-directory>/
└── skill-name/
└── SKILL.md
For example, in Codex:
git clone https://github.com/kindbe/job-search-skills.git
cp -R job-search-skills/skills/<skill-name> ~/.agents/skillsTo install every skill in the repository:
cp -R job-search-skills/skills/* ~/.agents/skillsYou may need to reload skills, start a new session, or restart your CLI to pick them up.
- construct-candidate-profile: Convert a resume into the standard format used by the rest of the skills. You can also interactively answer questions to build the profile.
- format-job-listing: Coerces a plain text job listing into the format used by
evaluate-job-fitandtailor-resume, which can call this skill directly. - evaluate-job-fit: Compares the job listing to the candidate profile to calculate a fit score using a fixed rubric. If given plain text, it will call
format-job-listingto produce the structured output. - tailor-resume: Takes a candidate profile, job listing, and optional resume template to create a resume tailored to the position from the candidate profile. Like
evaluate-job-fit, this will also accept plain text job listings and format them usingformat-job-listing. - review-resume: Evaluates a resume against the candidate profile for groundedness, visual quality, and ATS compatibility. Note that this implies some local means of rendering a DOCX file such as Word or LibreOffice.
- Create a candidate profile and save it - This is a one-time step to either ingest the profile from an existing resume or build it via Q&A. Then tell the agent to save it to a permanent location.
- Mechanically scrape job listings into a folder - Sourcing the plain text job descriptions is an external process, beyond the scope of these skills. This might be calling a search API with parameters, web scraping listing sites, or manual copy/paste into a folder. FWIW, I have found the Hermes agent harness to be a reasonable partner in this endeavor.
- Run evaluate-job-fit on the folder -
/evaluate-job-fit the listings in ~/some_folder using the candidate profile ~/Documents/candidate_profile.json - Bubble the best fits to the top -
Summarize the top five listings by fit score - Tailor resumes to the best fits -
/tailor-resume for Job A and Job B using ~/Documents/resume_template.docx - Review the resumes -
/review-resume for Job A
Steps 3-6 are listed separately for illustration purposes, but they can effectively be collapsed to a single prompt, for example:
Use the candidate profile under ~/Documents/candidate_profile_test.json and the job listings under ~/Documents/listings to evaluate fit and then tailor and review resumes for the top 2 matches using ~/Documents/resume_template.docx