This skill should be used when the user wants to tailor a resume for a specific job description, or write a cover letter for a role. Trigger phrases include "tailor resume", "optimize resume for JD", "build resume for", "target job description", "customize resume for", "resume for this role", "refactor resume", "update resume for", "match resume to JD", "write cover letter", "cover letter for", "draft cover letter", or when a user pastes a job description alongside their resume. It performs keyword extraction, gap analysis, and produces a tailored LaTeX resume with detailed analysis notes. It can also generate a tailored cover letter.
Installation
Details
Usage
After installing, this skill will be available to your AI coding assistant.
Verify installation:
npx agent-skills-cli listSkill Instructions
name: resume-builder description: This skill should be used when the user wants to tailor a resume for a specific job description, or write a cover letter for a role. Trigger phrases include "tailor resume", "optimize resume for JD", "build resume for", "target job description", "customize resume for", "resume for this role", "refactor resume", "update resume for", "match resume to JD", "write cover letter", "cover letter for", "draft cover letter", or when a user pastes a job description alongside their resume. It performs keyword extraction, gap analysis, and produces a tailored LaTeX resume with detailed analysis notes. It can also generate a tailored cover letter.
Resume Builder
Tailor the master resume (hojicha/resume.tex) for a specific job description. Output goes to hojicha/<company>-<role>-resume/ containing notes.md (analysis) and resume.tex (tailored resume).
Critical Rules
- NEVER fabricate experiences, skills, or achievements. Only use content from the master resume, the
candidate-context.mdfile, and discoveries added during this session via the Discovery Interview (Step 1.5) or inline probing. You may rephrase, reorder, and emphasize — never invent. - Preserve the
fed-res.clsdocument class. Do not modify\documentclass[letterpaper,12pt]{fed-res}or add packages. Copyhojicha/fed-res.clsinto the output directory. Seereferences/latex-commands.mdfor available commands. - Maintain ATS compatibility. No graphics, tables outside the cls structure, or custom fonts. The cls already sets
\pdfgentounicode=1. - Keep to one page — less is more. The resume must fit a single letter-sized page. Highlight only your strongest 2-3 bullets per role — cut average achievements. Fewer strong bullets beat many mediocre ones. If a bullet doesn't directly support the target JD, consider removing it.
- Use XYZ bullet format. Every experience bullet should follow "Accomplished [X] as measured by [Y], by doing [Z]." See
references/xyz-formula.md. - Strategic uncommenting. The master resume contains commented-out sections (LSE, SUSS, Arcane, KlimaDAO, SuperAI, Ripple, CFA). Uncomment entries that are relevant to the target role.
- Strategic commenting. Comment out entries that are irrelevant or weaken the application for the target role.
- Never generate generic content — ask instead. If you would produce a vague bullet, generic summary, or placeholder content, STOP and ask the candidate a probing question to get real specifics. See
references/candidate-discovery.mdfor anti-generic detection heuristics and probing techniques. Every output must reflect the candidate's actual experience.
Workflow
Step 1: Parse Inputs
Read the master resume and the job description provided by the user.
Required:
- Job description (pasted text, file, or URL — if a URL is provided, use a web-fetching tool to retrieve the JD content)
- Master resume: hojicha/resume.tex
- Candidate context: hojicha/candidate-context.md (supplementary experiences, projects, and skills not yet in the master resume — use as an additional source alongside the master resume per Critical Rule 1)
Optional (ask if not provided):
- Company name (for output directory naming)
- Role title (for output directory naming)
- Any special instructions (e.g., "emphasize ML experience")
Contact info note: If the role is location-sensitive or requires phone screening, ensure the resume header includes a phone number and city/country alongside email, LinkedIn, and GitHub.
Derive <company> and <role> from the JD for the output directory name. Use lowercase, hyphenated slugs (e.g., kronos-research-ml-researcher-resume).
Step 1.5: Discovery Interview
Before analyzing keywords, probe the candidate for context that their materials don't yet cover. This step ensures the rest of the workflow operates on rich, authentic material — not thin bullet points.
- Cross-reference JD against candidate materials. Read the JD requirements, then scan
candidate-context.mdand the master resume. Identify 3-5 areas where the JD demands depth that current materials don't address (e.g., the JD wants "experience navigating regulatory ambiguity" but nothing in the candidate's materials touches this). - Ask targeted probing questions. For each gap, ask one question using the relevant category from
references/candidate-discovery.md. Ask one question at a time — wait for the candidate's response before asking the next. - Follow up on vague answers. If the candidate's response is generic or abstract, ask a more specific follow-up per the probing technique guidelines in
references/candidate-discovery.md. Maximum two follow-ups per topic. - Persist discoveries. Append all new information to
hojicha/candidate-context.mdusing the persistence format inreferences/candidate-discovery.md. - Proceed with enriched context. Continue to Step 2 with the updated candidate materials.
Skip conditions: If candidate-context.md is already rich and covers the JD requirements well, you may skip this step — but note in notes.md that discovery was skipped and why.
Step 2: Keyword Analysis
Extract keywords and requirements from the JD. Categorize them:
| Category | Examples |
|---|---|
| Hard skills | Python, PyTorch, distributed training |
| Soft skills | Leadership, cross-functional collaboration |
| Domain knowledge | NLP, reinforcement learning, quantitative finance |
| Tools/platforms | AWS, Docker, Kubernetes |
| Qualifications | BSc in CS, 3+ years experience |
See references/ats-keywords.md for extraction strategies and ATS mechanics.
Step 3: Professional Summary
Generate a role-specific professional summary to place at the top of the resume. This section is optional — omit it if space is tight and the resume already speaks for itself.
- Headline: Write a role-specific headline (<10 words) to use as the
\section{}title. Do NOT use generic titles like "Professional Summary" — use a descriptive noun phrase (e.g., "ML Engineer & Quantitative Researcher"). - Summary paragraph: Write a <50-word summary starting with a job role noun. Use action words and active voice. Highlight the candidate's top 3-5 selling points that match the JD. If Step 1.5 revealed gaps that cannot be fully closed, use the summary to reframe the candidate's strongest adjacent experiences toward the JD requirements — do not claim expertise in gap areas.
- LaTeX: Add a
\section{<headline>}with a single paragraph before the Education section.
Recommendations:
- Summarize your background: Mention years of experience, title, and specialized skills. This is especially useful when relevant experience is only part of total working experience, or the candidate took career breaks.
- Tailor to the role: Align the summary to the target JD, using the same keywords where relevant.
- Explain unconventional situations: Career changers, bootcampers going technical, experienced managers returning to IC work, or domain switches — use the summary to convey context that no other resume section can capture.
Common Mistakes:
- Don't state your objective — unless you're in an unconventional situation, the objective is obvious from the role you're applying to.
- Don't claim to "specialize" in too many things — a summary like "Software Engineer with over a decade of experience, specializing in cloud-based technologies, full stack development, machine learning, big data processing, and data visualization" covers ~80% of the software industry and dilutes the meaning of "specialization." Even if true, it's hard to justify on a one-page resume. Tailor the specialization to the specific JD instead.
Examples of good summaries:
Computer Science undergraduate student passionate about full stack development with substantial hands-on experience in Ruby on Rails. Keen problem solver with an ability to learn quickly and apply previous experience and novel, creative solutions to solve problems.
Front End Engineer with six years of experience working in small and large teams to develop interactive, user-friendly, and feature-rich web applications. A self-motivated and lifelong learner familiar with modern web development and web3 technologies (blockchain, crypto, DeFi).
Step 4: Section Ordering
Reorder resume sections based on the candidate's experience level relative to the target role:
| Experience Level | Recommended Order |
|---|---|
| <3 years / recent grad | Summary → Education → Experience → Projects → Skills |
| 3+ years | Summary → Experience → Education → Projects → Skills |
The master resume uses Education → Experience → Projects → Skills. Adjust the order to put the strongest sections first for the target role.
Step 5: Gap Analysis
Map each JD requirement to existing resume content. Identify:
- Strong matches: Resume already demonstrates this clearly
- Reframeable: Experience exists but needs rephrasing to highlight relevance
- Gaps: No matching experience — but before marking a gap, ask the candidate first: "Do you have any experience related to [requirement] that isn't on your resume? Even from side projects, school, or personal life?" Only mark as a true gap if the candidate confirms they don't have relevant experience. Persist any new discoveries to
candidate-context.mdperreferences/candidate-discovery.md. Document all gaps honestly in notes.md — do NOT fabricate.
Step 6: Avenues to Strengthen Application
For each gap identified in Step 5, generate an actionable mitigation entry. This section helps the candidate understand what they can do before or alongside applying to improve their chances.
For each gap, provide:
-
Severity:
- 🔴 High — hard requirement explicitly listed in the JD; candidate has no evidence of it
- 🟡 Medium — preferred/advantageous qualification; candidate lacks it but it's not a dealbreaker
- 🟢 Low — nice-to-have, or the gap is easily bridged by reframing existing experience
-
Mitigation Strategy: A specific, actionable recommendation — not generic advice. Examples of good mitigations:
- "Build a small MCP server in Python that wraps a public API — add it to your Projects section"
- "In your cover letter, explicitly bridge your equity factor strategy experience to orderbook data"
- "Complete the fast.ai Transformer course and implement a small attention-based model"
- "Contribute a PR to an open-source Jax project to demonstrate working proficiency"
-
Why it works: Brief explanation of what signal it sends to the hiring manager
Rules:
- Prioritize 🔴 High gaps — these need the most attention and should appear first
- Include at least one concrete project idea that could be added to the resume's Projects section if completed
- Be honest about gaps that cannot be easily closed (e.g., "Do not list C++ if you don't know it — acknowledge it as a growth area in your cover letter instead")
- Never recommend fabricating experience — this is a strict rule across the entire skill
- For 🟢 Low gaps, it's acceptable to say "No action needed" if existing experience covers it sufficiently
- When a mitigation strategy involves addressing a gap in a cover letter, refer the candidate to Step 11 and
references/cover-letter.mdfor structure and best practices
Step 7: XYZ Bullet Optimization
Rewrite experience bullets using the XYZ formula, incorporating target keywords naturally. See references/xyz-formula.md for methodology and examples.
Priority order for keyword placement (optimized for human readers — recruiters read top-down):
- Professional summary / first bullet of most relevant role
- Most recent experience section
- Projects/Leadership section
- Skills section (highest ATS hit rate — see
references/ats-keywords.mdfor ATS-specific priority)
Note: This ordering prioritizes human readability (recruiters read top-down). ATS systems weight the Skills section highest (see references/ats-keywords.md). In practice, ensure high-priority keywords appear in BOTH the Skills section and contextual bullets.
Inline probing: When rewriting a bullet and the result triggers anti-generic heuristics from references/candidate-discovery.md (e.g., the action could apply to anyone, or specifics are missing), pause and ask the candidate: "This bullet mentions [vague action]. What specifically did you do? What was the measurable outcome? What would someone else in your position NOT have done?" Persist new specifics to candidate-context.md and rewrite the bullet with the real details. If extensive probing was already done in Step 1.5, limit follow-up here to genuinely new gaps — don't re-interrogate topics already covered.
Step 8: Strategic Uncommenting & Commenting
Review commented-out sections in the master resume. Uncomment entries that strengthen the application:
| Commented Section | Uncomment When Targeting |
|---|---|
| LSE Summer School | Quantitative finance, computational methods |
| SUSS Linear Algebra | Math-heavy roles, ML theory positions |
| Arcane Group | Growth/BD roles, crypto/web3 |
| KlimaDAO | Climate tech, ESG, web3 research |
| SuperAI Hackathon | Regulatory tech, AWS, agentic AI |
| Ripple Hackathon | Blockchain, DeFi, full-stack web3 |
| CFA Challenge | Finance, ESG, investment research |
Similarly, comment out entries that are irrelevant or that weaken the narrative for the target role.
When including projects, ensure project names link to GitHub repos where possible using \href{https://github.com/...}{\textbf{Project Name}}.
Step 9: Skills Reordering
Reorder skills categories and items within each category to front-load the most relevant ones. The first items in each line are what ATS and recruiters see first.
Step 10: Output Generation
Create the output directory and files:
hojicha/<company>-<role>-resume/
notes.md # Analysis and tailoring decisions
resume.tex # Tailored resume
notes.md structure:
# Resume Tailoring: <Company> — <Role>
## JD Summary
<Brief summary of the role and key requirements>
## Keyword Analysis
<Table of extracted keywords by category>
## Gap Analysis
| Requirement | Status | Resume Evidence |
|-------------|--------|-----------------|
| ... | Strong Match / Reframed / Gap | ... |
## Avenues to Strengthen Application
| Gap | Severity | Mitigation Strategy |
|-----|----------|---------------------|
| **<Skill/Requirement>** | 🔴 High — <why it's critical> | <Specific, actionable recommendation> |
| **<Skill/Requirement>** | 🟡 Medium — <why it matters> | <Specific, actionable recommendation> |
| **<Skill/Requirement>** | 🟢 Low — <why it's minor> | <Recommendation or "No action needed"> |
| ... | ... | ... |
## Changes Made
- <List of specific changes: reworded bullets, uncommenting, reordering>
## Sections Commented Out
- <Entries removed and why>
## Sections Uncommented
- <Entries added and why>
resume.tex: Copy the master resume structure exactly, applying all modifications. Include \documentclass[letterpaper,12pt]{fed-res} and all original formatting. Reference references/latex-commands.md for the cls command reference.
Plain text verification: After generating resume.tex, verify that all meaningful content is conveyed through text, not through visual layout alone. Check that: (1) no critical information relies solely on bold/italic/positioning to convey meaning, (2) all special characters render as readable text when LaTeX formatting is stripped, and (3) acronyms are expanded at least once so ATS can match both forms.
Step 11: Cover Letter (Optional)
After generating the tailored resume, offer to write a cover letter if the user provided a JD. Skip this step if the user only asked for a resume.
When to offer: Always ask after completing the resume. Cover letters are most valuable for entry-level candidates and career changers — see references/cover-letter.md for guidance on when they matter.
Process:
- Follow the four-paragraph structure from
references/cover-letter.md - Map the candidate's top 2-3 experiences to JD requirements (reuse the gap analysis from Step 5)
- Use the same keywords identified in Step 2
- Address gaps identified in Step 6 where the mitigation strategy was "mention in cover letter"
- Never fabricate — the same critical rule applies. Only reference real experiences from the master resume
Output: Save as cover-letter.md in the same output directory. Use Markdown (not LaTeX) since cover letters don't need the fed-res.cls formatting.
hojicha/<company>-<role>-resume/
notes.md # Analysis and tailoring decisions
resume.tex # Tailored resume
cover-letter.md # Cover letter (if requested)
Quick Reference
Output Directory Convention
hojicha/<company>-<role>-resume/
Examples:
hojicha/kronos-research-ml-researcher-resume/hojicha/grab-data-engineer-resume/hojicha/stripe-backend-engineer-resume/
XYZ Formula
Accomplished [X] as measured by [Y], by doing [Z]
See references/xyz-formula.md for full methodology.
fed-res.cls Commands
| Command | Usage |
|---|---|
\resumeSubheading{Org}{Loc}{Title}{Date} | Experience/education entry |
\resumeItem{text} | Bulleted item |
\resumeSubHeadingListStart/End | Wrap subheading groups |
\resumeItemListStart/End | Wrap bullet lists |
\resumeProjectHeading{Title | Tech}{Date} | Project entry |
See references/latex-commands.md for the full reference.
More by luqmannurhakimbazman
View allThis skill should be used when the user asks to learn, practice, or be tested on coding interview problems (LeetCode, NeetCode, DSA), ML implementations, or data structures and algorithms. Common triggers include "teach me", "explain this problem", "walk me through", "help me understand", "how to solve", "how does [data structure] work", "coding interview", "implement [algorithm/optimizer/layer]", or providing a leetcode.com or neetcode.io URL. It also handles recall testing and mock interview modes when the user says "quiz me", "test my recall", "mock interview", or "drill me on". It acts as a Socratic teacher that guides through structured problem breakdowns with progressive hints rather than direct answers. It also supports "aha mode" for getting the optimal solution immediately without Socratic scaffolding.
This skill should be used when the user wants to prepare for behavioral interviews, generate a behavioral answer bank, practice STAR or SOAR format answers, prep a resume walkthrough narrative, or generate questions to ask their interviewer. Trigger phrases include "prep behavioral", "behavioral interview prep", "prep me for interview at", "practice behavioral questions", "generate behavioral answers", "behavioral prep for", "interview stories for", "STAR method answers", "SOAR answers", "prep my stories", "answer bank for interview", "resume walkthrough", "walk me through your resume prep", "questions to ask my interviewer", or when a user has completed a resume-builder run and asks for interview preparation. It chains off resume-builder output (notes.md, resume.tex, candidate-context.md) to produce a tailored question-and-answer bank.
This skill should be used when the user asks to learn, practice, or be tested on global markets, trading, and finance interview topics. Common triggers include "teach me about swaps", "explain contango", "quiz me on rates", "mock interview Goldman S&T", "headline analysis", "walk me through yield curves", "explain carry trade", "test me on Greeks", "how do credit default swaps work", "mock interview for Balyasny", "prepare me for S&T behavioral", "why trading", "what should I know for my interview", "fit questions", "stock pitch", "market dashboard", "how do I research a stock", "equity due diligence", "how do hedge fund analysts work", or pasting Bloomberg/financial news headlines. It covers FICC (Fixed Income, Currencies, Commodities), Equities, Credit, Crypto, Macro Economics, Derivatives, market mechanics, S&T behavioral/fit interview prep, and practitioner workflows (equity research process, trade idea generation, risk management in practice). Target firms span hedge funds (Balyasny, Citadel, Point72), banks (Goldman S&T, JPM), asset managers (BlackRock, PIMCO), trading houses (Glencore, Trafigura), energy majors (Exxon, Shell), and crypto trading/market-making firms (Galaxy, Cumberland, Wintermute, QCP). It acts as a Socratic teacher that prioritizes practitioner-level knowledge over textbook answers — teaching how traders and PMs actually think, research, and make decisions rather than academic frameworks. Includes structured concept breakdowns with progressive hints, and Mock Interview mode for full interview simulation.
This skill should be used when the user asks to "teach me", "explain this problem", "walk me through", "leetcode problem", "neetcode problem", "coding interview problem", "solve this step by step", "break down this problem", "help me understand hash tables", "help me understand dynamic programming", "implement Adam optimizer", "implement binary search", "ML implementation", "how to solve", "practice coding problem", "coding challenge", "DSA", "data structures and algorithms", "bit manipulation", "bitwise operation", "XOR trick", "trapping rain water", "ugly number", "ugly numbers", "probability", "brain teaser", "nim game", "stone game", "bulb switcher", "sieve of eratosthenes", "count primes", "pancake sorting", "perfect rectangle", "reservoir sampling", "shuffle algorithm", "Fisher-Yates", "modular arithmetic", "fast exponentiation", "GCD", "LCM", "factorial trailing zeros", "missing number", "duplicate number", "merge intervals", "interval intersection", "string multiplication", "consecutive subsequences", "Monty Hall", "matrix", "spiral matrix", "rotate image", "set matrix zeroes", "geometry", "rectangle overlap", "rectangle area", "k closest points", "distance between points", "overlapping rectangles", "tree traversal", "binary tree", "binary search tree", "BST", "invert binary tree", "heap", "priority queue", "top k", "k closest", "trie", "prefix tree", "autocomplete", "valid parentheses", "largest rectangle", "flood fill", "number of islands", "course schedule", or provides a problem URL (leetcode.com, neetcode.io). It acts as a Socratic teacher that guides users through algorithmic and ML implementation problems with structured breakdowns and progressive hints rather than direct answers.
