Not in the top 1,000 by GitHub stars
LH-kevin/job-application-assistant
个人求职助手 Skill(Claude/Codex)—— 搜索招聘公司、投递前先做背景调查、集中管理投递记录、辅助填写申请表单,每次真正提交都需要人工确认。
History
Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.
View weekly changes
SKILL.md
Week of Oct 26, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
82622038f28d → 82622038f28d
Heat
0.3- Star growth, last 7 daysNot available
- Star growth, last 24 hoursNot available
- Rank movement, last 7 daysNot available
- Commits, last 30 daysNot available
- Accounts asking about it through MCP, last 7 daysNot available
- Hot votes this weekNot available
Heat never changes the order by stars, and sponsorship never touches it. How heat works
Stars over time
30-day change not yet available: not enough history.
Individual skills in this repository
How it works
job-application-assistant
When your agent uses it
Search for companies actively hiring for a user-specified job title/role, locate their official career pages, run a background/reputation check on companies of interest (financial health, legal/labor disputes, employee reviews across 知乎/企查查/天眼查/小红书/抖音 etc.), tailor resume/cover letter materials to each opening, and assist with filling out application forms on company websites (with human confirmation before final submission). Use this whenever the user asks to find job openings, search for hiring companies, apply for jobs on company websites, do a job search + apply workflow, mass-apply to positions, check out or vet a company before applying, or mentions "投简历", "找工作", "校招/社招", "海投", "官网投递", "背调", "公司靠谱吗", "员工评价", "劳动仲裁", "帮我投递简历给招xx的公司", even if they don't use the word "skill".
What it loads into context
Frontmatter
215 tokensAlways available to the agent
SKILL.md
2,499 tokensWhen the skill is activated
Reference documents
7,497 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Non-negotiable ground rules
- Workflow
- Reference files
Scripts executed separately
scripts/ats_form_filler.pyscripts/due_diligence_report.pyscripts/find_career_page.pyscripts/search_target_companies.pyscripts/track_applications.py
Files
.gitignoreasset345 bytesLICENSEasset1,065 bytesREADME.en.mddoc6,710 bytesREADME.mddoc6,193 bytesSKILL.mdcore10,840 bytesSKILL.mdcore10,840 bytesSKILL.mdcore10,840 bytesSKILL.mdcore10,840 bytescompany_due_diligence.mddoc6,470 bytesdocs/company-report-screenshot.pngasset228,988 bytesdocs/dashboard-screenshot.pngasset96,378 bytesdocs/readme-hero.pngasset2,332,245 bytesjob-application-assistant.skillasset348,795 bytesreferences/ats_platforms.mddoc3,493 bytesreferences/company_due_diligence.mddoc4,841 bytesreferences/similar_projects.mddoc3,547 bytesrequirements.txtdoc298 bytesscripts/ats_form_filler.pyruns10,423 bytesscripts/due_diligence_report.pyruns21,903 bytesscripts/find_career_page.pyruns4,972 bytesscripts/search_target_companies.pyruns7,603 bytesscripts/track_applications.pyruns24,344 bytes
Read SKILL.md
# Job Application Assistant
Automates the *research and preparation* side of a job search — finding companies
hiring for a role and getting application materials submission-ready — while
treating the actual "submit" click as a human-in-the-loop action, since it sends
data to a third-party system on the user's behalf.
## Non-negotiable ground rules
1. **Never auto-submit without explicit per-batch confirmation.** Fill the form,
show the user what will be sent (company, role, resume version, cover letter),
and only submit after they say go. Confirming once for a batch of N companies
is fine if the user explicitly asks for that — but always show the list first.
2. **Prefer the company's own official career page over third-party job boards**View the complete source on GitHubSkills included
- job-application-assistant
Repository facts
- License
- MIT
- Created
- Sep 12, 2026
- Last pushed
- Sep 12, 2026
- Forks
- 0
- Open issues
- 0
- Project activity
- Active
Before you install
Network or broad shellAutomated signals, not a guarantee
Checked Nov 6, 2026
Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.
Show 3 notes
SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzed
- No broad tool permissions
- No dangerous shell commands
- 64 network referencesin 9 files: scripts/find_career_page.py:8 scripts/search_target_companies.py:66 scripts/due_diligence_report.py:30 and 6 more
- No hidden or obfuscated text
- No instruction overrides
- 5 executable scriptsin 5 files: scripts/ats_form_filler.py:1 scripts/due_diligence_report.py:1 scripts/find_career_page.py:1 and 2 more
- No access to secrets
- No requests to vote in Hot
Show all 69 signals by file
README.en.md
- Network accessline 154
python scripts/track_applications.py add \ --company "Acme Corp" --role "Frontend Engineer" \ --channel official_site --url "https://acme.com/careers/123" \ - Network accessline 155
--company "Acme Corp" --role "Frontend Engineer" \ --channel official_site --url "https://acme.com/careers/123" \ --status submitted - Network accessline 156
--channel official_site --url "https://acme.com/careers/123" \
README.md
- Network accessline 153
python scripts/track_applications.py add \ --company "Acme Corp" --role "Frontend Engineer" \ --channel official_site --url "https://acme.com/careers/123" \ - Network accessline 154
--company "Acme Corp" --role "Frontend Engineer" \ --channel official_site --url "https://acme.com/careers/123" \ --status submitted - Network accessline 155
--channel official_site --url "https://acme.com/careers/123" \
references/ats_platforms.md
- Network accessline 9
- URL pattern: `boards.greenhouse.io/<company-slug>` or embedded widget on the company's own domain (`<company>.com/careers` loading a Greenhouse iframe). - Public API: `https://boards-api.greenhouse.io/v1/boards/<token>/jobs` returns - Network accessline 10
the company's own domain (`<company>.com/careers` loading a Greenhouse iframe). - Public API: `https://boards-api.greenhouse.io/v1/boards/<token>/jobs` returns open jobs as JSON — prefer this over scraping HTML when available. - Network accessline 11
- Public API: `https://boards-api.greenhouse.io/v1/boards/<token>/jobs` returns
references/similar_projects.md
- Network accessline 6
## Auto_job_applier_linkedIn (GodsScion, ~2.8k stars) https://github.com/GodsScion/Auto_job_applier_linkedIn - Network accessline 7
https://github.com/GodsScion/Auto_job_applier_linkedIn - Network accessline 28
## simonfong6/auto-apply https://github.com/simonfong6/auto-apply - Network accessline 29
https://github.com/simonfong6/auto-apply - Network accessline 34
## Pickle-Pixel/ApplyPilot https://github.com/Pickle-Pixel/ApplyPilot - Network accessline 35
https://github.com/Pickle-Pixel/ApplyPilot
scripts/ats_form_filler.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 14
Usage: python ats_form_filler.py \ --url "https://boards.greenhouse.io/acme/jobs/12345" \ - Network accessline 15
python ats_form_filler.py --url "https://boards.greenhouse.io/acme/jobs/12345" - Network accessline 16
--url "https://boards.greenhouse.io/acme/jobs/12345" \
scripts/due_diligence_report.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 30
"legal_risks": [ {"type": "劳动争议判决", "summary": "2023年因未足额支付加班费被判赔偿", "source": "中国裁判文书网", "url": "https://...", "date": "2023-06"} - Network accessline 31
{"type": "劳动争议判决", "summary": "2023年因未足额支付加班费被判赔偿", "source": "中国裁判文书网", "url": "https://...", "date": "2023-06"} ], - Network accessline 32
"source": "中国裁判文书网", "url": "https://...", "date": "2023-06"} - Network accessline 34
"employee_reviews": [ {"platform": "知乎", "sentiment": "negative", "summary": "多位回答提到加班较多,管理层沟通不畅", "url": "https://..."} - Network accessline 35
{"platform": "知乎", "sentiment": "negative", "summary": "多位回答提到加班较多,管理层沟通不畅", "url": "https://..."} ], - Network accessline 36
"summary": "多位回答提到加班较多,管理层沟通不畅", "url": "https://..."} - Network accessline 38
"social_mentions": [ {"platform": "小红书", "sentiment": "positive", "summary": "多篇入职体验贴反馈团队氛围不错", "url": "https://..."} - Network accessline 39
{"platform": "小红书", "sentiment": "positive", "summary": "多篇入职体验贴反馈团队氛围不错", "url": "https://..."} ], - Network accessline 40
"summary": "多篇入职体验贴反馈团队氛围不错", "url": "https://..."}
scripts/find_career_page.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 8
Usage: python find_career_page.py "Acme Corp" python find_career_page.py "Acme Corp" --homepage https://acme.com - Network accessline 10
python find_career_page.py "Acme Corp" --homepage https://acme.com - Network accessline 54
ATS_SUBDOMAIN_PATTERNS = [ "https://boards.greenhouse.io/{slug}", - Network accessline 55
"https://boards.greenhouse.io/{slug}", - Network accessline 56
"https://jobs.lever.co/{slug}", - Network accessline 57
"https://{slug}.wd1.myworkdayjobs.com", - Network accessline 58
"https://{slug}.wd5.myworkdayjobs.com", - Network accessline 59
"https://apply.workable.com/{slug}", - Network accessline 60
"https://{slug}.bamboohr.com/jobs", - Network accessline 61
"https://{slug}.recruitee.com", - Network accessline 69
def probe(url: str) -> bool: try: resp = requests.head( - Network accessline 70
try: resp = requests.head( url, headers=HEADERS, timeout=TIMEOUT, allow_redirects=True - Network accessline 71
resp = requests.head( - Network accessline 73
) if resp.status_code == 405: # some servers reject HEAD resp = requests.get(url, headers=HEADERS, timeout=TIMEOUT) - Network accessline 74
if resp.status_code == 405: # some servers reject HEAD resp = requests.get(url, headers=HEADERS, timeout=TIMEOUT) return resp.status_code < 400 - Network accessline 75
resp = requests.get(url, headers=HEADERS, timeout=TIMEOUT) - Network accessline 88
slug = slugify(company) for tld in (".com", ".io", ".ai", ".co"): candidate = f"https://www.{slug}{tld}" - Network accessline 89
for tld in (".com", ".io", ".ai", ".co"): candidate = f"https://www.{slug}{tld}" if probe(candidate): - Network accessline 90
candidate = f"https://www.{slug}{tld}" - Network accessline 98
domain = urlparse(homepage).netloc for path in COMMON_CAREER_PATHS: url = f"https://{domain}{path}" - Network accessline 99
for path in COMMON_CAREER_PATHS: url = f"https://{domain}{path}" if probe(url): - Network accessline 100
url = f"https://{domain}{path}"
scripts/search_target_companies.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 66
def _get(url, params=None): resp = requests.get(url, headers=HEADERS, params=params, timeout=TIMEOUT) - Network accessline 67
resp = requests.get(url, headers=HEADERS, params=params, timeout=TIMEOUT) - Network accessline 74
out: list[Posting] = [] try: url = "https://www.indeed.com/jobs" - Network accessline 75
try: url = "https://www.indeed.com/jobs" resp = _get(url, params={"q": role, "l": location}) - Network accessline 76
url = "https://www.indeed.com/jobs" - Network accessline 91
href = link_el.get("href", "") full_url = ( href if href.startswith("http") else f"https://www.indeed.com{href}" - Network accessline 92
full_url = ( href if href.startswith("http") else f"https://www.indeed.com{href}" ) - Network accessline 93
href if href.startswith("http") else f"https://www.indeed.com{href}" - Network accessline 115
out: list[Posting] = [] try: url = "https://www.linkedin.com/jobs-guest/jobs/api/seeMoreJobPostings/search" - Network accessline 116
try: url = "https://www.linkedin.com/jobs-guest/jobs/api/seeMoreJobPostings/search" resp = _get( - Network accessline 117
url = "https://www.linkedin.com/jobs-guest/jobs/api/seeMoreJobPostings/search"
scripts/track_applications.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 13
python track_applications.py add --company "Acme Corp" --role "Frontend Engineer" --channel official_site --ats greenhouse --url "https://boards.greenhouse.io/acme/jobs/12345" - Network accessline 14
--company "Acme Corp" --role "Frontend Engineer" \ --channel official_site --ats greenhouse \ --url "https://boards.greenhouse.io/acme/jobs/12345" \ - Network accessline 15
--channel official_site --ats greenhouse \ --url "https://boards.greenhouse.io/acme/jobs/12345" \ --status submitted - Network accessline 16
--url "https://boards.greenhouse.io/acme/jobs/12345" \
How the signals fit together
Facts from a static read of the files at the pinned commit. They describe what the code does, not why.
Declared and executed: 5 facts
- Contacts boards.greenhouse.io, which SKILL.md, the README and the plugin manifest do not mentionscripts/find_career_page.py:55High confidence
- Contacts jobs.lever.co, which SKILL.md, the README and the plugin manifest do not mentionscripts/find_career_page.py:56High confidence
- Contacts apply.workable.com, which SKILL.md, the README and the plugin manifest do not mentionscripts/find_career_page.py:59High confidence
- Contacts www.indeed.com, which SKILL.md, the README and the plugin manifest do not mentionscripts/search_target_companies.py:76High confidence
- Contacts www.linkedin.com, which SKILL.md, the README and the plugin manifest do not mentionscripts/search_target_companies.py:117High confidence
Signal confidence: 69 facts
- Network access in code of documentationREADME.en.md:154Low confidence
- Network access in code of documentationREADME.en.md:155Low confidence
- Network access in code of documentationREADME.en.md:156Low confidence
- Network access in code of documentationREADME.md:153Low confidence
- Network access in code of documentationREADME.md:154Low confidence
- Network access in code of documentationREADME.md:155Low confidence
- Network access in prose of documentationreferences/ats_platforms.md:9Low confidence
- Network access in prose of documentationreferences/ats_platforms.md:10Low confidence
- Network access in prose of documentationreferences/ats_platforms.md:11Low confidence
- Network access in prose of documentationreferences/similar_projects.md:6Low confidence
- Network access in prose of documentationreferences/similar_projects.md:7Low confidence
- Network access in prose of documentationreferences/similar_projects.md:28Low confidence
- Network access in prose of documentationreferences/similar_projects.md:29Low confidence
- Network access in prose of documentationreferences/similar_projects.md:34Low confidence
- Network access in prose of documentationreferences/similar_projects.md:35Low confidence
- Executable script in code of a file that runsscripts/ats_form_filler.py:1High confidence
- Network access in prose of a file that runsscripts/ats_form_filler.py:14Low confidence
- Network access in prose of a file that runsscripts/ats_form_filler.py:15Low confidence
- Network access in prose of a file that runsscripts/ats_form_filler.py:16Low confidence
- Executable script in code of a file that runsscripts/due_diligence_report.py:1High confidence
- Network access in prose of a file that runsscripts/due_diligence_report.py:30Low confidence
- Network access in prose of a file that runsscripts/due_diligence_report.py:31Low confidence
- Network access in prose of a file that runsscripts/due_diligence_report.py:32Low confidence
- Network access in prose of a file that runsscripts/due_diligence_report.py:34Low confidence
- Network access in prose of a file that runsscripts/due_diligence_report.py:35Low confidence
- Network access in prose of a file that runsscripts/due_diligence_report.py:36Low confidence
- Network access in prose of a file that runsscripts/due_diligence_report.py:38Low confidence
- Network access in prose of a file that runsscripts/due_diligence_report.py:39Low confidence
- Network access in prose of a file that runsscripts/due_diligence_report.py:40Low confidence
- Executable script in code of a file that runsscripts/find_career_page.py:1High confidence
- Network access in prose of a file that runsscripts/find_career_page.py:8Low confidence
- Network access in prose of a file that runsscripts/find_career_page.py:10Low confidence
- Network access in code of a file that runsscripts/find_career_page.py:54High confidence
- Network access in code of a file that runsscripts/find_career_page.py:55High confidence
- Network access in code of a file that runsscripts/find_career_page.py:56High confidence
- Network access in code of a file that runsscripts/find_career_page.py:57High confidence
- Network access in code of a file that runsscripts/find_career_page.py:58High confidence
- Network access in code of a file that runsscripts/find_career_page.py:59High confidence
- Network access in code of a file that runsscripts/find_career_page.py:60High confidence
- Network access in code of a file that runsscripts/find_career_page.py:61High confidence
- Network access in code of a file that runsscripts/find_career_page.py:69High confidence
- Network access in code of a file that runsscripts/find_career_page.py:70High confidence
- Network access in code of a file that runsscripts/find_career_page.py:71High confidence
- Network access in code of a file that runsscripts/find_career_page.py:73High confidence
- Network access in code of a file that runsscripts/find_career_page.py:74High confidence
- Network access in code of a file that runsscripts/find_career_page.py:75High confidence
- Network access in code of a file that runsscripts/find_career_page.py:88High confidence
- Network access in code of a file that runsscripts/find_career_page.py:89High confidence
- Network access in code of a file that runsscripts/find_career_page.py:90High confidence
- Network access in code of a file that runsscripts/find_career_page.py:98High confidence
and 19 more
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Compatible | Standard SKILL.md SKILL.md | .claude/skills/<skill-name>/ |
| Codex | Compatible | Standard SKILL.md SKILL.md | .agents/skills/<skill-name>/ |
| Cursor | Compatible | Standard SKILL.md SKILL.md | .cursor/skills/<skill-name>/ |
| Gemini CLI | Compatible | Standard SKILL.md SKILL.md | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Compatible | Standard SKILL.md SKILL.md | .github/skills/<skill-name>/ |
| OpenCode | Compatible | Standard SKILL.md SKILL.md | .opencode/skills/<skill-name>/ |
- Native The repository ships a manifest, folder or frontmatter field for this agent.
- Compatible A standard SKILL.md that this agent can read.
- Unknown No evidence either way.
Derived automatically from paths, manifests and frontmatter. Not tested on each agent.