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

Compare on GitHub

View on GitHubAdd to my skills

Verified commit 82622038f28dcbafc141e8eef3da4d53ebcade69

11GitHub stars
0stars in 7 days
1skill in this repository
0commits in 30 days

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

Oct 25, 2026Oct 25, 202611

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 tokens

Always available to the agent

SKILL.md

2,499 tokens

When the skill is activated

Reference documents

7,497 tokens

Loaded on request

Token counts are estimates. Scripts run separately; they are not counted as reference context.

The playbook

  1. Non-negotiable ground rules
  2. Workflow
  3. Reference files

Scripts executed separately

  • scripts/ats_form_filler.py
  • scripts/due_diligence_report.py
  • scripts/find_career_page.py
  • scripts/search_target_companies.py
  • scripts/track_applications.py

Files

  • .gitignoreasset345 bytes
  • LICENSEasset1,065 bytes
  • README.en.mddoc6,710 bytes
  • README.mddoc6,193 bytes
  • SKILL.mdcore10,840 bytes
  • SKILL.mdcore10,840 bytes
  • SKILL.mdcore10,840 bytes
  • SKILL.mdcore10,840 bytes
  • company_due_diligence.mddoc6,470 bytes
  • docs/company-report-screenshot.pngasset228,988 bytes
  • docs/dashboard-screenshot.pngasset96,378 bytes
  • docs/readme-hero.pngasset2,332,245 bytes
  • job-application-assistant.skillasset348,795 bytes
  • references/ats_platforms.mddoc3,493 bytes
  • references/company_due_diligence.mddoc4,841 bytes
  • references/similar_projects.mddoc3,547 bytes
  • requirements.txtdoc298 bytes
  • scripts/ats_form_filler.pyruns10,423 bytes
  • scripts/due_diligence_report.pyruns21,903 bytes
  • scripts/find_career_page.pyruns4,972 bytes
  • scripts/search_target_companies.pyruns7,603 bytes
  • scripts/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 GitHub

Skills 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 shell

Automated 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:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
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
Signal confidence: 69 facts

and 19 more

Works with

Agent compatibility, from the files in this repository
AgentStatusEvidenceInstall to
Claude CodeCompatibleStandard SKILL.md SKILL.md.claude/skills/<skill-name>/
CodexCompatibleStandard SKILL.md SKILL.md.agents/skills/<skill-name>/
CursorCompatibleStandard SKILL.md SKILL.md.cursor/skills/<skill-name>/
Gemini CLICompatibleStandard SKILL.md SKILL.md.gemini/skills/<skill-name>/
GitHub CopilotCompatibleStandard SKILL.md SKILL.md.github/skills/<skill-name>/
OpenCodeCompatibleStandard 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.