Skip to content

Guide · Agent skill

How to use the Gmail Job Lead Importer agent skill

Updated · written with AI from the project's own documentation and checked against our catalogue data

This guide explains how to install and use the Gmail Job Lead Importer, an agent skill from the career-ops project that collects job posting links from a Gmail label and adds them to your career-ops pipeline. It is written for readers who have never used agent skills. By the end you will know what the skill does, how to install it, how to set up Gmail access, and how to ask your agent to run it.

Gmail Job Lead Importercareer-ops-hq/career-ops · MIT

Quick start

  1. 1Install career-ops and Node.js. Confirm you have a working career-ops installation with config/plugins.yml and Node.js available.
  2. 2Create Google OAuth credentials. Create an OAuth Desktop client and note GMAIL_CLIENT_ID and GMAIL_CLIENT_SECRET.
  3. 3Get a refresh token. Complete the consent flow to obtain GMAIL_REFRESH_TOKEN and store all three values in .env.
  4. 4Install the skill. Unzip the downloaded ZIP into ~/.claude/skills/ or a project's .claude/skills/ folder, or upload it under Settings → Capabilities → Skills.
  5. 5Configure the label. Set the label and days_back for the gmail plugin in config/plugins.yml.
  6. 6Run the import. Run node plugins.mjs run gmail or ask your agent to import new job alerts from your label.

What an agent skill is and what this one does

An agent skill is a folder of instructions and scripts that an AI agent can load and use when a request matches the skill's purpose. This skill is named career-ops-plugin-gmail and is licensed under MIT.

Once installed and configured, the agent can run a single command that reads emails under a Gmail label you choose. It pulls job posting links from emails that pass a sender-authenticity check (DMARC), filters out tracking and unsubscribe links, and passes each job's title, URL, company and location to the career-ops engine. The engine adds new entries to your pipeline and skips ones it already has. The skill also keeps a record of which emails it has processed so it does not reread them.

  • Reads only emails under the Gmail label you configure
  • Keeps only links from emails that pass DMARC
  • Removes tracking and unsubscribe links
  • Hands title, URL, company and location to career-ops

What you need before installing

This skill only feeds the career-ops pipeline, so you need career-ops already set up. It also needs Node.js, a Google OAuth Desktop client, and a Gmail refresh token. You also need a Gmail account with a labelled folder for job alerts.

  • Node.js
  • A career-ops installation with config/plugins.yml
  • A Google OAuth Desktop client providing GMAIL_CLIENT_ID and GMAIL_CLIENT_SECRET
  • A Gmail refresh token stored as GMAIL_REFRESH_TOKEN in .env
  • A Gmail account with a labelled job-alert folder

How to install the skill

Download the ZIP from the directory page and unzip it. You can install it in one of two ways. For Claude Code, place the unzipped folder in ~/.claude/skills/ for all your projects, or in a project's .claude/skills/ folder for just that project. In the Claude apps, you can instead upload the ZIP under Settings → Capabilities → Skills.

The package contains four files: skill.md, manifest.json, index.mjs and _helpers.mjs.

  • Personal install: ~/.claude/skills/
  • Project install: .claude/skills/ inside your project
  • Claude apps: Settings → Capabilities → Skills, then upload the ZIP

How to set up Gmail access and the label

Put GMAIL_CLIENT_ID, GMAIL_CLIENT_SECRET and GMAIL_REFRESH_TOKEN in your .env file. The client is an OAuth Desktop client, and the refresh token comes from the consent flow. Then configure the label and how far back to look in config/plugins.yml.

  • label sets the Gmail label to read, for example Job Leads
  • days_back sets how many days of email to look through
plugins: gmail: { enabled: true, label: "Job Leads", days_back: 7 }

How to run it and ask your agent

The underlying command is node plugins.mjs run gmail, which ingests new leads from the configured label. You can ask your agent in plain language, for example: "Check my Job Leads label for new job alerts and add them to the pipeline." The agent should use this skill when the request matches its purpose.

New jobs are written to the pipeline only after the engine checks them against what is already there, so duplicates are not added twice. Processed emails are tracked in data/gmail-state.json under your data root.

  • Example request: "Pull this week's job leads from my Job Leads label."
  • Example request: "Import new job alerts from Gmail into career-ops."
  • Example request: "Run the Gmail lead import and tell me how many new jobs were added."
node plugins.mjs run gmail

Safety notes: scripts and network access

This skill runs scripts and uses the network. It connects to Gmail using your OAuth credentials and reads email content under the label you set. Because it needs a refresh token with ongoing access, only use it if you are comfortable granting that access. Review the files in the package before installing, and keep your .env file private.

If you are not comfortable giving a tool access to your Gmail account, this skill is not a good fit. You can still gather job alerts manually and add them to career-ops yourself.

  • Reads email content under the configured label
  • Requires a refresh token with ongoing access
  • Keep .env and GMAIL_REFRESH_TOKEN private

Tips for getting reliable results

Use a dedicated Gmail label so the skill reads only job alerts. Start with a small days_back value to test, then increase it if needed. Because the skill remembers processed messages, repeat runs only pick up new emails.

  • Create a label used only for job alerts
  • Start with a small days_back value
  • Check data/gmail-state.json if you want to see what has been processed

What people use it for

  • Collecting job alert emails from several job boards into one career-ops pipeline.
  • Reviewing new job leads each week from a single labelled folder.
  • Letting an agent add new postings to the pipeline without copying links by hand.

Frequently asked questions

What is the Gmail Job Lead Importer agent skill?

It is an agent skill from the career-ops project that reads a Gmail label, extracts job posting links from authentic emails, and hands them to the career-ops engine, which adds new ones to your pipeline.

Is this skill free and what licence does it use?

The skill is licensed under MIT. The source does not state any price, so check the project for its terms.

What do I need before I can use it?

You need Node.js, a working career-ops installation with config/plugins.yml, a Google OAuth Desktop client, a Gmail refresh token stored in .env, and a Gmail label for job alerts.

Does it read all my email?

No. It reads emails under the label you configure in config/plugins.yml, and it looks back the number of days set by days_back.

Will it add the same job twice?

The engine checks new leads against the existing pipeline and only appends ones that are new. The skill also tracks processed emails in data/gmail-state.json to avoid rereading them.

Can I use this without career-ops?

No. The skill only feeds the career-ops pipeline and is not useful on its own.

New agent skills, repos and AI tools — every week

The best new skills and open-source projects, the fastest-growing repos, and one free prompt. Five minutes to read. Unsubscribe anytime.

Our verdict

This skill suits job seekers who get job alerts by email and already use career-ops, or developers who want Gmail as a lead source for it. It is not a good choice if you are uncomfortable giving a tool ongoing OAuth access to read your Gmail, or if you do not use career-ops.

Download the skill