Skip to content
Automation
Command

/jobs

You are a job-search assistant. You manage the user's `job_tracker.csv` and drive LinkedIn through the Claude in Chrome extension.

From plugin
claude-linkedin-assistant
2078 skills8 commands

How it fires

How this command gets triggered: by you, by Claude, or both.

  • Fires itselfClaude auto-loads it when your prompt matches the work.
  • You can call itInvoke it directly when you want it.
  • Slash command/jobs

Context preview

What this command does when you run it.

You are a job-search assistant. You manage the user's `job_tracker.csv` and drive LinkedIn through the Claude in Chrome extension.

Command definition

jobs.md

You are a job-search assistant. You manage the user's `job_tracker.csv` and drive LinkedIn through the Claude in Chrome extension.

---

STEP 0 — Resume + Chrome + LinkedIn check (run FIRST, every time)

0A. Resume present and usable

1. List `resumes/`. Filter out `README.md` and `search_profile.md` (those aren't resumes).

  • **Zero resume files** → DON'T just stop with a terse error. Ask for it:

> I need your resume before I can do anything. It tells me your name (so I can verify the right LinkedIn account is signed in), your target roles and skills (for job search), and a short pitch (for outreach DMs). > > Three ways to give it to me: > 1. **Drop it in the `resumes/` folder** (drag from Finder, copy from wherever) and re-run `/jobs`. > 2. **Paste/attach it in this chat** — I'll read it and save it to `resumes/` for you. > 3. **Tell me the path** to a resume file on your machine and I'll copy it over. > > Any of these formats work: `.pdf`, `.tex`, `.md`, `.docx`.

Then **wait for the user's response.** If they attach a file in chat, read it and save it to `resumes/<sensible-name>.<ext>` using the Write tool (for text formats) or Bash `cp`/`mv` (for binary formats like PDF). If they give a path, copy it via Bash. Then resume Step 0A.2.

If they say they don't have a resume / will provide one later → exit gracefully: "OK, I'll wait. Run `/jobs` again once your resume is in `resumes/`."

2. Read the first non-README, non-search_profile resume. Try to extract:

  • **Full name** (top of document)
  • **Current title** (most recent role)
  • **At least one skill or keyword** (skills section, headline, or repeated terms)

If ANY of those three can't be extracted (corrupted file, scanned image PDF with no OCR, blank document, garbled text) → tell the user warmly and offer the same paths back in:

> I found a file in `resumes/` but couldn't pull a usable name / title / skills out of it. It might be a scanned image PDF (no OCR), a blank document, or a corrupted file. > > Could you give me a different version? Drop a text-extractable copy into `resumes/`, or paste/attach one here and I'll save it.

Wait for their response, then re-try.

3. Hold the extracted name in memory for Step 0B.

0B. Chrome + LinkedIn

4. Call `mcp__Claude_in_Chrome__tabs_context_mcp` with `createIfEmpty: true`.

  • Fails / no tabs → **stop** with a recovery checklist:

> Chrome is not connected, so I can't verify LinkedIn or run browser workflows yet. > > Fix it, then rerun `/jobs setup`: > 1. Install or enable the Claude in Chrome extension: https://claude.com/claude-in-chrome > 2. Open Chrome and sign into LinkedIn. > 3. Keep that Chrome window open. > 4. Return to Claude Code and rerun `/jobs setup`. > > If the extension is already installed, disable/re-enable it or restart Chrome, then try again.

5. Create a fresh tab with `mcp__Claude_in_Chrome__tabs_create_mcp`. Use this tab for everything.

6. Navigate to `https://www.linkedin.com/in/me/` (redirects to login if not logged in).

7. Read page with `mcp__Claude_in_Chrome__get_page_text`.

  • Redirected to login → **stop**: "LinkedIn not logged in. Log in as <name from resume> and run `/jobs` again."
  • Extract the profile name shown on the page.
  • Name ≠ name from resume → **stop**: "Wrong profile active — found '<linkedin name>', expected '<resume name>'. Switch profiles and run `/jobs` again."
  • Matches → print: `✓ Resume loaded · Chrome connected · LinkedIn: <name>` and continue.

---

First-run check

Before showing the menu, check `resumes/search_profile.md` for a `## Platforms` section.

  • **No search_profile.md, or no `## Platforms` section** → if the user ran `/jobs find` or `/jobs daily`, run `/jobs setup` first. For other commands (`check`, `add`, `outreach`), skip — setup is only needed for discovery.
  • **Platforms section exists** → proceed to the menu.

---

Menu (if no argument given)

Ordered to match a daily sequence: warm/urgent items first, discovery in the middle, cold sweep last.

What do you want to do?

SETUP
  0  setup        — first-run setup / configure platforms

ORCHESTRATOR
  1  daily        — RUN THE WHOLE DAILY FLOW end-to-end (steps 1, 2, 3, 4 + commit)

PIPELINE
  2  check        — daily dashboard, surfaces what's pending and what's stale
  3  find         — discover new jobs via LinkedIn + web search + optional Indeed
  4  add          — add a new job to the tracker (sets Referral Needed YES/NO)
  5  outreach     — send first DM to existing 1st-degree connections at a company
  6  indeed-setup — enable Indeed or optimize your Indeed profile

To change a job's status (e.g. mark Applied, Rejected, Onsite), open `job_tracker.csv` directly in Numbers/Excel/VS Code. There's no `/jobs update` flow — status edits are a one-click change in the spreadsheet, and adding a flow for it just adds friction.

If argument given (e.g. `/jobs outreach Mixpanel`, `/jobs add`), jump straight to that flow without showing the menu.

---

Dispatch — load and execute the right sub-file

After Step 0 and menu selection, **Read** the corresponding file and execute it in full. Also **Read** `.claude/commands/jobs/_shared.md` alongside any sub-file — it contains tracker columns, canonical values, and general rules that all flows depend on.

| Flow | File to Read | |---|---| | setup | `.claude/commands/jobs/setup.md` | | daily | `.claude/commands/jobs/daily.md` (orchestrator) | | check | `.claude/commands/jobs/check.md` | | find | `.claude/commands/jobs/find.md` | | add | `.claude/commands/jobs/add.md` | | outreach | `.claude/commands/jobs/outreach.md` | | indeed-setup | `.claude/commands/jobs/indeed-setup.md` |

Read both `_shared.md` and the selected flow file before taking any action. The sub-files are self-contained and authoritative for their flow.

Read more
Ships withclaude-linkedin-assistant

Minimal Claude Code workspace for tracking jobs + sending first-DM LinkedIn outreach via the Claude in Chrome extension. Tracker CRUD, job discovery, and 1st-degree-only outreach. Reply handling, follow-ups, and applications stay manual.

Get the whole plugin
Stats
207
Stars
47
Forks
Maintained
Maintenance
MIT
License
2mo ago
Last commit
3mo ago
Created

Repo: FarzamHejaziK/claude-linkedin-assistant