← ClaudeAtlas

linkedin-applylisted

Scrape a LinkedIn job offer and score it against your profile using Claude LLM — produces APPLY / REVIEW / SKIP decision with 4-dimension scores. Triggers: "linkedin apply" | "analyze job" | "job match" | "linkedin-apply" | "score this job" | "should i apply for this job" | "evaluate this job posting" | "is this job a good fit" | "check this job offer" | "rate this job".
Roxabi/roxabi-plugins · ★ 9 · AI & Automation · score 72
Install: claude install-skill Roxabi/roxabi-plugins
# LinkedIn Apply Skill Analyze a LinkedIn job offer against your candidate profile and get an LLM-powered decision: **APPLY**, **REVIEW**, or **SKIP**. Let: VL := ~/.roxabi-vault/linkedin-apply/ SD := `$CLAUDE_PLUGIN_ROOT/../../scripts/` ## Phase 1 — Validate Arguments and Prerequisites Extract LinkedIn URL from $ARGUMENTS. ¬URL → "Usage: /linkedin-apply <linkedin-job-url>" → stop. URL valid ⟺ contains `linkedin.com` ∧ (`/jobs/view/` ∨ `/jobs/`). Check prerequisites: 1. `VL/candidate.yaml` exists — ¬exists → run `/linkedin-apply-init` first 2. `python3 -c "import playwright, playwright_stealth, jinja2" 2>&1` — missing → `pip install playwright playwright-stealth jinja2 pyyaml` 3. Playwright Chromium installed — missing → `playwright install chromium` ## Phase 2 — Scrape the Job ```bash cd <scripts_dir> && python3 scraper.py "<url>" ``` Capture stdout (JSON) + stderr (logs). Errors: `SessionExpiredError` → run `/linkedin-apply-init`; `PlaywrightNotAvailableError` → install playwright; `JobNotFoundError` → job no longer available; other → show message. Parse JSON output → job data dict. ## Phase 3 — Load Candidate and Criteria ```bash cat ~/.roxabi-vault/linkedin-apply/candidate.yaml ``` Criteria (user override ≻ plugin default): `VL/criteria.yaml` if ∃, else `<plugin_dir>/config/criteria.yaml`. ## Phase 4 — Run LLM Matching CV path: `~/.roxabi-vault/cv/cv_data.json` if ∃, else construct minimal JSON from `candidate.yaml`. ```bash # Tempfile per ${CLAUDE_PLUG